在此就不写关于那些概念和定义了,直接就写出过程
一、安装kvm
KVM 需要有 CPU 的支持(Intel vmx或 AMD svm),在安装 KVM 之前检查一下 CPU 是否提供了虚拟技术的支持:
# egrep'^flags.*(vmx|svm)' /proc/cpuinfo
有显示, 有显示则说明处理器具有VT功能,在主板BIOS中开启CPU的Virtual Technolege(VT,虚化技术)
安装kvm及其需要的软件包
# yum installkvm kmod-kvm qemu kvm-qemu-img virt-viewer virt-manager libvirt libvirt-pythonpython-virtinst
或
# yumgroupinstall KVM
检查kvm模块是否安装,使用以下命令显示两个模块则表示安装完成
# lsmod | grepkvm
二、安装和配置virt-p2v和virt-v2v
1安装软件
.#yum installvirt-v2v
#yum installvirt-p2v
2.virt-p2v配置与使用
创建虚拟存储池的文件目录:#mkdir -p /home/p2v
运行virsh命令前,要启动libvirtd服务:# service libvirtd start
创建虚拟存储池:
#virshpool-create-as kvm-storage-pool dir -–target=/home/p2v
(这句在此处不会出现大问题,如果不能创建则启动libvirtd服务即可,后续会在convert出现/home/p2v:No space left on device)
Poolkvm-storage-pool created
Storage Pool (help keyword 'pool')
find-storage-pool-sources-as 找到潜在存储池源
find-storage-pool-sources 发现潜在存储池源
pool-autostart 自动启动某个池
pool-build 建立池
pool-create-as 从一组变量中创建一个池
pool-create 从一个 XML 文件中创建一个池
pool-define-as 在一组变量中定义池
pool-define 在一个 XML 文件中定义(但不启动)一个池
pool-delete 删除池
pool-destroy 销毁池
pool-dumpxml XML 中的池信息
pool-edit 为存储池编辑 XML 配置
pool-info 存储池信息
pool-list 列出池
pool-name 将池 UUID 转换为池名称
pool-refresh 刷新池
pool-start 启动一个(以前定义的)非活跃的池
pool-undefine 取消定义一个不活跃的池
pool-uuid 把一个池名称转换为池 UUID
-->
3.修改/etc/virt-v2v.conf
去掉注释,centos注释标识为
libvirt
kvm-storage-pool
将原来的default修改成 kvm-storage-pool
4.启动virt-p2v-server
#virt-p2v-server
三、制作U盘启动
1.准备工作:
查询U盘所在区:#fdisk–l
通过上面的查询得出U盘为/dev/sdb
格式化U盘:#mkfs.ext3/dev/sdb
2.需要安装syslinux。
运行#yum install syslinux命令
3.挂载系统盘virt-p2v镜像
#mount -o loop /usr/share/virt-p2v/virt-p2v-0.8.6-5.20120502.1.el6.centos.iso/mnt
#cd /mnt/LiveOS/
在host A上插一个U盘,设备名为/dev/sdb,运行
#./livecd-iso-to-disk /usr/share/virt-p2v/virt-p2v-0.8.6-5.20120502.1.el6.centos.iso /dev/sdb 将启动镜像写入到U盘中。
4.这个过程容易出现很多错误,由于U盘磁盘格式问题,以及系统没有安装相关软件。
#mkfs.ext4 /dev/sdb
运行这条命令:
#./livecd-iso-to-disk /usr/share/virt-p2v/virt-p2v-0.8.6-5.20120502.1.el6.centos.iso /dev/sdb
之后,会出现:“chckisomd5:command not found”
#yum install isomd5sum*
还是出现了错误:“ be vfat,ext[23]”
#mkfs.ext3 /dev/sdb
运行这条命令:
#./livecd-iso-to-disk /usr/share/virt-p2v/virt-p2v-0.8.6-5.20120502.1.el6.centos.iso /dev/sdb
会出现:“extlinux:command not found”
#yum install syslinux
#yum install syslinux-extlinux
再次运行这条命令:
#./livecd-iso-to-disk /usr/share/virt-p2v/virt-p2v-0.8.6-5.20120502.1.el6.centos.iso /dev/sdb
四、修改/etc/ssh/sshd_config
找到下面这两句,去掉注释,这两句分属不同位置
PermitRootLogin yes
AllowTcpForwarding yes
五、U盘引导系统,用U盘引导启动host B(需要被虚拟化的物理机)
设置virt-p2v服务器信息。如果status变为了connected,那么可以直接选择“自动配置”,图上则是”Automatic configuration”
输入host A的Ip地址,和root用户密码,点击Connect
在点击connect之后如果出现错误”remote server does not define any profiles in/etc/virt-v2v.conf”,是/etc/virt-v2v.conf文件中的注释没有去掉。
连接之后会进入一下界面进行参数配置和选择
virt-p2v开始传输数据到host A上,并将磁盘转换为虚拟磁盘。
Transferring 完成后,有可能会报错。
成功界面如下:
在过程中可能仍然有错误
1.在trandferring sda的位置会出现“/home/p2v:No space left on device”错误
这需要检查是否是磁盘空间不够或者是inode问题,通过#fdisk –l查询磁盘空间
通过#df –i查询inode的使用情况,通过查询结果重新分配目录给虚拟存储池
2.在对/virt-v2v.conf进行配置的时候,没有分辨出注释标识,在最后面加入了
libvirt
192.168.1.108:/home/p2v
得出”/home/p2v is not a valid storage pool“的错误,通过注释掉这段文字,然后去掉文件本身的注释,解决了问题。
3.在过程中还安装过libguestfs-winsupport(ntfs支持)和virtio-win-1.5.2-1.el6软件包,virtio-win-1.5.2-1.el6软件包不能直接通过yum安装,需要登陆http://longgeek.com/download/virt-v2v/,进行下载安装
参考资料:
http://www.cnblogs.com/end/archive/2012/06/05/2536835.html(文件夹创建、删除)
http://blog.csdn.net/tantexian/article/details/42877487(p2v)
http://blog.sina.com.cn/s/blog_5f50a4c80101ofiw.html(p2v)
http://blog.csdn.net/liudayu_hikvision/article/details/6147698 (inode)
http://www.it165.net/os/html/201310/6415.html(虚拟存储池)
https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html-single/V2V_Guide/index.html (官方文档)