NVMe Namespaces: peluang dan jebakan



Saya yakin banyak yang pernah mendengar tentang NVM Express , atau hanya NVMe . Awalnya, ini hanya drive cepat bagi saya. Kemudian saya menyadari bahwa ini adalah antarmuka untuk menghubungkan drive ini. Kemudian dia mulai memahami NVMe sebagai protokol untuk mentransfer data melalui bus PCIe. Dan bukan hanya protokol, tetapi juga protokol yang dirancang khusus untuk solid state drive!



Sedikit demi sedikit saya menyadari bahwa ini adalah spesifikasi yang lengkap . Dan kita pergi ... Berapa banyak fitur penggunaan yang menarik, ternyata, ada di NVMe. Berapa banyak hal yang ditemukan ... Bahkan sedikit menyinggung bahwa lapisan informasi seperti itu melewati saya.



Jadi, apa sebenarnya NVMe itu? Mari kita lihat lebih dekat.



Semuanya dimulai dengan antarmuka SATA . Sebenarnya, sebelumnya ada banyak antarmuka lain - SCSI, UltraSCSI, ATA, PATA, dan lainnya, tetapi ini adalah hal-hal yang sudah berlalu. Pada artikel ini, kami hanya akan mempertimbangkan antarmuka yang relevan saat ini.



Kecepatan transfer data melalui antarmuka SATA mencapai 560 MB / s, yang lebih dari cukup untuk disk HDD, yang kinerjanya bervariasi dari 90 hingga 235 MB / s (ada beberapa prototipe, yang kecepatannya mencapai 480 MB / s ). Tetapi ini tidak cukup untuk drive SSD, sekarang kinerjanya mencapai 3000 hingga 3500 MB / s. Antarmuka SAS juga tidak akan berfungsi, kecepatan maksimumnya hanya 1200 MB / s.



Untuk mewujudkan potensi penuh dari solid state drive, para pemikir hebat telah memutuskan untuk menggunakan antarmuka PCIe . Sekarang Anda dapat mentransfer data dengan kecepatan dari 8 hingga 32 GB / s. Untuk menyatukan koneksi SSD ke antarmuka PCIe, spesifikasi NVMe dikembangkan. Dengan cara yang sama seperti spesifikasi untuk menghubungkan USB-Flash-drive dibuat pada waktunya.



Kami tidak akan membongkar NVMe sepenuhnya. Pada artikel ini, saya ingin berbagi dengan Anda fitur yang sangat menarik minat saya - NVMe Namespaces , atau Namespaces .



Semoga ada diantara pembaca yang tertarik untuk mendalami teknologi ini. Komentar pengguna berpengalaman akan diterima. Dan jika Anda, seperti saya, baru mulai memahami topiknya, saya sarankan Anda membaca rangkaian artikel tentang sejarah SSD. Pada suatu waktu, dia membantu saya memadatkan dan memilah banyak sampah di kepala saya.



Lebih dekat dengan NVMe



NVMe di Linux



Saya akan mulai dari jauh. Untuk mempelajari dan mencari informasi tentang namespace, saya diminta oleh pertanyaan: "Mengapa disk NVMe di Linux disebut seperti itu?"



Setiap orang terbiasa memberi label pada disk di Linux sebagai perangkat blokir. Mereka adalah deskriptor file yang menyediakan antarmuka untuk berinteraksi dengan perangkat fisik atau virtual. Dan perangkat semacam itu tidak memiliki nama acak, tetapi cukup ketat yang berisi beberapa informasi. Mari kita lihat keluaran berikut dari devfs :



root@thinkpad-e14:~$ ls -l /dev/ | grep -E "nvme"
crw-------  1 root    root    241,   0  25 22:04 nvme0
brw-rw----  1 root    disk    259,   0  25 22:04 nvme0n1
brw-rw----  1 root    disk    259,   1  25 22:04 nvme0n1p1
brw-rw----  1 root    disk    259,   2  25 22:04 nvme0n1p2
brw-rw----  1 root    disk    259,   3  25 22:04 nvme0n1p3
      
      





