Recentemente, comecei a oferecer suporte ao Linux instalado em dispositivos com ssds nvme internos. Notei que os arquivos do dispositivo tinham um número extra, além de um número que identifica o número da unidade e o número da partição. As unidades IDE / SATA / SCSI normalmente têm apenas uma letra e um número de partição.
Por exemplo: / dev / nvme0n1p2
Eu comecei a me perguntar qual era a parte n1 e, depois de um pouco de pesquisa, parece que isso identifica um 'namespace' do nvme. As definições para ele eram meio vagas: "Um espaço para nome NVMe é uma quantidade de memória não volátil (NVM) que pode ser formatada em blocos lógicos".
Portanto, 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 espaço para nome pode abranger vários ssd nvme físicos? Por exemplo, você pode criar um namespace que agrupe 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 ainda não é possível 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 é algo a ver com o modo como o NVME rastreia os números do namespace em um nível baixo (por exemplo, as partições também começam em 1, e não em 0, porque é assim que o padrão para números de partição foi definido, para que o kernel do Linux use apenas o número da partição que está armazenado no disco é - acho que o nvme funciona da mesma maneira?)