1. 首页 > Linux教程 > 正文

Linux教程FG355-存储性能调优

内容简介:本文风哥教程参考Linux官方文档、Red Hat Enterprise Linux官方文档、Ansible Automation Platform官方文档、Docker官方文档、Kubernetes官方文档和Podman官方文档等内容,详细介绍了相关技术的配置和使用方法。

风哥提示:

本文档介绍存储性能调优的方法和技巧。

Part01-I/O调度器优化

1.1 查看和设置I/O调度器

# 查看当前调度器
[root@server ~]# cat /sys/block/sda/queue/scheduler
[mq-deadline] kyber bfq none

# 查看所有磁盘调度器
[root@server ~]# for disk in /sys/block/sd*/queue/scheduler; do
echo “$(basename $(dirname $(dirname $disk))): $(cat $disk)”
done
sda: [mq-deadline] kyber bfq none
sdb: [mq-deadline] kyber bfq none

# 设置调度器
[root@server ~]# echo “none” > /sys/block/sda/queue/scheduler
[root@server ~]# cat /sys/block/sda/queue/scheduler
[none] mq-deadline kyber bfq

# 永久设置
[root@server ~]# cat > /etc/udev/rules.d/60-scheduler.rules << 'EOF' # SSD磁盘使用none调度器 ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="none" # HDD磁盘使用mq-deadline调度器 ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="mq-deadline" EOF # 重新加载规则 [root@server ~]# udevadm control --reload-rules [root@server ~]# udevadm trigger # 调度器说明 [root@server ~]# cat > /root/scheduler-info.txt << 'EOF' I/O调度器说明 ============= 1. none (noop) - 最简单的调度器 - 适合SSD和NVMe设备 - 无排序,直接发送请求 2. mq-deadline - 默认调度器 - 适合大多数场景 - 保证请求公平性 3.学习交流加群风哥QQ113257174 kyber - 新一代调度器 - 适合高性能存储 - 低延迟设计 4. bfq (Budget Fair Queueing) - 公平调度 - 适合桌面系统 - 保证交互响应 EOF

1.2 调整队列参数

# 查看队列深度
[root@server ~]# cat /sys/block/sda/queue/nr_requests
256

# 设置队列深度
[root@server ~]# echo 512 > /sys/block/sda/queue/nr_requests

# 查看读取预读
[root@server ~]# cat /sys/block/sda/queue/read_ahead_kb
128

# 设置读取预读
[root@server ~]# echo 256 > /sys/block/sda/queue/read_ahead_kb

# 查看最大扇区数
[root@server ~]# cat /sys/block/sda/queue/max_sectors_kb
1280

# 设置最大扇区数
[root@server ~]# echo 2048 > /sys/block/sda/queue/max_sectors_kb

# 查看块大小
[root@server ~]# cat /sys/block/sda/queue/logical_block_size
512
[root@server ~]# cat /sys/block/sda/queue/physical_block_size
512

# 查看 rotational 标志
[root@server ~]# cat /sys/block/sda/queue/rotational
1

# 设置为SSD
[root@server ~]# echo 0 > /sys/block/sda/queue/rotational

# 查看随机性标志
[root@server ~]# cat /sys/block/sda/queue/add_random
1

# 禁用随机性
[root@server ~]# echo 0 > /sys/block/sda/queue/add_random

Part02-文件系统优化

2.1 XFS文件系统优化

# 创建优化的XFS文件系统
[root@server ~]# mkfs.xfs -f -b size=4096 -d su=64k,sw=4 -l size=256m,version=2 /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=6553600 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=1 inobtcount=1
data = bsize=4096 blocks=26214400, imaxpct=25
= sunit=16 swidth=64 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=65536, version=2
= sectsz=512 sunit=16 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

# 挂载选项优化
[root@server ~]# mount -o noatime,nodiratime,logbufs=8,logbsize=256k /dev/sdb1 /data

# 查看XFS信息
[root@server ~]# xfs_info /data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=6553600 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=1 inobtcount=1
data = bsize=4096 blocks=26214400, imaxpct=25
= sunit=16 swidth=64 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=65536, version=2
= sectsz=512 sunit=16 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

# XFS挂载选项说明
[root@server ~]# cat > /root/xfs-mount-options.txt << 'EOF' XFS挂载选项说明 =============== 性能相关: - noatime:不更新访问时间 - nodiratime:不更新目录访问时间 - logbufs=8:日志缓冲区数量 - logbsize=256k:日志缓冲区大小 - allocsize=64k:预分配大小 延迟相关: - delaylog:延迟日志写入 - nodelaylog:立即日志写入 其他选项: - inode64:使用64位inode - largeio:大I/O优化 - swalloc:条带宽度分配 EOF # 配置自动挂载 [root@server ~]# cat >> /etc/fstab << 'EOF' /dev/sdb1 /data xfs noatime,nodiratime,学习交流加群风哥微信: itpux-comlogbufs=8,logbsize=256k 0 0 EOF

2.2 Ext4文件系统优化

# 创建优化的Ext4文件系统
[root@server ~]# mkfs.ext4 -b 4096 -E stride=16,stripe-width=64 /dev/sdc1
mke2fs 1.46.更多视频教程www.fgedu.net.cn5 (30-Dec-2021)
Creating filesystem with 26214400 4k blocks and 6553600 inodes
Filesystem UUID: 12345678-90ab-cdef-1234-567890abcdef
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872

Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done

# 挂载选项优化
[root@server ~]# mount -o noatime,nodiratime,data=writeback,barrier=0 /dev/sdc1 /data2

# 查看Ext4信息
[root@server ~]# tune2fs -l /dev/sdc1
tune2fs 1.46.5 (30-Dec-2021)
Filesystem volume name:
Last mounted on:
Filesystem UUID: 12345678-90ab-cdef-1234-567890abcdef
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 6553600
Block count: 26214400
Reserved block count: 1310720
Free blocks: 25927632
Free inodes: 6553589
First block: 0
Block size: 4096

# Ext4挂载选项说明
[root@server ~]# cat > /root/ext4-mount-options.txt << 'EOF' Ext4挂载选项说明 =============== 性能相关: - noatime:不更新访问时间 - nodiratime:不更新目录访问时间 - data=writeback:写回模式 - data=ordered:顺序模式(默认) - data=journal:日志模式 日志相关: - journal_async_commit:异步提交 - barrier=0:禁用屏障 - barrier=1:启用屏障(默认) 其他选项: - nobh:禁用buffer head - delalloc:延迟分配 - nodelalloc:禁用延迟分配 EOF

风哥针对存储性能调优建议:

  • 根据存储类型选择调度器
  • 禁用不必要的访问时间更新
  • 调整队列深度和预读
  • 使用合适的文件系统参数
  • 定期进行性能测试

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息