关于 SSD 的闲言碎语

| 18 Comments

前不久写给《程序员》的一篇文章里,个人预测在 2009 年,SSD (Solid-State Drive,固态盘) 在企业级市场能大展拳脚。上周参加了 EMC 的一个会议,提及了 SSD ,EMC 存储产品对 SSD 的引入也有一年了,做点 SSD 的科普知识应该是有必要的。

Wear Leveling

很多人对 SSD 的误解是:既然你可擦写次数有限制,比如 200 万次,那么不是没几天不久坏掉了,怎么说使用寿命还比物理硬盘长呢?

Wear Leveling 是有效提升 SSD 的 MTBF (Mean Time Between Failures)的一种技术手段。我们都知道木桶原理,对 SSD 硬盘也是这样,如果不停的对某个 Cell 擦写,那肯定很快就报废。 Wear Leveling 的基本思想就是利用算法保持所有的可擦写单位的次数是近似均匀的,这样就把写次数均匀的分散到各个 Cell 上。

Wear Leveling 翻译似乎还没有统一,有翻做均匀磨损、磨损分级、换位写入等。

对 Wear Leveling 粗略一点的描述大致是:假设更新某个数据块,假定8KB ,而可擦写块(erase block)是 256 KB,那么定位到当前数据位置后,将找个没写过或者写过次数更少的可擦写数据块写入,并不是对原来的位置反复更新。Wear Leveling 算法的效率直接影响 SSD 的寿命。

而 8K 到 256 KB 这个过程实际上是加大了 I/O 操作,称之为 Write Amplification (写放大)。当然 SSD 厂家另有其他技术尽量减少写的频率。

为什么 SSD 写入速度相对较慢?

用一句话解释:擦写块(erase block)比较大。

很明显这样做的目的是减少擦写次数,提升 SSD 寿命。但也影响了数据写入速度。

为什么 SSD 容量是 2 的幂次? 比如 32GB,64GB

这个我也不甚了了,猜测是因为 erase block 多数是 2 的幂次的缘故。物理硬盘的尺寸由来我也不甚清楚。

SSD 的擦写次数是不是致命的瓶颈 ?

这个问题太容易给用户带来疑惑。个人认为要依赖应用的特点和设计。对于合适类型的数据,基本不是问题。但对于某些特定的数据类型,那可能是灾难(比如数据库的 Redo Log)。

SSD 会给数据库应用的银弹么?

是曙光,但不会是银弹。对于密集写入的数据库应用来说,SSD 可能不会带来更多的好处。但是对于密集读的应用,那是有可能带来数量级上的性能提升。在未来若干年内,好的数据库应用仍然严重依赖于设计人员的能力和数据库管理员的优化技巧。

此外,还要期待数据库厂商针对 SSD 进行软件级别的优化。

是否从现在选择 SSD ?

典型的废话答案应该是:这取决于你的具体情况。

要看性价比,EMC 最早引入的 SSD ,性能是普通硬盘的 30 倍,价格大约也是 30 倍。而现在,在企业级市场,SSD 已经降到大约 10 倍普通硬盘的价格。如果再低一些,那绝对是比较有吸引力的。

--EOF--

其中观点仅供参考。SSD 有风险,玩家谨慎操作。而这篇文章中的有些观念有实效性,细节也可能不够准确。

Note: 这里的 SSD ,是说面向企业应用而不是面向个人消费品的。

再增加一个图:

SSD vs. HDD.png

18 Comments

为什么 SSD 容量是 2 的幂次? 比如 32GB,64GB

其实现在的硬盘也都是吧
1K=1024B
1M=1024K
...
只不过咱们平时都按100来算了。

oh,是我想错了
当没说吧 :)

51nb坛子里经常谈论SSD的问题,在小本子上安装1.8'的小容量的SSD还是非常实用的。

读取写入速度比我的RAID0还快。

现在64G的SSD价格太贵,如果再小的性价比就更低了。
另外个人认为这玩意总有点技术还不成熟,等大硬盘厂商都上马时再说吧。

2009年应该是SSD发展的好兆头!

ssd的容量总是2的幂次倒没有什么稀奇的,ssd跟内存其实是一个意思,因为访问方式是用地址线的,地址线能编址的范围当然是2的幂次。所以你能买到的内存芯片块和flash芯片块的容量都是2的幂次,所以做成的产品当然也是2的幂次了。

硬盘完全不同,它就是个物理原件,容量是盘的数量和盘上面磁块的数量决定的。

大灰,我的macbook已经使用SSD了。山寨的128G,速度,真的让人非常舒服。比原来的硬盘快了很多啊。

@kimi

等你丢数据的时候就哭吧 :D

>Wear Leveling 翻译似乎还没有统一,
>有翻做均匀磨损、磨损分级、换位写入等
损耗平衡。实际上这是个借用自其他工业的词汇。

楼主对ssd的发展情况还不是特别了解啊。
寿命:Micron已经搞出了寿命多十倍的nand芯片。
持续读:已经有单硬盘1G/s的性能演示了。高出机械硬盘近十倍。想象一下再做个raid。
持续写:MLC和SLC有本质区别
寻道:就是楼主所谓的性能高30倍吧。其实只是影响实际使用效果的一个指标
IOPS:对数据库最重要的指标之一,这个指标非常考验SSD制造商的研发能力。差的还不如机械硬盘,好的远超。
。。。
ssd才起步,潜力也许远不是我们能想象的

@dovepanda

我只关注企业应用市场,个人消费品市场不关心

SSD 已经接近成熟了,怎么叫刚起步? 前面二、三十年都算没起步?

赞成起步的说法, SSD离大规模应用还有一段长路要走; 不知哪位清楚Google或Baidu用的是哪家公司的SSD

@Joseph.Chen

百度用的是华为的

企业存储不是非此即彼的,SSD在OLAP应用的分层存储中将来会有重要的一席,即: SSD->HDD->CAS

容量, 一来芯片厂商出的都是2的倍数, 二来SSD上芯片数量也是8片或者16片(intel是20片)这样基本也是2的幂次
至于32G的实际容量是30G左右, 一来可能是计算方法的问题,二来据我所知,有的厂商会预留部分空间出来, 当万一部分block出了问题, 会拿出预留部分补充容量.

未来SSD走向,我认为是主控集成在主板上, SSD像内存样,贴好芯片往板子上插.

看好SSD的未来

我用过源科的64G 1.8寸 ZIF接口的盘,在我的Fujisu u1010上。。。的确有很大的性能提升。。。。。

看好SSD,不过目前的nand flash感觉都是过渡产品,未来是相变存储的天下....

不管怎么说,未来还是要看几个大厂商来主导整个市场,目前基本就能预见到,,,国内厂商仍然夹缝中生存啊

对于更新数据的场景,若数据d已存储在A_cell,但更新时被写入B_cell,A_cell脏数据d,如何处理 ?