14.4. 创建存储池的参数

根据您需要的存储池类型,您可以修改其 XML 配置文件,并定义特定的存储池类型。本节提供了关于创建各种类型的存储池所需的 XML 参数以及示例。

14.4.1. 基于目录的存储池参数

当您想使用 XML 配置文件创建或修改基于目录的存储池时,您必须包含某些必要的参数。有关这些参数的更多信息,请参阅下表。

您可以使用 virsh pool-define 命令来根据指定文件中的 XML 配置创建存储池。例如:

# virsh pool-define ~/guest_images.xml
  Pool defined from guest_images_dir

参数

下表提供了基于目录的存储池 XML 文件所需的参数列表。

表 14.1. 基于目录的存储池参数

描述XML

存储池的类型

<pool type='dir'>

存储池的名称

<name>name</name>

指定目标的路径。这将是用于存储池的路径。

<target>
<path>target_path</path>
</target>

示例

以下是一个基于 /guest_images 目录的存储池的 XML 文件示例:

<pool type='dir'>
  <name>dirpool</name>
  <target>
    <path>/guest_images</path>
  </target>
</pool>

14.4.2. 基于磁盘的存储池参数

当您想使用 XML 配置文件创建或修改基于磁盘的存储池时,您必须包含某些必要的参数。有关这些参数的更多信息,请参阅下表。

您可以使用 virsh pool-define 命令来根据指定文件中的 XML 配置创建存储池。例如:

# virsh pool-define ~/guest_images.xml
  Pool defined from guest_images_disk

参数

下表提供了基于磁盘存储池的 XML 文件所需的参数列表。

表 14.2. 基于磁盘的存储池参数

描述XML

存储池的类型

<pool type='disk'>

存储池的名称

<name>name</name>

指定存储设备的路径。例如:/dev/sdb

<source>
   <path>source_path</path>
</source>

指定目标设备的路径。这将是用于存储池的路径。

<target>
<path>target_path</path>
</target>

示例

以下是基于磁盘存储池的 XML 文件示例:

<pool type='disk'>
  <name>phy_disk</name>
  <source>
    <device path='/dev/sdb'/>
    <format type='gpt'/>
  </source>
  <target>
    <path>/dev</path>
  </target>
</pool>

14.4.3. 基于文件系统的存储池参数

当您想使用 XML 配置文件创建或修改基于文件系统的存储池时,您必须包含某些必要的参数。有关这些参数的更多信息,请参阅下表。

您可以使用 virsh pool-define 命令来根据指定文件中的 XML 配置创建存储池。例如:

# virsh pool-define ~/guest_images.xml
  Pool defined from guest_images_fs

参数

下表提供了基于文件系统的存储池 XML 文件所需的参数列表。

表 14.3. 基于文件系统的存储池参数

描述XML

存储池的类型

<pool type='fs'>

存储池的名称

<name>name</name>

指定分区的路径。例如:/dev/sdc1

<source>
 <device path=device_path />

文件系统类型,例如 ext4

    <format type=fs_type />
</source>

指定目标的路径。这将是用于存储池的路径。

<target>
<path>path-to-pool</path>
</target>

示例

以下是基于 /dev/sdc1 分区的存储池的一个 XML 文件示例:

<pool type='fs'>
  <name>guest_images_fs</name>
  <source>
    <device path='/dev/sdc1'/>
    <format type='auto'/>
  </source>
  <target>
    <path>/guest_images</path>
  </target>
</pool>

14.4.4. 基于 iSCSI 的存储池参数

当您想使用 XML 配置文件创建或修改基于 iSCSI 的存储池时,您必须包含某些必要的参数。有关这些参数的更多信息,请参阅下表。

您可以使用 virsh pool-define 命令来根据指定文件中的 XML 配置创建存储池。例如:

# virsh pool-define ~/guest_images.xml
  Pool defined from guest_images_iscsi

参数

下表提供了基于 iSCSI 存储池的 XML 文件所需的参数列表。

表 14.4. 基于 iSCSI 的存储池参数

描述XML

存储池的类型

<pool type='iscsi'>

存储池的名称

<name>name</name>

主机的名称

<source>
<host name=hostname />

iSCSI IQN

    <device path= iSCSI_IQN />
</source>

指定目标的路径。这将是用于存储池的路径。

<target>
<path>/dev/disk/by-path</path>
</target>

[可选] iSCSI initiator 的 IQN。只有 ACL 将 LUN 限制为特定发起方时才需要。

<initiator>
 <iqn name='initiator0' />
</initiator>

注意

可使用 virsh find-storage-pool-sources-as iscsi 命令确定 iSCSI initiator 的 IQN 。

示例

以下是基于指定 iSCSI 设备的存储池的 XML 文件示例:

<pool type='iscsi'>
  <name>iSCSI_pool</name>
  <source>
    <host name='server1.example.com'/>
    <device path='iqn.2010-05.com.example.server1:iscsirhel7guest'/>
  </source>
  <target>
    <path>/dev/disk/by-path</path>
  </target>
</pool>

14.4.5. 基于 LVM 的存储池参数

当您想使用 XML 配置文件创建或修改基于 LVM 的存储池时,您必须包含某些必要的参数。有关这些参数的更多信息,请参阅下表。

您可以使用 virsh pool-define 命令来根据指定文件中的 XML 配置创建存储池。例如:

# virsh pool-define ~/guest_images.xml
  Pool defined from guest_images_logical

参数

下表提供了基于 LVM 的存储池 XML 文件所需的参数列表。

表 14.5. 基于 LVM 的存储池参数

描述XML

存储池的类型

<pool type='logical'>

