RedHead虚拟化-KVM分析实践

RedHead虚拟化-KVM分析实践_服务器

RedHead虚拟化-KVM分析实践_服务器_02

RedHead虚拟化-KVM分析实践_服务器_03


KVM是网络中的治理设备,它是Keyboard(键盘)、Video(显示器)和Mouse(鼠标)三个单词的第一个字母。即能够实现用一套键盘、显示器、鼠标来控制多台设备。简单点说就是在一个服务器上运行多个操作

系统,每个系统都是独立的,类似于这种技术的还有云平台。

本文出自 “黄宝良” 博客,请务必保留此出处http://hblbk.blog.51cto.com/7645149/1548025

虚拟化的技术目前在科技前沿还是有着很重大的地位的。




第一:创建虚拟机镜像

为创建虚拟主机准备磁盘,此处的磁盘可以使用LV更可备份以及制作快照

qemu-img create -f raw /p_w_picpaths/dieskname.raw 8G
qemu-img create -f qcow2 /p_w_picpaths/dieskname.qcow2 8G
-f 选项 指定 虚拟磁盘的类型
raw 优点
1、效率高于qcow2
2、直接读写虚拟机硬盘里面的文件,这比较"暴力",但既然可以这么暴力,那么也就不怕虚拟机出任何问题了。
3、通用性好,是转为其他虚拟机的格式的通用中间格式,这样就不用担心转换虚拟机系统了
qcow2 优点
1、加密功能:把raw本身就当普通文件加密之搞定
2、快照功能:把raw加入版本管理目录中,具体需要的设置可能稍微有点多。
3、宿主机不支持按需打孔模式(hole):这个可以自己根据使用情况来扩展raw的最大值
4、硬盘压缩:就当普通电脑文件压缩之即可
创建镜像
qemu-img create -f <fmt> -o <options> <fname> <size>

举例:

qemu-img create -f raw -o size=4G /p_w_picpaths/vm2.raw
查看快照的信息
qemu-img info vm2.raw

第二:转化命令: qcow2格式的支持压缩

qemu-img convert -c -f fmt -O out_fmt -o options fname out_fname

-c:采用压缩,只有qcow和qcow2才支持

-f:源镜像的格式,它会自动检测,所以省略之

-O 目标镜像的格式

-o 其他选项

fname:源文件

out_fname:转化后的文件

看例子:

qemu-img convert -c -O qcow2 vm2.raw vm2.qcow2

如果想看要转化的格式支持的-o选项有哪些,可以在命令末尾加上 -o ?

qemu-img convert -c -O qcow2 vm2.raw vm2.qcow2 -o ?
本文出自 “黄宝良” 博客,请务必保留此出处http://hblbk.blog.51cto.com/7645149/1548025第三 :增加减少镜像大小

qemu-img resize vm2.raw +2GB
可以使虚拟磁盘的容量增大"+" 或减小"-"

第四:快照的使用

查看快照

qemu-img snapshot -l /p_w_picpaths/vm2.qcow2
列出虚拟磁盘快照列表
注意:只有qcow2才支持快照 !

创建快照
snapshot 选项 为创建管理快照时使用
qemu-img snapshot -c booting vm2.qcow2

举例:
创建快照
qemu-img snapshot -c booting vm2.qcow2

查看快照的信息
创建快照后用以下命令去查看磁盘快照的列表
qemu-img snapshot -l vm2.qcow2
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK
1 booting 0 2012-06-29 14:35:04 00:00:00.000

从快照恢复:快照还原时要确保虚拟机是down的状态
qemu-img snapshot -a 1 /p_w_picpaths/vm2.qcow2

然后从kvm启动这个虚拟机,会发现虚拟机又在打快照时的状态了

删除快照:
-d 选项 是指定快照的编号
qemu-img snapshot -d 2 /p_w_picpaths/vm2.qcow

新建一个镜像,但是派生自它
qemu-img create -f qcow2 vm3_5.qcow2 -o backing_file=vm3_base.raw 5G

qemu-img convert -O raw vm3_5.qcow2 vm3_base2.raw

以上是kvm虚拟机的虚拟磁盘操作 ,以下为磁盘创建后如何安装系统至虚拟磁盘以及如何管理KVM虚拟机


第一:准备主机环境


在一个没有任何环境的主机上实现kvm虚拟机的搭建需要做到以下几点
1、CPU虚拟机化开启
2、安装所需要的环境包及相关工具,安装包:virt-manager virt-* libvirt libvirt-* python-virt* qemu-*
3、准备一个分区最好是LVM,并挂载到/var/lib/libvrit/p_w_picpaths/ 下,此步不是必须的但是为了防止磁盘空间的不足,建议去做。
4、准备好后开启libvirtd服务,并设置自启动

