如何为Ceph选择合适的SSD?

1. 引言

如何为Ceph分布式存储选择合适的SSD这个问题看似简单,其实内藏不少玄机,不是所有的SSD都适合用,因为SSD有很多我们平时可能没有关注过的一些特性,这些特性会影响Ceph的使用性能或寿命,下面我们一一道来。

2. 如何为Ceph选择SSD?

2.1 - 类别

其实SSD是有分为企业级SSD和消费级SSD,企业级SSD磁盘的参数,如:性能、可靠性、耐久度都不是消费级SSD能比的,所以为Ceph选择合适的SSD规则就是:

不要使用消费级SSD,一定要使用企业级SSD。

按照固态硬盘应用场景的分类,可以分成三种:写入密集型、读取密集型和混合读写型。

  1. 写入密集型环境下对SSD耐写度要求高,通常使用MLC存储单元,要求SSD能长时间承受连续写入而不会导致性能严重下降。常用型号:英特尔 SSD DC P3700 系列,DWPD=10 (800G)。

  2. 读取密集型应用环境的SSD通常采用TLC甚至更低的存储单元,在NAND技术加持下,容量和耐写度得到了提升,而价格却很低廉。常用型号:英特尔 SSD DC S4500 系列,DWPD=1。

  3. 常用型号:混合型其实就是读密集型的基础上,能够承受更大一点的写入,性能依然不能和写密集型的相比。DWPD一般在1-10之间。

如果SSD做为Ceph日志盘使用,那么就选择写入密集性SSD。

2.2 - 耐久度

SSD耐久度就是SSD的寿命,那为什么SSD要有寿命呢,不像HDD没有听过还有耐久度这个参数,那是因为这两种磁盘原理不同,SSD的数据存储原理是使用闪存NAND存储数据,而NAND是有写入次数限制,以浮栅极型NAND闪存为例,闪存是通电与否代表计算机可识别的1、0状态,加电瞬间会产生强大的电场(大于1000万 vt/cm),这么强的电场会破坏隧道氧化层的原子结合,脱离的电子就会上升到浮栅极上以形成电位变化,断电之后电子还会恢复正常位置,这样反复的断电-加压就形成了不同的电位信号。

加电的过程等同于HDD硬盘的数据写入操作,它被称为“Program(编程)”,断电的过程电位恢复,这相当于HDD硬盘的擦除数据,这里成为“Erase(擦除)”,完整的一次P/E循环就是NAND的写入循环,从这里也可以看出SSD要想写入数据就需要恢复默认电位,也就是以“擦除”为前提,这原理最直接的影响就是SSD寿命,因为P/E循环次数是有限的,而不同类型的闪存P/E次数是不一样的。

一般厂家使用DWPD或TBW这两个指标衡量SSD耐久度,下面我们分别介绍下这两个参数:

  • DWPD:每日整盘写入次数 Drive Writes Per Day (DWPD) ,指在预期寿命内可每日完整写入SSD固态硬盘所有容量的次数,也有的文章写成DW/D也是同样的意思。

  • TBW/PBW:写入的字节 Terabytes Written (TBW),Petabytes Written(PBW),指在 SSD 使用寿命结束之前指定工作量可以写入 SSD 的总数据量。PBW也有的文章写成是TBW(PB),其实这两个单位是相同的,PBW = TBW(PB) 。

现在大家看到SSD参数用的TBW/PBW会多一些,如下面intel dc p4500 ssd参数:

其实这两个标准是可以相互转换的,通过PBW可以推算出DWPD,反之也可以。

DWPD或DW / D:每日完整写入SSD固态硬盘所有容量的次数。

GB /Day:每天写入的GB。

TBW:写入的总字节数,通常以TB-TBW(TB)或PB-TBW(PB)表示。

PBW :写入PB

S表示磁盘容量(以GB为单位)

T表示保修/使用寿命(以年为单位)

  • DWPD = GB/day ÷ S

  • DWPD = (TBW(TB) × 1000) ÷ (S × T × 365)

  • GB/day = S ×DWPD  

  • GB/day = (TBW(TB) × 1000) ÷ (T × 365)

  • TBW(TB) = (DWPD × S × T × 365) ÷ 1000

  • TBW(TB) = (GB/day × T × 365) ÷ 1000

  • PBW = TBW(PB) = TBW(TB) ÷ 1000

如我们已知一个SSD TBW为1432TB,想计算下DWPD用到以下公式:

DWPD = (TBW(TB) × 1000) ÷ (S × T × 365)

可以算出DWPD为0.43,现通过以公式算出每天写入量:

GB/day = S  × DWPD

1800GB × 0.43 = 774

当然如果觉得这么麻烦的话,可以使用在线计算工具,网址如下:https://wintelguy.com/dwpd-tbw-gbday-calc.pl

我们再用这个计算工具检查下上面的结果,可以看到最终结果是一样的。

为什么写入耐久性对SSD很重要呢?因为Ceph使用SSD作为日志盘使用,会有大量的写操作,有可能超过SSD的额定耐久性,也就是超出了SSD的P/E循环次数,所以选择SSD一定要:

选择TBW/PBW或DWPD大的SSD。

因为Ceph写入日志大量使用,最佳选择是包括5年内每天超过10次设备写入(DWPD)的设备,这相当于在整个生命周期内写入的总容量为28PB(PBW)。

2.3 - 断电保护

断电保护几乎是企业级固态硬盘的标配功能,它的作用是在发生意外断电(非正常关机)时,保护板载DRAM缓存中的数据不致丢失。

超级电容器用于断电保护至关重要。在电源故障的情况下,超级电容器的大小必须适当,以允许驱动器将所有正在进行的写入保存到非易失性NAND存储中。

由于固态硬盘的DRAM缓存中除了用户读写的数据缓存之外,还包含了相当大容量的FTL闪存映射表,这张虚拟表对固态硬盘工作极为重要,一旦丢失的话固态硬盘就会变砖(无法被识别),所以必须得有断电保护电容。

选择有断电保护电容的SSD。

2.4 - 性能

如果SSD为作日志盘使用,SSD设备的写入吞吐量额定值应超过该日志设备所服务的所有底层OSD设备的总写入吞吐量额定值,如下图可以查看到该SSD的写吞吐量。

2.5 - 总结

上面总结了几条为Ceph选择SSD的参数,有SSD类别、耐久度、断电保护、性能,断电保护一般企业级的SSD都会有,SSD吞吐量一般SSD也不是相差太多,还有就是SSD类别中其实也隐含了不同的耐久度,所以精简下就是为Ceph选择SSD的最佳实践就是:

选择写入密集性的企业级SSD!!!