4. kvm存储虚拟化

一、命令行工具管理虚拟磁盘

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: 

相关推荐

  1. kvm 虚拟

    2024-07-10 21:50:01       46 阅读
  2. Linux虚拟————KVM

    2024-07-10 21:50:01       31 阅读
  3. ubuntu服务器上安装KVM虚拟

    2024-07-10 21:50:01       49 阅读
  4. webvirtcloud:kvm虚拟管理平台

    2024-07-10 21:50:01       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 21:50:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 21:50:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 21:50:01       45 阅读
  4. Python语言-面向对象

    2024-07-10 21:50:01       55 阅读

热门阅读

  1. 【对抗算法复现】CW

    2024-07-10 21:50:01       15 阅读
  2. vscode无法切换env环境

    2024-07-10 21:50:01       23 阅读
  3. GCN-LSTM实现时空预测

    2024-07-10 21:50:01       19 阅读
  4. 泛型

    泛型

    2024-07-10 21:50:01      19 阅读
  5. 二分查找(红绿标记法)

    2024-07-10 21:50:01       19 阅读
  6. uniapp开发踩过的坑合集( 持续更新 )

    2024-07-10 21:50:01       16 阅读
  7. 算法之工程化内容(1)—— Linux常用命令

    2024-07-10 21:50:01       20 阅读