Recentemente, comecei a oferecer suporte ao Linux instalado em dispositivos com nvme ssds integrados. Percebi que os arquivos do dispositivo tinham um número extra, além de um número que identificava o número da unidade e o número da partição. As unidades IDE/SATA/SCSI normalmente têm apenas uma letra de unidade e um número de partição.
Por exemplo: /dev/nvme0n1p2
Fiquei me perguntando o que era a parte n1 e, depois de pesquisar um pouco, parece que identifica um 'namespace' nvme. As definições para isso eram meio vagas: "Um namespace NVMe é uma quantidade de memória não volátil (NVM) que pode ser formatada em blocos lógicos".
Então, isso funciona como uma partição definida no nível do controlador de hardware e não em uma tabela de partição MBR ou GPT? Um namespace pode abranger vários SSDs nvme físicos? Por exemplo, você pode criar um namespace que agrupa o armazenamento de vários ssds em um único namespace lógico, semelhante ao RAID 0?
O que você faria com um namespace NVME que você ainda não pode alcançar usando tabelas de partição ou LVM ou um sistema de arquivos que pode gerenciar vários volumes (como ZFS, Btrfs, etc)?
Além disso, por que parece que a numeração do namespace começa em 1 em vez de 0? Isso é apenas algo a ver com a forma como o NVME rastreia os números de namespace em um nível baixo (por exemplo, as partições também começam em 1, não em 0, porque é assim que o padrão para números de partição foi definido, então o kernel do Linux usa qualquer número de partição que está armazenado no disco é - acho que o nvme funciona da mesma maneira?)