使用 vSphere On-disk Metadata Analyzer (VOMA) 可确定并修复影响文件系统或底层逻辑卷的元数据损坏事件。
问题
在遇到与 VMFS 数据存储或虚拟闪存资源有关的问题时,您可以检查元数据一致性。例如,发生下列任一情况时,请执行元数据检查:
-
出现存储故障。
-
重新构建 RAID 或执行磁盘更换后。
-
您在 vmkernel.log 文件中看到了如下所示的元数据错误:
cpu11:268057)WARNING: HBX: 599: Volume 50fd60a3-3aae1ae2-3347-0017a4770402 ("<Datastore_name>") may be damaged on disk. Corrupt heartbeat detected at offset 3305472: [HB state 0 offset 6052837899185946624 gen 15439450 stampUS 5 $
-
无法在 VMFS 上访问文件。
-
您在 vCenter Server 的事件选项卡中看到正在报告数据存储的损坏问题。
解决方案
要检查元数据一致性,请从 ESXi 主机上的 CLI 中运行 VOMA。VOMA 可用于检查并修复 VMFS 数据存储或支持 VMFS 数据存储的逻辑卷的轻微不一致问题。
VOMA 可检查并修复以下各项。
VOMA 功能 |
描述 |
---|---|
元数据检查和修复 |
元数据检查和修复的示例包括但不限于以下内容:
|
关联性元数据检查和修复 |
要为 VMFS6 启用关联性检查,请使用 -a|--affinityChk 选项。 关联性元数据检查和修复示例如下所示:
|
目录验证 |
VOMA 可以检测并更正以下错误:
VOMA 会根据损坏的性质只修复损坏的条目或完全重新构建哈希块、分配映射块和链接块。 |
丢失和找到的文件 |
在文件系统检查过程中,VOMA 可以查找文件系统的任意位置均未引用的文件。这些孤立的文件是有效、完整的,但在系统上没有名称或目录项。 如果 VOMA 在扫描过程中遇到孤立的文件,它将在卷的根目录中创建一个名为 lost+found 的目录,用于存储孤立的文件。文件的名称使用 Filesequence-number 格式。 |
VOMA 工具附带的命令选项包括以下各项。
命令选项 |
描述 |
|
---|---|---|
-m|--module |
要运行的模块,包括: |
|
vmfs |
如果您未指定模块名称,则默认情况下使用此选项。 您可以检查 VMFS 文件系统,以及为虚拟闪存资源提供支持的文件系统。如果指定了此模块,也会对 LVM 执行最少量的检查。 |
|
lvm |
检查为 VMFS 数据存储提供支持的逻辑卷。 |
|
ptbl |
检查并验证 VMFS 分区,例如 MBR 或 GPT。如果不存在分区,请确定是否应存在分区。 |
|
-f|--func |
要执行的功能,包括: |
|
query |
列出模块所支持的功能。 |
|
check |
检查错误。 |
|
fix |
检查并修复错误。 |
|
dump |
收集元数据转储。 |
|
-a|--affinityChk |
为 VMFS6 包括关联性相关的检查和修复。 |
|
-d|--device |
表示要检查的设备或磁盘。请务必提供为 VMFS 数据存储提供后备支持的设备分区的绝对路径。如果数据存储跨多个设备,请提供主数据区的 UUID。 例如,voma -m vmfs -f check -d /vmfs/devices/disks/naa.xxxx:x 如果使用 -x|--extractDump 命令,请输入多个设备路径,带分区限定符,以逗号分隔。输入的设备路径数等于跨区设备的数量。 |
|
-b|--blockSize |
表示磁盘块大小。 |
|
-s|--logfile |
指定日志文件的路径以输出结果。 |
|
-x|--extractDump |
使用 VOMA 提取收集的转储。 |
|
-D|--dumpfile |
指出转储文件以保存收集的元数据转储。 |
|
-v|--version |
显示 VOMA 的版本。 |
|
-h|--help |
显示 VOMA 命令的帮助消息。 |
|
-Y |
指示在运行 VOMA 时没有使用 PE 表进行地址解析。 |
|
-Z| --file |
指示对已提取的设备文件运行 VOMA。 |
示例
从跨区卷收集元数据转储:
voma -m vmfs -f dump -d head_extent -D dump_filename
将收集的转储提取回跨区卷的设备:
voma -x dump_filename -d head_extent,extent_2,extent_3...extent_n