KVM 是 OpenStack 使用最广泛的 Hypervisor,kvm虚拟化学习。
KVM 是运行在操作系统之上的,所以我们先要装一个 Linux。Ubuntu、Redhat、CentOS 都可以,这里我们以 centos6.8为例。
实验环境:
基本的操作系统装好之后,安装 KVM 需要的包
[
root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
[
root@localhost ~]# lsmod | grep kvm (查看是否kvm模块)
grep -E "(vmx|svm)" /proc/cpuinfo (egrep -o "(vmx|svm)" /proc/cpuinfo)
vmx因特尔虚拟化技术inter-VT技术,svm是amd虚拟化技术amd-v (查看硬件是否支持虚拟化)
yum install qemu-kvm(安装kvm)
lsmod| grep kvm 存在
安装管理工具: yum install virt-manager python-virinst qemu-kvm-tools
kvm是内核态,qemu是用户态。创建虚拟机,就是一个进程,虚拟机vcpu就是进程中的线程。管理方便,kill掉进程相当于断电效果。
raw裸硬盘
kvm硬盘有多种格式
额外补充:
在RedHat系统下用usermod 命令可把某用户添加进多个附属组,默认情况下,一次性添加多个附属组可用以下方式来添加:
usermod -G 附属组1,附属组2,...,附属组X 用户名
但在添加之后若再对该用户添加另外附属组时,使用
usermod -G 附属组名 用户名
会把该用户的附属组覆盖为“附属组名”。此时,可在usermod 命令中添加一个参数 -a 即可。
usermod -a -G 附属组名 用户名
EPEL
(Extra Packages for Enterprise Linux,企业版Linux的额外软件包)
是
Fedora小组维护的一个软件仓库项目,为RHEL/CentOS提供他们默认不提供的软件包。
步入正题:
yum list |grep libvirt 查看libvirt包
yum install libvirt python-libvirt (安装libvirt) virt-install依赖于libvirt(api支持多种语言),底层调用libvirt。
/etc/init.d/libvirtd start 启动libvirtd
rpm -ql qemu-kvm (
-l, --list list files in package
) 查看文件
qemu-img create -f raw /kvm.raw 10G 创建文件raw
qemu-img info kvm.raw 查看磁盘大小,文件已经生成大文件。常用磁盘命令:qemu-img
dd if=/dev/cdrom of=/centos .iso (拷贝虚拟机镜像)
virt-install --virt-type kvm --name kvm-demo \
> --ram 512 --cdrom=/centos.iso --network network=default --graphics vnc,listen=0.0.0.0 \
> --noautoconsole --os-type=linux
--disk path=/kvm.raw (安装kvm虚拟机)
注:常用命令qemu-img
[root@yp-node3 data]# virt-install --virt-type kvm --name kvm.demo --ram 512 --cdrom=/data/centos.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --disk path=/data/demo.raw
ERROR Host does not support domain type kvm for virtualization type 'hvm' arch 'x86_64'
这是vmware虚拟化中再启动虚拟机。需要确保kvm模块存在。lsmod | grep kvm
查看进程: ps -aux |grep kvm
硬盘格式转换:
[root@kvm /]# qemu-img convert -f raw -O qcow2 kvm.raw kvm.qcow2
[root@kvm /]# qemu-img convert -f raw -O qcow2 kvm.raw kvm.qcow2
同一个文件查看qcow2 和raw两种硬盘格式
[root@kvm /]# qemu-img info kvm.raw
image: kvm.raw
file format: raw
virtual size: 10G (10737418240 bytes)
disk size: 1.5G
[root@kvm /]# qemu-img info kvm.qcow2
image: kvm.qcow2
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 1.3G
cluster_size: 65536
image: kvm.raw
file format: raw
virtual size: 10G (10737418240 bytes)
disk size: 1.5G
[root@kvm /]# qemu-img info kvm.qcow2
image: kvm.qcow2
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 1.3G
cluster_size: 65536
查看虚拟机vnc端口:
[root@kvm /]# netstat -nltp |grep 59
tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 2535/qemu-kvm
通过vnc连接,测试成功
qcow2与kvm对比:
qcow2 格式的文件虽然在性能上比rRaw 格式的有一些损失(主要体现在对于文件增量上,qcow2 格式的文件为了分配 cluster 多花费了一些时间),但是 qcow2 格式的镜像比 Raw 格式文件更小,只有在虚拟机实际占用了磁盘空间时,其文件才会增长,能方便的减少迁移花费的流量,更适用于云计算系统,同时,它还具有加密,压缩,以及快照等 raw 格式不具有的功能。