性能工程高手课
庄振运
Facebook 性能优化和容量管理高级专家
24631 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 40 讲
性能工程高手课
15
15
1.0x
00:00/00:00
登录|注册

17 | 存储篇:如何根据性能优缺点选择最合适的存储系统?

NAS(Network Attached Storage)
SAN(Storage Area Network)
固态硬盘(SSD)
磁带
磁盘
存储系统性能监测和测试工具
SAN(Storage Area Network)
NAS(Network Attached Storage)
DAS(Directed Attached Storage)
SSD的应用程序设计考虑
SSD的缺点
SSD的性能优势
写入放大和耗损平衡
I/O和垃圾回收
单元、页面、块
HDD的性能参数
硬盘响应时间和访问时间
硬盘IO请求处理流程
吞吐率/带宽
访问延迟
IOPS(Input/Output Per Second)
基于网络的存储系统
硬件
思考题
总结
工具
基于网络的存储系统
SSD的性能和应用程序的设计
SSD(固态硬盘)的技术背景
HDD(传统硬盘)的性能
存储系统的三大性能指标
存储系统
如何根据性能优缺点选择最合适的存储系统?

该思维导图由 AI 生成,仅供参考

你好,我是庄振运。
前面两讲我们讨论了 CPU 和内存,今天我们讨论第三个重要的主题:存储系统。现在是大数据时代,这些数据终归要保存到各种存储系统里面,以供读写和分析,因此讨论存储系统的性能问题就很有必要了。
狭义上的存储往往是硬件,比如磁盘、磁带还有固态硬盘。而广义上的存储系统除了指硬件的硬盘,还包括基于网络的存储系统,比如 SAN(Storage Area Network, 存储区域网络)和 NAS 存储(Network Attached Storage,网络接入存储)。
各种存储系统各有优缺点,尤其是性能和成本,所以对不同的需求,我们要选择最合适的存储系统。
我们首先讲存储系统最重要的三大性能指标:IOPS、访问延迟和带宽,然后讲传统硬盘 HDD(Hard Disk Drive)的性能。因为传统硬盘的特性相对简单直白(毕竟业界已经用了几十年了)。这之后再讲固态硬盘的性能(固态硬盘就是 SSD,也叫 Flash)。相对于传统硬盘,SSD 的内部工作原理很不一样,这也就导致它们的性能特性大相径庭。 最后,我们再延伸到基于网络的存储系统,并且介绍几个常用的和存储相关的工具。

存储系统的三大性能指标

一个存储系统的性能最主要的是三个:IOPS访问延迟吞吐率 / 带宽。这三个指标其实是互相关联和影响的,但是我们一般还是分开来衡量。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

存储系统的性能对于数据处理至关重要。本文介绍了存储系统的三大性能指标:IOPS、访问延迟和带宽,并对传统硬盘(HDD)和固态硬盘(SSD)的性能特点进行了详细讨论。传统硬盘的性能受到机械运动的影响,而固态硬盘则基于NAND技术,具有单元、页面和块的存储结构。文章强调了不同存储系统的优缺点,以及如何根据性能指标选择最合适的存储系统。对于读者来说,本文提供了深入了解存储系统性能的基础知识,有助于他们在实际应用中做出明智的选择。 SSD的性能相对于HDD有显著提升,但也存在写入放大和耗损平衡等问题。文章指出,应用程序设计需要充分考虑SSD的内部机制,以充分发挥其潜力,提高性能并延长寿命。此外,基于网络的存储系统如DAS、NAS和SAN也得到了介绍,为读者提供了更多选择和理解。 最后,文章列举了常用的存储系统性能监测和测试工具,为读者提供了实用的工具参考。总的来说,本文全面介绍了存储系统的性能特点、优缺点以及相关工具,对读者了解存储系统提供了全面的视角和实用的指导。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《性能工程高手课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(7)

  • 最新
  • 精选
  • 我来也
    基础知识也看的得很过瘾。 虽然之前也了解一些,但还没细化到平均延迟是哪个级别,相差多少倍。 就像cpu的各级缓存是几个时钟周期一样,之前可能只是感性的认识。 现在虽然也并没完全准确的记下来,但大致的毫秒和纳秒级别还是知道的。 等有必要深究了,再回过头来看,也是很好的。 感谢老师的整理。

    作者回复: 很高兴对你能有帮助。

    2020-01-03
    5
  • 丁丁历险记
    我是来赏下诗的,就硬盘而言,目前我们只用ssd “梅须逊雪三分白,雪却输梅一段香。”

    作者回复: 哈哈,你们公司有矿。

    2020-01-15
    2
    3
  • Linuxer
    有一个问题想请教如果是磁盘空间较宽裕,每次都是小数据量写入,是不是就不存在写入放大的问题了呢?因为现在很多方案都是元数据放在SSD(随机小数据量写入),其他数据放在HDD(大量顺序数据写入)

    作者回复: 得看多小,如果小于4KB,那么有点太小(因为最小写入单位就是4KB)。大于4KB还行。

    2020-01-03
    1
  • 森森不息
    讲的都太基础,最好有深入案例

    作者回复: 现在的模块还处于理论和分析阶段;偏基础,主要是照顾不太懂性能的同学。 后面的模块(优化和实践的模块)有比较多的“偏高深”的实践。 :)

    2020-01-03
    2
    1
  • 子荣
    “IO 带宽大约每秒 100MB,而随机 IOPS 一般是 100 左右”,上文不是说IOPS一般是针对4KB的IO而言吗,那100的IOPS,对应的是400KB,这和IO带宽100MB/s也差太远了吧?

    作者回复: 讲IO带宽的时候一般是挑有利环境:就是顺序IO。 随机IO的话,主要受限于磁头旋转,所以100左右。

    2020-06-15
  • 搬砖人
    测试案例1: 1. 启动一个FIO跑顺序写:fio -filename=/dev/sdg -direct=1 -iodepth=1 -rw=write -ioengine=libaio --bs=8k -numjobs=1 -name=mytest 2. 启动一个FIO跑随机读:fio -filename=/dev/sdg -direct=1 -iodepth=1 -rw=randread -ioengine=libaio --bs=8k -numjobs=1 -name=mytest 发现读的时延非常不稳定,每秒读IOPS平均只有10以下,读时延经常抖动至几百ms,如果顺序写的深度再加高一些,则读就会出现秒级时延 测试案例2: 1. 启动一个FIO跑随机写:fio -filename=/dev/sdg -direct=1 -iodepth=1 -rw=randwrite -ioengine=libaio --bs=8k -numjobs=1 -name=mytest 2. 启动一个FIO跑随机读:fio -filename=/dev/sdg -direct=1 -iodepth=1 -rw=randread -ioengine=libaio --bs=8k -numjobs=1 -name=mytest 发现读时延相对稳定,读写IOPS均可以达50左右,时延平均保持在20ms左右 机械盘的ioscheduler配置成deadline,none都有尝试过,发现对结果没什么改变 从测试结果来看,机械盘对于顺序写的行为是非常友好的,在这种情况,对于读的调度则变得非常不友好了,导致读的时延非常不稳定 所以我们想咨询一下:一边顺序写,一边随机读的场景下,有没有办法让读的性能保持跟稳定一些?或者有没有办法提升读的优先级?希望可以达到测试案例2的效果

    作者回复: 比较困难,因为计算机领域的特点是分层,底层存储和上层应用是尽量互不干涉的。不过真要做的话,也有些招数,比如用Cgroup把不同的IO分开。

    2020-03-06
  • 张开元
    v
    2022-10-16归属地:北京
收起评论
显示
设置
留言
7
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部