1. 调整I/O调度器
I/O调度器负责管理磁盘请求的排序与合并,不同调度器适用于不同存储介质。对于机械硬盘(HDD),推荐使用deadline
调度器(CentOS 7+默认),它通过设置请求的超时时间,减少平均等待时间;对于固态硬盘(SSD),建议使用noop
(无操作)或deadline
调度器,因为SSD无机械寻道时间,简化调度逻辑可降低CPU负载。
操作步骤:
cat /sys/block/sda/queue/scheduler
([noop]
表示当前使用的调度器);deadline
):echo deadline > /sys/block/sda/queue/scheduler
;grubby
工具更新内核参数:grubby --update-kernel=ALL --args="elevator=deadline"
,然后重启系统。2. 优化文件系统选择与挂载选项
ext4
(兼容性好,支持大文件);XFS
(擅长大文件存储与高并发,是CentOS 7+默认文件系统);Btrfs
(支持快照、压缩,但兼容性较差)。noatime
:禁用文件访问时间更新,减少元数据操作(如mount -o noatime /dev/sda1 /mnt/data
);ext4
额外优化:添加nodiratime
(禁用目录访问时间更新)、data=writeback
(减少日志开销);XFS
额外优化:添加noatime
、allocsize=1M
(预分配大块空间,减少碎片)。/etc/fstab
文件,添加对应选项(如/dev/sda1 /mnt/data xfs defaults,noatime 0 0
),然后执行mount -o remount /mnt/data
使更改生效。3. 使用缓存技术加速存储访问
lvm2
:yum install lvm2
;lvcreate -L 10G -n lv_cache vg_data
(vg_data
为卷组名,10G
为缓存大小);lvcreate -L 100G -n lv_origin vg_data
(原始逻辑卷);lvconvert --type cache --cachevol vg_data/lv_cache vg_data/lv_origin
;mount /dev/vg_data/lv_origin /mnt/data
。bcache-tools
:yum install bcache-tools
;make-bcache -B /dev/sdb -C /dev/sdc
;mkfs.ext4 /dev/bcache0
,mount /dev/bcache0 /mnt/data
。4. 调整内核参数优化内存与磁盘交互
vm.swappiness
参数控制内存不足时使用交换分区的倾向(值越低,越依赖内存)。设置为10
(默认60
):echo vm.swappiness=10 >> /etc/sysctl.conf
,然后执行sysctl -p
生效。vm.dirty_ratio
:当脏页占内存比例达到10%
时,强制写入磁盘(默认20%
);vm.dirty_background_ratio
:当脏页占内存比例达到5%
时,后台异步写入(默认10%
)。/etc/sysctl.conf
中添加vm.dirty_ratio=10
、vm.dirty_background_ratio=5
,执行sysctl -p
生效。vm.vfs_cache_pressure
控制内核回收用于目录和inode缓存的内存的倾向(值越高,回收越积极)。设置为50
(默认100
):echo vm.vfs_cache_pressure=50 >> /etc/sysctl.conf
,执行sysctl -p
生效。5. 选择高性能存储硬件
ext4
,添加discard
挂载选项(mount -o discard /dev/sda1 /mnt/data
);对于XFS
,使用fstrim
命令定期清理(fstrim -v /mnt/data
)。mdadm
工具创建RAID(如mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd
)。6. 监控与分析存储性能瓶颈
使用工具定期监控磁盘I/O、内存使用、CPU负载等指标,定位性能瓶颈:
yum install sysstat
,使用:iostat -x 1
(-x
显示详细指标);vmstat 1
;yum install iotop
,使用:iotop -o
(-o
只显示正在执行I/O的进程)。7. 其他优化措施
ext4
使用e4defrag
:e4defrag /mnt/data
;XFS
使用xfs_fsr
:xfs_fsr /mnt/data
),提升连续读写性能。systemctl disable <service_name>
禁用不需要的服务(如cups
打印服务、bluetooth
蓝牙服务),减少系统资源占用。