开发者社区> 技术小阿哥> 正文

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

简介:
+关注继续查看

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

Ubuntu 及 KVM 相关主要参考官方 https://wiki.ubuntu.com/kvm
另外也可参考该页面:http://wiki.ubuntu.com.cn/Kvm%E6%95%99%E7%A8%8B 
一.官方提供的办法:
1.首先检查机器是否支持虚拟化:
haochuang@Server-CI:~$ grep vmx /proc/cpuinfo
2.安装KVM
haochuang@Server-CI:~$ sudo apt-get install kvm qemu
 
3.引导kvm模块
sudo modprobe kvm
如果是intel CPU
sudo modprobe kvm-intel
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 到你要保存镜像的位置
qemu-img create -f qcow2 virtualdisk.img 50G
 
6.启动模拟器
先cd 到你要保存镜像的位置
1
2
kvm -hda virtualdisk.img -cdrom cdrom.iso -m 256 -net nic -net user -soundhw all
kvm -drive file=xxxx.img -cdrom /path/to/boot-media.iso -boot d -m 1024
7.永久加载模块
在 /etc/modules中添加如下两行
kvm
kvm-intel
或者AMD CPU的话添加如下:
kvm
kvm-amd
二.我的土办法
当然你也可以这么做:
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
如我们所愿,即可启动相应的虚拟机。
如果你的没起得来,可以参考如下命令检查参数问题:
1
2
kvm -m 1024 -drive file=Ubuntu_x86-64_14.04_50GB.vmdk
kvm -m 1024 -drive file=xp.img -cdrom /home/cat650/linux/kvm/NETKVM-20081229.iso  -enable-kvm -net nic,model=virtio -net user

注意点:
1.以后创建虚拟机尽量使用vmdk,更通用;
vhd能在windows7 旗舰版下打开无需工具
vmdk 是vm虚拟机的格式 可以被支持
vdi是virtualbox自己的格式
 
2.vdi 转换为 vmdk格式:
1.进入 VirtualBox 安装目录
cd D:\Program Files (x86)\WorkTools\Oracle\VirtualBox
2.执行命令:
1
VBoxManage.exe clonehd "D:\VirtualBox VMs\Ubuntu_x86-64_14.04_Template\Ubuntu_x86-64_14.04_50GB.vdi" "D:\VirtualBox VMs\Ubuntu_x86-64_14.04_Template\Ubuntu_x86-64_14.04_50GB.vmdk " -format VMDK
结果出现UUID冲突问题:
异常信息:
复制代码
D:\Program Files (x86)\WorkTools\Oracle\VirtualBox>VBoxManage.exe clonehd "D:\VirtualBox VMs\VM_VMDK\Ubuntu_x86-64_14.04_50GB.vdi" "D:\VirtualBox VMs\VM_VMDK\Ubuntu_x86-64_14.04_50GB.vmdk " -format VMDK
VBoxManage.exe: error: Cannot register the hard disk 'D:\VirtualBox VMs\VM_VMDK\Ubuntu_x86-64_14.04_50GB.vdi' {3c0592d1-9991-4a05-8da5-b004be55c1fd} because a hard disk 'D:\VirtualBox VMs\Ubuntu_x86-64_14.04_Template\Ubuntu_x86-64_14.04_Template.vdi' with UUID {3c0592d1-9991-4a05-8da5-b004be55c1fd} already exists
VBoxManage.exe: error: Details: code E_INVALIDARG (0x80070057), component VirtualBox, interface IVirtualBox, callee IUnknown
VBoxManage.exe: error: Context: "OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, enmAccessMode, fForceNewUuidOnOpen, pMedium.asOutParam())" at line 178 of
 file VBoxManageDisk.cpp
复制代码

 

