KVM虚拟机添加磁盘两种方法:
1、添加虚拟磁盘文件
2、添加物理磁盘
需求
1、/kvm/kvms目录是我们KVM磁盘镜像集中管理的位置,我们需要在/kvm/kvms下给ceph1虚拟机创建名为ceph1-vdb.qcow2的磁盘文件,大小为80G,作为ceph1的vdb磁盘
2、将物理主机的物理磁盘/dev/nvme6n1作为ceph1的/dev/sda磁盘。如下
#创建虚拟磁盘文件
qemu-img create -f qcow2 /kvm/kvms/ceph1-vdb.qcow2 80G
#此处的虚拟磁盘文件位置在/kvm/kvms/下
[root@xa-radb-02 kvms]# qemu-img create -f qcow2 /kvm/kvms/ceph1-vdb.qcow2 80G
[root@xa-radb-02 kvms]# ll /kvm/kvms/ceph1-vdb.qcow2
-rw-r--r-- 1 qemu qemu 20856963072 12月 2 11:12 /kvm/kvms/ceph1-vdb.qcow2
# virsh edit ceph1
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/>
<source file='/kvm/kvms/ceph1-vdb.qcow2'/>
<target dev='vdb' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x07' slot='0x00' function='0x0'/>
</disk>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/>
<source file='/kvm/kvms/ceph1-vdc.qcow2'/>
<target dev='vdc' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x10' slot='0x00' function='0x0'/>
</disk>

保存并退出(重启服务器生效)
[root@xa-radb-02 kvms]# virsh attach-disk --help
命令名称
attach-disk - 附加磁盘设备
概览
attach-disk <domain> <source> <target> [--targetbus <字符串>] [--driver <字符串>] [--subdriver <字符串>] [--iothread <字符串>] [--cache <字符串>] [--io <字符串>] [--type <字符串>] [--mode <字符串>] [--sourcetype <字符串>] [--serial <字符串>] [--wwn <字符串>] [--alias <字符串>] [--rawio] [--address <字符串>] [--multifunction] [--print-xml] [--persistent] [--config] [--live] [--current]
说明
附加新磁盘设备.
选项
[--domain] <字符串> 域名,id 或 uuid
[--source] <字符串> 磁盘设备源
[--target] <字符串> 磁盘设备目标
--targetbus <字符串> target bus of disk device
--driver <字符串> 磁盘设备驱动
--subdriver <字符串> 磁盘设备副驱动
--iothread <字符串> IOThread to be used by supported device
--cache <字符串> 磁盘设备的缓存模式
--io <字符串> io policy of disk device
--type <字符串> 目标设备类型
--mode <字符串> 设备读写模式
--sourcetype <字符串> 源类型 (block|file)
--serial <字符串> 磁盘设备序列号
--wwn <字符串> 磁盘设备的 wwn
--alias <字符串> custom alias name of disk device
--rawio 需要 rawio 容量
--address <字符串> 磁盘设备地址
--multifunction 在指定地址中使用多功能 pci
--print-xml 输出 XML 文档而不是附加该磁盘
--persistent 让实时更改持久
--config 影响下一次引导
--live 影响运行的域
--current 影响当前域
# 创建qcow2格式磁盘
# qemu-img create -f qcow2 /kvm/kvms/ceph3-vdd.qcow2 100G
#运行完命令直接生效,但是destroy关机再start后磁盘就没了(正常reboot重启磁盘还在。已测试过),推荐使用config
[root@xa-radb-02 kvms]# virsh attach-disk ceph3 /kvm/kvms/ceph3-vdd.qcow2 vdd --subdriver=qcow2 --current
#需要重启
[root@xa-radb-02 kvms]# virsh attach-disk ceph3 /kvm/kvms/ceph3-vdd.qcow2 vdd --subdriver=qcow2 --config
成功附加磁盘
#为了确保生效,保存xml文件(不加此步骤重启后也会生效)
[root@xa-radb-02 kvms]# virsh dumpxml ceph3 > /etc/libvirt/qemu/ceph3.xml
物理磁盘的disk类型为
block,driver类型为raw,source是物理磁盘的盘符或uuid,address按如下写,如果新增物理盘不知道unit写多少,可以删除address行让其自动生成
# virsh edit server
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='sda' bus='sata'/>
<readonly/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none' io='native'/>
<source dev='/dev/nvme6n1'/>
<target dev='vdd' bus='sata'/>
<address type='drive' controller='0' bus='0' target='0' unit='3'/>
</disk>
添加的物理磁盘默认盘符从sda开始


保存并退出
重启虚拟机验证是否添加成功
virsh shutdown ceph1
virsh start ceph1
列出server中的磁盘,我们能够明显看到多出了下面几个磁盘设备,暂时还没有分区

贴一张server没有添加磁盘前的图好作对比

我们试着分别给/dev/sda和/dev/vdc磁盘设备创建分区
可以顺利创建分区,如下两图。
给/dev/sda创建大小为10G的主分区

给/dev/vdc创建大小为10G的主分区

成功!
创建分区后我们再列出磁盘,可以看到如下的结果。到此我们给KVM成功添加了磁盘。

[root@xa-radb-03 ~]# virsh domblklist ceph1
Target Source
---------------------------------
vda /kvm/kvms/ceph1.qcow2
vdb /kvm2/ceph1-vdb.qcow2
vdc /kvm2/ceph1-vdc.qcow2
[root@xa-radb-02 kvms]# virsh detach-disk ceph1 /kvm2/ceph1-vdc.qcow2
成功分离磁盘
或
[root@xa-radb-02 kvms]# virsh edit centos7.9
删除对应disk然后重启虚拟机