存储池的名称

<name>name</name>

存储池设备的路径

<source>
 <device path='device_path' />`

卷组名称

    <name>VG-name</name>

虚拟组格式

    <format type='lvm2'/>
</source>

目标路径

<target>
   <path=target_path />
</target>

注意

如果逻辑卷组由多个磁盘分区组成,则可能会列出多个源设备。例如:

<source>
  <device path='/dev/sda1'/>
  <device path='/dev/sdb3'/>
  <device path='/dev/sdc2'/>
  ...
</source>

示例

以下是基于指定 LVM 的存储池的 XML 文件示例:

<pool type='logical'>
  <name>guest_images_lvm</name>
  <source>
    <device path='/dev/sdc'/>
    <name>libvirt_lvm</name>
    <format type='lvm2'/>
  </source>
  <target>
    <path>/dev/libvirt_lvm</path>
  </target>
</pool>

14.4.6. 基于 NFS 的存储池参数

当您想使用 XML 配置文件创建或修改基于 NFS 的存储池时,您必须包含某些必要的参数。有关这些参数的更多信息,请参阅下表。

您可以使用 virsh pool-define 命令来根据指定文件中的 XML 配置创建存储池。例如:

# virsh pool-define ~/guest_images.xml
  Pool defined from guest_images_netfs

参数

下表提供了基于 NFS 的存储池 XML 文件所需的参数列表。

表 14.6. 基于 NFS 的存储池参数

描述XML

存储池的类型

<pool type='netfs'>

存储池的名称

<name>name</name>

挂载点所在的网络服务器的主机名。这可以是主机名或 IP 地址。

<source>
<host name=hostname
/>

存储池的格式

下面是其中之一:

    <format type='nfs' />

    <format type='cifs' />

网络服务器上使用的目录

    <dir path=source_path />
</source>

指定目标的路径。这将是用于存储池的路径。

<target>
 <path>target_path</path>
</target>

示例

以下是基于 file_server NFS 服务器的 /home/net_mount 目录的存储池的一个 XML 文件示例:

<pool type='netfs'>
  <name>nfspool</name>
  <source>
    <host name='file_server'/>
    <format type='nfs'/>
    <dir path='/home/net_mount'/>
  </source>
  <target>
    <path>/var/lib/libvirt/images/nfspool</path>
  </target>
</pool>

14.4.7. 使用 vHBA 设备的基于 SCSI 的存储池的参数

要为使用虚拟主机适配器总线(vHBA)设备的基于 SCSi 的存储池创建或修改 XML 配置文件,您必须在 XML 配置文件中包括某些必要的参数。有关所需参数的更多信息,请参阅下表。

您可以使用 virsh pool-define 命令来根据指定文件中的 XML 配置创建存储池。例如:

# virsh pool-define ~/guest_images.xml
  Pool defined from guest_images_vhba

参数

下表提供了使用 vHBA 的基于 SCSI 的存储池 XML 文件所需的参数列表。

表 14.7. 使用 vHBA 设备的基于 SCSI 的存储池的参数

描述XML

存储池的类型

<pool type='scsi'>

存储池的名称

<name>name</name>

vHBA 的标识符。parent 属性是可选的。

<source>
<adapter type='fc_host'
[parent=parent_scsi_device]
wwn='WWN'
wwpn='WWPN' />
</source>

目标路径。这将是用于存储池的路径。

<target>
   <path=target_path />
</target>

重要

<path> 字段是 /dev/ 时,libvirt 会为卷设备路径生成一个唯一的短设备路径。例如:/dev/sdc。否则会使用物理主机路径。例如:/dev/disk/by-path/pci-0000:10:00.0-fc-0x5006016044602198-lun-0。唯一的短设备路径允许多个存储池在多个虚拟机(VM)中列出相同的卷。如果多个虚拟机使用了物理主机路径,则可能会出现重复的设备类型警告。

注意

可以在 <adapter> 字段中使用 parent 属性来通过不同的路径标识 NPIV LUN 的物理 HBA 父级。此字段 scsi_hostNvportsmax_vports 属性相结合,以完成父识别。parentparent_wwnnparent_wwpnparent_fabric_wwn 属性提供了不同程度的保证,确保在主机重启后使用相同的 HBA。

  • 如果没有指定 parentlibvirt 将使用支持 NPIV 的第一个 scsi_hostN 适配器。
  • 如果只指定了 parent,则在配置中添加了额外的 SCSI 主机适配器时可能会出现问题。
  • 如果指定了 parent_wwnnparent_wwpn,则在主机重启后使用相同的 HBA。
  • 如果使用 parent_fabric_wwn,则在主机重新启动后,将选择同一结构上的 HBA ,而不考虑所用的 scsi_hostN

示例

以下是使用 vHBA 的基于 SCSI 的存储池的 XML 文件示例。

  • 它是 HBA 中唯一存储池的存储池:

    <pool type='scsi'>
      <name>vhbapool_host3</name>
      <source>
        <adapter type='fc_host' wwnn='5001a4a93526d0a1' wwpn='5001a4ace3ee047d'/>
      </source>
      <target>
        <path>/dev/disk/by-path</path>
      </target>
    </pool>
  • 存储池是使用单个 vHBA 的多个存储池中的一个,并使用 parent 属性来识别 SCSI 主机设备:

    <pool type='scsi'>
      <name>vhbapool_host3</name>
      <source>
        <adapter type='fc_host' parent='scsi_host3' wwnn='5001a4a93526d0a1' wwpn='5001a4ace3ee047d'/>
      </source>
      <target>
        <path>/dev/disk/by-path</path>
      </target>
    </pool>