Semua perangkat NVMe yang terhubung ke mesin produksi tercantum di sini. Pertimbangkan perangkat blok / dev / nvme0n1p1 . Bagian nvme , anehnya, digunakan untuk perangkat NVMe. Nomor berikut menunjukkan nomor seri pengontrol disk , yang bertanggung jawab untuk semua operasi yang dilakukan dengan drive. The p1 tertinggal menunjukkan jumlah partisi pada disk. Terakhir, bagian yang perlu kita perhatikan adalah n1. Ini adalah jumlah spasi.



Untuk kesederhanaan, Anda juga dapat menggambar beberapa analogi dengan SSD biasa:



/ dev / sda - analog dari / dev / nvme0n1

/ dev / sda1 - analog dari / dev / nvme0n1p1



Perhatikan perangkat / dev / nvme0. Ini adalah pengontrol NVMe. Ini adalah perangkat karakter. Jadi, kita bisa merujuknya dengan mengirimkan perintah tertentu, yang akan kita gunakan lebih lanjut.


Namespace vs Partisi



Anda mungkin bertanya-tanya: apa perbedaan namespace dari partisi? Mari jatuhkan semua fitur dan manfaat NVMe Namespace. Partisi adalah partisi disk tingkat host . Namespace adalah bagian level pengontrol . Artinya, Namespace adalah sejenis ruang logis tempat host bekerja seperti perangkat blok.



Tingkat partisi lainnya menambah fleksibilitas pada organisasi sistem penyimpanan, yang memungkinkan penggunaan berbagai teknologi yang bertujuan untuk meningkatkan keandalan, kinerja, dan keamanan data. Kami akan melihatnya nanti.



Parameter pengontrol NVMe



Semua operasi data ditangani oleh pengontrol NVMe khusus. Selain itu, dalam memorinya, ia menyimpan metadata tentang dirinya sendiri dan struktur internal informasi: nomor seri, model, semua jenis pengaturan disk, spasi yang ditetapkan untuknya, format data, dan sebagainya.

Saya mengusulkan untuk memeriksanya di bawah mikroskop. Untuk melakukan ini, saya mengirim perintah khusus ke pengontrol, sebagai tanggapan yang mengembalikan metadata. Saya akan menjelaskan cara melakukan ini nanti, tetapi untuk saat ini lihatlah. Karena ada banyak data, saya tidak memasukkannya seluruhnya, tetapi Anda harus tahu bahwa parameter yang akan saya bicarakan nanti sebenarnya ada :



{
  "vid" : 5197,
  "ssvid" : 5197,
  "sn" : "00000000000000",
  "mn" : "00000000000000000000000000",
  "fr" : "7L1QFXV7",
  "rab" : 2,
  "ieee" : 9528,
  "cmic" : 0,
  "mdts" : 9,
  "cntlid" : 5,
  "ver" : 66304,
  "rtd3r" : 100000,
  "rtd3e" : 8000000,
  "oaes" : 512,
  "ctratt" : 0,
  "rrls" : 0,
  "crdt1" : 0,
  "crdt2" : 0,
  "crdt3" : 0,
  "oacs" : 23,
  "tnvmcap" : 256060514304,
  "unvmcap" : 0,
  ...
}
      
      





Metadata disimpan dalam pengontrol sebagai urutan byte dalam urutan dari tinggi ke rendah, jadi selanjutnya saya akan mengikuti format perekaman berikut:

[interval dalam byte (format Big-Endian)] / nama parameter / dekripsi.



Contoh untuk pemahaman yang lebih baik. Catatan berikut berarti bahwa dari 71 hingga 64 byte nilai parameter fr disimpan , yang berarti revisi firmware :



[71:64] / fr / revisi firmware.

[23: 4] / sn / nomor seri. Berisi nomor seri pengontrol.

[63:24] / mn / nomor model. Berisi nomor model, atau nomor bagian.

[71:64] / fr / revisi firmware.Berisi nomor revisi firmware pengontrol.

