HDD

HDD和SSD的比较

  • 当应用程序发出硬盘 IO 请求后,这个请求就会进入硬盘的 IO 队列。如果前面有其他 IO,那么这个请求可能需要排队等待
  • HDD对于随机访问和顺序访问速度差距很大
    • 主要因素是寻道时间
    • 使用 HDD 的应用程序通常会进行各种优化,以执行不需要寻址的就地更新,比如只在文件的后面append
      HDD和SSD的比较

SSD

  • SSD 的特点是,对 SSD 单元的每次擦除,都会降低单元的寿命,因此每一个单元只能承受一定数量的擦除
    HDD和SSD的比较

  • 一个页面包括很多单元,是读写的最小存储单位

    • HDD 可以直接对任何字节重写和覆盖;但是对 SSD 而言,不能直接进行上述的“覆盖”操作。SSD 的一个页面里面的所有单元,一旦写入内容后就不能进行重写,必须和其它相邻页面一起,被整体擦除、重置
  • IO 写入的延迟,具体取决于磁盘的历史状态

    • 因为如果 SSD 已经存储了许多数据,那么对页的写入,有时需要移动已有的数据,这种情况下写入延迟就比较大
    • 因此需要避免SSD存储太满
  • 擦除是以块为单位。擦除速度相对很慢,通常为几毫秒

    • 对同步的 IO 请求,发出 IO 的应用程序,可能会因为块的擦除而经历很大的写入延迟。为了尽量地减少这样的场景发生,一块 SSD 最好保持一定数量的空闲块,这样可以保证 SSD 的写入速度足够快
  • SSD 内部有垃圾回收(GC)机制,它的目的就是不断回收不用的块,进行擦除,从而产生新的空闲块来备用。这样可以确保以后的页写入能快速分配到一个全新的页

  • 写入放大

    • 实际写入 SSD 的物理数据量,有可能是应用层写入数据量的多倍
    • 一方面页级别的写入需要移动已有的数据来腾空页面来写入;另一方面,GC 的操作,也会移动用户数据来进行块级别的擦除
    • 写入放大效用会缩短 SSD 的寿命
  • 损耗平衡

    • 对每一个块而言,一旦擦除造成的损耗达到最大数量,该块就会“死亡”,再也不能存储数据了
    • 为了确保整块 SSD 的容量、性能和可靠性,SSD 内部需要时长对整个 SSD 的各块做平衡,尽量在擦除次数上保持类似
    • 是这种机制也有害处,就是会对前面讲的写入放大推波助澜

HDD和SSD的比较

  • 并发IO
    • 利用到了SSD内部的并行性质
    • 对于HDD无用,因为HDD 只有一个磁头,所以用多个 I/O 线程,并不能提高旧系统的吞吐量
      HDD和SSD的比较
  • SSD 的随机访问与顺序访问具有相同的性能,就地更新反而导致 SSD 性能下降的
    • 因为包含数据的 SSD 页面无法直接重写,因此在更新存储的数据时,必须先将相应的 SSD 页面读入 SSD 缓冲区,然后将数据写入干净的页面

HDD和SSD的比较

相关文章: