在银河麒麟系统中,用sudo iotop -o -d 1定位高频小写进程(如wchar≥10k iops且wkb/s<5mb/s),再通过pidstat -d -p pid 1验证tps远高于db_wr/s÷4,结合smartctl查看percentage used 24h升幅>0.3%确认ssd磨损主因;对systemd服务执行systemctl edit --full添加ioschedulingclass=best-effort和ioschedulingpriority=7,或对非systemd进程前置ionice -c 3 -n 7限流。

你需要在银河麒麟系统中识别哪些后台进程正在高频写入固态硬盘,从而评估其对SSD寿命的加速损耗风险,避免因小文件随机写、日志轮转或缓存刷盘等行为过早耗尽NAND擦写次数。
定位高频率小写进程
打开终端,执行:sudo iotop -o -d 1,该命令只显示当前有IO活动的进程,每秒刷新一次。
观察“IO>”列数值,重点关注单位为B/s或KiB/s但写入IOPS极高的进程:若某进程wchar值稳定在10k+ IOPS且wkB/s却低于5MB/s,说明它在持续提交大量4KB~16KB的小写请求——这类操作会显著加剧SSD写放大效应。
按左右箭头键切换至“IO”列排序,再按r反转顺序,确保最高IO消耗进程置顶;此时记下PID与COMMAND字段,例如rsyslogd、journald或某个Java应用的logback线程。
验证进程写入模式与SSD磨损关联性
方法一:用pidstat抓取进程级IO分布
执行:sudo pidstat -d -p PID 1(将PID替换为上一步查到的实际数字),持续运行10秒后按Ctrl+C停止。
检查输出中的kB_wr/s和tps(每秒传输数)比值:若tps远高于dB_wr/s ÷ 4(即平均每IO远小于4KB),即可确认该进程正驱动SSD进行非对齐小写——这是磨损加速的关键信号。
方法二:结合smartctl交叉验证
对目标SSD设备(如/dev/nvme0n1)执行:sudo smartctl -a /dev/nvme0n1 | grep -E "(Percentage Used|Host_Writes_32MiB|Wear_Leveling_Count)"。
【注意:若Percentage Used值在24小时内上升超过0.3%,且对应时段内该进程IO活跃,则基本可判定其为磨损主因】
限制特定进程的写入强度
第一步:确认进程是否由systemd托管
执行:systemctl status PID(PID为上一步获取的进程号),若返回包含“Loaded: loaded (/usr/lib/systemd/...”则进入下一步;否则跳至“手动限流”分支。
第二步:编辑服务配置文件
运行:sudo systemctl edit --full servicename.service(servicename为服务名,如rsyslog)→在[Service]段落末尾添加两行:
IOSchedulingClass=best-effort
IOSchedulingPriority=7
第三步:重载并重启服务
执行:sudo systemctl daemon-reload && sudo systemctl restart servicename.service。
这会将该进程IO调度优先级降至最低档,使其写入请求自动让位于数据库、备份等关键任务,同时降低SSD控制器的GC调度压力。
手动限流(适用于非systemd进程):找到其启动脚本或二进制路径,前置添加ionice -c 3 -n 7调用,例如将/opt/app/bin/start.sh改为ionice -c 3 -n 7 /opt/app/bin/start.sh。











