某些盤多次斷電後Linux軟RAID5不出現,怎麼辦?

某些盤多次斷電後Linux軟RAID5不出現,怎麼辦?

我有所有重要資料的備份。最後需要進行恢復。但我想在走這條路之前先嘗試一些東西,這是一個很好的情況來了解我在這裡使用的所有東西。

我有一個 mpt sas 控制器,具有 8 個 SATA 通道,連接到配置的兩個內部 2,5" 磁碟托架。其中兩個用於 SSD 驅動器,僅用於快取 lvm 磁碟區。

6 個 1 TB 磁碟用於分割區 3 上的資料部分,配置為 RAID5 軟陣列。

其中兩個已用於分割區 1 上的引導部分和分割區 2 上的根部分。兩個 bootpart 都是使用 luks 加密的 RAID1,並且有一個帶有多個 lvs 的 lvm vg xenrootdg。如所述,所有 6 個資料部分都用作 RAID5。 raid 卷經過 luks 加密,並且在這些卷上有一個帶有 vg xendatadg 的 lvm。僅在 RAID5 磁碟區上出現問題才能啟動它們。

主要問題是容納 6 個 1TB 光碟中的 4 個的 4 個光碟盒多次斷電。由於刪除了光碟,因此必須新增光碟,也許接近尾聲時必須重新同步新光碟。這還不清楚。

我可以在第一次失敗後啟動該卷,並可以開始重新同步。但問題再次出現,因此這些 RAID 磁碟區再次出現故障。

第二次故障時,系統無法讀取特殊磁碟的磁區,並且由於其中一張故障磁碟的某些磁區記錄了永久讀取錯誤,RAID5 已降級。

同時,核心以新名稱重新註冊光碟(例如,從 sde 重新命名為 sdk 等)。

系統重新啟動後,我檢查了哪張光碟被記錄為故障,並透過比較序號找到了它們。將光碟新增至 /dev/zero 沒有顯示任何問題,因此我嘗試再次重新同步,但出現了相同的問題。

現在我意識到這可能是光碟托架電源的問題,因此我取出了所有光碟並至少將它們連接到主機板上現有的 SATA 連接埠上。我為 sas 控制器添加了更多光碟,這樣我現在就可以使用 dd 在分割區上進行備份。

我能夠將所有相關分區複製到兩張新光碟上,因此讀取不是問題。

也僅最大。 lvm vg 內的 3 個磁碟區已被使用。所以大多數 lvs 應該仍處於乾淨狀態,因為在我刪除第一個光碟 #2 (sdl3) 後尚未修改。

我檢查了 smartctl,因此註冊的光碟本身不存在永久性問題(沒有不可恢復的錯誤,也沒有顯示重新定位的扇區)。

但我無法啟動 RAID5 卷,儘管它應該有足夠的磁碟。

