作为IT工程师,我可以提供一套全面的Linux磁盘和存储性能优化方案。以下是关键优化策略:
# 对于XFS
mkfs.xfs -f -l size=128m -d agcount=16 /dev/sdX
# 对于EXT4
mkfs.ext4 -O ^has_journal -E lazy_itable_init=0,lazy_journal_init=0 /dev/sdX
在/etc/fstab
中添加性能相关挂载选项:
# XFS优化选项
/dev/sdX /mountpoint xfs defaults,noatime,nodiratime,logbsize=256k 0 0
# EXT4优化选项
/dev/sdX /mountpoint ext4 defaults,noatime,nodiratime,data=writeback,barrier=0 0 0
关键参数说明:
- noatime/nodiratime
:减少元数据更新
- data=writeback
(EXT4):提高写入性能(有轻微风险)
- barrier=0
:禁用屏障(仅在不间断电源环境下使用)
查看当前调度器:
cat /sys/block/sdX/queue/scheduler
设置调度器:
# 对于SSD/NVMe
echo kyber > /sys/block/sdX/queue/scheduler
# 或
echo none > /sys/block/sdX/queue/scheduler
# 对于HDD
echo mq-deadline > /sys/block/sdX/queue/scheduler
永久设置(在/etc/rc.local
或系统服务中添加):
echo 'ACTION=="add|change", KERNEL=="sd*", ATTR{queue/scheduler}="kyber"' > /etc/udev/rules.d/60-ioscheduler.rules
# 查看当前预读值
blockdev --getra /dev/sdX
# 设置预读值(通常SSD设为8-16,HDD设为256-1024)
blockdev --setra 256 /dev/sdX
# 在/etc/sysctl.conf中添加
vm.dirty_ratio = 10
vm.dirty_background_ratio = 5
vm.swappiness = 10
# 创建缓存池
lvcreate -L 10G -n cachepool vg /dev/ssd
# 将缓存附加到原始LV
lvconvert --type cache --cachepool vg/cachepool vg/originallv
# 实时磁盘I/O监控
iotop
iostat -x 1
# 查看磁盘队列深度
cat /sys/block/sdX/queue/nr_requests
# 综合性能测试
fio --filename=/testfile --size=1G --direct=1 --rw=randrw --bs=4k --ioengine=libaio --iodepth=64 --runtime=60 --numjobs=4 --time_based --group_reporting --name=randrw-test
# 查看块设备统计
blktrace -d /dev/sdX -o - | blkparse -i -
# 分析系统调用
strace -tt -T -f -o trace.log [command]
deadline
或none
调度器noatime
挂载选项通过以上优化措施,可以显著提升Linux系统的磁盘和存储性能。实际应用中应根据具体工作负载和硬件配置进行调整,并通过基准测试验证优化效果。