第二:创建虚拟机镜像
准备一个磁盘大小任意,但必须要足够系统的使用最低容量
qemu-img create -f qcow2 server.qcow2 50G
此处的格式及名称可任意指定,此文件最好是放在 /var/lib/libvrit/p_w_picpaths/下, 一般情况下qcow2的功能要比raw的虚拟磁盘多,我这里默认为qcow2,
因为后期要对磁盘进行压缩你就会看到qcow2类型的磁盘的优点了。
创建完毕

第四:安装系统到虚拟磁盘server.qcow2
安装方式有两种
1、图形化安装,在此不多做解释
2、命令行下进行安装,重点介绍

命令安装时用到的命令
virt-install
--vnc 选则显示方式
--noautoconsole 自动分配TLS端口
--name 指定虚拟机的名称
--ram 指定虚拟机的内存大小 以"M" 为单位
--arch 指定虚拟机的硬件架构
--vcpus 指定CPU的个数
--os-type 指定系统的名称
--hvm 虚拟机系统的类型
--disk 指定虚拟机磁盘的位置及文件名
-w bridge 指定虚拟机的网卡,注意网卡必须是桥接网卡类似:br0 br1
--location 指定安装光盘的位置,此处已pxe为例
--extra-args 指定KS文件的所在位置
noipv6 不启用IPV6

以上为我理解的各选项的意思,以下为例(此为一行):
virt-install --vnc --noautoconsole --name=server --ram=2048 --arch=x86_64
--vcpus=1 --os-type=linux --os-variant=rhel7 --hvm --accelerate --disk=/var/lib/libvrit/p_w_picpaths/server.qcow2 -w bridge=br0 --location=http://172.24.254.254/exam/rhel7/dvd/
--extra-args="ks=http://172.24.254.254/exam/ks/vserver/rhcsa-server.ks noipv6
成功后 使用 sudo virt-manager 打开KVM虚拟机管理器双击虚拟机查看
安装完成后使用命令
virsh dumpxml server > /var/lib/libvrit/p_w_picpaths/server.xml
生成系统引导文件
本文出自 “黄宝良” 博客,请务必保留此出处http://hblbk.blog.51cto.com/7645149/1548025执行后安装系统步骤不去详细解说。
注:--disk 此选项所支持的磁盘类型包括LVM,可对lvm做快照实现虚拟机的还原及备份

第五 :转换并压缩
安装完系统后磁盘的大小在3-5G 不等,主要看系统的类型,此时这个文件就不在随意挪动了,为了解决这个问题
我们对此文件做一下压缩
qemu-img convert -c -f qcow2 server.qcow2 server-vda.qcow2
执行完毕后看到 server-vda.qcow2文件的大小只有1G左右就成功了
将server.qcow2文件删除即可

第六:引导名为server的虚拟机开启
引导的方式也有很多,此处仅介绍XML文件引导

文件内容如下:

<?xml version="1.0" ?>
- <domain type="kvm">
<name>server</name> /*此为虚拟机的名称
<memory>2097152</memory> /*此为内存大小不需和
<currentMemory>2097152</currentMemory>
<clock offset="utc" />
<vcpu>1</vcpu> /*此为CPU个数
- <features>
<acpi />
<apic />
<pae />
</features>
- <os>
<type>hvm</type>
<boot dev="hd" />
<bootmenu enable="yes" />
</os>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
- <devices>
- <graphics type="spice" port="5903" autoport="yes" listen="127.0.0.1">
<listen type="address" address="127.0.0.1" />
</graphics>
<graphics port="-1" type="vnc" />
- <interface type="bridge">
<source bridge="br0" />
<mac address="52:54:00:00:00:0B" /> /*MAC地址指定
<model type="virtio" />
</interface>
<input bus="ps2" type="mouse" /> /*鼠标设备
- <serial type="pty">
<target port="0" />
</serial>
- <video>
<model type="qxl" ram="65536" vram="65536" heads="1" />
<alias name="video0" />
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x0" />
</video>
- <disk device="disk" type="file">
<target bus="virtio" dev="vda" />
<source file="/var/lib/libvirt/p_w_picpaths/rh299-server-vda.qcow2" /> /*指定磁盘文件
<driver name="qemu" type="qcow2" />
</disk>
</devices>
</domain>

使用命令 virsh create server.xml 引导系统
注意:引导时不能存在名叫server的主机,解决方法,关闭server主机并删除主机,或者更改XML文件里的uuid和虚拟机名称
uuidgen 命令 生成随机uuid

引导完成

第七:虚拟机管理
强制关机 virsh destroy server
重启主机 virsh reboot server
本文出自 “黄宝良” 博客,请务必保留此出处http://hblbk.blog.51cto.com/7645149/1548025第八:虚拟机还原
当我们创建好此系统后开机第一次不做任何操作,然后copy server-vda.qcow2 文件为server-vda.val
然后修改server.xml文件 的磁盘路径/var/lib/libvrit/p_w_picpaths/server-vda.val
可以将这个过程用脚本实现自动化过程
END