在网上有很多资源讨论在RAIDconfiguration中使用SSD驱动器 – 但是这些资源大都可以追溯到几年之后,SSD生态系统非常快速移动 – 正如我们预计今年晚些时候英特尔的“Optane”产品发布这将改变一切…再次。
通过肯定消费级固态硬盘(如Intel 535)和数据中心级SSD(如Intel DC S3700)之间存在质的差异,我会在序言中提到我的问题。
我主要关心的是RAID情况下的TRIM支持。 据我了解,尽pipe在消费级计算机中引入SSD已有六年多的时间,而NVMe在市场上已有四年,但现代RAID控制器仍不支持向连接的SSD发出TRIM命令 – 英特尔的RAID控制器在RAID-0模式。
我很惊讶TRIM支持不在RAID-1模式中,考虑到驱动器互相镜像的方式,这看起来很简单。 但是我离题了。
我注意到,如果您想要使用磁盘(HDD和SSD)进行容错,则可以将其用于RAIDconfiguration中,但是由于SSD不带TRIM,这意味着它们将遭受写放大,从而导致额外的磨损,反过来会导致SSD过早失效 – 这是一个不幸的讽刺:一个旨在防止驱动器故障的系统可能直接导致它。
所以:
现代(2015-2016年代)固态硬盘需要TRIM支持吗?
1.1。 在SATA,SATA-Express和基于NVMe的SSD之间是否需要TRIM支持有什么不同?
驱动器通常被宣传为具有改进的内置垃圾收集function; 这是否消除了对TRIM的需求? 他们的GC过程如何在RAID环境中工作?
1.1。 例如,请参阅2010年的质量保证(QA),其中描述了非TRIMming( https://superuser.com/questions/188985/how-badly-do-ssds-degrade-without-trim ) – 性能下降来自2015年的文章强烈build议使用TRIM的情况( http://arstechnica.com/gadgets/2015/04/ask-ars-my-ssd-does-garbage-collection-so-i-dont-need-trim右/ )。 对于TRIM的必要性这些强有力的论据,你有什么回应?
早期的许多文章和讨论都是关于SLC和MLC的闪存,而SLC由于其寿命更长,所以更受欢迎 – 但是现在看起来所有的固态硬盘(无论消费者对企业频谱)都是MLC这些 – 这种相关性的区别了吗?
1.1 TLC闪光灯怎么样?
企业级固态硬盘往往具有更高的耐用性/写入限制(通常是在整个驱动器的预期5年使用寿命内,您可以在一天内完全覆盖驱动器的次数) – 如果写入周期限制非常高(例如每天完成100次)这是否意味着他们完全不需要TRIM ,因为这些限制是如此之高,或者相反 – 只能通过使用TRIM才能达到的限制?
我们一起回答一个问题:
简短的回答:在大多数情况下,没有。 很长的回答:如果您保留足够的空间(〜20%),即使是消费级驱动器通常也有相当好的性能一致性值(但是您需要避免驱动器,而不是持续写入)。 企业级驱动器甚至更好,这是因为它们默认具有更高的备用空间,并且由于其控制器/固件组合已针对连续使用驱动器进行了优化。 例如,看看你引用的S3700驱动器:即使没有修剪,它也具有非常好的写入一致性。
驱动器垃圾收集器在驱动器沙箱内部发挥着魔力 – 它对外部环境一无所知。 这意味着它(大部分)不受arraysRAID级别的影响。 也就是说,某些RAID级别(基本上是基于奇偶校验的级别)有时(并且在某些具体实现中)会增加写入放大因子,所以这又意味着GC例程的更高工作量。
SLC驱动器基本上已经从企业中消失,主要是军事和一些工业任务。 现在标注的企业分为三个等级:
实际上,上述任何一种闪存types都应该提供足够的写入容量,事实上,您可以find具有上述所有闪存types的企业级驱动器。
企业与消费者驱动的真正区别在于:
企业级驱动器主要是由于其控制器和电力电容器,而不是由于更好的闪光。
如上所述,企业级驱动器具有更高的默认备用空间(〜20%),这又大大降低了对常规TRIM的需求
无论如何,作为一个附注,请考虑一些支持TRIM的软件RAID(有人说Linux MDRAID? )
在现代RAID控制器上使用SSD时,TRIM并不是我所担心的。 SSD已经改进,硬件RAID控制器function已经针对这些工作负载进行了优化,耐久性报告通常已经到位。
TRIM适用于低端SATA驱动器。 对于SAS SSD,我们有SCSI unmap,也许这就是我没有遇到TRIM需要的原因…
但另一位评论者是正确的。 软件定义存储(SDS)正在改变我们使用SSD的方式。 在SDS解决scheme中,RAID控制器是无关紧要的。 而像TRIM这样的东西往往不那么重要,因为SSD正在填补指定的angular色。 我想到的是灵活的存储读取caching或ZFS L2ARC和ZIL …他们都满足特定的需求,软件更加智能地利用资源。
shodanshok在这里触及真正的答案。 如果您预留了额外的空间,“过度提供”,您的SSD耐久性和写入性能的一致性将随着时间的推移而得到改善,缺乏TRIM支持将变得无关紧要。 预留额外的空间可以简单地完成,从一个新的SSD开始,分区小于全部容量。 大多数驱动器控制器将未使用的空间视为保留空间,从而显着减less写入放大。 对于引导和操作系统,10%的预留空间可能就足够了。 对于经常重写的驱动器,请增加该空间。
使用SSD的RAID级别上面的答案表明,具有奇偶校验的RAID级别(如RAID 5)会增加写入放大。 实际上有多种解释方式:对一个驱动器的影响或对这组驱动器的影响。
与没有冗余相比,RAID 5增加了写入设置,因为它增加了校验和校验。 与(n-1)个驱动器的RAID 0arrays相比,RAID驱动器对n个驱动器的每个驱动器的影响是没有的。 n个驱动器中的每一个都接收同样多的写入。 RAID 5增加了1 /(n-1)额外的写入。 但是,RAID 1和RAID 10会为该设备增加100%的额外写入,因为写入到一个SSD的所有内容都将写入其镜像。
因此,就写入RAID 5集合而言,相对于具有相同数量的驱动器的RAID 10而言,RAID 5集合中的SSD将会收到较less的写入。 而且,即使增加RAID 10中SSD的数量以均衡可用容量,也可以保持正确。