【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转vmdk:http://www.verydemo.com/demo_c92_i56807.html  

vdi、vmdk等格式简介:http://blog.sina.com.cn/s/blog_45bf5d7a0102dz5p.html  

UUID问题参考:http://michail.flouris.net/2011/11/virtualbox-vm-disk-clone-uuid-problem/

修改VDI UUID参考:http://www.sijitao.net/1525.html

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

vmware导入vmdk格式文件

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

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

时间: 2024-08-04 09:26:10

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

BootStrap智能表单实战系列(三)分块表单配置详解_javascript技巧

什么是 Bootstrap? Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的. 历史 Bootstrap 是由 Twitter 的 Mark Otto 和 Jacob Thornton 开发的.Bootstrap 是 2011 年八月在 GitHub 上发布的开源产品. Bootstrap 包的内容 基本结构:Bootstrap 提供了一个带有网格系统.链接样式.背景的基本结构.这将在 Bootst

MySoft.Data从入门到精通系列(三)【DbSession的配置】

DbSession(数据会话类)是数据操作的核心,所有数据库的操作都通过它来完成,所以在编写数据库访问层之前得实例化DbSession对象. 下面我们就来认识一下这个DbSession对象. 一.DbSession实例化配置 DbSession两有种方式来进行实例化 1.通过配置文件创建 //指定connectionStrings节的名称来实例化DbSession public DbSession(string connectName); 这种方式一般用于已经配置好connectionStrin

如何将一个KVM的镜像如vmdk格式的镜像转成Docker镜像

问题描述 如题,有没有大神知道,是否可以将一个KVM的镜像,如vmdk格式的镜像转成Docker镜像? 解决方案

配置-centos虚拟机在宿主机win7重启之后无法ping通宿主机?

问题描述 centos虚拟机在宿主机win7重启之后无法ping通宿主机? 本人的宿主机是windows7,使用vmware8,安装成功centos6成功之后,完成了ifcfg-eth0,使用NAT方式,这个时候可以ping通宿主机,宿主机也可以ping通虚拟机.此时重启虚拟机之后,虚拟机和宿主机之间也是可以互相ping通的,但是当宿主机重启之后,虚拟机和宿主机之间就无法ping通了,但是虚拟机的配置也没有变化.我想不通这是怎么回事?

kvm虚拟化学习笔记(三)之windows kvm虚拟机安装

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1290191 KVM虚拟化学习笔记系列文章列表 ---------------------------------------- kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51cto.com/703525/1288795 kvm虚拟化学习笔记(二)之linux kvm虚拟机安装 h

Vmware虚拟机下三种网络模式配置

VMware虚拟机有三种网络模式,分别是Bridged(桥接模式).NAT(网络地址转换模式).Host-only(主机模式). VMware workstation安装好之后会多出两个网络连接,分别是VMware Network Adapter VMnet1和VMware Network Adapter VMnet8,这两个是可以在主机的网络连接中可以查看到的,还有一个是VMnet0,可以在virtual network editor中看到.这三个虚拟网络都是VMware安装好之后自动生成的,

用静态路由和ip forward打通虚拟机与其他宿主机

用静态路由和ip forward打通虚拟机与其他宿主机 作者 digoal 日期 2016-11-12 标签 ipforward , linux , kvm , bridge , iptables , route 背景 最近我在做一些测试,用到了虚拟机环境,如图,有多台物理机,其中有一台物理机安装了几个虚拟机. 物理机之间处于同一网段,可以相互通信. 虚拟机新开了一个网段. 现在的目标是把虚拟机和其他几个物理机的网络打通. 为了不依赖网络层的改动来实现虚拟机和其他物理机网络的打通. 需要用到宿主

xen虚拟化实战系列(三)之xen虚拟机复制

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1284621 xen虚拟化实战系列文章列表 xen虚拟化实战系列(一)之xen虚拟化环境安装xen虚拟化实战系列(二)之xen虚拟机安装xen虚拟化实战系列(三)之xen虚拟机复制xen虚拟化实战系列(四)之xen虚拟机扩展磁盘空间一法xen虚拟化实战系列(五)之xen虚拟机扩展磁盘空间再一法xen虚拟化实战系列(六)之x

(转)深度学习主机环境配置: Ubuntu16.04+Nvidia GTX 1080+CUDA8.0

    深度学习主机环境配置: Ubuntu16.04+Nvidia GTX 1080+CUDA8.0 发表于2016年07月15号由52nlp 接上文<深度学习主机攒机小记>,这台GTX1080主机准备好之后,就是配置深度学习环境了,这里选择了比较熟悉Ubuntu系统,不过是最新的16.04版本,另外在Nvidia GTX1080的基础上安装相关GPU驱动,外加CUDA8.0,因为都比较新,所以踩了很多坑. 1. 安装Ubuntu16.04 不考虑双系统,直接安装 Ubuntu16.04,从