1. 选择合适的文件系统
文件系统是影响I/O性能的基础因素。对于CentOS系统,XFS是高性能场景的首选(尤其适合大文件存储、高并发访问,如数据库、视频处理),其扩展性强且支持并行I/O;ext4则适用于大多数通用场景(兼容性好、稳定性高)。若需兼顾小文件与大文件性能,可选择btrfs(但兼容性相对较弱)。选择时需结合业务需求(如数据量、访问频率)。
2. 优化文件系统挂载选项
通过调整挂载参数可显著减少不必要的磁盘操作:
noatime:禁用文件访问时间更新(默认每次读取文件都会写入元数据),降低元数据操作开销;nodiratime:禁用目录访问时间更新(进一步减少目录元数据写入);dir_index(ext4专属):启用目录索引(哈希树结构),加快目录遍历速度(如mount -o noatime,nodiratime,dir_index /dev/sdXN /mnt/data)。/etc/fstab文件(如添加对应选项)以实现永久生效。3. 调整I/O调度器
I/O调度器决定磁盘请求的处理顺序,不同调度器适用于不同场景:
deadline(默认):适用于机械硬盘,通过设置读/写请求的超时时间(避免请求饥饿),优化数据库、Web服务等随机读写场景;noop:适用于SSD/NVMe(无机械寻道延迟),直接将请求提交给设备(减少内核调度开销);bfq:适用于交互式场景(如桌面系统),注重公平性(确保前台进程的I/O响应速度)。cat /sys/block/sda/queue/scheduler(方括号内为当前使用的调度器);临时修改:echo deadline > /sys/block/sda/queue/scheduler;永久修改(CentOS 7+):通过grubby工具更新内核参数(如grubby --update-kernel=ALL --args="elevator=deadline")并重启。4. 使用缓存技术
缓存可减少对慢速存储(如HDD)的直接访问,提升I/O速度:
lvcreate -L 10G -n cache_lv vg_name)、原始卷(lvcreate -L 50G -n data_lv vg_name),合并为缓存逻辑卷(lvconvert --type cache --cachevol /dev/vg_name/cache_lv /dev/vg_name/data_lv),挂载后即可使用;bcache-tools,通过make-bcache命令配置(如make-bcache -B /dev/sdb -C /dev/sdc,其中sdb为HDD、sdc为SSD),格式化后挂载;tmpfs(内存文件系统)缓存临时文件(如/tmp目录),避免频繁写入磁盘(需注意内存容量,避免占用过多内存)。5. 优化内核参数
调整内核参数可提升I/O处理效率:
vm.swappiness:控制内存交换(Swap)的使用比例(默认60,值越低越倾向于使用内存)。设置为10(echo vm.swappiness=10 >> /etc/sysctl.conf)可减少Swap使用,提升I/O性能;vm.dirty_ratio:脏页(未写入磁盘的内存页)占内存的最大比例(默认20%)。设置为10(echo vm.dirty_ratio=10 >> /etc/sysctl.conf)可减少大文件写入时的延迟;vm.dirty_background_ratio:后台写回脏页的比例(默认10%)。设置为5(echo vm.dirty_background_ratio=5 >> /etc/sysctl.conf)可提前将脏页写入磁盘,避免突发I/O;vm.vfs_cache_pressure:控制内核回收用于目录和inode缓存的内存的倾向(默认100)。设置为50(echo vm.vfs_cache_pressure=50 >> /etc/sysctl.conf)可增加缓存保留,提升文件访问速度。sysctl -p命令应用更改。6. 硬件升级
硬件是提升I/O性能的根本保障:
7. 监控与分析I/O性能
定期监控可及时发现性能瓶颈:
iostat:查看磁盘I/O统计信息(如读写速率、IOPS、等待时间),安装:yum install sysstat,使用:iostat -x 1(每秒刷新一次,%util表示磁盘利用率,超过70%需优化);iotop:实时查看进程级I/O使用情况(如哪个进程占用最多I/O),安装:yum install iotop,使用:iotop -o(仅显示正在执行I/O的进程);vmstat:查看系统整体I/O情况(如bi表示块设备输入、bo表示块设备输出),使用:vmstat 1(每秒刷新一次)。