[257: 256] / oacs / dukungan perintah admin opsional. Menunjukkan adanya perintah tambahan dan fungsi pengontrol. Ini terdiri dari 16 bit, yang masing-masing bertanggung jawab untuk perintah tertentu. Jika bitnya 1, maka pengontrol memungkinkan:



  • [15:10] - dicadangkan;
  • [9] - dapatkan status LBA;
  • [8] - dapatkan akses ke "Doorbell Buffer Config" ;
  • [7] - untuk mengelola virtualisasi ("Manajemen Virtualisasi") ;
  • [6] - gunakan perintah NVMe-Mi Recieve dan NVMe-Mi Send ("NVMe Management Interface" );
  • [5] - gunakan arahan ("Direktif") ;
  • [4] — («Self-Test Commands»);
  • [3] — («Namespace Management»);
  • [2] — ( «Firmware Commit» «Firmware Download»);
  • [1] — («NVM Format»);
  • [0] — («Security Send», «Security Receive»).


Pada artikel ini, kita hanya akan menyentuh fungsi-fungsi yang berhubungan dengan namespace, yaitu "Namespace Management" dan "NVM Format" . Jika Anda tertarik dengan detail tentang fitur lainnya, Anda dapat merujuk ke spesifikasi NVM Express Revision 1.4 .



Parameter ruang NVMe



Sekarang mari kita lihat metadata ruang NVMe:



{
  "nsze" : 500118192,
  "ncap" : 500118192,
  "nuse" : 233042000,
  "nsfeat" : 0,
  "nlbaf" : 0,
  "flbas" : 0,
  "mc" : 0,
  "dpc" : 0,
  "dps" : 0,
  "nmic" : 0,
  "rescap" : 0,
  ...
  ]
}
      
      





[7: 0] / nsze / ukuran namespace. Ini adalah jumlah maksimum ruang di blok logika. Dalam hal ini - 500118192 blok 512-byte, yang, omong-omong, ditunjukkan dalam output blockdev :



root@thinkpad-e14:~$ sudo blockdev --getsz /dev/nvme0n1
500118192
      
      





[15: 8] / ncap / kapasitas namespace . Ini adalah jumlah blok logis yang saat ini dialokasikan ke ruang penyimpanan.



[23:17] / nuse / penggunaan namespace. Ini adalah jumlah blok logika yang saat ini ditempati oleh data.



Perhatikan bahwa opsi nsze dan ncap sama. Apa gunanya menentukan volume dan volume maksimum yang saat ini dialokasikan? Apakah ini berarti bahwa saat ini mungkin terdapat lebih sedikit alokasi daripada yang tersedia? Iya!



Faktanya adalah bahwa namespace mendukung teknologi Thin Provisioning . ... Ini berarti bahwa hanya sebagian kecil dari volume tertentu yang dialokasikan ke ruang tersebut. Bagian lainnya akan tetap berada di kolam bersama dan dialokasikan ke ini atau ruang lain sesuai permintaan: saat volume yang dialokasikan sudah penuh atau saat ambang kritis tercapai. Secara umum, teknologi ini memungkinkan penggunaan sumber daya penyimpanan yang lebih efisien. Lebih detail dan lebih jelas dengan teknologi ini dapat ditemukan di artikel ini .



Dalam situasi kita nsze dan ncap sama, karena ruang diciptakan tanpa dukungan distribusi yang baik. Ruang seperti itu pada disk akan terlihat seperti ini:





ncap dan nsize akan menunjuk ke satu 一 jumlah total ruang . Dalam kasus menggunakan distribusi tipis pada disk, ruang akan terlihat seperti ini:





Di sini nsze menunjukkan volume maksimum, nca p - yang dialokasikan, dan nuse dalam kedua kasus hanya menunjukkan apa yang ditempati. Ketika nilai nuse mencapai ncap , ncap meningkat, tetapi tidak lebih dari nsze .



Perlu dicatat bahwa untuk mendukung teknologi ini, diperlukan konfigurasi namespace yang sesuai, serta dukungan untuk distribusi tipis dari sisi pengontrol.