我有 5 個光碟(#0,1,3,4,5)和仍然存在的已移除光碟 #2。另外,新的替換光碟 #2 也在那裡,但顯示為備用。應該可以使用#0、1、3、4、5 來提高音量,這是可用的 6 卷中的 5 卷。但無論我嘗試什麼,至少#3 都會給我帶來最大的問題,因為它從未被接受為該卷的一部分。

因為 sdX 可以更改此處顯示的設備角色順序的檢查。這裡是目前的簡短清單:

#0 sdc3 #1 sdk3 #3 sda3 #4 sdg3 #5 sdf3

刪除了 #2 sdl3 新的 #2 標記了 #S sdb3

root@newxen:~# mdadm -E /dev/sdc3
/dev/sdc3:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x1
     Array UUID : 8d0acbbb:73bcfac9:a26557de:c29d5434
           Name : newxen:128  (local to host newxen)
  Creation Time : Sun Nov  8 22:22:15 2015
     Raid Level : raid5
   Raid Devices : 6

 Avail Dev Size : 1909221936 (910.39 GiB 977.52 GB)
     Array Size : 4773051840 (4551.94 GiB 4887.61 GB)
  Used Dev Size : 1909220736 (910.39 GiB 977.52 GB)
    Data Offset : 260992 sectors
   Super Offset : 8 sectors
   Unused Space : before=260912 sectors, after=1200 sectors
          State : clean
    Device UUID : 1142cc76:b224395c:8fb15126:fd1801fe

Internal Bitmap : 8 sectors from superblock
    Update Time : Tue Jan 16 00:02:32 2024
       Checksum : bae896cd - correct
         Events : 248741

         Layout : left-symmetric
     Chunk Size : 64K

   Device Role : Active device 0
   Array State : AARA.A ('A' == active, '.' == missing, 'R' == replacing)

   root@newxen:~# mdadm -E /dev/sdk3
/dev/sdk3:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x1
     Array UUID : 8d0acbbb:73bcfac9:a26557de:c29d5434
           Name : newxen:128  (local to host newxen)
  Creation Time : Sun Nov  8 22:22:15 2015
     Raid Level : raid5
   Raid Devices : 6

 Avail Dev Size : 1909221936 (910.39 GiB 977.52 GB)
     Array Size : 4773051840 (4551.94 GiB 4887.61 GB)
  Used Dev Size : 1909220736 (910.39 GiB 977.52 GB)
    Data Offset : 260992 sectors
   Super Offset : 8 sectors
   Unused Space : before=260912 sectors, after=1200 sectors
          State : clean
    Device UUID : 701ed2ed:13a03708:da9cc185:9c9ce3e2

Internal Bitmap : 8 sectors from superblock
    Update Time : Tue Jan 16 10:26:32 2024
       Checksum : 223defb1 - correct
         Events : 248741

         Layout : left-symmetric
     Chunk Size : 64K

   Device Role : Active device 1
   Array State : .A...A ('A' == active, '.' == missing, 'R' == replacing)

   root@newxen:~# mdadm -E /dev/sdl3
/dev/sdl3:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x1
     Array UUID : 8d0acbbb:73bcfac9:a26557de:c29d5434
           Name : newxen:128  (local to host newxen)
  Creation Time : Sun Nov  8 22:22:15 2015
     Raid Level : raid5
   Raid Devices : 6

 Avail Dev Size : 1909221936 (910.39 GiB 977.52 GB)
     Array Size : 4773051840 (4551.94 GiB 4887.61 GB)
  Used Dev Size : 1909220736 (910.39 GiB 977.52 GB)
    Data Offset : 260992 sectors
   Super Offset : 8 sectors
   Unused Space : before=260912 sectors, after=1200 sectors
          State : clean
    Device UUID : 1b34e8d5:f3df3e52:307a06a0:38c265e4

Internal Bitmap : 8 sectors from superblock
    Update Time : Mon Jan 15 13:36:40 2024
       Checksum : 7023234b - correct
         Events : 248741

         Layout : left-symmetric
     Chunk Size : 64K

   Device Role : Active device 2
   Array State : AAAAAA ('A' == active, '.' == missing, 'R' == replacing)

   root@newxen:~# mdadm -E /dev/sda3
/dev/sda3:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x83
     Array UUID : 8d0acbbb:73bcfac9:a26557de:c29d5434
           Name : newxen:128  (local to host newxen)
  Creation Time : Sun Nov  8 22:22:15 2015
     Raid Level : raid5
   Raid Devices : 6

 Avail Dev Size : 1909221936 (910.39 GiB 977.52 GB)
     Array Size : 4773051840 (4551.94 GiB 4887.61 GB)
  Used Dev Size : 1909220736 (910.39 GiB 977.52 GB)
    Data Offset : 260992 sectors
   Super Offset : 8 sectors
Recovery Offset : 0 sectors
   Unused Space : before=260912 sectors, after=1200 sectors
          State : clean
    Device UUID : fa9d44c6:bb18bc8c:04ed5943:13a6ddfb

Internal Bitmap : 8 sectors from superblock
    Update Time : Tue Jan 16 00:02:32 2024
       Checksum : 55c99a69 - correct
         Events : 243265

         Layout : left-symmetric
     Chunk Size : 64K

   Device Role : Active device 3
   Array State : AAAA.A ('A' == active, '.' == missing, 'R' == replacing)

   root@newxen:~# mdadm -E /dev/sdg3
/dev/sdg3:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x8b
     Array UUID : 8d0acbbb:73bcfac9:a26557de:c29d5434
           Name : newxen:128  (local to host newxen)
  Creation Time : Sun Nov  8 22:22:15 2015
     Raid Level : raid5
   Raid Devices : 6

 Avail Dev Size : 1909221936 (910.39 GiB 977.52 GB)
     Array Size : 4773051840 (4551.94 GiB 4887.61 GB)
  Used Dev Size : 1909220736 (910.39 GiB 977.52 GB)
    Data Offset : 260992 sectors
   Super Offset : 8 sectors
Recovery Offset : 0 sectors
   Unused Space : before=260904 sectors, after=1200 sectors
          State : clean
    Device UUID : 63a171d2:dad103ed:ff18efc4:d31bc05d

Internal Bitmap : 8 sectors from superblock
    Update Time : Tue Jan 16 10:22:01 2024
  Bad Block Log : 512 entries available at offset 72 sectors - bad blocks present.
       Checksum : a5b990c1 - correct
         Events : 244946

         Layout : left-symmetric
     Chunk Size : 64K

   Device Role : Active device 4
   Array State : .AA.AA ('A' == active, '.' == missing, 'R' == replacing)

   root@newxen:~# mdadm -E /dev/sdf3
/dev/sdf3:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x1
     Array UUID : 8d0acbbb:73bcfac9:a26557de:c29d5434
           Name : newxen:128  (local to host newxen)
  Creation Time : Sun Nov  8 22:22:15 2015
     Raid Level : raid5
   Raid Devices : 6

 Avail Dev Size : 1909221936 (910.39 GiB 977.52 GB)
     Array Size : 4773051840 (4551.94 GiB 4887.61 GB)
  Used Dev Size : 1909220736 (910.39 GiB 977.52 GB)
    Data Offset : 260992 sectors
   Super Offset : 8 sectors
   Unused Space : before=260912 sectors, after=1200 sectors
          State : clean
    Device UUID : d6e11e48:e1258598:f9d5251c:795c8308

Internal Bitmap : 8 sectors from superblock
    Update Time : Tue Jan 16 10:26:32 2024
       Checksum : c8dc31e3 - correct
         Events : 248741

         Layout : left-symmetric
     Chunk Size : 64K

   Device Role : Active device 5
   Array State : .A...A ('A' == active, '.' == missing, 'R' == replacing)

Here the replacing disc
root@newxen:~# mdadm -E /dev/sdb3
/dev/sdb3:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x9
     Array UUID : 8d0acbbb:73bcfac9:a26557de:c29d5434
           Name : newxen:128  (local to host newxen)
  Creation Time : Sun Nov  8 22:22:15 2015
     Raid Level : raid5
   Raid Devices : 6

 Avail Dev Size : 7720024847 (3681.19 GiB 3952.65 GB)
     Array Size : 4773051840 (4551.94 GiB 4887.61 GB)
  Used Dev Size : 1909220736 (910.39 GiB 977.52 GB)
    Data Offset : 260992 sectors
   Super Offset : 8 sectors
   Unused Space : before=260912 sectors, after=5810804111 sectors
          State : clean
    Device UUID : 1be91027:ca00bcc9:7e21dd61:76cdf787

Internal Bitmap : 8 sectors from superblock
    Update Time : Tue Jan 16 10:26:32 2024
  Bad Block Log : 512 entries available at offset 16 sectors - bad blocks present.
       Checksum : f892a18d - correct
         Events : 248741

         Layout : left-symmetric
     Chunk Size : 64K

   Device Role : spare
   Array State : .A...A ('A' == active, '.' == missing, 'R' == replacing)

現在的情況:

root@newxen:~# cat /proc/mdstat 
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md128 : inactive sda3[3](S) sdb3[6](S) sdf3[5](S) sdc3[0](S) sdg3[2](S) sdk3[1](S)
      8633067263 blocks super 1.2
...

root@newxen:~# mdadm --detail /dev/md128
/dev/md128:
           Version : 1.2
        Raid Level : raid0
     Total Devices : 6
       Persistence : Superblock is persistent

             State : inactive
   Working Devices : 6

              Name : newxen:128  (local to host newxen)
              UUID : 8d0acbbb:73bcfac9:a26557de:c29d5434
            Events : 248741

    Number   Major   Minor   RaidDevice

       -       8      163        -        /dev/sdk3
       -       8       99        -        /dev/sdg3
       -       8       83        -        /dev/sdf3
       -       8       35        -        /dev/sdc3
       -       8       19        -        /dev/sdb3
       -       8        3        -        /dev/sda3

如果我檢查最新日期和數組狀態,那麼我的意思是,首先 Jan 15 13:36:40 sdl3 必須使用 AAAAAA 設定失敗並刪除(我手動製作),但應該是乾淨的 Jan 16 00:02:32 sda3 AAAA.A 看起來像乾淨的Jan 16 00:02:32 sdc3 和AARA.A 看起來像乾淨的Jan 16 10:22:01 sdg3 和.AA.AA 看起來像不乾淨的Jan 16 10:26: 32 sdk3 和.A。

應該可以使用現有零件 sda3 sdc3 sdg3 sdk3 sdf3 組裝 raid 卷,可能是因為它位於陣列 sdb3 中。

我嘗試了不同的方法,但沒有一個讓我回到重新同步磁碟區。

mdadm --assemble --scan --verbose
...
mdadm: /dev/sda3 is identified as a member of /dev/md128, slot 3.
mdadm: /dev/sdl3 is identified as a member of /dev/md128, slot 2.
mdadm: /dev/sdf3 is identified as a member of /dev/md128, slot 5.
mdadm: /dev/sdg3 is identified as a member of /dev/md128, slot 4.
mdadm: /dev/sdk3 is identified as a member of /dev/md128, slot 1.
mdadm: /dev/sdc3 is identified as a member of /dev/md128, slot 0.
mdadm: /dev/sdb3 is identified as a member of /dev/md128, slot -1.
mdadm: ignoring /dev/sdk3 as it reports /dev/sdl3 as failed
mdadm: ignoring /dev/sdf3 as it reports /dev/sdl3 as failed
mdadm: device 12 in /dev/md128 has wrong state in superblock, but /dev/sdb3 seems ok
mdadm: no uptodate device for slot 1 of /dev/md128
mdadm: added /dev/sdl3 to /dev/md128 as 2
mdadm: added /dev/sda3 to /dev/md128 as 3 (possibly out of date)
mdadm: added /dev/sdg3 to /dev/md128 as 4 (possibly out of date)
mdadm: no uptodate device for slot 5 of /dev/md128
mdadm: added /dev/sdb3 to /dev/md128 as -1
mdadm: added /dev/sdc3 to /dev/md128 as 0
mdadm: /dev/md128 assembled from 2 drives and 1 spare - not enough to start the array.
...
root@newxen:~# cat /proc/mdstat 
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md128 : inactive sdf3[5](S) sdb3[6](S) sdc3[0](S) sdk3[1](S) sdg3[2](S) sdl3[4](S)
      8633067263 blocks super 1.2
...
root@newxen:~# mdadm --detail /dev/md128
/dev/md128:
           Version : 1.2
        Raid Level : raid0
     Total Devices : 6
       Persistence : Superblock is persistent

             State : inactive
   Working Devices : 6

              Name : newxen:128  (local to host newxen)
              UUID : 8d0acbbb:73bcfac9:a26557de:c29d5434
            Events : 248741

    Number   Major   Minor   RaidDevice

       -       8      179        -        /dev/sdl3
       -       8      163        -        /dev/sdk3
       -       8       99        -        /dev/sdg3
       -       8       83        -        /dev/sdf3
       -       8       35        -        /dev/sdc3
       -       8       19        -        /dev/sdb3

所以看起來舊的刪除的 sdl3 和替換的 sdb3 造成了一些麻煩。所以再次停止 md128 並嘗試在沒有它們的情況下手動啟動它:

root@newxen:~# mdadm --assemble /dev/md128 /dev/sdc3 /dev/sdk3 /dev/sda3 /dev/sdg3 /dev/sdf3 --verbose
mdadm: looking for devices for /dev/md128
mdadm: /dev/sdc3 is identified as a member of /dev/md128, slot 0.
mdadm: /dev/sdk3 is identified as a member of /dev/md128, slot 1.
mdadm: /dev/sda3 is identified as a member of /dev/md128, slot 3.
mdadm: /dev/sdg3 is identified as a member of /dev/md128, slot 4.
mdadm: /dev/sdf3 is identified as a member of /dev/md128, slot 5.
mdadm: ignoring /dev/sdk3 as it reports /dev/sdc3 as failed
mdadm: ignoring /dev/sdg3 as it reports /dev/sdc3 as failed
mdadm: ignoring /dev/sdf3 as it reports /dev/sdc3 as failed
mdadm: no uptodate device for slot 1 of /dev/md128
mdadm: no uptodate device for slot 2 of /dev/md128
mdadm: added /dev/sda3 to /dev/md128 as 3 (possibly out of date)
mdadm: no uptodate device for slot 4 of /dev/md128
mdadm: no uptodate device for slot 5 of /dev/md128
mdadm: added /dev/sdc3 to /dev/md128 as 0
mdadm: /dev/md128 assembled from 1 drive - not enough to start the array.

root@newxen:~# cat /proc/mdstat 
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md128 : inactive sdk3[1](S) sdf3[5](S) sdg3[2](S) sdc3[0](S)
      3818443872 blocks super 1.2
...

root@newxen:~# mdadm --detail /dev/md128
/dev/md128:
           Version : 1.2
        Raid Level : raid0
     Total Devices : 4
       Persistence : Superblock is persistent

             State : inactive
   Working Devices : 4

              Name : newxen:128  (local to host newxen)
              UUID : 8d0acbbb:73bcfac9:a26557de:c29d5434
            Events : 248741

    Number   Major   Minor   RaidDevice

       -       8      163        -        /dev/sdk3
       -       8       99        -        /dev/sdg3
       -       8       83        -        /dev/sdf3
       -       8       35        -        /dev/sdc3

所以我想知道sda3沒有顯示在細節中。

我還嘗試使用 sdl3 而不是 sdb3 並嘗試重新添加缺少的部分,但沒有任何幫助。所以我想我應該將超級區塊歸零並使用 --assume-clean 選項重新建立 raid。在我看來,它應該按正確的順序進行。最好的情況也許應該沒有 sdb3 和 sdl3,因為我不確定 sdb3 在第一個問題發生之前是否已經達到同步狀態。有辦法檢查嗎?

因此,如果不存在其他選擇,我會這樣做(這個順序正確嗎?)

mdadm --create --verbose --force --assume-clean /dev/md128 --level=5 --raid-devices=6 /dev/sdc3 /dev/sdk3 missing /dev/sda3 /dev/sdg3 /dev/sdf3

另一個解決方案可能是,如果我假設磁碟 sdb3 已經幾乎同步。

mdadm --create --verbose --force --assume-clean /dev/md128 --level=5 --raid-devices=6 /dev/sdc3 /dev/sdk3 /dev/sdb3 /dev/sda3 /dev/sdg3 /dev/sdf3

我怎樣才能檢查它?

echo check >> /sys/block/md128/md/sync_action and then check dmesg carefully?

我想知道的另一件事是,在重建完成後,我必須在哪些方面做好應對問題的準備?有什麼建議我可以如何識別它們嗎?

添加更多詳細資訊:很難找到詳細資訊。因此,如果有人能夠證實或糾正我的想法,那就太好了。

同時,解密測試已經完成。設備順序的排列不必很好地進行。

因此,可以透過啟動 RAID 陣列並運行資料本身看起來仍然混合且仍然無法使用的方式來實現。因此,我暫時無法解密其中的 luks 資料。

相關內容