您使用闪存驱动器的体验如何?[关闭]
-
09-06-2019 - |
题
EMC正在营销 固态闪存驱动器 我的项目正在考虑未来朝这个方向发展。有人有用闪存驱动器替换传统磁盘存储的经验吗?除了价格之外,您还经历过该技术的任何缺点吗?
解决方案
我使用带有固态驱动器的机器来代替传统硬盘驱动器。似乎并没有什么实际的好处。你可能会认为它们会更快;但事实并非如此。他们不是。您可能会认为它们消耗的电量会更少,但事实似乎也并非如此。
主要缺点是它们的可用写入数量有限。持续写入磁盘(就像大多数操作系统所做的那样)会使 SSD 的磨损速度比传统驱动器快得多。
其他提示
有几个人指出了闪存的写入限制。对于更好的 SSD 来说,这并不是什么大问题,尤其是对于 EMC 等公司使用的高端 SSD 来说。
例如,看看英特尔的 X25-E. 。它使用单层单元 (SLC) 闪存,与低端和消费级 SSD 中使用的更便宜、更密集的多层单元 (MLC) 闪存相比,它可以处理更多写入。目前典型的 SLC 部件有 写耐力 100,000 次写入。
因此,如果您使用英特尔的 64GB 驱动器,并以最大持续带宽 (170MB/s) 写入,则需要 64K * 100,000 / 170 秒 = 1.22 年才能将足够的数据写入 SSD,从而开始遇到写入限制。
当然,这过于简单化了。还有其他因素在起作用。最重要的是:
- SSD 过度配置闪存,有时高达 25%。因此,标称容量为 64GB 的驱动器内部可能有 80GB 闪存。所以磨损的时间会更长。
- 平均而言,对 SSD 的一次写入会导致对内部闪存的多次写入,因为闪存擦除块大小大于典型的 I/O,并且 SSD 需要在闪存组之间移动数据以确保均匀磨损。过度配置闪存(见上文)和智能固件可以最大限度地减少这种影响——每次写入 SSD 时可能会有 1.1 次闪存写入。但这仍然会导致 SSD 在写入次数少于上述计算建议的次数后磨损。
- 最重要的是,实际工作负载不会接近 170MB/s 的长期持续写入带宽。
总而言之,目前市场上任何基于 SLC 的 SSD 都应该能够使用几年,然后写入耐久性才会成为问题。作为这一点的一个指标,您会发现许多更好的 SSD 都提供多年保修。
看一眼 FusionIO 的 IODrive. 。很难找到缺点(除了价格,但我要为我的个人电脑买一台。是的,我是一名游戏玩家)。
顺便说一句,IO 驱动器的价格约为 30 美元/GB。但其性能与 40 驱动器 SAN 阵列相当。
我使用 CF 卡和 USB 拇指驱动器作为嵌入式 Linux 系统的启动介质。
它们非常适合嵌入式系统和任何需要轻松访问存储的系统。
优点:
- 小巧轻便
- 便宜的
- 能承受敲击和振动
- 不要像HDD那么热
- 如今他们拥有非常令人尊敬的能力
缺点:
- 正如 DannySmurf 提到的,比 HDD 慢得多。
- 他们不喜欢大量的写操作。
我们过去一直使用它们(当时 128MB 闪存驱动器很大),唯一的缺点是价格。除此之外,他们都很棒。我们只需更换卡即可升级固件。
我一直在思考为什么闪存驱动器可能只比磁盘快一点点。内存应该比磁盘快,但主存比闪存快。因此,如果您一遍又一遍地从磁盘读取相同的块,并且操作系统第一次缓存这些块,则后续读取实际上将命中内存而不是磁盘。当然,闪存驱动器也可以从磁盘缓存中获益。
对于我们的代码,我怀疑(无法测试)闪存驱动器可能不会带来速度/价格收益。该算法使用大量查找表来避免重复昂贵的计算,因此我们会遇到大量 IO 等待。我们的一位 SA 发现,如果我们同时对三个相关作业进行排队,它们的运行时间通常会比仅运行一项作业所需的时间要长。如果有足够的可用内存,系统磁盘缓存会大幅减少磁盘读取。
由于这些表很少发生变化,因此写入次数限制并不是一个大问题,但价格才是。听起来有些应用程序非常适合这项技术,但它并不是灵丹妙药。
我在我的 Lenovo W500 上写了一篇关于 Patriot WARP with vista 的评论。表现相当糟糕。
http://peterkellner.net/2009/02/08/ssd-notebook-lenovo-patriot-warp-veryslow/
买家小心!eBay 上有很多假冒的笔式驱动器(向操作系统报告的容量为 16、32 GB 等,但在损坏数据之前只能容纳 2GB 左右)。很多人都被骗了,因为他们没有测试自己的内存(他们假设内存有 16GB,因为操作系统说有)。确保您的驱动器是正品的唯一方法是向其中写入非重复(伪)随机字节,然后读回它们以确保它们全部正确。
SOSFakeFlash 维护了一个 巨大的清单 eBay 上已确认的假冒闪购卖家。
我不知道重型 SSD(相对于笔式驱动器和存储卡)是否受到此问题的困扰,但我强烈建议 全部 内存买家测试他们的记忆力。
当我有时间时,我将为 Linux 编写一个简单的开源磁盘测试器,实现随机字节方法。