RHEL6.4 Server作为虚拟机的HOST,运行接下来的Linux命令检查配置和安装相关软件:
# egrep '^flags.*(vmx|svm)' /proc/cpuinfo
有显示说明CPU支持VT功能
2、在主板BIOS中开启CPU的Virtual Technolege(VT,虚化技术)
3、安装kvm
# yum install kvm virt-* libvirt
4、检查kvm模块是否安装:
# lsmod | grep kvm
显示类似接下来:
kvm_intel 53484 9
kvm 316506 1 kvm_intel
5、启动服务
# service libvirtd start
Ubuntu 14.04上的 qemu比RHEL6.4上的版本要新,导致在Ubuntu14.04创建的Guest(RHEL6.4)虚拟机复制到RHEL6.4HOST主机上不能运行。为解决这个问题,可以按接下来的步骤:
1)在Ubuntu 14.04上把qcow2格式的vm转成raw格式的。
2)在RHEL6.4上define raw格式的vm。
既然RHEL6.4支持raw格式的vm,那么可以在Ubuntu上直接创建 raw格式的虚拟机,然后复制到RHEL6.4。但是raw格式的vm占有空间太多,复制起来颇费时间。
查看虚拟机镜像格式命令:
$ qume-img info vm.img
image: vm.img
file format: raw
virtual size: 80G
disk size: 80G # 这个在开始创建的时候非常小。稀疏文件。
因此可以采用接下来的办法:
1)在Ubuntu14.04上用virt-manager安装kvm类型的虚拟机vm.img。默认就是raw格式。可以用80G。
2)拷贝这个vm.img和vm.xml到RHEL6.4上。注意目录位置一定是(可以用链接):
/etc/libvirt/qemu/vm.xml
/var/lib/libvirt/images/vm.img
3)修改vm.xml。此处需要注意,RHEL6.4使用的vm.xml和Ubuntu14.04上的略有不同。接下来列出RHEL6.4上个的vm.xml(不同之处):
<domain type='kvm'>
<name>vm</name>
<uuid>...</uuid>
<memory unit='KiB'>4194304</memory>
<currentMemory unit='KiB'>4194304</currentMemory>
<vcpu placement='static'>4</vcpu>
<os>
<type arch='x86_64' machine='rhel6.4.0'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='utc'/>
<!--
<clock offset='localtime'/>
-->
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<!-- diff below -->
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/var/lib/libvirt/images/vm.img'/>
<target dev='vda' bus='virtio'/>
</disk>
<disk type='block' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hdc' bus='ide'/>
<readonly/>
<address .../>
</disk>
...
<serial type='pty'>
<target port='0'/>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
...
</devices>
</domain>
不同之处在于:
<emulator>/usr/libexec/qemu-kvm</emulator>
4)然后运行定义:
$ virsh define vm.xml
5)启动和关闭:
$ virsh start vm
$ virsh shutdown vm
接下来说明如何virsh console登录虚拟机。首先需要在vm的/etc/init/下创建ttyS0.conf文件,内容如下:
# /etc/init/ttyS0.conf:
# ttyS0 - agetty
stop on runlevel [016]
start on runlevel [345]
instance ttyS0
respawn
pre-start exec /sbin/securetty ttyS0
exec /sbin/agetty /dev/ttyS0 115200 vt100-nav
由于大家此时还没有正确配置vm的网络,无法ssh到虚拟机。因此需要使用libguestfs-tools拷贝ttyS0.conf到vm中。
1)首先主机RHEL6.4上需要安装libguestfs-tools:
$ yum install libguestfs-tools
2)在主机上创建并编辑好:ttyS0.conf,然后拷贝到vm中:
$ virsh shutdown vm # 必须首先关闭虚拟机
$ virt-copy-in -d vm ttyS0.conf /etc/init
$ virt-ls -d vm /etc/init
$ virt-cat -d vm /etc/init/ttyS0.conf
3)启动并console到vm:
$ virsh start vm
$ virsh console vm
4)配置vm的网络。重启虚拟机。然后就可以ssh到vm上了。
大功告成!一旦觉得 vm小,可以resize。