md_update_sb 保持引導 RAID 1 繁忙

md_update_sb 保持引導 RAID 1 繁忙

我在 4 個硬碟上以 RAID 1 配置安裝了 Ubuntu 18.04 LTS。有些東西讓硬碟保持忙碌並且它們永遠不會旋轉。我所做的事情: - 將經常訪問的目錄(/var/log、/tmp 等)作為 tmpfs 映射到內存中 - 通過 vmtouch 將 /bin、/sbin 和幾個庫鎖定到內存中

進行這些變更後,iotop 僅顯示 kworker 正在存取該陣列。

btrace 顯示了這一點:

9,0    0        0   350.464025971     0  m   N md md_update_sb
9,0    0       98   350.849029580  2206  Q  WM 71305144 + 8 [kworker/u128:0]
9,0    0       99   350.849034110  2206  Q  WM 71305216 + 8 [kworker/u128:0]
9,0    0      100   350.849038452  2206  Q  WM 71371648 + 8 [kworker/u128:0]
9,0    0      101   350.849045694  2206  Q   W 0 + 8 [kworker/u128:0]
9,0    0      102   350.849048534  2206  Q  WM 40 + 8 [kworker/u128:0]
9,0    1      137   350.976982774     0  C   W 0 + 8 [0]
9,0    1      138   350.994303913     0  C  WM 40 + 8 [0]
9,0    1      139   350.997638530     0  C  WM 71303296 + 8 [0]
9,0    1      140   351.011237159   353  C  WM 71305144 + 8 [0]
9,0    1      141   351.011403025     0  C  WM 71305216 + 8 [0]
9,0    1      142   351.276814094   353  C  WM 71371648 + 8 [0]
9,0    0        0   351.599976239     0  m   N md md_update_sb

如果我正確理解跟踪,是否有東西正在更新數組的超級塊?我還能做什麼來追蹤是什麼讓磁碟保持喚醒狀態?

更新1: RAID 6 也設定在相同的磁碟上,但未安裝,並且似乎無法對其進行任何存取。

cat /proc/mdstat

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md127 : active raid6 sde3[5] sdd3[4] sdc3[1] sdb3[0]
      10737154048 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/4] [UUUU]
      bitmap: 0/40 pages [0KB], 65536KB chunk

md0 : active raid1 sde2[5] sdd2[4] sdc2[2] sdb2[6]
      52395008 blocks super 1.2 [4/4] [UUUU]

unused devices: <none>

更新2: inotifywait -r -m /追蹤對檔案系統的所有存取。逐步過濾掉已經安裝到記憶體中的所有內容...

inotifywait -r -m / @/dev @/sys @/proc @/run @/var/tmp @/tmp @/var/log @/var/spool

....顯示 snapd 寫入檔案。由於我不知道安裝中需要捕捉任何內容,因此我將其清除。

答案1

無論如何,根據 inotifywait 日誌,我一一發現了寫入檔案系統的進程(有很多!)。我使用啟動腳本將每個目錄重新映射到 tmpfs,將檔案複製到 tmpfs 並重新掛載它而不是檔案系統位置,然後在關閉時將檔案複製回來。這有一些警告,但現在就可以了。

相關內容