[24:24] / nsfeat / fitur namespace.Parameter ini sangat menarik. Ini menunjukkan adanya fitur tambahan ruang. Ini terdiri dari 8 bit (mereka juga terdaftar di Big Endian), yang masing-masing bertanggung jawab untuk fungsi tertentu. Jika nilai bitnya 1, maka fungsinya aktif, 0 - bukan:



  • [7: 5] - dicadangkan;
  • [4: 4] - dukungan untuk bidang tambahan untuk mengoptimalkan I / O ;
  • [3: 3] - nonaktifkan penggunaan kembali bidang NGUID ;
  • [2: 2] - dukungan untuk blok yang dihapus dan tidak tertulis ("Atribut Konteks") ;
  • [1: 1] - dukungan untuk bidang tambahan untuk perekaman atom ("Operasi Atom") ;
  • [0: 0] - dukungan untuk distribusi tipis .


[26:26] / flbas / ukuran lba diformat . Parameter ini menunjuk ke struktur LBA. Juga terdiri dari 8 bit:



  • [7: 5] - dicadangkan;
  • [4: 4] - jika disetel ke 1: menunjukkan bahwa metadata akan disimpan di akhir blok; dengan nilai 0: metadata ditransfer dalam buffer terpisah ;
  • [3: 0] - memungkinkan Anda memilih salah satu dari 16 kemungkinan format LBA.




[29:29] / dps / end-to-end tipe perlindungan data . Menunjukkan jenis perlindungan data ujung ke ujung. Terdiri dari 8 bit:



  • [7: 4 ] - dicadangkan;
  • [3: 3] - menunjukkan jenis transfer metadata;
  • [2: 0] - menunjukkan adanya perlindungan data dan tipenya.


[30:30] / nmic / namespace multi-path dan Kemampuan Berbagi Namespace . Bidang ini menunjukkan dukungan untuk fitur yang terkait dengan multi-akses ke ruang nama:



  • [7: 1] - dicadangkan;
  • [0: 0] - nilai 1 menunjukkan bahwa ruang ini publik (ruang nama publik) dan dapat berkomunikasi dengan beberapa pengontrol , dan nilai 0 menunjukkan bahwa ruang tersebut bersifat pribadi (ruang nama pribadi) dan hanya terikat ke satu .


Ini menyimpulkan tinjauan singkat Anda tentang parameter. Jumlah mereka sangat besar, yang memungkinkan Anda mengonfigurasi namespace dengan sangat baik untuk berbagai tugas, yang akan kami pertimbangkan di akhir artikel. Penjelasan mendetail dari setiap parameter dapat ditemukan di spesifikasi NVM Express Revision 1.4 .



Ruang publik dan pribadi



Artikel tersebut telah menyebutkan istilah-istilah seperti ruang publik dan ruang privat . Tetapi saya tidak menjelaskan artinya, jadi saya menganggap perlu mencurahkan sedikit waktu untuk mereka.



Salah satu langkah dalam membuat ruang adalah menetapkannya ke pengontrol NVMe. Akses ke ruang akan dilakukan melalui pengontrol yang ditetapkan. Tetapi ruang dapat ditetapkan tidak hanya untuk satu pengontrol - pribadi, tetapi juga untuk beberapa pengontrol - publik.



Jika ruang pribadi dapat disebut biasa, karena tidak ada hal menarik yang dapat dibuat darinya, maka ruang publik memungkinkan Anda untuk menggunakan peluang seperti namespace multi-jalur...



Interoperabilitas dengan NVMe



Mari kita turun ke masalah berinteraksi dengan perangkat NVMe: cara mengirim berbagai perintah ke pengontrol, membuat ruang nama, memformatnya, dll. Untuk ini, ada utilitas di dunia Linux - nvme-cli. Dengan bantuannya, Anda dapat melakukan operasi ini.



daftar nvme



Untuk membuat daftar perangkat NVMe, Anda tidak perlu mengakses devfs dengan cara ini:



root@thinkpad-e14:~$ ls /dev/ | grep "nvme"
nvme0
nvme0n1
nvme0n1p1
nvme0n1p2
nvme0n1p3
      
      





Atau gunakan lspci untuk mencari tahu apa yang terhubung ke mesin:



root@thinkpad-e14:~$ lspci | grep -E "NVMe|Non-Volatile"
07:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd Device a809
      
      





Cukup menggunakan perintah daftar nvme :



