二,KVM管理
1.升级配置
1.创建一个空磁盘卷
[root@localhost ~]# qemu-img create -f qcow2 /kvm/images/disk2.qcow2 5G Formatting 'disk2.qcow2', fmt=qcow2 size=5368709120 encryption=off cluster_size=65536 lazy_refcounts=off
2.修改配置文件
<disk type='file' device='disk'><driver name='qemu' type='qcow2'/><source file='/kvm/images/disk2.qcow2'/><target dev='vda' bus='virtio'/><address type='pci' domain='0x0000' bus='0x00' slot='0x16' function='0x0'/></disk>
3.重启定义
[root@localhost ~]# virsh define /etc/libvirt/qemu/centos7.0.xml
图像化添加
2.KVM存储
KVM必须要配置⼀个⽬录当作他存储磁盘镜像(存储卷)的⽬录,我们称这个⽬录为存储池
1.存储池管理
1.创建基于文件夹的存储池
[root@localhost ~]# mkdir -p /data/vmfs
2.定义存储池与其目录
[root@localhost ~]# virsh pool-define-as vmdisk --type dir --target /data/vmfs 定义池 vmdisk
3.创建已定义的存储池
创建已定义的存储池 [root@localhost ~]# virsh pool-build vmdisk 构建池 vmdisk • 查看已定义的存储池,存储池不激活无法使用 [root@localhost ~]# virsh pool-list --all 名称 状态 自动开始 default 活动 是image 活动 是iso 活动 是vmdisk 不活跃 否
4.激活并自动启动已定义的存储池
[root@localhost ~]# virsh pool-start vmdisk 池 vmdisk 已启动 [root@localhost ~]# virsh pool-autostart vmdisk 池 vmdisk 标记为自动启动
5.在存储池中创建虚拟机存储卷
[root@localhost ~]# virsh vol-create-as vmdisk oeltest03.qcow2 3G --format qcow2 创建卷 oeltest03.qcow2 #注1:KVM存储池主要是体现⼀种管理⽅式,可以通过挂载存储⽬录,lvm逻辑卷的⽅式创建存储池,虚拟机存储卷创建完成后,剩下的操作与⽆存储卷的⽅式⽆任何区别了。 #注2:KVM存储池也要⽤于虚拟机迁移任务。
6.删除存储卷和池
1.在存储池中删除虚拟机存储卷 [root@localhost ~]# virsh vol-delete --pool vmdisk oeltest03.qcow2 卷 oeltest03.qcow2 被删除2.取消激活存储池 [root@localhost ~]# virsh pool-destroy vmdisk 销毁池 vmdisk3.删除存储定义的目录 [root@localhost ~]# virsh pool-delete vmdisk 池 vmdisk 被删除4.取消定义存储池 [root@localhost ~]# virsh pool-undefine vmdisk
2.磁盘格式
1.磁盘镜像文件格式
raw原始格式,性能最好 qcow性能远不能和raw相比,所以很快被淘汰,出现qcow2 qcow2性能上还是不如raw,但是raw不能支持快照,qcow2支持快照 注:现在默认安装好的用的是raw格式,所有做快照要把他们转为qcow2格式
2.什么叫写时的拷贝?
raw立刻分配空间,不管你有没有用到那么多空间
qcow2只是承若给你分配空间,但是只有当你需要用空间的时候,才会给你空间,最多只给你承若空间的大小,避免空间浪费
3.工作当中用那个?
工作中虚拟机会有多个备份,一个坏了,再起一个就行了,所有没必要用快照。当然也不一定。数据绝对不会存储到本地。
3.挂载磁盘
作为虚拟化环境管理员,你肯定遇到过虚拟机⽆法启动的情况。实施排错时,你需要对虚拟机的内部进 ⾏检查。⽽Libguestfs Linux⼯具集可以在这种情况下为你提供帮助。
利⽤Libguestfs找出损坏的虚拟机⽂件
Libguestfs允许在虚拟机上挂载任何类型的⽂件系统,以便修复启动故障。
使⽤Libguestfs,⾸先需要使⽤Libvirt。Libvirt是⼀个管理接⼝,可以和KVM、Xen和其他⼀些基于 Liunx的虚拟机相互连接。Libguestfs的功能更加强⼤,可以打开Windows虚拟机上的⽂件。但是⾸先你 需要将虚拟机迁移到libguestfs可⽤的环境当中,也就是Linux环境
查看磁盘镜像分区信息: [root@qfedu.com ~]# virt-df -h -d vm1Filesystem Size Used Available Use%vm1:/dev/sda1 484M 32M 428M 7%vm1:/dev/sdb1 3.5G 3.5G 0 100%vm1:/dev/VolGroup/lv_root 6.1G 1.1G 4.7G 18% [root@qfedu.com ~]# virt-filesystems -d vm1/dev/sda1/dev/sdb1/dev/VolGroup/lv_root 挂载磁盘镜像分区: [root@qfedu.com ~]# guestmount -d vm1 -m /dev/vda1 --rw /mnt
3.KVM管理
1.查看开启的虚拟机
[root@localhost yum.repos.d]# virsh list Id 名称 状态 ----------------------------------------------------
2.查看所有虚拟机
[root@localhost yum.repos.d]# virsh list --all Id 名称 状态 ---------------------------------------------------- - centos7.0 关闭- centos7.0-2 关闭
3.KVM虚拟机的配置文件
1.查看KVM虚拟机的配置文件 [root@localhost yum.repos.d]# virsh dumpxml centos7.0 2.修改centos7.0的配置文件 注:与vi的区别,可以免libvirtd重启 [root@localhost yum.repos.d]# virsh edit centos7.0
4.虚拟机管理
1.开启虚拟机
[root@localhost qemu]# virsh start centos7.0
2.虚拟机暂停和恢复
[root@localhost qemu]# virsh suspend centos7.0 #暂停 [root@localhost qemu]# virsh resume centos7.0 #恢复
3.关闭虚拟机
[root@localhost qemu]# virsh shutdown centos7.0 [root@localhost qemu]# virsh destory centos7.0
4.重启
[root@localhost qemu]# virsh reboot centso7.0 [root@localhost qemu]# virsh reset centos7.0 #去电重启,速度快,但是不安全
5.删除虚拟机
[root@localhost qemu]# virsh undefine centos7.0 #注意:虚拟机在开启的情况下undefine是⽆法删除的,但是如果再destroy会直接被删除掉
6.虚拟机开机自启动
[root@localhost qemu]# virsh autostart centos7.0 [root@localhost qemu]# virsh autostart --disable centos7.0 #取消自启动
7.查看所有开机自启的虚拟机
[root@localhost qemu]# virsh list --all --autostart
5.虚拟机克隆
1.图形界面
applications---》system tools----》virtual machine manager
关闭要克隆的虚拟机,右键点击虚拟机选择clone
2.字符终端,命令克隆
1.命令克隆虚拟机
[root@localhost qemu]# virt-clone -o centos7.0 -n centos7.0-2 --auto-clone 正在分配 'disk-clone.qcow2' | 9.0 GB 00:00:02 成功克隆 'centos7.0-2'。 选项:-o:要克隆的虚拟机名称-n:新虚拟机的名称-f:指定存储池
2.增量镜像
原理: 以基本镜像⽂件node.img为基础,创建⼀个镜像⽂件node4.img,以此创建⼀个虚拟机 node4,虚拟机node4的改变将存储于node4.img中。
1.创建增量镜像文件
qemu-img create -b node.img -f qcow2 node4.img
2.创建虚拟机node4的XML配置文件
cp /etc/libvirt/qemu/node.xml /etc/libvirt/qemu/node4.xml vim /etc/libvirt/qemu/node4.xml [root@localhost ~]# vi /etc/libvirt/qemu/centos7.0-2.xml #修改一下内容 <name>centos7.0-2</name> #虚拟机名字<uuid>cac95646-ab50-4c0a-9770-e97f0723e19f</uuid> #UUID 修改一位即可<memory unit='KiB'>1048576</memory> #内存<currentMemory unit='KiB'>1048576</currentMemory> #实际内存<vcpu placement='static'>1</vcpu> #CPU核数<mac address='52:54:00:98:d9:79'/> #MAC地址 修改后三位其中一个即可
3.根据XML配置定义虚拟机node4
virsh define /etc/libvirt/qemu/node4.xml virsh start node4
4.测试
[root@qfedu.com ~]# du -h node.img 6.3G node.img [root@qfedu.com ~]# du -h node4.img 33M node4.img [root@qfedu.com ~]# dd if=/dev/zero of=test bs=1M count=200 #在虚拟机node4 上增量200M⼤⼩⽂件 200+0 records in 200+0 records out 209715200 bytes (210 MB) copied, 1.00361 seconds, 209 MB/s [root@qfedu.com ~]# du -h node.img #基本镜像⽂件node.img⼤⼩未变 6.3G node.img [root@qfedu.com ~]# du -h node4.img #增量镜像⽂件node4.img增加200M了 234M node4.img
6.虚拟机快照
1.快照管理
1.创建快照
[root@localhost ~]# virsh snapshot-create-as centos7.0 centos7.0-init 已生成域快照 centos7.0-init
2.查看快照
[root@localhost ~]# virsh snapshot-list centos7.0名称 生成时间 状态 ------------------------------------------------------------centos7.0-init 2023-05-27 22:34:14 +0800 shutoff
3.恢复快照
[root@localhost ~]# virsh snapshot-revert centos7.0 centos7.0-init
4.删除快照
[root@localhost ~]# virsh snapshot-delete --snapshotname centos7.0-init centos7.0 已删除域快照 centos7.0-init
2.格式转换
qcow2 现在⽐较主流的⼀种虚拟化镜像格式,经过⼀代的优化,⽬前qcow2的性能上接近raw裸格式的性能, 这个也算是redhat的官⽅渠道了
对于qcow2的格式,⼏点还是⽐较突出的,qcow2的snapshot,可以在镜像上做N多个快照:
•更⼩的存储空间
•Copy-on-write support
•⽀持多个snapshot,对历史snapshot进⾏管理
•⽀持zlib的磁盘压缩
•⽀持AES的加密
1.查看镜像文件格式:
[root@qfedu.com ~]# qemu-img info /var/lib/libvirt/images/vm8.img image: /var/lib/libvirt/images/vm8.img file format: raw virtual size: 10G (10737418240 bytes) disk size: 10G
2.格式转换
把raw格式转换成qcow2格式
[root@qfedu.com ~]# qemu-img convert -f raw -O qcow2 /var/lib/libvirt/images/vm8.img /var/lib/libvirt/images/vm8_qcow2.img
3.再次根据上面所示即可