kvm存储虚拟化
- 一、命令行工具管理虚拟磁盘
- 1、查看虚拟磁盘
- 2、添加磁盘
- 3、删除磁盘
 
- 二、qcow2格式的磁盘文件
- 1、创建磁盘文件
- 2、差量镜像/快速创建虚机
- 2.1 创建差量镜像
- 2.2 准备配置文件
- 2.3 创建虚拟机
- 2.4 批量部署虚拟机
 
 
- 三、存储池 storage pool
- 1、类型
- 2、在线迁移
- 2.1 规划后端存储
- 2.2 运行虚拟机的主机挂载测试存储
- 3、创建存储池
- 4、添加主机名解析
- 5、测试迁移
 
一、命令行工具管理虚拟磁盘
1、查看虚拟磁盘
[root@martin-host ~]# virsh domblklist vm01_centos79 
Target     Source
------------------------------------------------
hda        /var/lib/libvirt/images/vm01_centos79.qcow2
hdb        /kvm/iso/CentOS-7.9-x86_64-Everything-2009.iso
vda        /var/lib/libvirt/images/vm01_centos79-1.qcow2
2、添加磁盘
[root@martin-host ~]# qemu-img create -f qcow2 /var/lib/libvirt/images/vm01_centos79-2.qcow2 5G 
Formatting '/var/lib/libvirt/images/vm01_centos79-2.qcow2', fmt=qcow2 size=5368709120 encryption=off cluster_size=65536 lazy_refcounts=off 
[root@martin-host ~]# ls /var/lib/libvirt/images/
vm01_centos79-1.qcow2  vm01_centos79-2.qcow2  vm01_centos79.qcow2  vm02_centos79.qcow2
[root@martin-host ~]# virsh attach-disk vm01_centos79 --source /var/lib/libvirt/images/vm01_centos79-2.qcow2 --target vdb --subdriver qcow2 --cache writeback --persistent 
Disk attached successfully
磁盘缓存的工作模式:
1、writeback	回写
2、writethrough	通写,默认
[root@martin-host ~]# virsh domblklist vm01_centos79 
Target     Source
------------------------------------------------
hda        /var/lib/libvirt/images/vm01_centos79.qcow2
hdb        /kvm/iso/CentOS-7.9-x86_64-Everything-2009.iso
vda        /var/lib/libvirt/images/vm01_centos79-1.qcow2
vdb        /var/lib/libvirt/images/vm01_centos79-2.qcow2
3、删除磁盘
[root@martin-host ~]# virsh detach-disk vm01_centos79 vda --persistent
Disk detached successfully
[root@martin-host ~]# virsh detach-disk vm01_centos79 vdb --persistent
Disk detached successfully
二、qcow2格式的磁盘文件
1、创建磁盘文件
[root@martin-host ~]# qemu-img create -f qcow2 /opt/disk01.qcow2 8G
Formatting '/opt/disk01.qcow2', fmt=qcow2 size=8589934592 encryption=off cluster_size=65536 lazy_refcounts=off 
[root@martin-host ~]# qemu-img info /opt/disk01.qcow2 
image: /opt/disk01.qcow2
file format: qcow2
virtual size: 8.0G (8589934592 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
2、差量镜像/快速创建虚机
2.1 创建差量镜像
[root@martin-host ~]# qemu-img create -f qcow2 -b /var/lib/libvirt/images/vm01_centos79.qcow2 /var/lib/libvirt/images/test1_centos79.qcow2
Formatting '/var/lib/libvirt/images/test1_centos79.qcow2', fmt=qcow2 size=8589934592 backing_file='/var/lib/libvirt/images/vm01_centos79.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off 
[root@martin-host ~]# qemu-img info /var/lib/libvirt/images/test1_centos79.qcow2 
image: /var/lib/libvirt/images/test1_centos79.qcow2
file format: qcow2
virtual size: 8.0G (8589934592 bytes)
disk size: 196K
cluster_size: 65536
backing file: /var/lib/libvirt/images/vm01_centos79.qcow2
Format specific information:
    compat: 1.1
    lazy refcounts: false
2.2 准备配置文件
[root@martin-host qemu]# cp vm01_centos79.xml test1_centos79.xml
虚拟名称、UUID、磁盘文件位置、MAC地址、VNC
2.3 创建虚拟机
[root@martin-host ~]# virsh define /etc/libvirt/qemu/test1_centos79.xml 
Domain test1_centos79 defined from /etc/libvirt/qemu/test1_centos79.xml
[root@martin-host ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     test1_centos79                 shut off
 -     vm01_centos79                  shut off
 -     vm02                           shut off
[root@martin-host ~]# virsh start test1_centos79 
Domain test1_centos79 started
[root@martin-host ~]# virsh autostart test1_centos79
Domain test1_centos79 marked as autostarted
2.4 批量部署虚拟机
#!/bin/bash
#
# 删除所有虚拟机
for vm_name in $(virsh list --all | awk 'NR>2{print $2}')
do
  virsh destroy ${vm_name} &> /dev/null
  virsh undefine ${vm_name} &> /dev/null
done
rm -rf /var/lib/libvirt/images/*
# 新建虚拟机 
kvm_config_file=/opt/kvm/vm_base.xml
kvm_disk_file=/opt/kvm/vm_base.qcow2
read -p "虚拟机数量: " number
for i in $(seq $number)
do
  vm_name=vm${i}_centos79
  cp ${kvm_config_file} /etc/libvirt/qemu/${vm_name}.xml
  qemu-img create -f qcow2 -b ${kvm_disk_file} /var/lib/libvirt/images/${vm_name}.qcow2 &> /dev/null
  sed -ri "s/vm_base/${vm_name}/g" /etc/libvirt/qemu/${vm_name}.xml
  sed -ri "/uuid/c \  <uuid>$(uuidgen)</uuid>" /etc/libvirt/qemu/${vm_name}.xml
  vm_mac=52:54:00:$(openssl rand -hex 10 | sed -r 's/(..)(..)(..).*/\1:\2:\3/')
  sed -ri "/<mac/c \      <mac address='${vm_mac}'/>" /etc/libvirt/qemu/${vm_name}.xml
  virsh define /etc/libvirt/qemu/${vm_name}.xml &> /dev/null
done
三、存储池 storage pool
存储磁盘文件的路径/位置
1、类型
本地存储池
 网络存储池, 虚拟机在线迁移(必须)
[root@martin-host ~]# virsh pool-list --all 
 Name                 State      Autostart 
-------------------------------------------
 default              active     yes       
 iso                  active     yes       
[root@martin-host ~]# virsh pool-dumpxml default 
<pool type='dir'>
  <name>default</name>
  <uuid>1328db51-967c-4696-a63c-88814221c3ad</uuid>
  <capacity unit='bytes'>211654430720</capacity>
  <allocation unit='bytes'>20023582720</allocation>
  <available unit='bytes'>191630848000</available>
  <source>
  </source>
  <target>
    <path>/var/lib/libvirt/images</path>
    <permissions>
      <mode>0711</mode>
      <owner>0</owner>
      <group>0</group>
      <label>system_u:object_r:virt_image_t:s0</label>
    </permissions>
  </target>
</pool>
2、在线迁移
2.1 规划后端存储
[root@kvm_nfs ~]# cat /etc/exports
/kvm_image	192.168.140.200(rw,no_root_squash)	192.168.140.10(rw,no_root_squash)
2.2 运行虚拟机的主机挂载测试存储
[root@martin-host ~]# mount 192.168.140.11:/kvm_image /mnt/
[root@martin-host ~]# touch /mnt/a
[root@martin-host ~]# ls /mnt/
a
[root@martin-host ~]# umount /mnt 
3、创建存储池

 
[root@martin-host ~]# df -hT | grep nfs
192.168.140.11:/kvm_image nfs4      100G   33M  100G   1% /pool_by_nfs
[root@martin-host ~]# 
4、添加主机名解析
[root@martin-host ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.140.200	martin-host.linux.com
192.168.140.10	new-host.linux.com
[root@martin-host ~]# scp /etc/hosts root@192.168.140.10:/etc/hosts
root@192.168.140.10's password: 
hosts  
5、测试迁移
[root@martin-host ~]# virsh migrate vm1_centos79 --live qemu+ssh://192.168.140.10/system --unsafe 
root@192.168.140.10's password: 


















![[高频 SQL 50 题(基础版)]第一千七百五十七题,可回收且低脂产品](https://i-blog.csdnimg.cn/direct/5194077ed56246abb3ea2b35f750e628.png)