如何定位导致SSD快速损耗的写入目录
如何定位导致SSD快速损耗的写入目录
兄弟,我太懂你现在的糟心了——RAID1的SSD每周掉1-2%的磨损,换盘换得手都酸了还找不到根源,必须把这个写入大户揪出来才能硬刚供应商对吧?针对你的RHEL7.9环境,给你几个实操的硬招,一步步定位到疯狂吃SSD写入量的目录:
一、先划清监控范围,别给机械盘瞎忙活
首先得把SSD和机械盘的地盘分清楚,避免做无用功:
- 跑个
mount命令,找到你的SSD RAID1对应的挂载点(比如/、/boot这些OS目录),机械盘的挂载目录(比如/data)直接排除,我们只盯SSD上的目录。 - 要是拿不准,用
lsblk或者blkid确认SSD的RAID设备(比如/dev/md0)对应的挂载目录,确保后续监控不跑偏。
二、用fatrace实时抓写入文件(最直接)
这工具就是专门干追踪文件读写的活,过滤写操作后,能直接看到哪个文件在被疯狂写入,对应目录就一目了然:
- 先装包:
yum install fatrace(RHEL7的base repo里就有,直接装) - 只监控写操作,同时排除机械盘的挂载目录(把下面的
/data换成你的机械盘挂载点):
盯个10-20分钟,就能看到哪个目录下的文件被写得最频繁,一眼就能锁定目标。fatrace -w | grep -v "/data"
三、iotop结合lsof揪出进程对应的写入目录
iotop确实会显示所有盘的吞吐量,但我们可以针对性抓进程:
- 跑
iotop -oP:-o只显示正在搞IO的活跃进程,-P显示进程PID,这样你能快速找到SSD上写IO占比最高的进程(直接忽略机械盘的进程就行)。 - 拿到可疑进程的PID后,用
lsof -p <你的PID> | grep -i write,就能看到这个进程正在写入的所有文件路径,对应的目录就跑不掉了。
四、用pidstat统计长期写入量(抓间歇性写入)
如果写入是一阵一阵的,实时监控抓不到,就用这个工具统计一段时间的写入总量:
- 先装包(没装的话):
yum install sysstat - 每10秒采样一次,持续监控5分钟(数字可以自己调),只看写入相关操作:
拿到写入量最高的PID后,再用pidstat -d 10 30 -wlsof找对应文件目录,稳准狠。
五、终极杀招:用auditd做长期写入审计
要是写入太隐蔽,隔很久才爆发一次,就用系统审计工具录下来慢慢查:
- 先启动auditd服务:
systemctl start auditd - 添加审计规则,监控SSD根目录的所有写操作(把
/换成你的SSD挂载目录):auditctl -w / -p w -k ssd-writes - 跑个大半天或者一天后,导出审计报告:
这个报告会统计每个文件被写入的次数,直接就能看到TOP写入目标,实锤就有了。ausearch -k ssd-writes --raw | aureport -f -i
等你找到对应的目录后,最好再隔几天用du -sh对比下目录大小变化,确认它确实在疯狂膨胀,拿着这个数据去找供应商,绝对能把他们怼得哑口无言!
备注:内容来源于stack exchange,提问作者MikeKulls
相关产品推荐
相关产品推荐

