管理存储库
本节介绍存储库 (SR) 持续管理中所需的各种操作,包括实时 VDI 迁移。
移除 SR
存储库 (SR) 可以暂时或永久移除。
分离: 断开存储设备与池或主机之间的关联(PBD 拔出)。SR(及其 VDI)将变得不可访问。VDI 的内容以及虚拟机用于访问 VDI 的元信息将保留。当您暂时使 SR 脱机时(例如,进行维护),可以使用分离。分离的 SR 以后可以重新连接。
忘记: 保留 SR 在物理磁盘上的内容,但永久删除将虚拟机连接到其 VDI 的信息。例如,允许您将 SR 重新连接到另一个 XenServer® 主机,而无需移除任何 SR 内容。
销毁: 从物理磁盘中删除 SR 的内容。
注意:
使用 SMB 存储时,请勿在分离 SMB SR 之前从存储中移除共享。
对于销毁或忘记操作,连接到 SR 的 PBD 必须从主机拔出。
-
拔出 PBD 以便从相应的 XenServer 主机分离 SR:
xe pbd-unplug uuid=pbd_uuid <!--NeedCopy--> -
使用
sr-destroy命令移除 SR。该命令销毁 SR,从 XenServer 主机数据库中删除 SR 和相应的 PBD,并从物理磁盘中删除 SR 内容:xe sr-destroy uuid=sr_uuid <!--NeedCopy--> -
使用
sr-forget命令忘记 SR。该命令从 XenServer 主机数据库中移除 SR 和相应的 PBD,但保留物理介质上的实际 SR 内容不变:xe sr-forget uuid=sr_uuid <!--NeedCopy-->
注意:
可能需要一些时间才能对与 SR 对应的软件对象进行垃圾回收。
引入存储库
要重新引入之前已遗忘的存储库,请创建一个 PBD。手动将 PBD 插入到相应的 XenServer 主机以激活存储库。
以下示例引入了一个类型为 lvmoiscsi 的存储库。
-
探测现有存储库以确定其 UUID:
xe sr-probe type=lvmoiscsi device-config:target=192.168.1.10 \ device-config:targetIQN=192.168.1.10:filer1 \ device-config:SCSIid=149455400000000000000000002000000b70200000f000000 <!--NeedCopy--> -
引入从
sr-probe命令返回的现有存储库 UUID。将返回新存储库的 UUID:xe sr-introduce content-type=user name-label="Example Shared LVM over iSCSI SR" \ shared=true uuid=valid_sr_uuid type=lvmoiscsi <!--NeedCopy--> -
创建一个 PBD 以配合存储库。将返回新 PBD 的 UUID:
xe pbd-create type=lvmoiscsi host-uuid=valid_uuid sr-uuid=valid_sr_uuid \ device-config:target=192.168.0.1 \ device-config:targetIQN=192.168.1.10:filer1 \ device-config:SCSIid=149455400000000000000000002000000b70200000f000000 <!--NeedCopy--> -
插入 PBD 以附加存储库:
xe pbd-plug uuid=pbd_uuid <!--NeedCopy--> -
验证 PBD 插入的状态。如果成功,
currently-attached属性为 true:xe pbd-list sr-uuid=sr_uuid <!--NeedCopy-->
注意:
对资源池中的每个主机执行步骤 3 到 5。这些步骤也可以通过使用 XenCenter 中的“修复存储库”功能来执行。
实时 LUN 扩展
为了满足容量要求,您可能需要向存储阵列添加容量,以增加分配给 XenServer 主机的 LUN 大小。实时 LUN 扩展允许您在不造成任何 VM 停机的情况下增加 LUN 的大小。
向存储阵列添加更多容量后,输入,
xe sr-scan sr-uuid=sr_uuid
<!--NeedCopy-->
此命令会重新扫描存储库,并添加任何额外容量使其可用。
此操作也可在 XenCenter 中使用。选择要调整大小的存储库,然后单击 重新扫描。
警告:
- 无法收缩或截断 LUN。减小存储阵列上的 LUN 大小可能导致数据丢失。
- 调整 GFS2 SR 大小可能需要很长时间。在调整大小期间,您可能无法向池中添加更多主机或执行其他 SR 操作。
实时 VDI 迁移
实时 VDI 迁移允许管理员在不关闭虚拟机的情况下重新定位虚拟机的虚拟磁盘映像 (VDI)。此功能支持以下管理操作:
- 将虚拟机从廉价的本地存储移动到快速、弹性、阵列支持的存储。
- 将虚拟机从开发环境移动到生产环境。
- 当虚拟机受存储容量限制时,在不同存储层之间移动。
- 执行存储阵列升级。
限制和注意事项
实时 VDI 迁移受以下限制和注意事项的约束
- 目标存储库上必须有足够的可用磁盘空间。
使用 XenCenter 移动虚拟磁盘
-
在资源窗格中,选择存储虚拟磁盘的 SR,然后单击存储选项卡。
-
在虚拟磁盘列表中,选择要移动的虚拟磁盘,然后单击移动。
-
在移动虚拟磁盘对话框中,选择要将 VDI 移动到的目标 SR。
注意:
确保 SR 有足够的空间容纳另一个虚拟磁盘:可用空间显示在可用 SR 列表中。
-
单击移动以移动虚拟磁盘。
有关 xe CLI 参考,请参阅 vdi-pool-migrate。
SR 之间的冷 VDI 迁移(脱机迁移)
与 VM 关联的 VDI 可以从一个 SR 复制到另一个 SR,以适应维护要求或分层存储配置。XenCenter 允许您将 VM 及其所有 VDI 复制到相同或不同的 SR。XenCenter 和 xe CLI 的组合可用于复制单个 VDI。
有关 xe CLI 参考,请参阅 vm-migrate。
将 VM 的所有 VDI 复制到不同的 SR
XenCenter 的“复制 VM”功能会在相同或不同的 SR 上为所选 VM 创建所有 VDI 的副本。默认情况下,源 VM 和 VDI 不受影响。要将 VM 移动到所选 SR 而不是创建副本,请在“复制虚拟机”对话框中选择“删除原始 VM”选项。
- 关闭 VM。
- 在 XenCenter 中,选择 VM,然后选择 VM > 复制 VM 选项。
- 选择所需的目标 SR。
将单个 VDI 复制到不同的 SR
xe CLI 和 XenCenter 的组合可用于在 SR 之间复制单个 VDI。
-
关闭虚拟机。
-
使用 xe CLI 识别要移动的 VDI 的 UUID。如果虚拟机有 DVD 驱动器,其
vdi-uuid会被列为not in database,可以忽略。xe vbd-list vm-uuid=valid_vm_uuid <!--NeedCopy-->注意:
vbd-list命令会同时显示 VBD 和 VDI 的 UUID。请务必记录 VDI 的 UUID,而不是 VBD 的 UUID。 -
在 XenCenter 中,选择“VM 存储”选项卡。对于每个要移动的 VDI,选择该 VDI 并单击“分离”按钮。也可以使用
vbd-destroy命令完成此步骤。注意:
如果您使用
vbd-destroy命令分离 VDI UUID,请首先检查 VBD 的参数other-config:owner是否设置为true。将此参数设置为false。使用other-config:owner=true发出vbd-destroy命令也会销毁关联的 VDI。 -
使用
vdi-copy命令将每个要移动的 VM VDI 复制到目标 SR。xe vdi-copy uuid=valid_vdi_uuid sr-uuid=valid_sr_uuid <!--NeedCopy--> -
在 XenCenter 中,选择“VM 存储”选项卡。单击“附加”按钮并从新 SR 中选择 VDI。也可以使用
vbd-create命令完成此步骤。 -
要删除原始 VDI,请在 XenCenter 中选择原始 SR 的“存储”选项卡。原始 VDI 的 VM 字段值为空。使用“删除”按钮删除 VDI。
将本地光纤通道 SR 转换为共享 SR
使用 xe CLI 和 XenCenter 的“修复存储库”功能将本地 FC SR 转换为共享 FC SR:
-
将资源池中的所有主机升级到 XenServer 9。
-
确保池中的所有主机都已正确分区 SR 的 LUN。有关使用
sr-probe命令验证 LUN 是否存在于每个主机上的详细信息,请参阅探测 SR。 -
将 SR 转换为共享:
xe sr-param-set shared=true uuid=local_fc_sr <!--NeedCopy--> -
SR 从 XenCenter 中的主机级别移动到池级别,表明它现在是共享的。SR 标有红色感叹号,表示它当前未插入池中的所有主机。
-
选择 SR,然后选择 存储 > 修复存储库 选项。
-
单击 修复 为池中的每个主机创建并插入 PBD。
使用丢弃功能回收后端阵列上基于块的存储空间
您可以使用空间回收功能释放精简配置 LUN 上的未使用块。空间释放后,存储阵列可以重新使用此回收的空间。
注意:
空间回收仅适用于某些类型的存储阵列。要确定您的阵列是否支持此功能以及是否需要特定配置,请参阅硬件兼容性列表 和您的存储供应商特定文档。
要使用 XenCenter 回收空间:
-
选择 基础架构 视图,然后选择连接到 SR 的主机或池。
-
单击 存储 选项卡。
-
从列表中选择 SR,然后单击 回收已释放空间。
-
单击 是 确认操作。
-
单击 通知,然后单击 事件 以查看操作状态。
有关详细信息,请在 XenCenter 中按 F1 访问联机帮助。
要使用 xe CLI 回收空间,可以使用以下命令:
xe host-call-plugin host-uuid=host_uuid \
plugin=trim fn=do_trim args:sr_uuid=sr_uuid
注意:
- 此操作仅适用于基于阵列上精简配置 LUN 的 LVM SR。本地 SSD 也可以从空间回收中受益。
- 对于基于文件的 SR(例如 NFS 和 EXT3/EXT4),不需要空间回收。对于这些 SR 类型,XenCenter 中不提供“回收已释放空间”按钮。
- 如果您对基于文件的 SR 或厚置备的 LVM SR 运行空间回收 xe 命令,该命令将返回错误。
- 空间回收是一项密集型操作,可能导致存储阵列性能下降。因此,仅当阵列上需要空间回收时才启动此操作。我们建议您在阵列需求高峰期之外安排此工作。
删除快照时自动回收空间
使用 XenServer 删除快照时,LVM SR 上分配的空间会自动回收,并且不需要重新启动 VM。此操作称为“联机合并”。联机合并适用于所有类型的 SR。
在某些情况下,自动空间回收可能无法进行。在这些情况下,我们建议您使用脱机合并工具:
- 在 VM I/O 吞吐量很大的情况下
- 在一段时间后空间未被回收的情况下
注意:
- 由于执行了挂起/恢复操作,运行脱机合并工具会导致 VM 出现一些停机时间。
- 在运行该工具之前,请删除所有不再需要的快照和克隆。该工具会根据剩余的快照/克隆尽可能多地回收空间。如果要回收全部空间,请删除所有快照和克隆。
- VM 磁盘必须位于单个主机的共享存储或本地存储上。磁盘同时位于这两种存储类型的 VM 无法合并。
使用脱机合并工具回收空间
使用 XenCenter 启用隐藏对象。单击“视图”>“隐藏”对象。在“资源”窗格中,选择要获取 UUID 的虚拟机。UUID 显示在“常规”选项卡中。
在“资源”窗格中,选择资源池协调器(列表中的第一个主机)。“常规”选项卡显示 UUID。如果您未使用资源池,请选择虚拟机的宿主机。
-
在主机上打开控制台并运行以下命令:
xe host-call-plugin host-uuid=host-UUID \ plugin=coalesce-leaf fn=leaf-coalesce args:vm_uuid=VM-UUID <!--NeedCopy-->例如,如果虚拟机 UUID 为
9bad4022-2c2d-dee6-abf5-1b6195b1dad5且主机 UUID 为b8722062-de95-4d95-9baa-a5fe343898ea,请运行以下命令:xe host-call-plugin host-uuid=b8722062-de95-4d95-9baa-a5fe343898ea \ plugin=coalesce-leaf fn=leaf-coalesce args:vm_uuid=9bad4022-2c2d-dee6-abf5-1b6195b1dad5 <!--NeedCopy--> -
此命令会暂停虚拟机(除非它已关机),启动空间回收过程,然后恢复虚拟机。
注意:
建议您在运行脱机合并工具之前手动关闭或暂停虚拟机。您可以使用 XenCenter 或 XenServer CLI 关闭或暂停虚拟机。如果您在运行中的虚拟机上运行合并工具,该工具会自动暂停虚拟机,执行所需的 VDI 合并操作,然后恢复虚拟机。敏捷虚拟机可能会在不同的主机上重新启动。
如果要合并的虚拟磁盘映像 (VDI) 位于共享存储上,则必须在池协调器上运行脱机合并工具。
如果要合并的 VDI 位于本地存储上,请在连接了本地存储的主机上运行脱机合并工具。
使用磁盘 I/O
您可以配置磁盘 I/O 调度程序和磁盘 I/O 优先级设置来更改磁盘的性能。
注意:
本节中描述的磁盘 I/O 功能不适用于 GFS2、NFS 或 SMB3 存储。
调整磁盘 I/O 调度程序
为了获得通用性能,默认磁盘调度程序 none 应用于所有新的 SR 类型。none 调度程序为访问同一设备的竞争虚拟机提供最公平的性能。
-
使用以下命令调整磁盘调度程序:
xe sr-param-set other-config:scheduler=<option> uuid=<sr_uuid> <!--NeedCopy--><option>的值可以是以下术语之一:none、bfq或mq-deadline。 -
拔出并重新插入相应的 PBD,以使调度程序参数生效。
xe pbd-unplug uuid=<pbd_uuid> xe pbd-plug uuid=<pbd_uuid> <!--NeedCopy-->
要应用磁盘 I/O 请求优先级,请覆盖默认设置并将 bfq 磁盘调度程序分配给 SR。
虚拟磁盘 I/O 请求优先级
虚拟磁盘具有可选的 I/O 请求优先级设置。您可以使用这些设置来优先处理特定虚拟机磁盘的 I/O,而不是其他磁盘。
在为 VBD 配置任何磁盘 I/O 请求优先级参数之前,请确保已正确设置 SR 的磁盘调度程序。调度程序参数必须在 SR 上设置为 bfq,并且关联的 PBD 已拔出并重新插入。有关如何调整调度程序的信息,请参阅调整磁盘 I/O 调度程序。
对于共享 SR,当多个主机访问同一 LUN 时,优先级设置将应用于从同一主机访问 LUN 的 VBD。这些设置不适用于池中的所有主机。
主机向远程存储发出请求,但请求优先级由远程存储完成。
设置磁盘 I/O 请求参数
可以使用带以下参数的 xe vbd-param-set 命令将这些设置应用于现有虚拟磁盘:
-
qos_algorithm_type- 此参数必须设置为值ionice,这是虚拟磁盘唯一支持的算法。 -
qos_algorithm_param- 使用此参数设置键值对。对于虚拟磁盘,qos_algorithm_param接受一个sched键,并且根据其值,还需要一个class键。键
qos_algorithm_param:sched可以具有以下值之一:-
sched=rt或sched=real-time- 此值将调度参数设置为实时优先级,这需要一个class参数来设置值。 -
sched=idle- 此值将调度参数设置为闲置优先级,这不需要class参数来设置任何值。 -
sched=anything- 此值将调度参数设置为尽力而为优先级,这需要一个class参数来设置值。
键
qos_algorithm_param:class可以具有以下值之一:-
以下关键字之一:
highest、high、normal、low、lowest。 -
一个介于 0 到 7 之间的整数,其中 7 是最高优先级,0 是最低优先级。例如,优先级为 5 的 I/O 请求优先于优先级为 2 的 I/O 请求。
-
示例
例如,以下 CLI 命令将虚拟磁盘的 VBD 设置为使用实时优先级 5:
xe vbd-param-set uuid=<vbd_uuid> qos_algorithm_type=ionice
xe vbd-param-set uuid=<vbd_uuid> qos_algorithm_params:sched=rt
xe vbd-param-set uuid=<vbd_uuid> qos_algorithm_params:class=5
xe sr-param-set uuid=<sr_uuid> other-config:scheduler=bfq
xe pbd-unplug uuid=<pbd_uuid>
xe pbd-plug uuid=<pbd_uuid>
<!--NeedCopy-->