13.2.2. 创建存储池
13.2.2.1. 使用 virsh 创建存储池
注意
本节演示了创建基于分区的存储池作为示例。
过程 13.2. 使用 virsh 创建存储池
阅读建议并确保满足所有先决条件
对于某些存储池,本指南建议您使用某些实践。另外,某些类型的存储池有一些先决条件。要查看建议和先决条件,如果有,请参阅 第 13.2.3 节 “存储池特定”。定义存储池
存储池可以是持久性或临时的。主机系统重启后,持久性存储池会保留下来。临时存储池仅在主机重启前存在。执行以下操作之一:- 使用 XML 文件定义存储池。a.创建包含新设备所需的存储池信息的临时 XML 文件。XML 文件必须包含根据存储池类型的特定字段。如需更多信息,请参阅 第 13.2.3 节 “存储池特定”。下面显示了一个存储池定义 XML 文件示例。在本例中,该文件被保存到
~/guest_images.xml
<pool type='fs'> <name>guest_images_fs</name> <source> <device path='/dev/sdc1'/> </source> <target> <path>/guest_images</path> </target> </pool>
b.使用 virsh pool-define 命令创建持久性存储池或 virsh pool-create 命令,以创建并启动临时存储池。# virsh pool-define ~/guest_images.xml Pool defined from guest_images_fs
或# virsh pool-create ~/guest_images.xml Pool created from guest_images_fs
c.删除步骤中创建的 XML 文件。 - 使用 virsh pool-define-as 命令创建持久性存储池或 virsh pool-create-as 命令,以创建临时存储池。以下示例从
/guest_images
目录中创建一个永久、基于文件系统的存储池,映射到/dev/sdc1
。# virsh pool-define-as guest_images_fs fs - - /dev/sdc1 - "/guest_images" Pool guest_images_fs defined
或# virsh pool-create-as guest_images_fs fs - - /dev/sdc1 - "/guest_images" Pool guest_images_fs created
注意当使用 virsh 接口时,命令中的选项名称是可选的。如果没有使用选项名称,请将横线用于不需要指定的字段。
验证是否已创建池
使用 virsh pool-list --all 列出所有现有存储池。# virsh pool-list --all Name State Autostart ----------------------------------------- default active yes guest_images_fs inactive no
定义存储池目标路径
使用 virsh pool-build 命令为预格式化的文件系统存储池创建存储池目标路径,初始化存储源设备,并定义数据的格式。然后使用 virsh pool-list 命令,确保列出存储池。# virsh pool-build guest_images_fs Pool guest_images_fs built # ls -la /guest_images total 8 drwx------. 2 root root 4096 May 31 19:38 . dr-xr-xr-x. 25 root root 4096 May 31 19:38 .. # virsh pool-list --all Name State Autostart ----------------------------------------- default active yes guest_images_fs inactive no
注意构建目标路径只适用于基于磁盘、基于文件系统以及逻辑存储池。如果 libvirt 检测到源存储设备的数据格式与所选存储池类型的不同,构建将失败,除非指定了覆盖
选项。启动存储池
使用 virsh pool-start 命令准备源设备以供使用。执行的操作取决于存储池类型。例如,对于基于文件系统的存储池,virsh pool-start 命令会挂载文件系统。对于基于 LVM 的存储池,virsh pool-start 命令可激活卷组 usng the vgchange 命令。然后,使用 virsh pool-list 命令来确保 存储池处于活动状态。# virsh pool-start guest_images_fs Pool guest_images_fs started # virsh pool-list --all Name State Autostart ----------------------------------------- default active yes guest_images_fs active no
注意virsh pool-start 命令只适用于持久性存储池。临时存储池创建时会自动启动。启用自动启动(可选)
默认情况下,使用 virsh 定义的存储池不会被设置为在每次libvirtd
启动时自动启动。您可以使用 virsh pool-autostart 命令将存储池配置为自动启动。# virsh pool-autostart guest_images_fs Pool guest_images_fs marked as autostarted # virsh pool-list --all Name State Autostart ----------------------------------------- default active yes guest_images_fs active yes
现在,每次libvirtd
启动时都会自动启动存储池。验证存储池
验证存储池是否已正确创建,报告的大小与预期相同,状态报告为 running。验证文件系统的目标路径中存在"lost+found"目录,表示挂载了该设备。# virsh pool-info guest_images_fs Name: guest_images_fs UUID: c7466869-e82a-a66c-2187-dc9d6f0877d0 State: running Persistent: yes Autostart: yes Capacity: 458.39 GB Allocation: 197.91 MB Available: 458.20 GB # mount | grep /guest_images /dev/sdc1 on /guest_images type ext4 (rw) # ls -la /guest_images total 24 drwxr-xr-x. 3 root root 4096 May 31 19:47 . dr-xr-xr-x. 25 root root 4096 May 31 19:38 .. drwx------. 2 root root 16384 May 31 14:18 lost+found