仅使用备用件组装 raid6 阵列

仅使用备用件组装 raid6 阵列

这个问题与使用 Pacemaker 管理 raid6 设备但是,除了涉及到的事实之外,所链接的问题中没有任何内容与该问题相关Pacemaker

为了回答这个问题,我假设阵列不是分布式的,但仍由 管理pacemaker。我创建了一个raid6由 4 个设备组成的阵列。Pacemaker管理阵列及其所有设备,全部作为资源。我添加了适当的约束,以便在至少 2 个设备启动并可用之前不会组装阵列。

当其中一个设备发生故障时,麻烦就来了。从一个完全干净的阵列开始,如果其中一个设备发生故障,或者其任何依赖项发生故障,则pacemaker通过其资源代理停用相应的设备。但是,设备本身无法关闭,因为活动raid6阵列使用它。为了解决这个问题,我进行了配置pacemaker,以便首先使阵列上的设备发生故障,然后将其移除。然后,由于不再使用该设备,它可以停用资源并关闭设备。在我的一次测试中,我怀疑pacemaker失败了,并移除了太多设备(4 个中的 3 个)并关闭阵列。现在,mdadm拒绝重新组装阵列:

[root@ceph01 ~]# mdadm --assemble /dev/md/disk1 /dev/cluster/ceph0*-disk1       
mdadm: /dev/md/disk1 assembled from 1 drive and 3 spares - not enough to start the array.
[root@ceph01 ~]#

如果我检查每个设备,我会发现其中 3 个被标记为备用,一个被标记为活动:

[root@ceph01 ~]# mdadm --assemble /dev/md/disk1 /dev/cluster/ceph0*-disk1       
mdadm: /dev/md/disk1 assembled from 1 drive and 3 spares - not enough to start the array.
[root@ceph01 ~]# mdadm --examine /dev/cluster/ceph01-disk1 
/dev/cluster/ceph01-disk1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x1
     Array UUID : 2929c57b:b3a7c8b6:36cb160e:b691c7a4
           Name : ceph02:disk1
  Creation Time : Wed May 10 16:19:13 2023
     Raid Level : raid6
   Raid Devices : 4

 Avail Dev Size : 7812667392 sectors (3.64 TiB 4.00 TB)
     Array Size : 7812667392 KiB (7.28 TiB 8.00 TB)
    Data Offset : 264192 sectors
   Super Offset : 8 sectors
   Unused Space : before=264112 sectors, after=0 sectors
          State : clean
    Device UUID : a83c4b13:338d9a52:54863e4b:6cb96cd3

Internal Bitmap : 8 sectors from superblock
    Update Time : Thu Jun  1 13:19:35 2023
  Bad Block Log : 512 entries available at offset 24 sectors
       Checksum : 7d767571 - correct
         Events : 175

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : spare
   Array State : .... ('A' == active, '.' == missing, 'R' == replacing)
[root@ceph01 ~]# mdadm --examine /dev/cluster/ceph02-disk1 
/dev/cluster/ceph02-disk1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x1
     Array UUID : 2929c57b:b3a7c8b6:36cb160e:b691c7a4
           Name : ceph02:disk1
  Creation Time : Wed May 10 16:19:13 2023
     Raid Level : raid6
   Raid Devices : 4

 Avail Dev Size : 7812667392 sectors (3.64 TiB 4.00 TB)
     Array Size : 7812667392 KiB (7.28 TiB 8.00 TB)
    Data Offset : 264192 sectors
   Super Offset : 8 sectors
   Unused Space : before=264112 sectors, after=0 sectors
          State : clean
    Device UUID : 6196eccc:bd4d6f31:b7f12e0a:45482818

Internal Bitmap : 8 sectors from superblock
    Update Time : Thu Jun  1 13:19:35 2023
  Bad Block Log : 512 entries available at offset 24 sectors
       Checksum : 199889f1 - correct
         Events : 175

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : spare
   Array State : .... ('A' == active, '.' == missing, 'R' == replacing)
[root@ceph01 ~]# mdadm --examine /dev/cluster/ceph03-disk1 
/dev/cluster/ceph03-disk1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x1
     Array UUID : 2929c57b:b3a7c8b6:36cb160e:b691c7a4
           Name : ceph02:disk1
  Creation Time : Wed May 10 16:19:13 2023
     Raid Level : raid6
   Raid Devices : 4

 Avail Dev Size : 7812667392 sectors (3.64 TiB 4.00 TB)
     Array Size : 7812667392 KiB (7.28 TiB 8.00 TB)
    Data Offset : 264192 sectors
   Super Offset : 8 sectors
   Unused Space : before=264112 sectors, after=0 sectors
          State : clean
    Device UUID : f85b705c:f5b270bf:a937406f:528916df

