เนมสเปซ nvme คืออะไร? พวกเขาทำงานอย่างไร


18

ฉันเพิ่งเริ่มสนับสนุน Linux ที่ติดตั้งบนอุปกรณ์ที่มี nvme ssds ในตัว ฉันสังเกตเห็นว่าไฟล์อุปกรณ์มีหมายเลขพิเศษนอกเหนือจากหมายเลขที่ระบุหมายเลขไดรฟ์และหมายเลขพาร์ติชัน ปกติไดรฟ์ IDE / SATA / SCSI จะมีตัวอักษรไดรฟ์และหมายเลขพาร์ติชันเท่านั้น

ตัวอย่างเช่น: / dev / nvme0n1p2

ฉันต้องสงสัยว่าส่วนหนึ่งของ n1 คืออะไรและหลังจากการค้นหาเล็กน้อยดูเหมือนว่าจะระบุเนมสเปซ 'nvme' คำจำกัดความของมันค่อนข้างคลุมเครือ: "เนมสเปซ NVMe เป็นปริมาณของหน่วยความจำไม่ลบเลือน (NVM) ที่สามารถฟอร์แมตเป็นบล็อกเชิงตรรกะ"

ดังนั้นสิ่งนี้จะทำหน้าที่เหมือนพาร์ติชันที่กำหนดไว้ที่ระดับตัวควบคุมฮาร์ดแวร์และไม่อยู่ในตารางพาร์ติชัน MBR หรือ GPT หรือไม่? เนมสเปซสามารถขยายหลายฟิสิคัล nvme ssd ได้หรือไม่? เช่นคุณสามารถสร้างเนมสเปซที่รวมพูลหน่วยเก็บข้อมูลจากหลาย SSD ลงในเนมสเปซตรรกะเดียวซึ่งคล้ายกับ RAID 0 หรือไม่

คุณจะทำอะไรกับเนมสเปซ NVME ที่คุณไม่สามารถทำได้โดยใช้ตารางพาร์ติชันหรือ LVM หรือระบบไฟล์ที่สามารถจัดการหลายวอลุ่ม (เช่น ZFS, Btrfs, ฯลฯ )

นอกจากนี้เหตุใดจึงดูเหมือนว่าการกำหนดหมายเลขเนมสเปซเริ่มต้นที่ 1 แทนที่จะเป็น 0 นั่นเป็นเพียงสิ่งที่จะทำอย่างไรกับวิธีที่ NVME ติดตามหมายเลขเนมสเปซในระดับต่ำ (เช่นพาร์ติชันเริ่มต้นที่ 1 ไม่ใช่ 0 เพราะนั่นคือวิธีการตั้งค่ามาตรฐานสำหรับหมายเลขพาร์ติชันดังนั้นเคอร์เนล Linux จึงใช้หมายเลขพาร์ติชั่น ที่เก็บไว้ในดิสก์คือ - ฉันเดา nvme ทำงานในลักษณะเดียวกันได้หรือไม่)

คำตอบ:


17

ใน NVM Express และมาตรฐานที่เกี่ยวข้องผู้ควบคุมจะให้การเข้าถึงที่เก็บข้อมูลซึ่งแบ่งออกเป็นเนมสเปซหนึ่งรายการขึ้นไป เนมสเปซสามารถสร้างและลบผ่านตัวควบคุมได้ตราบใดที่มีที่ว่างสำหรับพวกเขา (หรือที่เก็บข้อมูลพื้นฐานรองรับการจัดเตรียมแบบบาง) และตัวควบคุมหลายตัวสามารถให้การเข้าถึงเนมสเปซที่ใช้ร่วมกัน วิธีการจัดระเบียบที่เก็บข้อมูลพื้นฐานไม่ได้ถูกระบุโดยมาตรฐานเท่าที่ฉันสามารถบอกได้

แต่โดยทั่วไป NVMe SSDs ไม่สามารถนำมารวมกันตั้งแต่พวกเขาแต่ละคนให้การจัดเก็บของตัวเองและควบคุมเชื่อมต่อกับพอร์ต PCI Express และจุดเชื่อมต่อเป็นตัวควบคุมเหนือ namespaces - จึง namespace ไม่สามารถควบคุมกลุ่มหลาย ๆ (ควบคุมหลายสามารถจัดเตรียมการเข้าถึงเนมสเปซที่ใช้ร่วมกัน) จะดีกว่าถ้าคิดถึงเนมสเปซเป็นสิ่งที่คล้ายกับ SCSI LUNs ที่ใช้ในการจัดเก็บข้อมูลองค์กร (SANs ฯลฯ )

การกำหนดหมายเลขเนมสเปซเริ่มต้นที่ 1 เพราะนั่นคือวิธีการทำงานของตัวระบุเนมสเปซต่อคอนโทรลเลอร์ เนมสเปซยังมีตัวระบุที่ไม่ซ้ำกันและมีความเป็นสากลอีกต่อไป

เนมสเปซสามารถจัดการได้โดยใช้nvmeคำสั่งซึ่งให้การสนับสนุนฟีเจอร์ NVMe ระดับต่ำ ได้แก่ :

  • การจัดรูปแบบซึ่งดำเนินการรูปแบบระดับต่ำและอนุญาตให้ใช้คุณสมบัติต่าง ๆ (ลบอย่างปลอดภัยเลือกรูปแบบ LBA ... );
  • การแนบและการแยกซึ่งอนุญาตให้ตัวควบคุมเชื่อมต่อกับหรือแยกออกจากเนมสเปซ (ถ้ารองรับและเนมสเปซอนุญาต)

การติดและแยกไม่ได้เป็นสิ่งที่คุณจะเจอในแล็ปท็อปหรือไดรฟ์ NVMe บนเดสก์ท็อป คุณต้องการใช้กับช่องเก็บ NVMe เช่น Dell EMC ที่ขายโดยแทนที่ iSCSI SANs ในอดีต

ดูรายละเอียดมาตรฐาน NVM Express (เป็นเรื่องที่อ่านง่าย) และการนำเสนอการสอน NVM Express นี้สำหรับการแนะนำที่ดี


ฉันสังเกตเห็นคำสั่ง Linux 'nvme' นอกเหนือจากการสนับสนุนสำหรับการลบ / สร้างเนมสเปซยังให้แนวคิดของการแนบ / แยกออกและการจัดรูปแบบเนมสเปซ (ซึ่งดูเหมือนว่าจะแยกจากการดำเนินการรูปแบบของ คุณสามารถให้ข้อมูลเกี่ยวกับการปฏิบัติการเหล่านั้นได้หรือไม่?
JeffFromOhio

3
ดูคำตอบที่อัปเดตของฉัน
Stephen Kitt
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.