linux kvm虚拟机快速构建及磁盘类型

KVM命令管理

virsh命令:用来管理各虚拟机的接口命令

查看/创建/停止/关闭。。。

支持交互模式

格式:

virsh 控制指令 [虚拟机名称] [参数]

[root@room1pc01 桌面]# virsh nodeinfo(查看虚拟机服务器的cpu信息)

CPU 型号: x86_64

CPU: 2

CPU 频率: 1900 MHz

CPU socket: 2

每个 socket 的内核数: 1

每个内核的线程数: 1

NUMA 单元: 1

内存大小: 1906912 KiB

[root@room1pc01 桌面]# virsh list --all(列出虚拟机数量,包括关机的)

Id 名称 状态

----------------------------------------------------

1 rh6_node07 running

2 rh6_node06 running

- rh6_node05 关闭

- win2008 关闭

[root@room1pc01 桌面]# virsh dominfo rh6_node07(查看虚拟服务器里的虚拟机配置)

Id: 1

名称: rh6_node07

UUID: fbf829d8-5bda-49f0-adeb-ddacac73c5ea

OS 类型: hvm

状态: running

CPU: 1

CPU 时间: 1894.7s

最大内存: 1048576 KiB

使用的内存: 1048576 KiB

Persistent: yes

自动启动: 禁用

Managed save: no

安全性模式: none

——————————————————————————————————————

KVM软关机/重启/开机

virsh shutdown 虚拟机名

virsh reboot 虚拟机名

virsh start 虚拟机名

KVM硬关机(强制断电)

virsh destroy 虚拟机名

设置虚拟机开机自启

virsh autostart 虚拟机名

取消虚拟机开机自启

virsh autostart --disable 虚拟机名

——————————————————————————————————————————————

一台KVM虚拟机的组成

虚拟机的配置文件:

默认位于/etc/libvirt/qemu/虚拟机名.xml

虚拟机的磁盘文件:

默认位于/var/lib/libvirt/images/虚拟机名.img(或者由管理员提前准备,手动指定)

XML描述文件介绍

记录每个虚拟机的详细参数

名称 UUID 内存 CPU 磁盘 。。。

文件位置:cat /etc/libvirt/qemu/rh6_node07.xml

<domain type=\'kvm\'>

<name>rh6_node07</name> (名称)

<uuid>fbf829d8-5bda-49f0-adeb-ddacac73c5ea</uuid>(uuid值)

<memory unit=\'KiB\'>1048576</memory>

<currentMemory unit=\'KiB\'>1048576</currentMemory>(内存大小)

<vcpu placement=\'static\'>1</vcpu> (cpu数量)

。。。。。。。。

导出/提取虚拟机的配置

virsh dumpxml 虚拟机名 > /root/new.xml

修改导出后的配置

vim /root/new.xml

导入/重新定义后的配置

virsh define /root/nwe.xml

取消定义

virsh undefine 虚拟机名

练习:将虚拟机rh6_node06改为rh6_node01

[root@room1pc01 ~]# virsh dumpxml rh6_node06 > /root/nwe.xml(导出虚拟机配置定向到/root/new.xml)

[root@room1pc01 ~]# vim /root/nwe.xml (修改名字)

<domain type=\'kvm\' 2\'>

<name>rh6_node01</name>(修改名字)

<uuid>d2e18138-6ec6-45e2-baab-5da0dec1ee97</uuid>(修改uuid,不要相同)

[root@room1pc01 ~]# virsh define /root/nwe.xml (导入虚拟机)

练习:将虚拟机rh6_node06改为rh6_node02

[root@room1pc01 ~]# virsh dumpxml rh6_node06 > /root/nwe.xml(导出虚拟机配置定向到/root/new.xml)

[root@room1pc01 ~]# vim /root/nwe.xml (修改名字)

<domain type=\'kvm\' 2\'>

<name>rh6_node02</name>(修改名字)