root@thinkpad-e14:~$ nvme list -o json
{
  "Devices" : [
    {
      "NameSpace" : 1,
      "DevicePath" : "/dev/nvme0n1",
      "Firmware" : "9L1QFXV7",
      "Index" : 0,
      "ModelNumber" : "SAMSUNG MZALQ256HAJD-000L1",
      "ProductName" : "Non-Volatile memory controller: Samsung Electronics Co Ltd Device 0xa809",
      "SerialNumber" : "00000000000000",
      "UsedBytes" : 38470483968,
      "MaximumLBA" : 500118192,
      "PhysicalSize" : 256060514304,
      "SectorSize" : 512
    }
  ]
}
      
      





Saya telah mengeluarkan informasi dalam format JSON sebagai contoh . Seperti yang Anda lihat, tidak hanya daftar perangkat yang ditampilkan di sini, tetapi juga berbagai informasi tentangnya. Saya pikir beberapa atribut (misalnya, DevicePath atau ModelNumbe r) tidak memerlukan komentar, jadi saya hanya memperhatikan beberapa:



  • Indeks - nomor pengontrol;
  • UsedBytes Jumlah ruang yang digunakan dalam byte.
  • PhysicalSize - jumlah maksimum ruang dalam byte;
  • SectorSize - LBA atau format blok logis - blok data beralamat terkecil;
  • MaximumLBA adalah jumlah maksimum blok logika.


nvme id-ctrl, nvme id-ns



Di awal artikel, untuk mendapatkan metadata tentang perangkat, saya mengirim perintah Identify ke controller . Untuk ini, saya menggunakan perintah nvme id-ctrl untuk mengidentifikasi pengontrol:



root@thinkpad-e14:~$ nvme id-ctrl /dev/nvme0
      
      





Dan nvme id-ns untuk mengidentifikasi ruang:

root@thinkpad-e14:~$ nvme id-ns /dev/nvme0n1
      
      





Perhatikan bahwa Anda perlu menentukan perangkat - pengontrol atau namespace.



nvme create-ns, nvme delete-ns



Namespaces dibuat dalam beberapa tahap. Pertama, Anda perlu membentuknya. Untuk melakukan ini, gunakan perintah nvme create-ns :



root@thinkpad-e14:~$ nvme create-ns /dev/nvme0 --nsze 1875385008 --ncap 1875385008 --flbas 0 --nmic 1 --dps 0
create-ns: Success, created nsid:1
      
      





Anda sudah terbiasa dengan argumen yang diberikan untuk perintah ini. Kami memeriksanya di bagian "Pengaturan Ruang NVMe".



Untuk menghapus spasi, gunakan perintah nvme delete-ns :



root@thinkpad-e14:~$ nvme delete-ns /dev/nvme0n1          
delete-ns: Success, deleted nsid:1
      
      





nvme attach-ns, nvme detach-ns



Tahap kedua dalam membuat ruang NVMe adalah mengikat ruang yang dihasilkan ke pengontrol. Untuk melakukan ini, gunakan perintah nvme attach-ns :



root@thinkpad-e14:~$ nvme attach-ns /dev/nvme0 --namespace-id 1 --controllers 1
attach-ns: Success, nsid:1
      
      





Dengan perintah ini, kami mengikat spasi dengan pengenal 1 ke controller / dev / nvme0 . Perhatikan juga argumen --controllers . Ini mencantumkan ID pengontrol NVMe tempat ruang dapat dipetakan. Argumen ini opsional dan digunakan saat membuat ruang publik.



Untuk beberapa alasan, penomoran pengontrol dimulai dari 1, yaitu, pengontrol / dev / nvme0 memiliki pengenal 1, yang ditentukan dalam argumen --controllers. Semoga ini akan membantu Anda menghindari membuang-buang waktu untuk meneliti kesalahan berikut:



root@thinkpad-e14:~$ nvme attach-ns /dev/nvme0 --namespace-id 1 --controllers 0                            
NVMe Status:CONTROLLER_LIST_INVALID: The controller list provided is invalid(211c)
      
      





Untuk melepaskan ruang, gunakan perintah nvme detach-ns :



