文件系统性能调优是Linux系统优化的重要部分,以下是一些关键方法和技巧:
根据使用场景选择最适合的文件系统: - Ext4:通用文件系统,适合大多数场景 - XFS:适合大文件和高并发操作 - Btrfs:支持快照、压缩等高级功能 - ZFS:企业级文件系统,提供高级数据完整性保护
在/etc/fstab
中调整挂载选项可以显著提升性能:
# 对于SSD或快速存储设备
UUID=xxx / ext4 defaults,noatime,nodiratime,discard,commit=60 0 1
# 对于HDD
UUID=xxx / ext4 defaults,noatime,nodiratime,commit=60 0 1
常用优化选项:
- noatime
/nodiratime
:禁用访问时间记录
- discard
:启用TRIM(SSD)
- commit=60
:每60秒提交一次事务(默认5秒)
- data=writeback
:更激进的写入策略(Ext4)
- nobarrier
:禁用写入屏障(有数据丢失风险)
根据存储设备类型选择合适的I/O调度器:
# 查看当前调度器
cat /sys/block/sdX/queue/scheduler
# 设置调度器(临时)
echo deadline > /sys/block/sdX/queue/scheduler
# 永久设置(在/etc/rc.local或启动脚本中添加)
调度器选择建议: - SSD:none或noop - HDD:deadline或cfq
# 调整日志提交间隔(默认5秒)
tune2fs -o journal_data_writeback /dev/sdX
tune2fs -O ^has_journal /dev/sdX # 禁用日志(有风险)
# 调整inode数量
mkfs.ext4 -N 500000 /dev/sdX
# 格式化时优化
mkfs.xfs -l size=128m -d agcount=16 /dev/sdX
# 挂载后调整
xfs_admin -e 0 /dev/sdX # 禁用extent
调整虚拟内存参数:
# 增加脏页写回阈值
echo 10 > /proc/sys/vm/dirty_background_ratio
echo 30 > /proc/sys/vm/dirty_ratio
echo 5000 > /proc/sys/vm/dirty_expire_centisecs
echo 1000 > /proc/sys/vm/dirty_writeback_centisecs
调整文件缓存:
# 增加文件句柄限制
echo 100000 > /proc/sys/fs/file-max
常用监控工具:
- iostat:监控磁盘I/O
bash
iostat -x 1
- vmstat:监控系统整体性能
bash
vmstat 1
- iotop:监控进程级I/O
bash
iotop
- blktrace:深入分析块设备I/O
bash
blktrace -d /dev/sdX -o - | blkparse -i -
bash
echo always > /sys/kernel/mm/transparent_hugepage/enabled
定期执行维护:
# Ext4检查
fsck -y /dev/sdX
# XFS检查
xfs_repair /dev/sdX
# 碎片整理(Ext4)
e4defrag /
注意:调优应根据具体工作负载进行,建议在生产环境变更前先在测试环境验证效果。