功能,这样既节省了投资,又能达到很好的效果。何乐而不为呢?
作为一个面向服务器的网络型 *** 作系统,Linux对数据的安全和存取速度给予了高度重视,从24版内核开始Linux就实现了对软件RAID的支持(关于RAID的背景知识请见附文),这让我们可以不必购买昂贵的硬件RAID设备,就能享受到增强的磁盘I/O性能和可靠性,进一步降低了系统的总体拥有成本。下面就让我们看一个Redhat Linux AS 4下的软件RAID配置实例吧。
系统配置情况
假设某单位新上了一套使用Oracle数据库的能量采集系统,该系统数据量极大并且读写非常频繁,实时性要求高,高峰时有近40名用户在线,对数据库服务器的磁盘子系统提出了很高的要求。由于预算比较紧张,经过多方比较,最终选择了采用Linux系统做软件RAID5的方案。
其配置情况如下:
● *** 作系统为RedHat Linux AS 4;
● 内核版本为269-5EL;
● 支持RAID0、RAID1、RAID4、RAID5、RAID6;
● 五块36GB SCSI接口的磁盘,其中RedHat AS 4安装在第一块磁盘,其它四块组成RAID 5用来存放Oracle数据库。
在RedHat AS 4下实现软件RAID是通过mdadm工具实现的,其版本为160,它是一个单一的程序,创建、管理RAID都非常方便,而且也很稳定。而在早期Linux下使用的raidtools,由于维护起来很困难,而且其性能有限,在RedHat AS 4下已经不支持了。
建议选择 Intel 750 或者浦科特 M8PeY 系列产品。
这2款都带有Option ROM,可以让本身不支持NVMe 启动的R720服务器支持 *** 作系统启动。不过目前,浦科特的已经测试过了。 Intel的只是看有其他网友做过测试,本身没有去做测试。
用Ultral ISO 把Win2008R2 或Win2012的启动光盘ISO文件写入 U盘。
把NVMe的驱动程序解压缩放在U盘上。
U盘启动R720,选择安装 *** 作系统,到找不到硬盘哪一步,选择浏览,找到U盘上NVMe SSD驱动程序存放的目录。加载驱动。提示找到NVMe的SSD。
然后分区,安装 *** 作系统。
6 据说在R720服务器上使用浦科特M8Pe 系列上安装Win2016会有兼容性问题。我最近还没时间测试。正准备测试一下。
7 理论上来说,Intel 750系列的兼容性应该会更好。
如果服务器不支持NVMe SSD引导的,安装 *** 作系统时,就算找到了这个NVMe的SSD,也会提示不能再这个SSD上安装 *** 作系统的。
这就是为啥推荐浦科特和Intel 而不推荐三桑和Sandisk的原因。
将PCIe插槽转换为M2 SSD插槽是一种将高速存储器件连接到服务器的方法,这种方法比传统的SATA接口和SAS接口更快和更有效率。下面是将PCIe插槽转换为M2 SSD插槽的步骤:确认服务器的PCIe插槽类型。M2 SSD通常使用PCIe NVMe协议进行连接,因此,服务器的PCIe插槽应支持NVMe协议。
购买PCIe转M2 SSD适配器。适配器应该与服务器的PCIe插槽兼容,并支持所需的M2 SSD类型和长度。
关闭服务器并断开电源。打开服务器机箱,找到PCIe插槽,将适配器插入到PCIe插槽中。确保适配器牢固地插入,并正确对齐。
将M2 SSD插入适配器上的M2插槽。M2 SSD应该与适配器兼容,并正确安装在插槽中。
重新启动服务器并启动 *** 作系统。在 *** 作系统中,识别M2 SSD并确保其正常工作。
需要注意的是,将PCIe插槽转换为M2 SSD插槽可能需要适当的技术知识和 *** 作经验。在进行此类 *** 作之前,建议先了解相关知识,或请专业人员提供帮助。省去了控制器的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条)