root@thinkpad-e14:~$ nvme detach-ns /dev/nvme0n1 --namespace-id 1 --controllers 1
detach-ns: Success, nsid:1
      
      





Spasi kemudian menghilang dari daftar blokir perangkat dan menjadi tidak dapat digunakan. Anda juga perlu menentukan hanya pengontrol yang ingin Anda pisahkan spasi dalam argumen --controllers.



nvme reset



Setelah suatu ruang diikat ke pengontrol, biasanya ia dapat digunakan untuk bekerja. Namun, kebetulan pengontrol tidak dapat melihat ruang. Dalam hal ini, itu harus direstart - gunakan perintah nvme reset .



format nvme



Jika perlu mengubah format LBA untuk suatu spasi, perintah format nvme datang untuk menyelamatkan :



root@thinkpad-e14:~$ nvme format /dev/nvme0n1 --lbaf 0
Success formatting namespace:1
      
      





Argumen --lbaf menunjukkan format LBA.



Namun, perintah ini juga dapat digunakan untuk menghapus data dengan aman di drive NVMe:



root@thinkpad-e14:~$ nvme format /dev/nvme0n1 --ses 1 -r
Success formatting namespace:1
      
      





Argumen --ses menunjukkan tingkat grout:



  • 1 - hapus semua data;
  • 2 - hapus data terenkripsi.


Argumen -r menunjukkan bahwa pengontrol akan memulai ulang setelah grout yang aman.



Aplikasi



Ada banyak kemungkinan penggunaan ruang. Mereka terutama digunakan untuk meningkatkan kinerja, redundansi, dan digunakan dalam sistem penyimpanan, tetapi ada lebih banyak kasus penggunaan biasa.



Spare Area



Mari kita mulai dengan praktik penggunaan yang cukup umum. Spare Area, atau Reserve Area, ditemukan bahkan sebelum NVMe. Ini adalah ruang khusus pada SSD yang digunakan oleh pengontrol itu sendiri untuk operasi internal dan tidak tersedia untuk host.



Dengan mengubah ukuran ruang, kita juga dapat mengubah ukuran area fallback. Faktanya adalah bahwa seluruh volume disk sama dengan jumlah volume semua ruang dan volume area cadangan:





Oleh karena itu, jika kita mengurangi total volume ruang, maka volume yang tersisa akan digunakan untuk ruang yang tersisa.



Jika Anda ingin mengetahui lebih banyak tentang area backup, Anda dapat merujuk ke artikel ini .



Enkripsi dan isolasi





Drive NVMe mendukung OPAL SED . Selain itu, kunci enkripsi yang berbeda digunakan untuk setiap namespace.



Pengontrol juga menyediakan perlindungan tulis. Ada tiga tingkatan:



  • read-only hingga reboot berikutnya;
  • read-only hingga boot ulang berikutnya setelah menonaktifkan fungsi proteksi tulis;
  • hanya baca di seluruh karya.




Ini sering digunakan di PC stasioner dan seluler. Misalnya, bootloader dapat ditempatkan di ruang hanya-baca untuk menghindari kerusakan. Data penting lainnya dapat dilindungi dengan cara yang sama.



Banyak Penggunaan



Seperti disebutkan sebelumnya, spasi adalah partisi tingkat pengontrol yang terlihat oleh host akhir sebagai perangkat terpisah. Apakah mungkin membagi drive NVMe besar menjadi beberapa ruang pribadi, yang masing-masing dialokasikan ke host yang berbeda? Bisa! Dan menggunakan protokol jaringan NVMe-oF (NVMe Over Fabrics) , ruang ini dapat dialokasikan tidak hanya untuk host virtual, tetapi juga untuk host fisik.



Dengan penggunaan drive ini, skema partisi akan terlihat seperti ini:





Pengontrol NVMe akan memastikan bahwa ruang diisolasi satu sama lain: data akan disimpan di area terpisah dari drive, setiap host akan memiliki antrean I / O sendiri. Namun, area cadangan , atau area cadangan , tetap akan dibagikan.



Namespace Multi-path dan Namespace Sharing



