我有一个 raid5 阵列,每月对其运行一次检查。经过配置,检查从 01:00 开始运行 6 小时,然后停止。接下来的晚上,它将继续检查 6 个小时,直到完成。
我遇到的问题是,有时当 mdcheck 尝试停止检查运行时,它会挂起。一旦发生这种情况,您可以从数组中读取数据,但任何写入尝试都会导致进程挂起。
数组状态如下:
md0 : active raid5 sdb1[4] sdc1[2] sdd1[5] sde1[1]
8790398976 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
[========>............] check = 44.2% (1296999956/2930132992) finish=216065.8min speed=125K/sec
bitmap: 0/6 pages [0KB], 262144KB chunk
Run Code Online (Sandbox Code Playgroud)
永远check = 44.2% (1296999956/2930132992)
不会前进或停止。
从/usr/share/mdadm/mdcheck
脚本中可以看出,每 2 分钟,直到结束时间,它都会读取/sys/block/md0/md/sync_completed
该位置并将其保存在存储在目录中的文件中/var/lib/mdcheck/
。在该目录中查看该文件,该文件的日期为停止前 2 分钟,值为2588437040
. sync_completed
的当前值2593999912
表示一切在停止前 2 分钟仍在工作。
运行lsof
该mdcheck
进程会发现以下内容:
mdcheck 23887 root 1w …
Run Code Online (Sandbox Code Playgroud)