Ubuntu 22.04 LTS 在多個 RAID 的 RAID 重新檢查期間凍結

Ubuntu 22.04 LTS 在多個 RAID 的 RAID 重新檢查期間凍結

我在一台具有三個不同大小和幾何形狀的軟體 RAID 的機器上運行 Ubuntu 22.04,其中兩個(它們稱為md5md6)非常大。由於某些原因,這些陣列之間共用磁碟。

每個月,cron自動開始重新檢查軟體 RAID 陣列。由於共用磁碟,在給定時間只能執行三個 RAID 檢查之一,其他檢查會自動暫停。此外,重新檢查每天只運行六個小時,儘管我不知道如何確定這六個小時時間窗口的開始時間。

當第二天md6重新檢查中斷時,檔案系統掛載就凍結了。md6所有對該檔案系統進行讀取和寫入的進程和執行緒都陷入「不間斷睡眠」狀態。強制卸載或強制拆卸陣列也是不可能的,因此我必須重新啟動才能再次存取我的資料。除了有效的 DOS 之外,似乎沒有任何資料遺失。

從日誌中,我看到發生了以下情況:在第一天,同時啟動了對所有三個數組的檢查。最小的數組md1,贏得了誰先被檢查的競賽,而md5md6必須等待。md1不到十分鐘即可完成,然後md6持續到第一天結束。

第二天,md5(不是已經開始的md6!)誰被檢查就贏得了比賽。六個小時後,md5當天的檢查就會中斷。md6顯然,它在幾毫秒後收到“運行”命令,開始運行,但在它啟動的同一秒鐘內仍然收到 6 小時停止。

之後,檢查的超快速啟動停止md6md6凍結。日誌中的第一個跡像是警告,表示寫入檔案系統日誌的嘗試已被封鎖超過兩分鐘:

這裡是日誌的相關部分(“M”是機器的名稱):

Sep  4 08:23:59 M root: mdcheck start checking /dev/md1
Sep  4 08:23:59 M kernel: [1682166.084604] md: data-check of RAID array md1
Sep  4 08:24:00 M root: mdcheck start checking /dev/md5
Sep  4 08:24:00 M kernel: [1682167.725977] md: delaying data-check of md5 until md1 has finished (they share one or more physical units)
Sep  4 08:24:00 M root: mdcheck start checking /dev/md6
Sep  4 08:24:00 M kernel: [1682167.758063] md: delaying data-check of md6 until md5 has finished (they share one or more physical units)
Sep  4 08:33:23 M kernel: [1682730.686726] md: md1: data-check done.
Sep  4 08:33:23 M kernel: [1682730.697864] md: data-check of RAID array md6
Sep  4 08:33:23 M kernel: [1682730.697864] md: delaying data-check of md5 until md6 has finished (they share one or more physical units)
Sep  4 08:34:01 M root: mdcheck finished checking /dev/md1
Sep  4 14:24:02 M root: pause checking /dev/md5 at 0 
Sep  4 14:24:03 M kernel: [1703770.476375] md: md6: data-check interrupted.
Sep  4 14:24:03 M root: pause checking /dev/md6 at 5702160936
Sep  4 14:24:03 M systemd[1]: mdcheck_start.service: Deactivated successfully.
Sep  4 14:24:03 M systemd[1]: mdcheck_start.service: Consumed 1.957s CPU time.
Sep  4 20:03:05 M systemd[1]: mdmonitor-oneshot.service: Deactivated successfully.

Sep  5 07:02:14 M root: mdcheck continue checking /dev/md5 from 0 
Sep  5 07:02:14 M kernel: [1763663.944043] md: data-check of RAID array md5
Sep  5 07:02:14 M root: mdcheck continue checking /dev/md6 from 5702160936
Sep  5 07:02:14 M kernel: [1763663.980271] md: delaying data-check of md6 until md5 has finished (they share one or more physical units)
Sep  5 13:02:26 M kernel: [1785276.510597] md: md5: data-check interrupted.
Sep  5 13:02:27 M kernel: [1785276.786479] md: data-check of RAID array md6
Sep  5 13:02:27 M root: pause checking /dev/md5 at 5824508144
Sep  5 13:02:27 M kernel: [1785276.795438] md: md6: data-check interrupted.
Sep  5 13:05:31 M kernel: [1785461.181277] INFO: task jbd2/md6-8:2495 blocked for more than 120 seconds.
Sep  5 13:05:31 M kernel: [1785461.181441] task:jbd2/md6-8      state:D stack:    0 pid: 2495 ppid:     2 flags:0x00004000
Sep  5 13:05:31 M kernel: [1785461.181742]  md_write_start.part.0+0x174/0x220
Sep  5 13:05:31 M kernel: [1785461.181753]  md_write_start+0x14/0x30
Sep  5 13:05:31 M kernel: [1785461.181781]  md_handle_request+0x12d/0x1b0
Sep  5 13:05:31 M kernel: [1785461.181792]  md_submit_bio+0x71/0xc0
Sep  5 14:44:14 M systemd[1]: mdmonitor-oneshot.service: Deactivated successfully.

由於/檔案/home系統位於未受影響的 RAID 上,因此在md6.cat /proc/mdstat提供了以下資訊:

Personalities : [raid1] [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid10]
md5 : active raid5 sdd4[1] sdk4[2] sdh4[0] sdl4[4]
      11415389184 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
      bitmap: 0/29 pages [0KB], 65536KB chunk

md1 : active raid1 sdd3[0] sdk3[1] sdh3[3] sdl3[2]
      100596736 blocks super 1.2 [4/4] [UUUU]

md6 : active raid6 sdd2[10] sdk2[9] sdh2[11] sdl2[8] sdg[5] sdf[4] sdb[1] sdc[2] sdi[6] sde[3] sdj[7] sda[0]
      117186867200 blocks super 1.2 level 6, 512k chunk, algorithm 2 [12/12] [UUUUUUUUUUUU]
      [====>................]  check = 24.3% (2851080676/11718686720) finish=95845361544.0min speed=0K/sec
      bitmap: 0/88 pages [0KB], 65536KB chunk

請注意,這似乎以 1 kB 塊的形式返回重新檢查的位置,其中 2851080676 等於 5702161352 個扇區,距離前一天/proc/mdstat登錄的 5702160936 僅 416 個扇區(不到一個塊!)syslog

到目前為止,我的緩解措施是停用自動 MD RAID 重新檢查

答案1

您可能會遇到這個錯誤:https://bugs.launchpad.net/ubuntu/+source/linux-signed-hwe-5.11/+bug/1942935。這是一個上游核心錯誤,在 Linux v5.19 中提供了修復它的補丁。

評論10,您可以嘗試此解決方法(首先切換md1md5/ md6/etc.):

echo active | sudo tee /sys/block/md1/md/array_state

相關內容