天天看点

【CI】系列三.宿主机KVM配置及vdi与vmdk格式转换等

前提:宿主机需要支持虚拟化,如果未打开,则需要重启机器,在bois中打开该项;

一.官方提供的办法:

1.首先检查机器是否支持虚拟化:

haochuang@Server-CI:~$ grep vmx /proc/cpuinfo

2.安装KVM

haochuang@Server-CI:~$ sudo apt-get install kvm qemu

3.引导kvm模块

如果是intel CPU

FAQ:

如果发生如下错误,则说明主机未开启虚拟化:

$ sudo modprobe kvm-intel

FATAL: Error inserting kvm_intel (/lib/modules/2.6.20-15-generic/kernel/drivers/kvm/kvm-intel.ko): Operation not supported

Typing dmesg you may find the following at the end:-

 kvm: disabled by bios

这时候的解决办法自然就是去bois中打开虚拟化。

4.将当前用户添加到组中

sudo addgroup `whoami` kvm

5.创建一个KVM镜像

cd 到你要保存镜像的位置

6.启动模拟器

先cd 到你要保存镜像的位置

1

2

<code>kvm -hda virtualdisk.img -cdrom cdrom.iso -m 256 -net nic -net user -soundhw all</code>

<code>kvm -drive file=xxxx.img -cdrom /path/to/boot-media.iso -boot d -m 1024</code>

7.永久加载模块

在 /etc/modules中添加如下两行

或者AMD CPU的话添加如下:

二.我的土办法:

当然你也可以这么做:

1.在windows环境下面创建虚拟机,使用VirtualBox或者Vmware都可以。但是要注意,如果使用VirtualBox创建的vdi格式的话,需要转换一下,转换成vmdk,然后ftp上传至宿主机中;

2.在宿主机中,执行办法一的1~4步骤,然后通过如下命令启动:

haochuang@Server-CI:/opt/VMS$ kvm -drive file=Ubuntu_x86-64_14.04_50GB.vmdk

如我们所愿,即可启动相应的虚拟机。

如果你的没起得来,可以参考如下命令检查参数问题:

<code>kvm -m 1024 -drive file=Ubuntu_x86-64_14.04_50GB.vmdk</code>

<code>kvm -m 1024 -drive file=xp.img -cdrom /home/cat650/linux/kvm/NETKVM-20081229.iso  -enable-kvm -net nic,model=virtio -net user</code>

注意点:

1.以后创建虚拟机尽量使用vmdk,更通用;

vhd能在windows7 旗舰版下打开无需工具

vmdk 是vm虚拟机的格式 可以被支持

vdi是virtualbox自己的格式

2.vdi 转换为 vmdk格式:

1.进入 VirtualBox 安装目录

2.执行命令:

<code>VBoxManage.exe clonehd </code><code>"D:\VirtualBox VMs\Ubuntu_x86-64_14.04_Template\Ubuntu_x86-64_14.04_50GB.vdi"</code> <code>"D:\VirtualBox VMs\Ubuntu_x86-64_14.04_Template\Ubuntu_x86-64_14.04_50GB.vmdk "</code> <code>-format VMDK</code>

结果出现UUID冲突问题:

异常信息:

<a></a>

3.很明显,这时候需要我们修改UUID:

参考如下方法:

(1).进入 VirtualBox 安装目录

D:\Program Files (x86)\WorkTools\Oracle\VirtualBox

(2).执行命令:

<code>VBoxManage.exe clonehd </code><code>"D:\VirtualBox VMs\VM_VMDK\Ubuntu_x86-64_14.04_50GB.vdi"</code> <code>"D:\VirtualBox VMs\VM_VMDK\Ubuntu_x86-64_14.04_50GB.vmdk "</code> <code>-format VMDK</code>

不过尝试失败,后来在网络上找了不少都没有解决。

4.最终想到了一种解决办法:

步骤一:使用VirtualBox复制虚拟机;

输入新的虚拟机名称,最好选择重新初始化网卡MAC地址,以免后续出现地址冲突问题。

步骤二:使用命令转换格式;

(1)进入 VirtualBox 安装目录

<code>cd D:\Program Files (x86)\WorkTools\Oracle\VirtualBox</code>

(2)执行转换命令:

<code>VBoxManage.exe clonehd </code><code>"C:\Users\HaoChuang\VirtualBox VMs\Ubuntu_x86-64_14.04_50GB\Ubuntu_x86-64_14.04_50GB.vdi"</code> <code>"C:\Users\HaoChuang\VirtualBox VMs\Ubuntu_x86-64_14.04_50GB.vmdk "</code> <code>-format VMDK</code>

解释一下:cloneHhd是复制为vmdk,也可转成vhd,vdi,raw,还有个convertformraw命令,不过因为虚拟机比较大,所以转换过程略微有点慢,需要耐心等待。

看如下截图,OK。

转换结束,即可在如下目录中看到转换完成的vmdk格式虚拟机:

C:\Users\HaoChuang\VirtualBox VMs\Ubuntu_x86-64_14.04_50GB

5.另外在网上(http://www.itshanghai.net/technology/2010/1101/article_879.html)有看到有人使用命令来解决,脚本如下:

3

4

5

6

7

8

9

10

<code>set</code> <code>x=vhi</code>

<code>set</code> <code>y=vmdk</code>

<code>echo off &amp; cls</code>

<code>for</code> <code>/f </code><code>"delims="</code> <code>%%a </code><code>in</code> <code>(</code><code>'dir /b/a-d %~dp0'</code><code>) </code><code>do</code> <code>(</code>

<code>setlocal enabledelayedexpansion</code>

<code>set</code> <code>source=%%a</code>

<code>if</code> <code>/i </code><code>"!source:~-4!"</code><code>==</code><code>".%x%"</code> <code>(</code>

<code>set</code> <code>target=!source:~0,-4!.%y%</code>

<code>"%VBOX_INSTALL_PATH%VBoxManage.exe"</code> <code>clonehd </code><code>"%~dp0!source!"</code> <code>"%~dp0!target!"</code> <code>--format %y%</code>

<code>))</code>

使用办法很简单,将上面的代码保存为vdi2vmdk.bat 放在vdi文件同目录下执行,即可在vdi文件同目录下生成同名vmdk文件,vdi转vhd等只需把前两行改成对应的参数即可。

部分步骤有参考如下文章:

==========================================================================================

vmware导入vmdk格式文件

如果你已经有了一个vmdk格式的虚拟机文件,或者你不希望在重装一次系统,而是从别的机器上面直接copy一个过来,那么可以参考这篇文章(http://gh801.blog.163.com/blog/static/88832814201261582612/)导入vmdk格式文件,其中部分步骤,自己注意一下就不会错,详细细节就不描述了。

转载请注明出处:http://www.cnblogs.com/haochuang/ 8年IT工作经验,5年测试技术与管理,2年产品与项目管理,曾参与过云计算\云存储\车联网产品研发工作; 业余自媒体人,有技术类垂直微信公众号;如有招聘或求职方面需求,请Mail to [email protected] ;或通过 QQ:363573922 微博:@念槐聚 联系;