<uuid>d2e18138-6ec6-45e2-baab-5da0dec1ee97</uuid>(修改uuid)

</interface>

<interface type=\'network\'>

<mac address=\'54:52:01:01:06:02\'/>(修改mac地址)

<devices>

<emulator>/usr/libexec/qemu-kvm</emulator>

<disk type=\'file\' device=\'disk\'>

<driver name=\'qemu\' type=\'qcow2\' cache=\'none\'/>

<source file=\'/var/lib/libvirt/images/rh6_node02.img\'/>(修改硬盘)

[root@room1pc01 ~]# virsh define /root/nwe.xml (导入虚拟机)

[root@room1pc01 images]# cd /var/lib/libvirt/images/

[root@room1pc01 images]# ls

rh6_node05.img rh6_node06.img rh6_node07.img

[root@room1pc01 images]# cp rh6_node06.img rh6_node01.img &(复制被复制的虚拟机的磁盘)

[1] 35752

导出,修改,导入三合一操作

[root@room1pc01 ~]# virsh edit rh6_node06

<domain type=\'kvm\' 2\'>

<name>rh6_node03</name>(修改名字)

<uuid>d2e18138-6ec8-45e2-baab-5da0dec1ee97</uuid>(修改uuid)

</interface>

<interface type=\'network\'>

<mac address=\'54:52:01:01:06:03\'/>(修改mac地址)

<devices>

<emulator>/usr/libexec/qemu-kvm</emulator>

<disk type=\'file\' device=\'disk\'>

<driver name=\'qemu\' type=\'qcow2\' cache=\'none\'/>

<source file=\'/var/lib/libvirt/images/rh6_node03.img\'/>(修改硬盘)

[root@room1pc01 images]# cp rh6_node06.img rh6_node03.img &(复制被复制的虚拟机的磁盘)

[1] 35752

[root@room1pc01 ~]# ls /var/lib/libvirt/network/(虚拟系统管理器网卡配置文件)

default.xml private1.xml private2.xml public1.xml public2.xml

克隆虚拟机

virt-clone -o 被克隆的虚拟机 -n 新的虚拟机名 -f 新磁盘保存路径

[root@room1pc01 opt]# virt-clone -o rh6_node05 -n hydra -f /var/lib/libvirt/images/rh6_node03.img

正在分配 \'rh6_node03.img\' | 50 GB 01:39

————————————————————————————————————————————————————

虚拟机快建技术

KVM虚拟机的镜像管理

主要是针对虚拟机的磁盘管理

——————————————————+

特点/类型 RAW QCOW2 |

KVM默认 是 否 |

I/O效率 高 较高 |

占用空间 大 小 |

压缩 不支持 支持 |

增量备份 不支持 支持 |

快照 不支持 支持 |

——————————————————+

COW工作原理:

copy on write,写时复制

直接映射原始盘的数据内容,当原始盘卷有修改时,将被改动的旧数据写入增量盘

对增量盘的修改不会写到原始盘

使用qemu-img管理虚拟磁盘

查看磁盘信息:qemu-img info 磁盘路径

image: rh6_node01.img

file format: qcow2

virtual size: 50G (53687091200 bytes)

disk size: 323M

cluster_size: 65536

backing file: /var/lib/libvirt/images/.rh6_template.img

创建新的独立的磁盘:qemu-img create -f 磁盘类型(rw/qcw2) 磁盘路劲 磁盘大小

[root@room1pc01 ~]# qemu-img create -f raw /var/lib/libvirt/test1.img 20G(raw类型)

Formatting \'/var/lib/libvirt/test1.img\', fmt=raw size=21474836480

[root@room1pc01 images]# qemu-img create -f qcow2 /var/lib/libvirt/images/test2.qcow2 20G(qcow2类型)

Formatting \'/var/lib/libvirt/images/test2.qcow2\', fmt=qcow2 size=21474836480 encryption=off cluster_size=65536

