Ich habe kürzlich damit begonnen, Linux zu unterstützen, das auf Geräten mit integrierten nvme-SSDs installiert ist. Ich bemerkte, dass die Gerätedateien eine zusätzliche Nummer hatten, die über eine Nummer hinausging, die die Laufwerksnummer und die Partitionsnummer angibt. IDE / SATA / SCSI-Laufwerke haben normalerweise nur einen Laufwerksbuchstaben und eine Partitionsnummer.
Zum Beispiel: / dev / nvme0n1p2
Ich habe mich gefragt, was der n1-Teil war, und nach einigem Suchen sieht es so aus, als würde er einen nvme-Namespace identifizieren. Die Definitionen dafür waren vage: "Ein NVMe-Namespace ist eine Menge nichtflüchtigen Speichers (NVM), der in logische Blöcke formatiert werden kann."
Handelt es sich also um eine Partition, die auf der Ebene des Hardware-Controllers und nicht in einer MBR- oder GPT-Partitionstabelle definiert ist? Kann ein Namespace mehrere physische NVME-SSDs umfassen? Können Sie beispielsweise einen Namespace erstellen, der den Speicher mehrerer SSDs in einem einzigen logischen Namespace zusammenfasst, ähnlich wie bei RAID 0?
Was würden Sie mit einem NVME-Namespace tun, den Sie mit Partitionstabellen oder LVM oder einem Dateisystem, das mehrere Volumes verwalten kann (wie ZFS, Btrfs usw.), nicht bereits erreichen können?
Warum beginnt die Namespace-Nummerierung anscheinend bei 1 statt bei 0? Hat dies nur etwas damit zu tun, wie NVME die Namespace-Nummern auf einer niedrigen Ebene verfolgt (z. B. beginnen Partitionen auch bei 1 und nicht bei 0, da auf diese Weise der Standard für Partitionsnummern festgelegt wurde und der Linux-Kernel nur die Partitionsnummer verwendet das ist auf der festplatte gespeichert - ich denke nvme funktioniert genauso?)