成功地从故障的 Thecus N7700 Pro NAS 上对 7 个硬盘驱动器进行映像,并且显然成功地从备份映像重建了 RAID6 阵列后,我在尝试安装 RAID6 阵列时收到旧的 PV 标头警告错误,并且在尝试安装时出现错误更新卷组元数据。
以下是重建阵列后采取的步骤,供参考。如能提供任何关于如何解决此问题的指导/建议,我们将不胜感激。
用于将 7 个硬盘驱动器映像添加到循环设备的命令如下:
$ sudo losetup -fPr --show /media/<target drive mount point>/recovery/hdd<id>.img
Returned output:
/dev/loop0
$ sudo losetup -fPr --show /media/<target drive mount point>/recovery/hdd<id>.img
Returned output:
/dev/loop1
$ sudo losetup -fPr --show /media/<target drive mount point>/recovery/hdd<id>.img
Returned output:
/dev/loop2
$ sudo losetup -fPr --show /media/<target drive mount point>/recovery/hdd<id>.img
Returned output:
/dev/loop3
$ sudo losetup -fPr --show /media/<target drive mount point>/recovery/hdd<id>.img
Returned output:
/dev/loop4
$ sudo losetup -fPr --show /media/<target drive mount point>/recovery/hdd<id>.img
Returned output:
/dev/loop5
$ sudo losetup -fPr --show /media/<target drive mount point>/recovery/hdd<id>.img
Returned output:
/dev/loop6
重建RAID6阵列
使用以下命令将每个 RAID6 阵列驱动器映像添加到下一个可用的循环设备:
$ sudo mdadm --assemble --scan
Returned output:
mdadm: /dev/md/0 has been started with 7 drives.
mdadm: /dev/md1 has been started with 7 drives.
检查块设备
使用以下命令检查所有块设备:
$ sudo lsblk
Returned output:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 1.8T 1 loop
├─loop0p1 259:0 0 1.9G 1 part
│ └─md0 9:0 0 1.9G 1 raid1
└─loop0p2 259:1 0 1.8T 1 part
└─md1 9:1 0 9.1T 1 raid6
├─vg0-syslv 254:0 0 1G 0 lvm
└─vg0-lv0 254:1 0 8.6T 0 lvm
loop1 7:1 0 1.8T 1 loop
├─loop1p1 259:2 0 1.9G 1 part
│ └─md0 9:0 0 1.9G 1 raid1
└─loop1p2 259:3 0 1.8T 1 part
└─md1 9:1 0 9.1T 1 raid6
├─vg0-syslv 254:0 0 1G 0 lvm
└─vg0-lv0 254:1 0 8.6T 0 lvm
loop2 7:2 0 1.8T 1 loop
├─loop2p1 259:4 0 1.9G 1 part
│ └─md0 9:0 0 1.9G 1 raid1
└─loop2p2 259:5 0 1.8T 1 part
└─md1 9:1 0 9.1T 1 raid6
├─vg0-syslv 254:0 0 1G 0 lvm
└─vg0-lv0 254:1 0 8.6T 0 lvm
loop3 7:3 0 1.8T 1 loop
├─loop3p1 259:6 0 1.9G 1 part
│ └─md0 9:0 0 1.9G 1 raid1
└─loop3p2 259:7 0 1.8T 1 part
└─md1 9:1 0 9.1T 1 raid6
├─vg0-syslv 254:0 0 1G 0 lvm
└─vg0-lv0 254:1 0 8.6T 0 lvm
loop4 7:4 0 1.8T 1 loop
├─loop4p1 259:8 0 1.9G 1 part
│ └─md0 9:0 0 1.9G 1 raid1
└─loop4p2 259:9 0 1.8T 1 part
└─md1 9:1 0 9.1T 1 raid6
├─vg0-syslv 254:0 0 1G 0 lvm
└─vg0-lv0 254:1 0 8.6T 0 lvm
loop5 7:5 0 1.8T 1 loop
├─loop5p1 259:10 0 1.9G 1 part
│ └─md0 9:0 0 1.9G 1 raid1
└─loop5p2 259:11 0 1.8T 1 part
└─md1 9:1 0 9.1T 1 raid6
├─vg0-syslv 254:0 0 1G 0 lvm
└─vg0-lv0 254:1 0 8.6T 0 lvm
loop6 7:6 0 1.8T 1 loop
├─loop6p1 259:12 0 1.9G 1 part
│ └─md0 9:0 0 1.9G 1 raid1
└─loop6p2 259:13 0 1.8T 1 part
└─md1 9:1 0 9.1T 1 raid6
├─vg0-syslv 254:0 0 1G 0 lvm
└─vg0-lv0 254:1 0 8.6T 0 lvm
sda 8:0 0 953.9G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 23.3G 0 part /
├─sda3 8:3 0 9.3G 0 part /var
├─sda4 8:4 0 977M 0 part [SWAP]
├─sda5 8:5 0 1.9G 0 part /tmp
└─sda6 8:6 0 918G 0 part /home
sdb 8:16 0 10.9T 0 disk
└─sdb1 8:17 0 10.9T 0 part /media/<user>/7DFF-F49D
sdc 8:32 0 16.4T 0 disk
└─sdc1 8:33 0 16.4T 0 part /media/<user>/data
sr0 11:0 1 1024M 0 rom
检查重建的 RAID6 阵列详细信息
使用以下命令检查重建的 RAID6 阵列详细信息:
$ sudo mdadm --detail /dev/md1
Returned output:
/dev/md1:
Version : 0.90
Creation Time : Tue Apr 27 16:44:08 2010
Raid Level : raid6
Array Size : 9757760000 (9.09 TiB 9.99 TB)
Used Dev Size : 1951552000 (1861.15 GiB 1998.39 GB)
Raid Devices : 7
Total Devices : 7
Preferred Minor : 1
Persistence : Superblock is persistent
Update Time : Sun Mar 26 02:00:20 2023
State : clean
Active Devices : 7
Working Devices : 7
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 64K
Consistency Policy : resync
UUID : ea8bd249:df05f100:4d76e077:2dd3364e
Events : 0.23046
Number Major Minor RaidDevice State
0 259 1 0 active sync /dev/loop0p2
1 259 3 1 active sync /dev/loop1p2
2 259 5 2 active sync /dev/loop2p2
3 259 7 3 active sync /dev/loop3p2
4 259 9 4 active sync /dev/loop4p2
5 259 11 5 active sync /dev/loop5p2
6 259 13 6 active sync /dev/loop6p2
创建并检查 Mdadm 配置文件
注意:运行此任务需要 root 权限。使用以下命令创建 mdadm.conf 文件:
$ sudo mdadm --detail --scan > /etc/mdadm.conf
使用以下命令检查创建的 mdadm.conf 文件:
$ sudo cat /etc/mdadm.conf
Returned output:
ARRAY /dev/md/0 metadata=1.0 name=RCLSVR01:0 UUID=a87e6315:d3fe49fe:3a2d39f8:7977760a
ARRAY /dev/md1 metadata=0.90 UUID=ea8bd249:df05f100:4d76e077:2dd3364e
挂载重建 RAID6 阵列尝试
使用以下命令创建数据恢复挂载点:
$ sudo mkdir /mnt/RCLSVR
尝试使用以下命令挂载 RAID6 阵列:
$ sudo mount -r /dev/md1 /mnt/RCLSVR
Returned output:
mount: /mnt/RCLSVR: unknown filesystem type 'LVM2_member'.
dmesg(1) may have more information after failed mount system call.
使用以下命令检查逻辑卷组:
$ sudo lvdisplay
Returned output:
WARNING: PV /dev/md1 in VG vg0 is using an old PV header, modify the VG to update.
--- Logical volume ---
LV Path /dev/vg0/syslv
LV Name syslv
VG Name vg0
LV UUID e5ZreA-S8TO-2x0x-4pfw-Zh6h-Cs5X-EH8FVc
LV Write Access read/write
LV Creation host, time ,
LV Status available
[#] open 0
LV Size 1.00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors 16384
Block device 254:0
--- Logical volume ---
LV Path /dev/vg0/lv0
LV Name lv0
VG Name vg0
LV UUID bkVNXL-2FI6-61z7-4UzW-Erwu-0sHA-oiHxbq
LV Write Access read/write
LV Creation host, time ,
LV Status available
[#] open 0
LV Size 8.63 TiB
Current LE 4525773
Segments 1
Allocation inherit
Read ahead sectors 16384
Block device 254:1
尝试使用以下命令挂载 RAID6 阵列:
$ sudo mount -r /dev/vg0/lv0 /mnt/RCLSVR
Returned output:
mount: /mnt/RCLSVR: can't read superblock on /dev/mapper/vg0-lv0.
dmesg(1) may have more information after failed mount system call.
尝试使用以下命令查找 RAID6 阵列的超级块信息:
$ sudo dumpe2fs /dev/vg0/lv0 | grep superblock
Returned output:
dumpe2fs 1.47.0 (5-Feb-2023)
dumpe2fs: Bad magic number in super-block while trying to open /dev/vg0/lv0
Couldn't find valid filesystem superblock.
$ sudo dumpe2fs /dev/vg0/syslv | grep superblock
Returned output:
dumpe2fs 1.47.0 (5-Feb-2023)
Primary superblock at 0, Group descriptors at 1-1
Backup superblock at 32768, Group descriptors at 32769-32769
Backup superblock at 98304, Group descriptors at 98305-98305
Backup superblock at 163840, Group descriptors at 163841-163841
Backup superblock at 229376, Group descriptors at 229377-229377
尝试使用以下命令挂载 RAID6 阵列:
$ sudo mount -r /dev/vg0/syslv /mnt/RCLSVR
Returned output:
mount: /mnt/RCLSVR: can't read superblock on /dev/mapper/vg0-syslv.
dmesg(1) may have more information after failed mount system call.
使用以下命令检查 RAID6 阵列卷组的活动状态:
$ sudo lvscan
Returned output:
WARNING: PV /dev/md1 in VG vg0 is using an old PV header, modify the VG to update.
ACTIVE '/dev/vg0/syslv' [1.00 GiB] inherit
ACTIVE '/dev/vg0/lv0' [8.63 TiB] inherit
尝试使用以下命令挂载 RAID6 阵列:
$ sudo mount -o ro /dev/vg0/syslv /mnt/RCLSVR
Returned output:
mount: /mnt/RCLSVR: can't read superblock on /dev/mapper/vg0-syslv.
dmesg(1) may have more information after failed mount system call.
尝试使用以下命令更新 RAID6 阵列的卷组元数据:
$ sudo vgck --updatemetadata vg0
Returned output:
WARNING: PV /dev/md1 in VG vg0 is using an old PV header, modify the VG to update.
WARNING: updating PV header on /dev/md1 for VG vg0.
Error writing device /dev/md1 at 4096 length 512.
WARNING: bcache_invalidate: block (7, 0) still dirty.
Failed to write mda header to /dev/md1.
Failed to write VG.
答案1
@frostschutz - 关于文件系统可能需要能够写入才能恢复的观点有助于解决问题。对于我的评论中您的用户名拼写错误,我们深表歉意。以下步骤是回溯到创建原始循环设备之前的位置以及成功重新创建循环设备、重新组装和挂载 RAID6 阵列所采取的步骤。
停用 LV 组
$ sudo vgchange -an /dev/vg0
删除 Mdadm 配置和数据
$ sudo apt-get -y autoremove --purge mdadm
分离循环设备
$ sudo losetup -a
$ sudo losetup -D
$ sudo losetup -l
$ sudo dmsetup 删除 /dev/loop0 dev/loop1 dev/loop2 dev/loop3 dev/loop4 dev/loop5 dev/loop6
重新启动计算机。
再次登录并检查循环设备以确保它们已消失。
$ sudo losetup -a
更改磁盘映像文件权限
$ sudo chmod +w /media//recovery/*.img
以可写模式添加图像
$ sudo losetup -fP --show /media/[目标驱动器挂载点]/recovery/hdd[id].img
返回输出:
/dev/loop0
$ sudo losetup -fP --show /media/[目标驱动器挂载点] /recovery/hdd[id].img
返回的输出:
/dev/loop1
$ sudo losetup -fP --show /media/[目标驱动器挂载点]/recovery/hdd[id].img
返回的输出:
/dev/loop2
$ sudo losetup -fP --show /media/[目标驱动器挂载点]/recovery/hdd[id].img
返回输出:
/dev/loop3
$ sudo losetup -fP --show /media/[目标驱动器挂载点]/ recovery/hdd[id].img
返回的输出:
/dev/loop4
$ sudo losetup -fP --show /media/[目标驱动器挂载点]/recovery/hdd[id].img
返回的输出:
/dev/loop5
$ sudo losetup -fP --show /media/[目标驱动器挂载点]/recovery/hdd[id].img
返回输出:
/dev/loop6
重新安装 mdadm
$ sudo apt-get install mdadm
重建RAID6阵列
使用以下命令将每个 RAID6 阵列驱动器映像添加到下一个可用循环设备:
$ sudo mdadm --assemble --scan
返回的输出:
mdadm: /dev/md/0 已启动 7 个驱动器。
mdadm:/dev/md1 已启动,有 7 个驱动器。
检查逻辑卷状态
$ sudo lvscan
返回的输出:
警告:VG vg0 中的 PV /dev/md1 正在使用旧的 PV 标头,请修改 VG 进行更新。
ACTIVE '/dev/vg0/syslv' [1.00 GiB] 继承
ACTIVE '/dev/vg0/lv0' [8.63 TiB] 继承
显示逻辑卷详细信息
$ sudo lvdisplay
返回的输出:
警告:VG vg0 中的 PV /dev/md1 正在使用旧的 PV 标头,请修改 VG 进行更新。
--- 逻辑卷 ---
LV 路径 /dev/vg0/syslv
LV 名称 syslv
VG 名称 vg0
LV UUID e5ZreA-S8TO-2x0x-4pfw-Zh6h-Cs5X-EH8FVc
LV 写访问 读/写
LV 创建主机、时间、
LV可用状态
[#] open 0
LV 大小 1.00 GiB
当前 LE 512
段 1
分配继承 预
读扇区 16384
块设备 254:0
--- 逻辑卷 ---
LV 路径 /dev/vg0/lv0
LV 名称 lv0
VG 名称 vg0
LV UUID bkVNXL-2FI6-61z7-4UzW-Erwu-0sHA-oiHxbq
LV 写入访问 读/写
LV 创建主机、时间、
LV 状态可用
[#] 打开 0
LV 大小 8.63 TiB
当前 LE 4525773
段 1
分配继承 预
读扇区 16384
块设备 254:1
更新卷组元数据
$ sudo vgck --updatemetadata vg0
返回的输出:
警告:VG vg0 中的 PV /dev/md1 正在使用旧的 PV 标头,请修改 VG 进行更新。
警告:更新 /dev/md1 上 VG vg0 的 PV 标头。
挂载恢复的 RAID6 阵列
$ sudo mount -o ro /dev/vg0/lv0 /mnt/RCLSVR
那时就可以访问和恢复数据了。
希望这对其他人有帮助,并再次感谢您的帮助@frostschutz。