重建 RAID6 阵列安装问题

重建 RAID6 阵列安装问题

成功地从故障的 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。

相关内容