md_update_sb 保持启动 RAID 1 繁忙

md_update_sb 保持启动 RAID 1 繁忙

我在 RAID 1 配置中的 4 个硬盘上安装了 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 正在写入文件。由于我不知道我的安装中是否需要 snapd,因此我将其清除。

答案1

无论如何,在 inotifywait 日志之后,我逐个找到了写入文件系统的进程(有很多!)。我使用启动脚本将每个目录重新映射到 tmpfs,将文件复制到 tmpfs 并重新安装它而不是文件系统位置,然后在关机时将文件复制回去。这有一些注意事项,但目前可以做到。

相关内容