Estou um pouco confuso sobre os desenvolvimentos recentes no armazenamento baseado em PCIe, principalmente no que se refere à especificação NVMe e sua compatibilidade de hardware.
Embora eu tenha trabalhado extensivamente com SSDs em fator de forma de disco e alguns dispositivos PCIe de ponta como Fusion-io , estou em uma posição em que não entendo os fundamentos do NVMe e estou buscando esclarecimentos sobre que tipo de servidor hardware é suportado.
Por exemplo, uma cópia de anúncio como esta da Supermicro é confusa.
...CPU PCI-E Gen3 de alto desempenho com conexão direta a dispositivos NVMe.
Estou lidando com uma solução de armazenamento definido por software baseada em Linux e queria usar dispositivos Fusion-io sobressalentes, que usam um driver proprietário ( apresentando nomes de dispositivos /dev/fioX ao sistema operacional ).
Quando pedi ajuda ao fornecedor, a resposta foi:
A nomenclatura do dispositivo "fioX" tornou-se obsoleta pela nova interface do dispositivo NVMe. Significa comprar adaptadores obsoletos para adicionar suporte que ninguém mais pediu.
Isso parece um pouco duro. Não pensei que os adaptadores Fusion-io fossem obsoletos.
As escassas informações que encontro online parecem sugerir que o NVMe é suportado apenas nas gerações absolutamente mais novas de hardware de servidor ( CPUs Intel E5-2600v3 e chipsets PCI 3.0? ). Mas não posso verificar isso.
Isso é verdade?
Qual é a taxa de adoção? Isso é algo que os engenheiros consideram em suas decisões de projeto ou estamos falando de um "padrão" que não está totalmente formado?
Se NVMe é algo que se aplica apenas aos sistemas mais novos do mercado, é razoável sugerir (ao fornecedor) que minha base instalada de sistemas mais antigos não pode ser compatível com NVMe, então vale a pena adicionar o suporte que solicitei?
O NVMe é baseado em PCIe e usa diferentes drivers projetados para isso. Você pode essencialmente pegar um NVM de fator de forma M2, colocá-lo no adaptador apropriado e executá-lo em qualquer sistema Linux, Windows ou BSD com os drivers apropriados.
Essencialmente, tudo o que o NVMe faz é padronizar SSDs baseados em PCIe em um único conjunto de drivers, projetados para tirar o máximo proveito deles.
Provavelmente, se você puder inicializar a partir de um ssd pci não padrão , poderá inicializar a partir dele, com os drivers apropriados no sistema operacional. Se você estiver usando isso para armazenamento em cache e outros fins, não há motivo para o NVMe não funcionar.
Seus sistemas mais antigos provavelmente são compatíveis, supondo que você possa obter um sistema operacional novo o suficiente com um kernel moderno o suficiente.
Eu precisava testar isso por mim mesmo...
Comprei quatro SSDs Intel 750 PCIe NVMe para instalar nos servidores HP ProLiant DL380p Gen8 . Os servidores não são as CPUs da série Intel 2600v3 da geração atual, mas sim as CPUs 2600v2.
O take-away:
NVMe é uma especificação de interface. No Linux, os dispositivos são enumerados como
/dev/nvmeXnY
, por exemplo,/dev/nvme0n1
e/dev/nvme1n1
.O fator de forma dos dispositivos que usei foi PCIe 3.0 x4. Os servidores Gen8 ProLiant têm dois slots PCIe 3.0 no compartimento riser padrão. Essas placas PCIe NVMe funcionarão em slots PCIe mais lentos (ou PCIe 2.0), mas serão limitadas pelo barramento nesse ponto.
Portanto, para meu caso de uso, o NVMe é um pouco orientado ao sistema operacional, mas é definitivamente compatível com meu hardware de servidor um pouco mais antigo.
Meus dois centavos...
NVMe tem vários SSD mfg para focar e adotar um padrão básico... Basicamente, você pode obter desempenho Nand Flash de um SSD conectado a servidores NVMe para NET menos. Além disso, é mais NVMe do que recursos de tecido (com os quais ainda não estou familiarizado)
Veja https://www.brighttalk.com/webcast/663/132761
Conteúdo "O impacto no desempenho de NVMe e NVMe sobre malhas" •Uma visão geral da iniciativa NVMe sobre malhas •Suporte NVMe para várias malhas, incluindo Ethernet com RDMA (iWARP) •Como o NVM Express de ponta a ponta elimina a latência de conversão SCSI •Alcançando desempenho benefícios comparáveis a centenas de SSDs – locais e remotos
este artigo da PCWorld pode ser interessante.
Escrevi um artigo no Thinkmate que tenta dar uma boa visão geral do NVMe e funciona como um pequeno guia sobre como escolher a unidade e o sistema corretos, algo que descobri estar faltando online. Nós vendemos principalmente servidores Supermicro, e eu concordo - As coisas podem ficar um pouco confusas... É por isso que escrevi o artigo!
Quanto à adoção, não posso falar pela indústria como um todo, mas na Thinkmate o interesse em NVMe tem sido significativo, e o feedback que recebemos de nossos clientes é que eles estão muito satisfeitos com a compra, principalmente devido aos benefícios de desempenho .
Vejo muito falar sobre preço, mas acho que o mais importante a se considerar é o valor, não o preço. Sua escolha de memória flash deve depender muito do valor que cada solução trará para sua aplicação durante a vida útil do inversor e do sistema.
Adicionei um cartão nvme intel 750 de 400 GB a um DL 380p gen 8 sem nenhum problema. A bios o reconheceu como um dispositivo de armazenamento em massa.
Estou usando o FreeBSD 9.3 e ele reconheceu o drive nvme imediatamente, funciona perfeitamente bem e é muito rápido. Não posso comentar sobre a inicialização a partir da unidade, pois estou usando isso como uma segunda unidade.
Há um detalhe no artigo a seguir que acho significativo e o leva além do 'apenas pcie'.
São os 32k pedidos simultâneos em fila, que podem transformar algumas aplicações. Se eu li direito, isso não está disponível por meio da solução 'encaixar em um slot que aceita'. Ele precisa de uma placa NVMe adequada.
Apenas para informação. Estou aprendendo também!
http://www.pcworld.com/article/2899351/everything-you-need-to-know-about-nvme.html
A questão principal é se você está tentando inicializar o dispositivo?
Se você deseja inicializar o dispositivo, o dispositivo precisa fornecer uma "rom opcional" que pode ser usada para inicializá-lo ou o BIOS/UEFI no firmware da placa-mãe precisa entender como se comunicar com o dispositivo. Os SSDs NVME geralmente não vêm com uma opção rom, portanto, você só pode inicializá-los em sistemas novos o suficiente para que o firmware entenda o NVME.
Se a resposta for não, um SSD NVME é apenas outro dispositivo PCIe. Nada de especial, desde que você possa conectá-lo fisicamente (pode exigir um adaptador, já que a maioria das unidades NVME vem no fator de forma M.2) e seu sistema operacional possui um driver que você deve poder usá-lo.