如何使用virsh命令将磁盘镜像添加到KVM虚拟机

时间:2020-01-09 14:16:49  来源:igfitidea点击:

如何在Linux操作系统上使用virsh命令将其他磁盘存储添加到来宾操作系统到KVM虚拟机?
您可以轻松地将其他硬盘驱动器添加到KVM域/VM,以增加来宾的存储空间。
在本教程中,您将介绍如何在Linux上使用virsh命令行选项将更多磁盘存储添加到KVM VM。

以下是在Linux上使用virsh命令将基于文件的存储(磁盘镜像)添加到虚拟机的步骤:

步骤1创建新的磁盘镜像

在KVM主机上执行以下命令以创建大小为5G的新磁盘镜像ubuntu-box1-vm-disk1-5G:

$ cd /var/lib/libvirt/images/
$ sudo qemu-img create -f raw ubuntu-box1-vm-disk1-5G 5G

或者,您可以使用dd命令使用以下命令来创建预分配的文件:

$ sudo dd if=/dev/zero of=ubuntu-box1-vm-disk1-5G bs=1M count=5120 status=progress

您刚刚创建了qemu-img或dd命令来创建一个大小为5 GB的新原始磁盘镜像。
磁盘镜像名为ubuntu-box1-vm-disk1-5G:

$ sudo ls -lh

输出示例:

total 17G
-rw------- 1 libvirt-qemu kvm   41G Feb 17 15:41 freebsd11.qcow2
-rw------- 1 libvirt-qemu kvm  3.1G Feb 17 15:33 ubuntu-box-1-clone.qcow2
-rw------- 1 libvirt-qemu kvm   41G Feb 17 15:34 ubuntu-box-1.qcow2
-rw-r--r-- 1 root         root 5.0G Feb 17 15:42 ubuntu-box1-vm-disk1-5G

关于qcow2格式的注释

默认为原始磁盘镜像格式。
这种格式的优点是简单易用,并且可以导出到所有其他仿真器。
但是,QEMU图像格式(qcow2)是最通用的格式。
如果需要拍摄VM快照或AES加密。
尝试使用qcow2格式。
语法如下:

$ sudo qemu-img create -f qcow2 ubuntu-box2-vm-disk1-5G 5G

步骤2将磁盘连接到虚拟机

在将磁盘追加到VM之前,请找出当前磁盘名称。
登录到您的VM并执行以下命令:

$ df

或者

$ sudo fdisk -l | grep '^Disk /dev/vd[a-z]'

输出示例:

Disk /dev/vda: 40 GiB, 42949672960 bytes, 83886080 sectors

因此,我的VM的/dev/vda大小为40GiB。
要追加新创建的ubuntu-box1-vm-disk1-5G镜像,必须使用/dev/vdb。
如果已经有/dev/vdb磁盘,则需要将vdb更改为免费设备,例如/dev/vdc等。
将磁盘追加到名为ubuntu-box1的vm的语法如下:

# virsh attach-disk {vm-name} /var/lib/libvirt/images/{img-name-here} vdb --cache none

或者

# virsh attach-disk {vm-name} \
--source /var/lib/libvirt/images/{img-name-here} \
--target vdb \
--persistent

例如,将磁盘镜像/var/lib/libvirt/images/ubuntu-box1-vm-disk1-5G作为virtio磁盘追加到名为ubuntu-box1的VM /域,并为新磁盘更新域xml文件(执行命令在主机上):

$ sudo virsh attach-disk ubuntu-box1 /var/lib/libvirt/images/ubuntu-box1-vm-disk1-5G vdb --cache none

输出示例:

[sudo] password for Hyman: 
Disk attached successfully

小心:只需按几次键,fdisk即可擦除部分或全部硬盘或工作分区。
确保使用fdisk命令使用正确的设备名称。

步骤3在VM中对磁盘驱动器进行分区

现在,名为ubuntu-box1的客户机现在具有一个名为/dev/vdb的硬盘设备。
登录到您的虚拟机,然后执行以下命令进行验证:

$ sudo fdisk -l | grep '^Disk /dev/vd[a-z]'

输出示例:

Disk /dev/vda: 40 GiB, 42949672960 bytes, 83886080 sectors
Disk /dev/vdb: 5 GiB, 5368709120 bytes, 10485760 sectors

接下来,为新设备启动fdisk:

$ sudo fdisk /dev/vdb

输入n作为新分区。
输入" p"作为主分区。
选择一个可用的分区号" 1"。
通过按Enter键输入默认的第一个圆柱体。
通过按Enter键选择整个磁盘已分配。
最后输入p验证新分区。
输入" w"以写入更改并退出。

fdisk命令中的会话示例:
在VM中使用fdisk命令对驱动器进行分区

要使用ext4文件系统格式化新分区,请执行:

$ sudo mkfs.ext4 /dev/vdb1

输出示例:

将/dev/vdb1格式化为ext4

最后,解决方法:您需要创建一个安装目录:

$ sudo mkdir /disk2/

并将磁盘安装在客户机上:

$ sudo mount /dev/vdb1 /disk2/

编辑文件/etc/fstab

$ sudo vi /etc/fstab

并按如下所示进行更新,以使/dev/vdb1始终在重新引导期间挂载:

/dev/vdb1    /disk2    ext4     defaults    0 0

保存并关闭文件。