我对基于 PCIe 的存储的最新发展有点困惑,特别是与 NVMe 规范及其硬件兼容性相关的发展。
虽然我工作过广泛使用 SSD在磁盘尺寸和一些高端 PCIe 设备中Fusion-io,我对 NVMe 的基础知识不太了解,想了解它支持哪种类型的服务器硬件。
例如,像这样的广告文案Supermicro 的产品让人困惑。
...高性能 CPU PCI-E Gen3 直接连接到 NVMe 设备。
我正在处理基于Linux的软件定义存储解决方案并希望使用备用的 Fusion-io 设备,该设备使用专有驱动程序(呈现/dev/fioX设备名称到操作系统)。
当我向供应商寻求帮助时,得到的答复是:
新的 NVMe 设备接口使“fioX”设备名称过时了。这意味着我们要购买过时的适配器来添加其他人没有要求的支持。
这似乎有点苛刻。我不认为 Fusion-io 适配器已经过时了。
我在网上找到的少量信息似乎暗示 NVMe 仅支持最新一代的服务器硬件(英特尔 E5-2600v3 CPU 和 PCI 3.0 芯片组?)但我无法验证这一点。
这是真的?
采用率是多少?这是工程师在设计决策时考虑的因素吗?还是我们谈论的是一个尚未完全形成的“标准”?
如果 NVMe 是仅有的适用于市场上最新的系统,向供应商建议我安装的旧系统无法兼容 NVMe 是否合理,因此值得添加我请求的支持?
答案1
NVMe 是基于 PCIe,并使用为此设计的不同驱动程序。您基本上可以采用 M2 规格 NVM,将其放入适当的适配器中,然后在任何具有适当驱动程序的 Linux、Windows 或 BSD 系统上运行它。
本质上 NVMe 所做的就是标准化基于 PCIe 的 SSD 具有一组驱动程序,旨在充分利用它们。
如果你能从非标准pci ssd,您可以使用操作系统中的相应驱动程序从这里启动。如果您将其用于缓存和其他目的,那么 NVMe 完全可以胜任。
您的旧系统可能是兼容,假设您可以获得一个足够新的操作系统和一个足够现代的内核。
答案2
我需要亲自测试一下...
我买了四个英特尔 750 PCIe NVMe SSD安装在HP ProLiant DL380p Gen8服务器。服务器不是当前一代的英特尔 2600v3 系列 CPU,而是 2600v2 CPU。
结论:
NVMe是一个接口规范。在Linux下,设备被枚举为/dev/nvmeXnY
,例如/dev/nvme0n1
和/dev/nvme1n1
。
我使用的设备尺寸为 PCIe 3.0 x4。Gen8 ProLiant 服务器在默认转接卡笼上有两个 PCIe 3.0 插槽。这些 NVMe PCIe 卡可在较慢的 PCIe 插槽(或 PCIe 2.0)中使用,但此时会受到总线的限制。
因此,就我的使用情况而言,NVMe 在某种程度上是由操作系统驱动的,但绝对与我稍旧的服务器硬件兼容。
答案3
我的两分钱......
NVMe 让各种 SSD 制造商关注并采用基本标准……基本上,您可以从连接到 NVMe 服务器的 SSD 获得 Nand Flash 性能,而 NET 更少。此外,他们还有更多 NVMe over fabric 功能(我还不太熟悉)
看https://www.brighttalk.com/webcast/663/132761
内容“NVMe 和 NVMe over Fabrics 的性能影响” •NVMe over Fabrics 计划概述 •NVMe 支持多种结构,包括带 RDMA (iWARP) 的以太网 •NVM Express 端到端如何消除 SCSI 转换延迟 •实现与数百个 SSD 相当的性能优势 - 本地和远程
答案4
我写了一篇文章思维伙伴它试图对 NVMe 进行很好的概述,并作为选择正确驱动器和系统的一个很好的小指南,我发现网上缺少这一点。我们主要销售 Supermicro 服务器,我同意 - 事情可能会有点混乱......这就是我写这篇文章的原因!
至于采用情况,我不能代表整个行业发言,但 Thinkmate 对 NVMe 的兴趣一直很大,而且我们从客户那里得到的反馈是,他们对购买的产品非常满意,主要是因为它的性能优势。
我看到很多人在谈论价格,但我认为最重要的考虑因素是价值,而不是价格。闪存的选择应该在很大程度上取决于每个解决方案在驱动器和系统的使用寿命内为您的应用程序带来的价值。