磁盘调优总结

9. 磁盘

  • 磁盘I/O可能会造成严重的应用程序延时,因此是系统性能分析的一个重要目标;在高负载下,磁盘成为了瓶颈,CPU将持续空闲以等待磁盘I/O结束;

9.1 术语

  • 虚拟磁盘:存储设备的模拟,在系统看来的一块物理磁盘可能由多块磁盘组成;
  • 传输总线:用来通信的物理总线,包括数据传输I/O以及磁盘命令;
  • 数据传输I/O:至少由方向、地址、大小组成;
  • 磁盘命令:除了读写之外的其他非数据传输的命令;
  • 扇区:磁盘上的一个存储块,通常为512B大小;
  • IOPS:Input/Output operation per second,即磁盘每秒的读写次数,磁盘的随机读取IOPS主要由主控和接口决定;

9.2 架构

  • 在进行容量规划时,磁盘架构能够决定不同组件和配置组合的极限;出现性能问题时,也可以通过检查架构从而确保问题的来源究竟是架构的选择还是当前的负载和调优;
  1. 磁盘类型:

    • 磁性旋转盘HDD:
    1. 寻道和旋转:磁头寻道时间、盘片旋转时间;
    2. 理论最大吞吐量:每磁道最大扇区数 * 扇区大小 * 磁盘旋转速度(rpm) / 60s;
    3. 短行程:只把磁盘外侧的磁道用来服务负载;
    4. 扇区分区:较长的磁道扇区个数较多;
    5. 扇区大小:4KB的扇区大小、512B的扇区大小;
    6. 磁盘缓存:小块RAM内存,用来缓存读取的结果和缓冲要写入的数据;
    7. 电梯寻道:根据磁盘位置将I/O重新排序,以最小化磁头的移动;
    8. ECC:磁盘在每个扇区的结尾存储了一个纠错码,以验证驱动器读取的数据;
    • 固态磁盘SSD:(大部分使用闪存NAND、少许使用非易失性DRAM)
  2. 接口:(驱动器支持与系统通信的协议)

    • SCSI、SAS、SATA
  3. 存储类型:磁盘设备、RAID、存储阵列、网络连接存储;

9.3 方法

方法类型
工具法观察分析
USE方法观察分析
性能监控观察分析,容量规划
负载特征归纳观察分析,容量规划
延时分析观察分析
事件跟踪观察分析
静态性能调优观察分析,容量规划
缓存调优观察分析,调优
资源控制调优
微基准测试实验分析
伸缩容量规划,调优
  • 策略:USE方法、性能监控、负载特征归纳、延时分析、微基准测试、静态分析和事件跟踪;

9.4 分析

Linux描述
iostat各种单个磁盘统计信息
sar磁盘历史统计信息
pidstat iotop按进程列出磁盘I/O使用情况
blktrace磁盘I/O事件跟踪
DTrace自定义静态和动态跟踪
MegaCliLSI控制器统计信息
smartctl磁盘控制器统计信息

9.5 调优

  1. 操作系统可调参数:(ionice、资源控制、内核可调参数)

    • ionice:可设置一个进程的I/O调度级别和优先级,ionice -c 3 -p 1623,将1623号进程放入空闲I/O调度级别中,这对于长时间运行的备份任务较为合适,这样就不会与生产负载产生冲突;调度级别为整数,其中0为不指定级别,内核会挑选一个默认值,优先级则根据进程nice值选定、其中1为实时级别,对磁盘的最高级别访问、其中2为尽力级别,默认的调度级别,包括优先级0~7、其中3为空闲级别,在一段磁盘空闲的期限过后才允许进行I/O;
    • 资源控制:Linux中的控制组(cgroups)块I/O(blkio)子系统为进程和进程组提供了存储设备资源的控制机制;
    • 内核可调参数:/sys/block/sda/queue/scheduler,选择I/O调度器策略,是空操作、最后期限、预期还是cfq等;
  2. 磁盘设备可调参数:

    • Linux 上的 hdparm 工具可设置多种磁盘设备的可调参数;
  3. 磁盘控制器可调参数:

    • 可用的磁盘控制器可调参数取决于磁盘控制器型号和厂商;MegaCli -AdpAllInfo -aALL 可显示每个设置对应的描述信息;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux系统中,磁盘参数调优是为了提高磁盘性能和优化磁盘使用的过程。下面是一些常见的Linux磁盘参数调优方法: 1. 调整I/O调度器:Linux系统默认使用CFQ(Completely Fair Queuing)I/O调度器,但对于某些应用场景,可能需要更高的磁盘性能。可以尝试使用其他调度器,如deadline或noop。可以通过修改/sys/block/<device>/queue/scheduler文件来更改调度器。 2. 调整读写缓存:Linux系统使用页缓存来加速磁盘读写操作。可以通过修改/proc/sys/vm/dirty_ratio和/proc/sys/vm/dirty_background_ratio参数来调整脏页(尚未写入磁盘的页)的比例。较高的值可以提高写入性能,但也会增加内存压力。 3. 调整文件系统参数:不同的文件系统有不同的参数可以进行调优。例如,对于ext4文件系统,可以通过tune2fs命令来设置文件系统的参数,如inode大小、日志大小等。 4. 启用磁盘写缓存:默认情况下,Linux系统启用了磁盘写缓存,这可以提高写入性能。但在某些应用场景下,如数据库服务器,可能需要禁用写缓存以确保数据的一致性。可以通过将磁盘挂载选项中的sync改为async来启用写缓存。 5. 调整磁盘调度器:Linux系统默认使用CFQ磁盘调度器来决定磁盘访问顺序。但对于某些应用场景,如数据库服务器,可能需要更高的磁盘性能。可以尝试使用其他调度器,如noop或deadline。可以通过修改/sys/block/<device>/queue/scheduler文件来更改调度器。 这些是一些常见的Linux磁盘参数调优方法,具体的调优方法和参数设置应根据实际情况和需求进行选择和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值