Internal Bitmap : 8 sectors from superblock
    Update Time : Thu Jun  1 13:19:35 2023
  Bad Block Log : 512 entries available at offset 24 sectors
       Checksum : 631d3bc1 - correct
         Events : 175

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : spare
   Array State : .... ('A' == active, '.' == missing, 'R' == replacing)
[root@ceph01 ~]# mdadm --examine /dev/cluster/ceph04-disk1 
/dev/cluster/ceph04-disk1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x1
     Array UUID : 2929c57b:b3a7c8b6:36cb160e:b691c7a4
           Name : ceph02:disk1
  Creation Time : Wed May 10 16:19:13 2023
     Raid Level : raid6
   Raid Devices : 4

 Avail Dev Size : 7812667392 sectors (3.64 TiB 4.00 TB)
     Array Size : 7812667392 KiB (7.28 TiB 8.00 TB)
    Data Offset : 264192 sectors
   Super Offset : 8 sectors
   Unused Space : before=264112 sectors, after=0 sectors
          State : clean
    Device UUID : 8e577afd:eaafa63b:fda2a699:5d55ed8b

Internal Bitmap : 8 sectors from superblock
    Update Time : Thu Jun  1 13:18:40 2023
  Bad Block Log : 512 entries available at offset 24 sectors
       Checksum : 579e6b6b - correct
         Events : 166

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 3
   Array State : ...A ('A' == active, '.' == missing, 'R' == replacing)
[root@ceph01 ~]# 

仅 1 个活动设备就足以启动raid6阵列,因为这意味着缺少 3 个设备,raid6只能处理 2 个故障。我还可以看到,所有 3 个标记为备用的设备都设置为相同的Events计数器 (175),该计数器严格高于一个活动设备 (166)。我还知道,当设备 1、2 和 3 是阵列的一部分时,它们分别在阵列中有插槽 0、1 和 2。但是,mdadm --examine没有显示这一点。

因为我有 4 个磁盘中的 3 个,它们分别位于同 4 个设备raid6阵列的不同插槽中,并且所有这 3 个设备都是干净的且具有相同的Events计数器值,所以我认为应该可以使用它们重新组装我的阵列;但我找不到如何操作。

我尝试仅使用备用设备和--run标志来重新组装阵列:

[root@ceph01 ~]# mdadm --assemble /dev/md/disk1 /dev/cluster/ceph0{1..3}-disk1 --run
mdadm: failed to RUN_ARRAY /dev/md/disk1: Invalid argument
mdadm: Not enough devices to start the array.
[root@ceph01 ~]# 

我尝试了与上面相同的命令,但--force添加了标志:

[root@ceph01 ~]# mdadm --assemble --force /dev/md/disk1 /dev/cluster/ceph0{1..3}-disk1 --run
mdadm: failed to RUN_ARRAY /dev/md/disk1: Invalid argument
mdadm: Not enough devices to start the array.
[root@ceph01 ~]# 

我尝试让它mdadm发现它可以使用的设备,只指向uuid我想要组装的数组,并使用--force--run或两个标志:

[root@ceph01 ~]# mdadm --assemble --scan --uuid=2929c57b:b3a7c8b6:36cb160e:b691c7a4 --run
mdadm: failed to RUN_ARRAY /dev/md/disk1: Input/output error
mdadm: Not enough devices to start the array.
mdadm: No arrays found in config file or automatically
[root@ceph01 ~]# mdadm --assemble --scan --uuid=2929c57b:b3a7c8b6:36cb160e:b691c7a4 --force
mdadm: /dev/md/disk1 assembled from 1 drive and 3 spares - not enough to start the array.
mdadm: No arrays found in config file or automatically
[root@ceph01 ~]# mdadm --assemble --scan --uuid=2929c57b:b3a7c8b6:36cb160e:b691c7a4 --force --run
mdadm: failed to RUN_ARRAY /dev/md/disk1: Input/output error
mdadm: Not enough devices to start the array.
mdadm: No arrays found in config file or automatically
[root@ceph01 ~]# 

到目前为止,什么都没起作用,我在网上找不到任何想法或建议。有什么方法可以恢复我的阵列吗?

相关内容