一、调整I/O调度器
I/O调度器负责管理磁盘请求的排序与合并,不同磁盘类型需选择不同调度器:
cat /sys/block/sda/queue/scheduler(显示可用调度器,如noop、deadline、cfq)。deadline为例,适用于机械硬盘):echo 'deadline' > /sys/block/sda/queue/scheduler。grubby工具更新内核参数:grubby --update-kernel=ALL --args="elevator=deadline",重启生效。noop调度器(无寻道时间,简化逻辑),命令同上。二、优化文件系统
ext4(兼容性好);大文件、高性能需求选XFS(支持高吞吐量);需快照/克隆功能选btrfs(但兼容性稍差)。noatime(不更新文件访问时间)、nodiratime(不更新目录访问时间),减少不必要的磁盘写操作。例如,在/etc/fstab中修改挂载项:/dev/sda1 / ext4 defaults,noatime,nodiratime 0 0。三、调整内核参数
修改/etc/sysctl.conf文件,优化以下参数以提升I/O效率:
vm.swappiness=10:降低交换分区使用(减少磁盘写操作),值越低越优先使用内存。vm.dirty_ratio=10:当脏页(未写入磁盘的内存页)占内存10%时,触发强制写回。vm.dirty_background_ratio=5:后台写回脏页的阈值(5%),减少前台I/O阻塞。vm.vfs_cache_pressure=50:控制内核回收用于目录和inode缓存的内存的倾向(值越高,回收越积极)。sysctl -p。四、使用缓存技术
page cache),无需手动配置,可通过free -h查看缓存使用情况。innodb_buffer_pool_size(设置为物理内存的50%-70%),缓存数据和索引,减少磁盘I/O。lvcreate -L 10G -n lv_cache vg_data)、原始卷(lvcreate -L 100G -n lv_data vg_data),然后配置缓存(lvconvert --type cache --cachevol vg_data/lv_cache vg_data/lv_data)。make-bcache -B /dev/sdb(HDD) -C /dev/sdc(SSD),格式化并挂载bcache0设备。五、硬件升级
六、监控与诊断
使用工具定期监控磁盘I/O性能,定位瓶颈:
yum install sysstat -y,命令:iostat -x 1(-x显示详细指标,1表示每秒刷新)。iotop -o显示正在执行I/O的进程)。yum install fio -y,示例(测试随机读):fio -name=randread -direct=1 -iodepth=64 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/dev/sdb。七、应用层优化
innodb_buffer_pool_size(缓存数据和索引)。libaio),避免等待I/O操作完成,提升并发性能(如数据库、Web服务器)。