创建新的独立的磁盘(增量/前段):qemu-img create -f qcow2 -b 后端盘路径 磁盘路径 大小(大小可省略)

练习:从虚拟机rh6_node05快建新虚拟机rh6_nonde04

准备新磁盘:

[root@room1pc01 images]# qemu-img create -f qcow2 -b /var/lib/libvirt/images/rh6_node05.img /var/lib/libvirt/images/rh6_node03.qcow2

Formatting \'/var/lib/libvirt/images/rh6_node03.qcow2\', fmt=qcow2 size=53687091200 backing_file=\'/var/lib/libvirt/images/rh6_node05.img\' encryption=off cluster_size=65536

准备新配置:

[root@room1pc01 images]# virsh edit rh6_node05(导出,修改,导入三合一操作)

<domain type=\'kvm\'>

<name>rh6_node03</name>(改名字)

<uuid>e1aa2571-22c6-4804-924d-953e8fc7ad2c</uuid>(改uuid)

<driver name=\'qemu\' type=\'qcow2\' cache=\'none\'/>(改磁盘类型type=qcow2)

<source file=\'/var/lib/libvirt/images/rh6_node03.qcow2\'/>(磁盘路劲)

<mac address=\'54:52:01:01:05:56\'/>(改mac地址)

转换磁盘格式:

qemu-img convert -O 新的类型 被转换磁盘路径 新磁盘路径

练习:使用旧格式磁盘的虚拟机磁盘转成新格式

[root@room1pc01 images]# qemu-img convert -O qcow2 /var/lib/libvirt/images/rh6_node06.img /var/lib/libvirt/images/rh6_node06.qcow2

调整新磁盘的配置(类型,路径)

[root@room1pc01 images]# virsh edit rh6_node06

<driver name=\'qemu\' type=\'qcow2\' cache=\'none\'/>(改磁盘类型type=qcow2)

<source file=\'/var/lib/libvirt/images/rh6_node06.qcow2\'/>(磁盘路劲)

根据需要,调整配置后可以把就磁盘删除

[root@room1pc01 images]# ls

rh6_node03.qcow2 rh6_node05.img rh6_node06.img rh6_node06.qcow2 rh6_node07.img

[root@room1pc01 images]# rm -rf rh6_node06.img

管理磁盘快照:(磁盘类型必须为qcow2)

qcow2快照管理:

为磁盘记录不同时间点的抓过太备份

(非独立的文件)

必要时可将虚拟机恢复到指定的快照

基本用法:

-c:创建快照

-l:查看快照

-a:恢复到指定快照

-d:删除快照

qemu-img snapshot -c 快照名 磁盘路径

qemu-img snapshot -l 磁盘路径

qemu-img snapshot -a 快照名 磁盘路径

qemu-img snapshot -d 快照名 磁盘路径

————————————————————————————————————

准备模板虚拟机

命令行模式/安装虚拟机

virt-install --name muban1 --vcpus 1 --raw 1024

--disk path=/var/lib/libvirt/imagesmuban1.qcow2,

format=qzow2 --network=private1 --pxe

初始化设置

预装软件处理

软件包

ip地址

主机名

网卡参数(mac地址)

/etc/udve/rules.d/70-persistent-net.rules(清空)

/etc/sysconfig/network-scripts-eth0

删除HWADDR UUID

出厂设置

touch /.unconfigured(在/目录下创建一个文件)

——————————————————————————————————————

guestmount工具

支持离线挂载raw,qcow2格式的虚拟机磁盘

可以在虚拟机关机的情况下。直接修改磁盘中的文档

方便对虚拟机进行定制,修复,脚本维护

挂载虚拟盘

基本格式:

guestmount -a 磁盘路径 -i /挂载点

guestmount -a 磁盘路径 -m 虚拟机分区 /挂载点

[root@room1pc01 ~]# yum -y install libguestfs-tools

—————————————————————————————————————