13.4.7. 使用命令行将基于 NFS 的存储附加到虚拟机
要为虚拟机(VM)提供网络存储,您可以根据 Network File Sytem (NFS)服务器使用存储卷。
要使用命令行将基于 NFS 的存储附加到虚拟机,请使用以下方法之一:
-
在创建新虚拟机时,使用
Create virtual machine对话框中的Storage选项创建并附加新磁盘。具体步骤请参阅 使用 web 控制台创建虚拟机。 - 对于现有虚拟机,创建基于 NFS 的存储卷并将其附加到虚拟机。具体步骤请查看以下步骤。
先决条件
确定您的管理程序支持基于 NFS 的存储池:
# virsh pool-capabilities | grep "<value>nfs</value>"如果该命令显示任何输出结果,则代表支持基于 NFS 的池。
- 您必须有一个可以使用的可用 NFS。详情请查看 挂载 NFS 共享
流程
如果还没有新的基于 NFS 的存储池,请创建和设置新的存储池。
定义并创建 NFS 类型的存储池。例如,要创建一个名为
guest_images_netfs的存储池,它使用 IP 为111.222.111.222的 NFS 服务器,使用目标目录/var/lib/libvirt/images/nfspool挂载在服务器目录/home/net_mount上:# virsh pool-define-as --name guest_images_netfs \ --type netfs --source-host='111.222.111.222' \ --source-path='/home/net_mount' --source-format='nfs' \ --target='/var/lib/libvirt/images/nfspool' Pool guest_images_netfs defined根据您之前定义的配置创建存储池。
# virsh pool-build guest_images_netfs Pool guest_images_netfs built可选:验证是否已创建池。
# virsh pool-list --all Name State Autostart ------------------------------------------- default active yes guest_images_netfs inactive no启动存储池。
# virsh pool-start guest_images_netfs Pool guest_images_netfs started可选:打开自动启动。
默认情况下,使用
virsh定义的存储池不会被设置为在每次虚拟化服务启动时自动启动。使用virsh pool-autostart命令将存储池配置为 autostart。# virsh pool-autostart guest_images_netfs Pool guest_images_netfs marked as autostarted
创建基于 NFS 的存储卷。例如,以下命令会创建一个名为
vm-disk1的 20 GBqcow2卷,并根据guest_images_netfs存储池:# virsh vol-create-as --pool guest_images_netfs --name vm-disk1 --capacity 20GB --format qcow2 Vol vm-disk1 created将存储卷作为虚拟磁盘附加到虚拟机。
找到您创建的存储卷。要做到这一点,检查卷所属的存储池:
# virsh vol-list --pool guest_images_netfs --details Name Path Type Capacity Allocation ------------------------------------------------------------------------------------- vm-disk1 /var/lib/libvirt/images/nfspool/vm-disk1 file 20.00 GiB 196.00 KiB找到在要附加磁盘的虚拟机中使用哪些目标设备:
# virsh domblklist --details <vm-name> Type Device Target Source ---------------------------------------------------------------- file disk *vda /home/VirtualMachines/vm-name.qcow2 file cdrom vdb -- 可选:检查磁盘的一致性,以避免出现数据崩溃或磁盘碎片的问题。具体步骤请参阅 检查虚拟磁盘的一致性。
使用
virsh attach-disk命令将磁盘附加到虚拟机。提供虚拟机中没有使用的目标设备。例如,以下命令将之前创建的
vm-disk1作为vdc设备附加到testguest1虚拟机:# virsh attach-disk testguest1 /var/lib/libvirt/images/nfspool/vm-disk1 vdc --persistent
验证
检查您附加磁盘的虚拟机 XML 配置,以查看配置是否正确。
# virsh dumpxml testguest1 ... <disk type='file' device='disk'> <driver name='qemu' type='qcow2' discard='unmap'/> <source file='/var/lib/libvirt/images/nfspool/vm-disk1' index='1'/> <backingStore/> <target dev='vdc' bus='virtio'/> <alias name='virtio-disk2'/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </disk> ...- 在虚拟机的客户机操作系统中,确认磁盘映像已作为未格式化和未分配的磁盘提供。