Namespace Sharing, atau Public Namespaces, berarti satu atau lebih host dapat berbagi ruang melalui dua atau lebih pengontrol.





Untuk apa ini? Gambar tersebut menunjukkan diagram penggunaan ruang publik. Ya, menarik: kita dapat mengakses ruang NS B melalui NVMe Controller 1 dan NVMe Controller 2. Tetapi saya tidak melihat ada kegunaan dalam hal ini ... sampai diagramnya terlihat seperti ini:





Di sini kita melihat bahwa pengontrol berada pada host yang sama sekali berbeda dan kita memiliki beberapa jalur independen ke data: melalui pengontrol host Host A (pengontrol biru) dan Host B (pengontrol ungu). Sekarang ini dapat digunakan untuk redundansi atau untuk meningkatkan kinerja: jika jalur biru penuh, maka kita akan menggunakan jalur ungu.



Pendekatan ini memungkinkan Anda untuk mengatur sistem penyimpanan yang ditentukan perangkat lunak fleksibel berkinerja tinggi dan sangat andal dari platform server konvensional menggunakan NVMe-oF.



Hasil



NVMe Namespaces bukan hanya mekanisme yang berharga, bukan hanya partisi logis dari sebuah disk. Ini adalah teknologi yang sangat menarik dan penting yang memungkinkan Anda membangun solusi infrastruktur yang nyaman untuk penyimpanan data. Peluang untuk redundansi, enkripsi, dan meningkatkan masa pakai disk memungkinkan pemeliharaan operasi yang stabil dari layanan yang sangat dimuat.



Pada artikel ini, kami belum membahas semua aspek dan seluk-beluk penggunaan namespace. Ternyata, lebih tepatnya, ulasan atau kenalan. Namun, saya harap ini membantu Anda untuk memulai dengan studi teknologi yang lebih dalam jika Anda mau.



Kata Penutup



Saat menulis artikel ini saya dihadapkan pada sejumlah masalah popabolyu , yang mencegah saya menyelesaikan pekerjaan. Berhati-hatilah saat memilih drive untuk menguji berbagai kemampuan NVMe. Ini bukan pertama kalinya saya berhasil menyelesaikan masalah dan menemukan disk yang minimal memenuhi persyaratan saya. Dan produsen disc enggan membagikan informasi tersebut, dan beberapa bahkan menyesatkan, jadi kami harus bertindak secara acak. Secara khusus, saya mengalami masalah seperti ini:



  • Drive Samsung 970 EVO / 970 EVO Plus dengan firmware 2b2qexe7 / 2b2qexm7 tidak menerapkan perintah reset dan format;
  • Drive Samsung 970 EVO / 970 EVO Plus dengan firmware 2b2qexe7 / 2b2qexm7 tidak menerapkan manajemen ruang menggunakan perintah create-ns, delete-ns, detach-ns, atach-ns;
  • Drive Samsung PM991 dengan firmware 9L1QFXV7 memiliki bug yang menyebabkan memulai ulang pengontrol menggunakan perintah reset menyebabkan kesalahan;
  • Drive Samsung PM991 dengan firmware 9L1QFXV7 memiliki bug yang menyebabkan pemformatan ruang menggunakan perintah format menyebabkan kesalahan;
  • Drive Samsung PM991 dengan firmware 9L1QFXV7 tidak menerapkan manajemen ruang menggunakan perintah create-ns, delete-ns, detach-ns, atach-ns.


Saya yakin bahwa disk dari segmen korporat bebas dari masalah ini, tetapi tidak semua orang mampu membeli perangkat keras seperti itu, jadi pelajari disk dan manualnya secara mendetail saat membeli. Dan jika ada kesempatan untuk memeriksa disk sebelum membeli dan melihat parameter pengontrol NVMe, pastikan untuk menggunakannya.



Sumber Bermanfaat



  1. SSD: perangkat, komponen, dan prinsip operasi
  2. Tur Cepat NVM Express
  3. Spesifikasi NVMe 1.4
  4. NVMe Namespaces
  5. Base NVM Express — Part One
  6. NVMe Command Line Interface (NVMe-CLI)
  7. NVMe Over Fabrics





All Articles