CentOS 磁盘 I/O 性能提升实战指南
一 基线测量与定位瓶颈
yum install -y sysstat fio 获取 iostat/vmstat 与 fio。iostat -x 1 10 观察 await、r/s、w/s、rkB/s、wkB/s、util%;util 持续接近 100% 多为瓶颈所在。vmstat 1 10 关注 wa(I/O 等待)、si/so(换入换出)。df -hT 与 df -i 检查容量与 inode 是否耗尽。lsblk -d -o NAME,ROTA 或 cat /sys/block/sdX/queue/rotational,ROTA=0 为 SSD/NVMe,ROTA=1 为 HDD。二 内核与虚拟层调优
echo none > /sys/block/nvme0n1/queue/scheduler;echo mq-deadline > /sys/block/sda/queue/scheduler。cat >/etc/udev/rules.d/60-ioscheduler.rules <<'EOF'
ACTION=="add|change", KERNEL=="nvme[0-9]n[0-9]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="none"
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="none"
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="mq-deadline"
EOF
udevadm control --reload-rules && udevadm trigger
echo 40 > /proc/sys/vm/dirty_ratio
echo 20 > /proc/sys/vm/dirty_background_ratio
echo 4096 > /sys/block/sdX/queue/read_ahead_kb
三 存储栈与架构优化
/dev/shm),显著降低 I/O 压力。四 LVM 与文件系统扩容实践
# 扩展逻辑卷
lvextend -L +50G /dev/vg0/var
# 扩展文件系统(XFS)
xfs_growfs /var
# 如为 ext4,使用:resize2fs /dev/vg0/var
df -h /var # 验证
yum install -y cloud-utils-growpart
growpart /dev/sda 3
partprobe /dev/sda
xfs_growfs / # 或 resize2fs 对应分区
五 验证与回退
# 随机读
fio --name=randread --ioengine=libaio --rw=randread --bs=4k --numjobs=4 --size=1G --runtime=60 --direct=1 --iodepth=64 --group_reporting
# 随机写
fio --name=randwrite --ioengine=libaio --rw=randwrite --bs=4k --numjobs=4 --size=1G --runtime=60 --direct=1 --iodepth=64 --group_reporting
# 顺序读/写
fio --name=seqread --ioengine=libaio --rw=read --bs=4k --numjobs=4 --size=1G --runtime=60 --direct=1 --iodepth=64 --group_reporting
fio --name=seqwrite --ioengine=libaio --rw=write --bs=4k --numjobs=4 --size=1G --runtime=60 --direct=1 --iodepth=64 --group_reporting
iostat -x 1 观察 await、util% 等指标是否改善,并与 fio 基线对比确认收益。