CentOS 虚拟机磁盘 I/O 优化指南
一 虚拟化层关键配置
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none' aio='native'/>
<source file='/vmstore/images/centos_test.qcow2'/>
<target dev='vda' bus='virtio'/>
</disk>
qemu-img create -f qcow2 -o preallocation=metadata centos_test.qcow2 20G,或对已有镜像转换,能减少运行时扩展带来的抖动。二 来宾系统内核与文件系统
cat /sys/block/sdX/queue/scheduler;echo deadline > /sys/block/sdX/queue/schedulergrubby --update-kernel=ALL --args="elevator=deadline"
reboot
fstrim -v /mount_point(可按周/日定时任务执行)。sysctl -w vm.dirty_ratio=10
sysctl -w vm.dirty_background_ratio=5
echo 256 > /sys/block/sdX/queue/nr_requests),提升并发吞吐;对 deadline 可调读/写过期参数以平衡延迟与吞吐。三 监控与压测方法
iostat -dxm 2 观察 await、r/s、w/s、util% 等指标,定位瓶颈在设备还是队列。iotop -oPa 按进程定位 I/O 占用,配合应用日志排查异常刷盘与合并写策略。fio --name=randread --ioengine=libaio --rw=randread --bs=4k --numjobs=4 --size=1G --runtime=60
四 场景化推荐配置
| 场景 | 来宾调度器 | 缓存/AIO | 文件系统 | 备注 |
|---|---|---|---|---|
| 数据库/高并发随机 I/O | deadline | cache=none + aio=native | XFS | 关注低延迟与稳定提交;必要时调优 nr_requests、read_expire |
| SSD/NVMe 通用 | noop/kyber | cache=none + aio=native | XFS/EXT4 | 启用 TRIM;减少调度开销,发挥设备并行性 |
| HDD 大文件顺序 | deadline | cache=none + aio=native | XFS | 适度增大队列深度,提升顺序吞吐 |
| 桌面/交互式 | bfq(若内核支持) | cache=none + aio=native | EXT4/XFS | 关注交互响应与公平性,避免 CFQ 在 SSD 上的额外开销 |
五 风险提示与回退
grubby --update-kernel=ALL --remove-args="elevator=..." 恢复)。