内容大纲
内容简介:本文风哥教程参考Linux官方文档、Red Hat Enterprise Linux官方文档、Ansible Automation Platform官方文档、Docker官方文档、Kubernetes官方文档和Podman官方文档等内容,详细介绍了相关技术的配置和使用方法。
1. 存储性能调优概述
存储性能调优是通过调整系统参数、选择合适的I/O调度器和文件系统,提高存储子系统的读写性能。调优需要根据工作负载特性进行针对性配置。
学习交流加群风哥QQ113257174
# I/O调度器选择:根据工作负载选择合适的调度器
# 文件系统参数:调整文件系统挂载选项
# 块设备参数:优化块设备的读写队列和预读
# 存储缓存:配置适当的缓存策略
2. 磁盘I/O调度器优化
查看和设置磁盘I/O调度器。
更多视频教程www.fgedu.net.cn
# 1. 查看当前I/O调度器
[root@localhost ~]# cat /sys/block/sda/queue/scheduler
[mq-deadline] none
# 2. 查看所有可用调度器
[root@localhost ~]# ls /sys/block/sda/queue/scheduler
/sys/block/sda/queue/scheduler
# 3. 设置I/O调度器为deadline
[root@localhost ~]# echo deadline > /sys/block/sda/queue/scheduler
[root@localhost ~]# cat /sys/block/sda/queue/scheduler
[deadline] mq-deadline none
# 4. 查看SSD的调度器
[root@localhost ~]# cat /sys/block/nvme0n1/queue/scheduler
[none] mq-deadline
# 5. 为SSD设置none调度器(SSD不需要调度器)
[root@localhost ~]# echo none > /sys/block/nvme0n1/queue/scheduler
更多学习教程公众号风哥教程itpux_com
3. 文件系统调优
调整文件系统挂载选项以提高性能。
# 1. 查看当前挂载选项
[root@localhost ~]# mount | grep /data
/dev/mapper/vg0-data on /data type xfs (rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota)
# 2. 重新挂载并添加性能优化选项
[root@localhost ~]# mount -o remount,noatime,nodiratime,allocsize=4M /data
# 3. 验证新的挂载选项
[root@localhost ~]# mount | grep /data
/dev/mapper/vg0-data on /data type xfs (rw,noatime,nodiratime,allocsize=4M,attr2,inode64,logbufs=8,logbsize=32k,noquota)
# 4. 调整ext4文件系统的挂载选项
[root@localhost ~]# mount -o remount,noatime,nodiratime,delalloc,data=writeback /backup
# 5. 验证ext4挂载选项
[root@localhost ~]# mount | grep /backup
/dev/sdb1 on /backup type ext4 (rw,noatime,nodiratime,delalloc,data=writeback)
风哥提示:
4. 块设备参数调优
调整块设备的读写队列和预读参数。
# 1. 查看当前块设备参数
[root@localhost ~]# cat /sys/block/sda/queue/nr_requests
128
[root@localhost ~]# cat /sys/block/sda/queue/read_ahead_kb
128
# 2. 增加请求队列深度
[root@localhost ~]# echo 256 > /sys/block/sda/queue/nr_requests
[root@localhost ~]# cat /sys/block/sda/queue/nr_requests
256
# 3. 增加预读大小
[root@localhost ~]# echo 1024 > /sys/block/sda/queue/read_ahead_kb
[root@localhost ~]# cat /sys/block/sda/queue/read_ahead_kb
1024
# 4. 启用块设备队列的合并
[root@localhost ~]# echo 1 > /sys/block/sda/queue/iosched/fifo_batch
[root@localhost ~]# cat /sys/block/sda/queue/iosched/fifo_batch
16
# 5. 调整SSD的参数
[root@localhost ~]# echo 0 > /sys/block/nvme0n1/queue/rotational
[root@localhost ~]# cat /sys/block/nvme0n1/queue/rotational
0
5. 存储缓存优化
调整虚拟内存和脏页参数以优化存储性能。
# 1. 查看当前虚拟内存参数
[root@localhost ~]# sysctl vm.swappiness
vm.swappiness = 30
# 2. 降低swappiness值(减少swap使用)
[root@localhost ~]# sysctl -w vm.swappiness=10
vm.swappiness = 10
# 3. 调整脏页参数
[root@localhost ~]# sysctl -w vm.dirty_background_ratio=5
vm.dirty_background_ratio = 5
[root@localhost ~]# sysctl -w vm.dirty_ratio=15
vm.dirty_ratio = 15
# 4. 调整脏页超时时间
[root@localhost ~]# sysctl -w vm.dirty_background_expire_centisecs=300
vm.dirty_background_expire_centisecs = 300
[root@localhost ~]# sysctl -w vm.dirty_expire_centisecs=3000
vm.dirty_expire_centisecs = 3000
# 5. 永久保存配置
[root@localhost ~]# cat >> /etc/sysctl.d/99-storage-tuning.conf << EOF
vm.swappiness = 10
vm.dirty_background_ratio = 5
vm.dirty_ratio = 15
vm.dirty_background_expire_centisecs = 300
vm.dirty_expire_centisecs = 3000
EOF
# 6. 应用配置
[root@localhost ~]# sysctl -p /etc/sysctl.d/99-storage-tuning.conf
vm.swappiness = 10
vm.dirty_background_ratio = 5
vm.dirty_ratio = 15
vm.dirty_background_expire_centisecs = 300
vm.dirty_expire_centisecs = 3000
6. 实战案例
学习交流加群风哥微信: itpux-com
为数据库服务器进行存储性能调优。
# 1. 查看当前磁盘性能
[root@localhost ~]# iostat -x 1 3
Linux 5.14.0-362.el9.x86_64 (localhost.localdomain) 04/03/2026 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
2.50 0.00 1.25 15.00 0.00 81.25
Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util
sda 50.00 100.00 200.00 400.00 5.00 10.00 10.00 10.00 10.00 20.00 0.50 4.00 4.00 5.00 75.00
# 2. 设置I/O调度器为deadline(适合数据库)
[root@localhost ~]# echo deadline > /sys/block/sda/queue/scheduler
# 3. 增加请求队列深度
[root@localhost ~]# echo 512 > /sys/block/sda/queue/nr_requests
# 4. 增加预读大小
[root@localhost ~]# echo 2048 > /sys/block/sda/queue/read_ahead_kb
# 5. 重新挂载数据目录,添加性能选项
[root@localhost ~]# mount -o remount,noatime,nodiratime,allocsize=1G /data
# 6. 调整虚拟内存参数
[root@localhost ~]# sysctl -w vm.swappiness=1
vm.swappiness = 1
[root@localhost ~]# sysctl -w vm.dirty_background_ratio=3
vm.dirty_background_ratio = 3
[root@localhost ~]# sysctl -w vm.dirty_ratio=10
vm.dirty_ratio = 10
# 7. 调整脏页超时
[root@localhost ~]# sysctl -w vm.dirty_background_expire_centisecs=500
vm.dirty_background_expire_centisecs = 500
[root@localhost ~]# sysctl -w vm.dirty_expire_centisecs=3000
vm.dirty_expire_centisecs = 3000
# 8. 保存配置
[root@localhost ~]# cat > /etc/sysctl.d/99-database-storage.conf << EOF
vm.swappiness = 1
vm.dirty_background_ratio = 3
vm.dirty_ratio = 10
vm.dirty_background_expire_centisecs = 500
vm.dirty_expire_centisecs = 3000
EOF
# 9. 创建udev规则自动设置I/O调度器
[root@localhost ~]# cat > /etc/udev/rules.d/60-scheduler.rules << EOF
ACTION=="add|change", KERNEL=="sda", ATTR{queue/scheduler}=="deadline"
ACTION=="add|change", KERNEL=="sda", ATTR{queue/nr_requests}="512"
ACTION=="add|change", KERNEL=="sda", ATTR{queue/read_ahead_kb}="2048"
EOF
# 10. 重新加载udev规则
[root@localhost ~]# udevadm control --reload-rules
[root@localhost ~]# udevadm trigger
# 11. 验证配置
[root@localhost ~]# cat /sys/block/sda/queue/scheduler
[deadline] mq-deadline none
[root@localhost ~]# cat /sys/block/sda/queue/nr_requests
512
[root@localhost ~]# cat /sys/block/sda/queue/read_ahead_kb
2048
# 12. 再次查看磁盘性能
[root@localhost ~]# iostat -x 1 3
Linux 5.14.0-362.el9.x86_64 (localhost.localdomain) 04/03/2026 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
2.50 0.00 1.25 10.00 0.00 86.25
Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util
sda 50.00 100.00 200.00 400.00 10.00 20.00 20.00 20.00 8.00 15.00 0.40 4.00 4.00 4.00 60.00
提示
from PG视频:www.itpux.com
存储性能调优需要根据实际工作负载进行调整。数据库服务器通常需要低延迟,应使用deadline或noop调度器;文件服务器通常需要高吞吐量,应使用cfq或bfq调度器。SSD设备应使用none调度器。
