我们可以通过下面的方法判断NVMe设备连接的PCIe卡槽是否支持热插拔。
找到NVMe SSD(如nvme0n1)对应卡槽的地址(如0000:04:06.0);通过lspci获得卡槽的热插拔寄存器信息(如果显示为hotplug+,Surprise+则支持热插拔)
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厂商共同推进,相信在未来会越来越好。用户在这个阶段,只有尽量和厂商多沟通,才能避免操作中造成系统崩溃,数据丢失等风险。
一、引语有人说SSD买来一定要先对齐,不然平时用起来会很卡。究竟是真有这种说法还是人云亦云呢?二、4K对齐是什么?我们先来回顾一下机械硬盘的结构。机械硬盘主要由盘片(platter)、磁头(head)...博文来自: Rudy的博客
近期,存储随笔连载了10篇LinuxNVMeDriver学习笔记,主要基于两大块的内容:初始化和BlockIO请求处理过程。我们通过两幅简图回顾一下前面的内容:初始化:这个过程中主要调用了两个函数:...博文来自: 存储随笔
在研究NVMe时,在SSD设备终端为了提高用户体验,常常需要支持自动识别并挂载SSD设备的功能,并且能够侦测到SSD设备断开事件。Linux系统中,当系统配置发生变化时,内核空间会向用户空间发出通知。...博文来自: u010616442的博客
热插拔功能是PCIeSSD的一项重要功能,能大大简化设备更换和调试步骤。特别是在服务器厂商推出支持U.2接口的产品后,对热插拔的需求更加广泛。热插拔在PBlaze5PCIeSSD应用非常成熟。这篇文章...博文来自: Memblaze
NVMe协议调试总结1、NVMe问答NVMe是什么?百度百科这么说的:NVMe(Non-VolatileMemoryexpress),是一种建立在M.2接口上的类似AHCI的一种协议,是专...博文来自: 我的专栏
1、概述本总结随着DM8168中PCIe的学习,以及PCIe原理的学习而添加,都是一些零碎的知识点,有部分个人理解,将来温故知新用。《PCIExpress体系结构导读》,《PCIEXpress系...博文来自: 这里记录过去一周,我看到的值得分享的东西,每周五发布
热插拔原理和应用热插拔(HotSwap、HotPlug、HotDock)是指在系统导电的工作状态下,将模组、卡或连接器插到系统上而不影响系统的操作。 图1所示为热插拔过程,其中左边代表系统及其供电,...博文来自: 博乐Bar
热插拔功能在PBlaze4上的实现并没有太高的技术壁垒,但是实现这项功能需要接口总线电气特性、主板BIOS、操作系统、上层的RAID软件以及NVMe驱动的支持。一个完整的热插拔系统一般包括热插拔系统的...博文来自: Memblaze
当用户向系统添加或删除设备时,内核会产生一个热插拔事件,并在/proc/sys/kernel/hotplug文件里查找处理设备连接的用户空间程序,这个用户空间程序主要有/sbin/hotplug与/s...博文来自: luckywang1103的专栏
直接来干货!怎么调优PBlazeIVPCIeSSDNVMe。Go!1.中断绑定在Redhat6.5中的NVMe驱动会自动把全部的中断向量绑定到core0上,如果有多个SSD,core0将会成为...博文
时代变了——正如上篇文章所说,十年间,SSD迅速“开花结果”,成就了一片“牢不可破”的市场。NVMeSSD是必然趋势,但由于历史遗留、面向未来以及满足企业所需等多种因素影响,导致NVMeSSD出现了许...博文来自: 企事录
之前一篇《测给你看!异步I/O模式下NVMeSSD性能有多高》文章,介绍了同步I/O和异步I/O模式下NVMeSSD性能的差异,更高性能的存储设备也需要更高的压力才能显示其性能优势。在真实的企业系统中...博文来自: Memblaze
https://www.bilibili.com/read/cv1241167几个月之前我曾经写过一篇文章来介绍m.2,但是大家有些看不明白,这次将这篇文章重制一下,希望大家多加支持。m.2、NGFF...博文来自: hbcbgcx的博客
看这名就知道文章特别干货,双端口对于SSD和数据中心来讲着实是个重要特性,Memblaze工程师汪洋倾力打造了上下两篇双端口文章,从应用模型、设计实现到可靠性和性能测试,都介绍一遍。这篇是上篇,介绍了...博文来自: Memblaze
服务器、网络交换机、冗余存储磁盘阵列(RAID),以及其它形式的通信基础设施等高可用性系统,需要在整个使用生命周期内具有接近零的停机率。如果这种系统的一个部件发生了故障或是需要升级,它必须在不中断系统...博文来自: weixin_33946605的博客
我们都知道,即使再高的服务器可用性也有可能出现故障的时候,只不过不知道它何时出现而已。然而一旦服务器出现故障,通常不太可能像PC机那样停下机来进行长时间的维修(除非迫不得已),而是采用在线更换故障配件...博文来自: 王达专栏
转自:http://blog.csdn.net/rns521/article/details/6953591正态分布(Normaldistribution)又名高斯分布(Gaussiandistrib...博文来自: marho
正态分布(Normaldistribution)又名高斯分布(Gaussiandistribution),是一个在数学、物理及工程等领域都非常重要的概率分布,在统计学的许多方面有着重大的影响力。若随机...博文来自: ZYTTAE的专栏
和古老的SCSI和SATA技术一样,SAS支持磁盘的热插拔,这对于维护可用性要求比较高的环境来说非常重要。而且SAS是一个完全的双向系统,而SATA则继承了IDE的特性,是半双向通信的系统。因此,SA...博文来自: itcomputer12的专栏