深入浅出计算机组成原理
徐文浩
bothub 创始人
70433 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 62 讲
深入浅出计算机组成原理
15
15
1.0x
00:00/00:00
登录|注册

47 | SSD硬盘(下):如何完成性能优化的KPI?

物理块地址(PBA)
逻辑块地址(LBA)
LFS(Log-Structured File System)
预留空间
磁盘碎片整理
写大块读小块
高水位算法
写入放大效应
TRIM指令
磨损均衡
课后思考
推荐阅读
硬件特性设计的软件
优化策略
Key-Value数据库
FTL(闪存转换层)
块的寿命
块的擦除
磁盘碎片整理功能
总结延伸
AeroSpike
SSD硬盘
性能优化的KPI

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

如果你平时用的是 Windows 电脑,你会发现,用了 SSD 的系统盘,就不能用磁盘碎片整理功能。这是因为,一旦主动去运行磁盘碎片整理功能,就会发生一次块的擦除,对应块的寿命就少了一点点。这个 SSD 的擦除寿命的问题,不仅会影响像磁盘碎片整理这样的功能,其实也很影响我们的日常使用。
我们的操作系统上,并没有 SSD 硬盘上各个块目前已经擦写的情况和寿命,所以它对待 SSD 硬盘和普通的机械硬盘没有什么区别。
我们日常使用 PC 进行软件开发的时候,会先在硬盘上装上操作系统和常用软件,比如 Office,或者工程师们会装上 VS Code、WebStorm 这样的集成开发环境。这些软件所在的块,写入一次之后,就不太会擦除了,所以就只有读的需求。
一旦开始开发,我们就会不断添加新的代码文件,还会不断修改已经有的代码文件。因为 SSD 硬盘没有覆写(Override)的功能,所以,这个过程中,其实我们是在反复地写入新的文件,然后再把原来的文件标记成逻辑上删除的状态。等 SSD 里面空的块少了,我们会用“垃圾回收”的方式,进行擦除。这样,我们的擦除会反复发生在这些用来存放数据的地方。
有一天,这些块的擦除次数到了,变成了坏块。但是,我们安装操作系统和软件的地方还没有坏,而这块硬盘的可以用的容量却变小了。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

SSD硬盘性能优化是一项重要的技术挑战,本文介绍了完成性能优化的关键绩效指标(KPI)。文章首先指出了使用SSD硬盘时需要注意的问题,如磁盘碎片整理功能对SSD擦除寿命的影响,以及SSD硬盘的磨损均衡、TRIM指令的支持和写入放大效应。在讨论磨损均衡时,文章介绍了FTL(闪存转换层)的作用,以及如何通过磨损均衡技术实现SSD硬盘各个块的擦除次数均匀分摊。接着,文章详细解释了TRIM指令的作用,以及在SSD硬盘上文件删除的逻辑与实际物理层面的不匹配问题。最后,文章探讨了写入放大效应,指出了SSD硬盘容易越用越慢的问题,并介绍了解决写入放大效应的方法。 文章还介绍了AeroSpike这个专门针对SSD硬盘特性设计的Key-Value数据库(键值对数据库),如何利用SSD硬盘的物理特性来设计应用。AeroSpike操作SSD硬盘时,直接操作SSD里面的块和页,避免了操作系统文件系统的性能损失。在读写数据时,AeroSpike做了优化,尽可能写入较大的数据块,减少磁盘碎片,同时在读取数据时,可以读取小数据,利用SSD的随机读取性能。AeroSpike还针对写入放大效应做了磁盘碎片整理和只使用SSD硬盘一半空间等优化策略,使其性能远超其他NoSQL数据库。 总的来说,本文深入浅出地介绍了SSD硬盘性能优化的关键技术,以及AeroSpike如何利用SSD硬盘的特性来设计高性能的Key-Value数据库,对于需要了解SSD硬盘性能优化和相关应用设计的读者具有很高的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入浅出计算机组成原理》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(29)

  • 最新
  • 精选
  • ヾ(◍°∇°◍)ノ゙
    类似Kafka hbase leveldb 这些都是先写log,标记然后异步整理的系统都是lfs吧。适合ssd的原因,这些系统顺序写,可以设置不删数据,或者异步删除数据,减少了磁盘被频繁擦除问题

    作者回复: 👍 这些数据库的确都是LFS的思路。

    2019-08-14
    41
  • 许童童
    LFS文件系统的设计木主要是为了解决以前文件系统所存在的两个问题:随机输入输出的性能和序列输入输出的性能相差很大;还有就是磁盘搜索和旋转延迟比较大。 LFS文件系统的主要算法就是首先把所有的更新(包括元数据)缓存在内存中的成为segment的单位中。当segment填满之后,里面的数据就写入到磁盘中未使用的地方。 特别要注意的是:LFS并不会覆写已有的数据,而是把segment中的数据写入到磁盘中新的位置。

    作者回复: 👍有很多数据库系统为了性能也都借鉴了LFS的思路。

    2019-08-14
    27
  • 有铭
    AeroSpike为什么现在的受欢迎程度不如Redis?

    作者回复: 有铭同学, 你好,其实AeroSpike据我所知在国内外应用都很普遍了。没有Redis火的核心原因我觉得是因为开源得晚了。 另外,就是对于大部分数据量没有那么大的创业公司,用内存作为缓存,存储空间也就够了,那用Redis也就足够了,暂时还用不上AeroSpike。

    2019-08-14
    18
  • 古夜
    所以FTL到底是系统层面的还是SSD层面的?如果是后者和文章就说不通了

    作者回复: 古夜同学,你好, FTL是在SSD的硬件的控制器里面的,也就是所谓的主控芯片,不是操作系统层面的。

    2019-09-29
    11
  • 明翼
    看了这个文档都想把我 的ssd换回HDD硬盘哈哈,我上面装的一些软件比如qq,整天都再写磁盘。

    作者回复: 这倒大可不必,日常使用其实SSD寿命是足够的,不过重要数据备份最好是云+NAS

    2019-08-17
    3
    9
  •  
    请问:对于ssd硬盘上面文件内容的修改是一个什么样的过程?既然不能覆写,那是不是只能重新分配一个页写入修改后的数据?但这样又要修改inode。。。

    作者回复: 是的,不过这个不是通过改inode,而是在FTL这里处理掉的,就是逻辑块和物理块的映射层面可以处理掉。

    2019-08-18
    6
  • allen
    怪不得我的Mac越用越慢,想要电脑用的久,还是要买大容量SSD

    作者回复: 👍现在SSD硬盘也便宜很多了。

    2019-08-19
    5
  • fcb的鱼
    问下,其实我们日常的文件删除,都只是一个操作系统层面的逻辑删除。对于HDD来说,是不是没有物理删除一说,只需要用新的数据覆盖已经删除数据的这块地方而已;但是对于SSD,就必须先把删除数据的这块地方进行擦除才能写入新的数据吧?

    作者回复: fcb的鱼同学, 你好,是的。有些系统上会装一些“文件粉碎”的软件,在HDD是那个可以把对应的数据进行实际覆写。

    2020-02-11
    2
    4
  • Linuxer
    请问怎么启用, FTL、TRIM

    作者回复: 现在的SSD你买来以后自己内部有FTL的硬件,而且默认是做了TRIM的,所以不需要担心啦

    2019-08-14
    2
    4
  • 关于存储器我有一个疑问,我们这些硬盘,内存的存储器最终都是存了电子或者磁符号形式的0和1吗?比如拍的一张照片。

    作者回复: 成同学, 你好,是的,都是0和1

    2019-09-17
    2
收起评论
显示
设置
留言
29
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部