13.2.3.2. 基于磁盘的存储池
建议
在创建基于磁盘的存储池前请注意以下几点:
- 根据所使用的 libvirt 版本,将磁盘专用于存储池,可以重新格式化并擦除当前存储在磁盘设备上的所有数据。强烈建议您在创建存储池前备份存储设备中的数据。
- 不应向 guest 授予对整个磁盘或块设备(例如
/dev/sdb
)的写入权限。使用分区(例如/dev/sdb1)
或 LVM 卷。如果您将整个块设备传递给客户端,客户机可能会对它进行分区,或者创建自己的 LVM 组。这可能导致主机物理机器检测到这些分区或 LVM 组并导致错误。
先决条件
注意
只有在您不运行 virsh pool-build 命令时才需要本节中的步骤。
在主机磁盘上可创建基于磁盘的存储池前,必须使用 GUID 分区表 (GPT)磁盘标签重新标记磁盘。GPT 磁盘标签允许在每个设备上创建最多 128 个分区。
# parted /dev/sdb
GNU Parted 2.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel
New disk label type? gpt
(parted) quit
Information: You may need to update /etc/fstab.
#
重新标记磁盘后,继续使用 定义存储池来创建存储池。
参数
下表提供了 XML 文件、virsh pool-define-as 命令和 Virtual Machine Manager 应用程序所需的参数列表,用于创建基于磁盘的存储池。
描述 | XML | pool-define-as | 虚拟机管理器 |
---|---|---|---|
存储池的类型 | <pool type='disk'> | [type] 磁盘 | 磁盘:物理磁盘设备 |
存储池的名称 | <name>name</name> | [name] name | Name |
指定存储设备的路径。例如: /dev/sdb |
<source> | source-dev path_to_disk | 源路径 |
指定目标的路径。这将是用于存储池的路径。 |
<target> | 目标 path_to_pool | 目标路径 |
如果您使用 virsh 创建存储池,请继续 定义存储池。
示例
以下是基于磁盘存储池的 XML 文件示例:
<pool type='disk'> <name>phy_disk</name> <source> <device path='/dev/sdb'/> <format type='gpt'/> </source> <target> <path>/dev</path> </target> </pool>
以下是创建基于磁盘存储池的命令示例:
# virsh pool-define-as phy_disk disk --source-format=gpt --source-dev=/dev/sdb --target /dev
Pool phy_disk defined
下图显示了虚拟机 XML 配置虚拟机管理器 来添加 New Storage Pool 对话框的例子,用于创建基于磁盘的存储池:
图 13.5. 添加新的基于磁盘的存储池示例