KVM虚拟机添加和移除虚拟磁盘
一、准备工作
确保你已经安装并配置好了以下组件:
- KVM/QEMU
- libvirt 管理工具
- 一个已创建并正在运行的虚拟机(例如
rhel7
)
二、创建一个新的 QCOW2 格式磁盘镜像
使用 qemu-img
命令创建一个大小为 2G 的 qcow2 格式磁盘镜像:
qemu-img create -f qcow2 /home/vm/rhel2G.qcow2 2G
说明:
-f qcow2
:指定磁盘格式为 qcow2(支持快照、压缩、稀疏存储等特性)rhel2G.qcow2
:新磁盘的名称2G
:磁盘大小
创建成功后,会在 /home/vm
目录下生成一个空白的 2G 虚拟磁盘文件。
三、将磁盘挂载到虚拟机
使用 virsh attach-disk
命令将新磁盘动态挂载到名为 rhel7
的虚拟机上:
virsh attach-disk rhel7 /home/vm/rhel2G.qcow2 vdb --subdriver qcow2 --cache none --persistent
参数说明:
rhel7
:目标虚拟机名称/home/vm/rhel2G.qcow2
:要挂载的磁盘路径vdb
:在虚拟机中的设备名(通常第一个磁盘是 vda,第二个可以用 vdb)--subdriver qcow2
:指定磁盘子驱动类型(必须与磁盘格式一致)--cache none
:禁用缓存,确保数据写入磁盘--persistent
:将该变更写入虚拟机的配置文件,确保重启后仍然有效
挂载完成后,可以在虚拟机内通过 lsblk
、fdisk -l
或 dmesg
命令查看新磁盘。
四、从虚拟机中卸载磁盘
当不再需要该磁盘时,可以使用 virsh detach-disk
命令将其从虚拟机中移除:
virsh detach-disk --domain vmname /home/vm/vmname-vdb.qcow2 --persistent
说明:
--domain vmname
:指定要操作的虚拟机名称/home/vm/vmname-vdb.qcow2
:要卸载的磁盘路径--persistent
:从配置文件中永久移除该磁盘
请确保卸载前虚拟机内部没有正在使用该磁盘(比如挂载点未卸载),否则可能会导致系统异常或数据损坏。
四、从虚拟机中卸载磁盘
当不再需要该磁盘时,可以使用 virsh detach-disk
命令将其从虚拟机中移除:
virsh detach-disk --domain vmname /home/vm/vmname-vdb.qcow2 --persistent
说明:
--domain vmname
:指定要操作的虚拟机名称/home/vm/vmname-vdb.qcow2
:要卸载的磁盘路径(根据实际路径替换)--persistent
:从虚拟机配置中永久移除该磁盘
💡 提醒:在卸载前,请先确保虚拟机内部没有正在使用该磁盘(如没有被挂载到某个路径),否则可能导致文件系统异常或数据损坏。
五、验证虚拟机磁盘列表
磁盘卸载之后,你可以使用以下命令验证虚拟机当前挂载的所有磁盘设备:
virsh domblklist vmname
示例输出:
Target Source
------------------------------------------------
vda /var/lib/libvirt/images/rhel7.qcow2
说明:
Target
:虚拟机中看到的设备名称(如 vda、vdb)Source
:磁盘对应的宿主机文件路径
如果卸载成功,vdb
等对应项将不再显示在列表中。
六、小贴士
- 如果要在虚拟机内部确认磁盘状态,也可以登录虚拟机使用命令:
lsblk
若卸载磁盘后计划删除磁盘文件,可直接执行:
rm -f /home/vm/rhel2G.qcow2
⚠️ 注意:删除前务必确认该磁盘不再被其他虚拟机使用。