![服务器用 SSD 或 HDD](https://linux22.com/image/743512/%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%94%A8%20SSD%20%E6%88%96%20HDD.png)
问题
我读过很多关于存储的讨论,以及 SSD 和传统 HDD 哪个更好。我很困惑。HDD 仍然很受欢迎,但为什么呢?
对于活动存储,哪种方式更好?例如对于数据库,磁盘始终处于活动状态?
关于SSD。
优点。
- 他们很安静。
- 非机械的。
- 最快的。
缺点。
- 更贵。
问题。
- 当SSD一个cell的生命周期用完之后会发生什么?磁盘是否只减少了这个cell,并且正常工作?
- 最好的文件系统是什么?ext4 好吗?因为它可以连续保存到单元格中?
关于 HDD。
优点。
- 更便宜。
缺点。
- 如果发生机械故障,我认为通常无法修复。(请确认。)
- 最慢,尽管我认为 HDD 速度通常足以满足服务器的需求。
仅仅是价格问题吗?为什么 HDD 更受青睐?SSD 对服务器真的有用吗?
答案1
我的工作之一是设计和构建大型存储系统(通常称为“SAN”或“存储区域网络”)。通常,我们使用分层方法,将 SSD 和 HDD 结合起来。
也就是说,每种方法都有特定的优点。
SSD 几乎总是具有较高的每字节成本。我可以以每 GB 0.068 美元的价格购买 10k SAS 4kn HDD。这意味着我只需花费大约 280 美元就可以购买 4TB 的硬盘。另一方面,SSD 的每 GB 成本通常为 10 到 20 美分,甚至高达每 GB 几美元。
在处理 RAID 时,速度变得不那么重要,而大小和可靠性更为重要。我可以使用 HDD 构建 12TB N+2 RAID 系统,比使用 SSD 便宜得多。这主要是由于第 1 点。
如果处理得当,HDD 的更换和维护成本极低。由于每字节成本较低,因此因故障而用另一块硬盘替换一块硬盘的成本更低。而且,由于硬盘故障通常与时间有关,而不是与写入的数据有关,因此在重建 RAID 阵列时,更换硬盘不会自动开始消耗 TBW。(诚然,重建所用的 TBW 百分比总体上很小,但这一点仍然成立。)
SSD市场相对复杂。目前,SSD 主要有四种类型(截至撰写本文时),从支持的总写入次数最高到最低依次为:SLC、MLC、TLC、QLC。SLC 通常支持的最大总写入次数(SSD 寿命的主要限制因素),而 QLC 通常支持的总写入次数最低。
尽管如此,我见过的最成功的存储系统都是分层的,两个驱动器都在使用。就我个人而言,我向客户推荐的所有存储系统通常都遵循以下层级:
- 第 1 层通常是一个(或多个)仅 RAID 10 SSD 层。数据始终写入第 1 层。
- 第 2 层通常是一个(或多个)RAID 50 或 5 SSD 专用层。数据从第 1 层老化到第 2 层。
- 第 3 层通常是一个(或多个)仅 RAID 10 HDD 层。第 2 层到第 3 层的数据已过期。
- 第 4 层通常是几组 RAID 6 仅 HDD 层。第 3 层到第 4 层的数据已过期。我们尽可能缩小 RAID 6 组,以便最大限度地支持驱动器故障。
随着层级的增加,读/写性能会下降,数据将传播到大多数数据具有相同访问/修改频率的层级。(也就是说,数据读取/写入的频率越高,其所在的层级就越高。)
在其中加入一些设计良好的光纤通道,你实际上可以构建一个吞吐量比在船上驱动器会。
现在,谈谈您提到的一些具体事项:
您的 SSD 问题
SSD 究竟是如何工作的?当一个单元的生命周期结束时,会发生什么?磁盘仅减小了该单元并正常工作?或者发生了什么?
- 这两种类型的驱动器通常都设计有多个“备用”单元。也就是说,它们上面有您无法访问的“额外”空间,当某个单元坏掉时,这些空间可以支持故障恢复。(如果我没记错的话,这个比例大概是 7-10%)。这意味着,如果一个“单元”(硬盘上的扇区)坏掉,就会使用一个“备用”单元。您可以通过两个驱动器上的 SMART 诊断实用程序检查此状态。
最好的解决方案(文件系统)是什么?我认为 ext4 很好,因为它可以连续保存到单元格中?
- 对于 SSD 来说,这完全无关紧要。单元定位并不重要,因为访问时间通常是线性的。
您的 HDD 问题
一旦出现机械故障,就没有办法修理吗?
- 部分错误。HDD 实际上是更轻松在大多数故障情况下恢复数据。(注意:我说的是更轻松, 不是简单的。)需要专门的设备,但成功率似乎相当高。盘片通常可以读取在......之外可以使用特殊设备对硬盘本身进行修复,这样当硬盘坏了的时候就可以恢复数据。
最慢,但是我觉得速度不是那么重要,因为HDD的速度绝对够服务器使用?
- 通常,使用 RAID 时,单驱动器速度不再是一个因素,因为您可以使用速度配对 RAID 设置来提高整体速度。(RAID 0、5、6 经常使用,通常串联使用。)对于具有高 IO 的数据库,除非设计为非常故意的。您可能希望使用 SLC 写入密集型 SSD 来实现数据库级 IO。
答案2
HDD 仍然很受欢迎
是吗?说实话我不确定。
目前,HDD 的容量很大,价格也公道,这一点毋庸置疑,而且我认为人们也相信它们比 SSD 能保留更长时间的数据。此外,SSD 损坏时往往会一次性完全损坏,而 HDD 损坏的方式则更可预测,如果需要,也许可以有更多时间先取出数据。
但除此之外,SSD 是大多数用途的首选 - 您需要一个启动对,R1 中的几个 500GB SATA 不会花费太多,对于数据库使用,SSD 真的无可匹敌(只要您的日志在高耐久性型号上)。对于备份,是的,您可能会使用大型 7.2k HDD,对于非常大的数据集也是如此(事实上,去年年初我为了满足这个要求购买了 4,000 多个 10TB HDD),但除此之外,SSD 是首选。
答案3
固态硬盘适用于所有热存储:交互式使用、数据库、任何在线内容。主轴硬盘作为廉价的热存储,仅适用于不太冷的存档或不经常访问的数据。特别是,在将备份存档到磁带之前,硬盘驱动器位于暂存区。
热介质和冷介质的不同类型也有助于实现多样性。如果某个品牌的 SSD 控制器同时丢失在线数据和备份数据,数据丢失的后果会更严重。虽然不太可能,但无论如何,主轴和磁带都很便宜,所以何必冒这个险呢。
只要阵列保持冗余和备份,任何特定设备的故障模式都不重要。通常的程序是更换出现任何故障症状的驱动器。在测试系统中尝试修复它们,任何灾难性故障都不会影响生产服务。
文件系统是个人喜好问题。虽然有针对 SSD 优化的文件系统,但您了解并可以修复的东西可能更重要。
答案4
HDD 仍然很受欢迎,但是为什么呢?
这取决于你与谁交谈、他们的背景(管理、IT、销售等)以及讨论涉及的服务器类型。HDD 通常每字节价格要便宜一个数量级,但耗电量更大,而且速度几乎总是更慢,取决于工作负载。
几乎总是归结于成本以及给定数量的服务器可以容纳多少存储空间。如果您可以使用单个 SSD 获得 5 磁盘 RAID 阵列的性能,那么 SSD 可能要便宜得多,并且只使用一小部分的功率,但您获得的存储空间也可能只有 1/10。
主动存储哪个比较好?
这就是事情变得复杂的地方,也是为什么许多人会跳过复杂过程而直接使用他们熟悉的硬盘的原因。
SSD 分为不同等级,对可写入单元的数据量有限制,这与主机写入的数据量不同。写入少量数据最终会将大量数据写入单元,这称为写入放大,并且会迅速损坏耐久性等级较低的驱动器。
SSD 单元以其可存储的位数命名,为了存储 n 位,每个单元需要 2^n 个电压级别。TLC(三位)需要 8 个电压级别来处理这些位。通常,每次增加每个单元的位数时,单元耐用性都会下降 3-10 倍。对于例子例如,SLC 驱动器可以在单元损坏之前写入所有单元 100000 次,企业级 eMLC 30000 次,MLC 10000 次,TLC 5000 次,QLC 1000 次。
SSD 单元技术也经历了代际改进,更好的光刻技术和 3D NAND 比旧式 2D NAND 提高了密度和性能,“今天的 MLC 比昨天的 SLC 更好”,分析师表示吉姆·汉迪。
SSD 实际上并不直接写入已寻址的单元,而是写入单元块。这样,块的单元写入量就更加一致,当单元超出容差时,整个块将被标记为坏块,数据将移动到新块。SSD 耐久性取决于单元类型、可用的备用块数、纠错开销,以及驱动器如何使用缓存和算法来减少写入放大。制造商选择的标记坏块的容差也会发挥作用,企业级驱动器将比消费级驱动器更早将块标记为坏块,尽管两者都仍可正常运行。
企业级“高写入”SSD 基于 SLC 或 eMLC 单元,具有大量备用块,并且通常具有带电容器的大型缓存,以确保在断电时缓存可以刷新到磁盘。
对于需要快速访问时间的“高读取”应用(例如文件服务器),还存在耐久性低得多的驱动器,它们每字节的成本较低,但代价是耐久性降低,具有不同的单元类型、更少的备用区域等等,它们的耐久性可能只有“高写入”驱动器的 5%,但如果使用得当,它们也不需要它。
例如对于数据库来说,磁盘一直处于活动状态吗?
我的数据库很小,间歇性读取占访问的 95%,并且大部分缓存在 RAM 中,因此它在 HDD 上和 SSD 上的运行速度几乎一样快。如果数据库更大,系统上的 RAM 就不够了,SSD 开始在访问时间上产生巨大差异。
SSD 还可以使备份和恢复速度提高几个数量级。我的数据库从备份恢复到速度较慢的 SSD 大约需要 10 分钟,或者11 秒对于速度非常快的服务器,备份到 HDD 大约需要 25 分钟。这至少是 2 个数量级,并且根据工作量的不同,这可能会产生巨大的差异。它实际上可以在第一天就收回成本。
具有大量小写入的数据库可以在数小时内毁坏消费级 TLC 驱动器。
SSD 对服务器真的有用吗?
当然,如果为应用程序选择了正确的驱动器类型和等级,那么如果做错了,可能会是一场灾难。
我的服务器运行多个数据库,以及高读取网络存储、高写入安全录像存储、混合读写文件存储和客户端备份。该服务器具有用于批量网络存储和 NVR 的 RAID-6 HDD 阵列、用于 MySQL 的单个高性能 MLC SSD 以及 3 个 RAID-5 中的消费级 TLC 驱动器,用于客户端和数据库备份以及快速访问网络存储。
SSD RAID 上的写入速度与 HDD RAID 的速度大致相同,但 SSD RAID 上的随机访问读取速度要快 10 倍以上。这又是一个消费级 TLC SSD,但由于顺序写入速度比千兆 LAN 快 3 倍左右,因此它永远不会过载,如果系统在远程访问时进行本地备份,则会产生大量开销。
大多数 SSD 还提供即时安全擦除 (ISE)可以在几秒钟内擦除数据,而没有此功能的 HDD 则需要数小时或数天的时间,只有少数企业级 HDD 倾向于提供 ISE,但它们正变得越来越普遍。如果您要淘汰或重新利用驱动器,这将非常有用。
最好的解决方案(文件系统)是什么?
取决于您想要的数据类型和文件系统功能类型。我只使用 EXT4 和 BTRFS(需要快照和校验和)。文件系统开销会减少可用空间,并会略微缩短 SSD 的使用寿命,BTRFS 的校验和和其他功能开销较高,快照会占用大量空间。
一旦出现机械故障,就没有办法修理吗?
无论硬盘类型如何,您是否曾经对坏掉的硬盘进行过数据恢复?非常贵,您最好使用分层备份、主存储上的 RAID、在不同设备或机器上本地进行版本化备份,然后同步到异地或云端。1TB 的云存储每月 5 美元,HDD 上的数据恢复可能要花费 2 千美元,而坏掉的 SSD 可能无法恢复……只需进行备份,无需修复。