md_update_sb がブート RAID 1 をビジー状態に維持

md_update_sb がブート RAID 1 をビジー状態に維持

Ubuntu 18.04 LTS を RAID 1 構成の 4 つのハード ドライブにインストールしました。ハード ドライブが何らかの理由でビジー状態になり、スピン ダウンしません。実行したこと: - 頻繁にアクセスされるディレクトリ (/var/log、/tmp など) を tmpfs としてメモリにマップ - /bin、/sbin、およびいくつかのライブラリを vmtouch 経由でメモリにロック

これらの変更後、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 がファイルを書き込んでいることを示しました。インストールで snapd を必要とするものは何も認識していないため、削除しました。

答え1

とにかく、inotifywait ログをたどって、ファイル システムに書き込んでいるプロセス (たくさんありました!) を 1 つずつ見つけました。ブート スクリプトを使用して各ディレクトリを tmpfs に再マップし、ファイルを tmpfs にコピーしてファイル システムの場所ではなく再マウントし、シャットダウン時にファイルをコピーし直しました。これには注意点がありますが、今のところはこれで十分です。

関連情報