选择合适的文件系统
文件系统挂载选项优化
# ext4优化示例
defaults,noatime,nodiratime,data=writeback,barrier=0,nobh,commit=60
# XFS优化示例
defaults,noatime,nodiratime,logbufs=8,logbsize=256k
调整文件系统参数
# 调整ext4日志提交间隔
echo 60 > /proc/sys/fs/ext4/commit_time
# 调整脏页回写阈值
echo 10 > /proc/sys/vm/dirty_ratio
echo 5 > /proc/sys/vm/dirty_background_ratio
选择合适的I/O调度器
# 查看当前调度器
cat /sys/block/sdX/queue/scheduler
# 修改调度器(SSD推荐使用noop或deadline)
echo noop > /sys/block/sdX/queue/scheduler
调整队列深度
# 增加队列深度
echo 256 > /sys/block/sdX/queue/nr_requests
调整页面缓存
# 增加脏页回写阈值
echo 60 > /proc/sys/vm/dirty_ratio
echo 10 > /proc/sys/vm/dirty_background_ratio
# 调整脏页过期时间(秒)
echo 300 > /proc/sys/vm/dirty_expire_centisecs
使用vmtouch管理文件缓存
# 预热文件到缓存
vmtouch -t /path/to/file
# 查看文件缓存状态
vmtouch /path/to/file
使用Direct I/O绕过页面缓存
// 在应用程序中打开文件时使用O_DIRECT标志
fd = open("/path/to/file", O_RDWR | O_DIRECT);
异步I/O(AIO)
# 安装libaio
apt-get install libaio-dev
使用mmap内存映射
// 将文件映射到内存
void *map = mmap(NULL, length, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
RAID级别选择
LVM优化
# 使用条带化
lvcreate -i 4 -I 64 -L 100G -n lv_data vg_data
I/O性能监控
# 实时监控
iotop
iostat -x 1
# 详细分析
blktrace /dev/sdX
文件系统分析
# 查找热点文件
lsof +D /path/to/directory
# 文件访问模式分析
fatrace
通过综合应用这些优化技术,可以显著提升Linux系统的文件I/O和存储性能。实际优化时应根据具体工作负载特点进行针对性调整。