与使用QLC闪存的英特尔660p不同,东芝XG6-P应用的是96层堆叠的3D TLC闪存(BiCS4),性能及耐用性方面更具优势。早在去年7月,东芝就宣布了使用BiCS4的XG6系列,不过超过1TB的大容量应用则直到XG6-P发布才实现。
相比上代XG5,使用96层BiCS4闪存的XG6、XG6-P在顺序读写及能源效率表现上更佳,除了拥有更新的主控芯片之外,新闪存升级Toggle 30接口也为更低延迟及更低能耗提供了帮助。
或许有些朋友对东芝XG的了解比较少,这是因为XG属于东芝客户级产品(Client SSDs),面向服务器启动盘及日志存储盘应用,直接供应OEM客户,最终随高端笔记本电脑或商用服务器产品出货,较少流通到零售消费级市场中。
而我们能够直接接触到的东芝固态硬盘主要通过东芝在2014年收购的OCZ品牌出现。或许一些老玩家对OCZ RD400 NVMe固态硬盘还有一定印象,它就是由当年的东芝XG3发展而来。只不过之后的XG系列就没有再 延申到 零售品牌当中,略显遗憾。
不过毕竟是同一家企业,客户级和消费级产品之间还是会有互通的。譬如主打高集成度的迷你NVMe固态硬盘BG系列就孕育出了零售的RC100:
为了适应个人消费者DIY加装的使用方式,RC100的体型从BG3的BGA颗粒或M2 2230规格变为更大众化的M2 2242规格,并成为该规格中不多见的NVMe SSD选项。RC100融合了主控与闪存,仅用一个颗粒就可实现240GB/480GB容量,是很多空间紧凑的超极本理想选择。
25寸SATA接口方面,零售的TR200与客户级产品序列中的SG6没有太多的血缘关系。不过它们都使用了东芝自家的BiCS闪存。
主控方面,TR200使用了TC58NC1010GSB——群联PS3111的东芝定制版本。据存储极客的拆解发现,最新批次的TR200固态硬盘也已经用上了96层堆叠的BiCS4 3D TLC闪存——XG6-P中的同款颗粒(编号以TC58LJ开头)。
不过TR200跟面向高容量应用的XG6-P还是有所不同,为了保障较小容量下的性能,东芝为TR200配备了256Gb die的BiCS4闪存,从而保障在480GB容量下能够拥有更高的并发读写能力,也是一种因地制宜的体现了。省去了控制器的NVMe比SAS/SATA的热插拔要复杂的多。在进行热插拔测试之前,第一步就是要确认当前的系统是否支持热插拔。
1,确认SSD的支持
对于SSD,热插拔需要保证在插盘的过程中不会产生电流波峰而损坏器件;拔盘的时候,不会因为突然掉电而丢失数据。这个可以向SSD供应商确定或者查看产品规格书。
2,确认PCIe卡槽的支持
上面提到,NVMe是直接连接到PCIe Bus上的,U2接口也是直接跟PCIe相连(当判断插入的设备为NVMe SSD时)。某些U2接口内部连接的PCIe卡槽并不支持热插拔。PCIe Spec规定了热插拔寄存器。下图(通过lspci -vvv获取)显示了一个PCIe卡槽的Capabilities寄存器信息。其中LnkSta,SltCap,SltCtl和SltSta 4个部分在热插拔过程中比较有用(具体意义请参考PCIe Spec)。HotPlug和Surprise是最基础的判断热插拔的标志位。SltSta中有一个PresDet位指示当前是否有PCIe设备插入卡槽。
3,确认 *** 作系统的支持
PCIe热插拔并不是完全由 *** 作系统处理的,也有可能由BIOS处理,这完全取决于服务器BIOS的设计。当 *** 作系统启动时,会根据ACPI提供的信息来了解到底由谁处理PCIe热插拔。如果由 *** 作系统处理,则会根据PCIe卡槽发送的中断获知热插拔事件。对于Linux系统来说,一般使用pciehp驱动来干这件事情。所以,最简单的判断方法就是看系统中是否注册了热插拔中断服务程序。
对于Linux的NVMe热插拔支持将会单独用一篇文章讲解,此处不再多说。
4,确认NVMe驱动的支持
与其说驱动的支持,不如说驱动中是否有Bug。Linux内核提供了NVMe驱动,但是在实际的测试中,驱动的处理不当容易导致系统Crash和Hang住。产生这些问题的原因基本上可以归纳为NVMe驱动release设备和pciehp release设备产生竞争,出现空指针;NVMe驱动release设备时,上层调用sync函数导致进程block住。这个最好跟SSD 厂商沟通好自己的测试环境,以便提前了解可能出现的问题。
如果这些环节都通过,基本上可以确认当前的系统可以进行热插拔了。但是目前,Linux系统和PCIe热插拔驱动存在不少问题,我们在 *** 作中还需要避免出现下面的情况:
避免在一个服务器上短时间内频繁地(或者同时对多个设备)进行热插拔 *** 作
原因:这是pciehp驱动中热插拔处理的bug,centos7都没有解决。
潜在的问题:可能导致pciehp进程block住,之后插入的盘无法识别。
解决办法:当对多个盘 *** 作时,顺序进行热插拔,并打开pciehp的debug功能,通过dmesg获得pciehp热插拔处理进度。
避免对带有I/O的设备进行热插拔(尤其是启用了Cache的I/O)
原因:这是由于Linux Block层与PCIe热插拔的配合问题导致的。
潜在的问题:可能导致系统某些进程block住,或者系统crash。
解决办法:通过设置卡槽的power值,在拔盘之前通知 *** 作系统先移除设备。
避免对已经mount文件系统的设备进行热插拔
原因:mount无法感知热插拔事件。
潜在的问题:文件系统无法使用,数据丢失。
解决办法:提前umount文件系统。
按照上面的方法,能够避免绝大多数问题。但是还是可能出现错误,尤其在一些新的服务器厂商的产品中,由于兼容性问题导致NVMe设备无法识别。那么我们可以通过卡槽的Capabilities寄存器信息判断。如果设备没有被PCIe系统正确识别,那么就需要咨询厂商了。
总结
这篇文章主要介绍了在进行NVMe SSD热插拔时需要注意的事项。首先,我们检查系统是否支持NVMe热插拔,然后避免出现上面提到的3种情况。PCIe目前还无法做到如SATA/SAS一样的支持力度,这个需要服务器厂商和SSD厂商共同推进,相信在未来会越来越好。用户在这个阶段,只有尽量和厂商多沟通,才能避免 *** 作中造成系统崩溃,数据丢失等风险。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)