3.很明显,这时候需要我们修改UUID:
参考如下方法:
(1).进入 VirtualBox 安装目录
D:\Program Files (x86)\WorkTools\Oracle\VirtualBox
(2).执行命令:
1
2
VBoxManage.exe clonehd "D:\VirtualBox VMs\Ubuntu_x86-64_14.04_Template\Ubuntu_x86-64_14.04_50GB.vdi" "D:\VirtualBox VMs\Ubuntu_x86-64_14.04_Template\Ubuntu_x86-64_14.04_50GB.vmdk " -format VMDK
VBoxManage.exe clonehd "D:\VirtualBox VMs\VM_VMDK\Ubuntu_x86-64_14.04_50GB.vdi" "D:\VirtualBox VMs\VM_VMDK\Ubuntu_x86-64_14.04_50GB.vmdk " -format VMDK
不过尝试失败,后来在网络上找了不少都没有解决。
4.最终想到了一种解决办法:
步骤一:使用VirtualBox复制虚拟机;
输入新的虚拟机名称,最好选择重新初始化网卡MAC地址,以免后续出现地址冲突问题。
步骤二:使用命令转换格式;
(1)进入 VirtualBox 安装目录
1
cd D:\Program Files (x86)\WorkTools\Oracle\VirtualBox
(2)执行转换命令:
1
VBoxManage.exe clonehd "C:\Users\HaoChuang\VirtualBox VMs\Ubuntu_x86-64_14.04_50GB\Ubuntu_x86-64_14.04_50GB.vdi" "C:\Users\HaoChuang\VirtualBox VMs\Ubuntu_x86-64_14.04_50GB.vmdk " -format VMDK
解释一下: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)有看到有人使用命令来解决,脚本如下:
1
2
3
4
5
6
7
8
9
10
set x=vhi
set y=vmdk
echo off & cls
for /f "delims=" %%a in ('dir /b/a-d %~dp0'do (
setlocal enabledelayedexpansion
set source=%%a
if /i "!source:~-4!"==".%x%" (
set target=!source:~0,-4!.%y%
"%VBOX_INSTALL_PATH%VBoxManage.exe" clonehd "%~dp0!source!" "%~dp0!target!" --format %y%
))
使用办法很简单,将上面的代码保存为vdi2vmdk.bat 放在vdi文件同目录下执行,即可在vdi文件同目录下生成同名vmdk文件,vdi转vhd等只需把前两行改成对应的参数即可。
 
部分步骤有参考如下文章:
修改VDI UUID参考:http://www.sijitao.net/1525.html
==========================================================================================
vmware导入vmdk格式文件


本文转自 念槐聚 博客园博客,原文链接:http://www.cnblogs.com/haochuang/p/3821069.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【openstack】导出 qcow2 镜像
【openstack】导出 qcow2 镜像
228 0
虚拟硬盘格式vdi、vhd、vmdk相互转换
Windows7的引导程序能够引导vhd格式的虚拟硬盘,而VirtualBox创建的虚拟硬盘文件是vdi格式的,怎么办呢? 以前要借助其他软件才能实现,但是VirtualBox早就悄悄为我们带来了一个VBoxManager.exe来转换格式。
3142 0
Vmdk文件如何使用,vmdk导入虚拟机VMware8.0教程
一、打开虚拟机VMware Workstation8.0,点击新建虚拟机。 二、进入虚拟机向导,选择自定义。 三、这里保持默认即可。 四、这里选择“我以后安装操作系统”。 五、这里选择Windows XP操作系统,如果您需要安装的系统属于其他系统,请选择相对应的操作系统。
2033 0
VirtualBox VDI 磁盘镜像 - 压缩
http://www.hooto.com/home/rui/blog/archives/5144.html VirtualBox VDI 磁盘镜像 - 压缩 指导思想 1.
1255 0
VirtualBox修改现有VDI虚拟磁盘大小
之前创建的虚拟磁盘10G,现需要更大的空间,而又不想使用新增虚拟磁盘的方法。 通过查看资料发现VirtulBox提供的VBoxManage modifyhd命令可以解决,该命令的具体用法: VBoxManage modifyhd [–type normal|writethrough|immutab...
2779 0
文章
问答
文章排行榜
最热
最新
相关课程
更多
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载