Array RAID di NVMe

Array RAID di NVMe
Pada artikel ini kita akan membahas berbagai cara untuk mengatur array RAID, dan juga menunjukkan salah satu pengontrol RAID perangkat keras pertama dengan dukungan NVMe.

Seluruh variasi aplikasi teknologi RAID terdapat di segmen server. Di segmen klien, hanya perangkat lunak RAID0 atau RAID1 pada dua disk yang paling sering digunakan.

Artikel ini akan memberikan gambaran singkat tentang teknologi RAID, tutorial singkat tentang cara membuat array RAID menggunakan tiga alat berbeda, dan perbandingan kinerja disk virtual menggunakan masing-masing metode.

Apa itu RAID?

Wikipedia memberikan definisi komprehensif tentang teknologi RAID:

RAID (Bahasa Inggris Array Redundan dari Disk Independen - susunan disk independen (independen) yang berlebihan) - teknologi virtualisasi data untuk menggabungkan beberapa perangkat disk fisik ke dalam modul logis untuk meningkatkan toleransi kesalahan dan kinerja.

Konfigurasi array disk dan teknologi yang digunakan bergantung pada yang dipilih tingkat serangan. Level RAID distandarisasi dalam spesifikasi Format Data Disk RAID Umum. Ini menjelaskan banyak level RAID, tetapi yang paling umum adalah RAID0, RAID1, RAID5, dan RAID6.

RAID0Atau Stripes, adalah tingkat RAID yang menggabungkan dua atau lebih drive fisik menjadi satu drive logis. Volume disk logis sama dengan jumlah volume disk fisik yang termasuk dalam array. Tidak ada redundansi pada tingkat RAID ini, dan kegagalan satu drive dapat mengakibatkan hilangnya semua data di disk virtual.

Уровень RAID1Atau Cermin, membuat salinan data yang identik pada dua disk atau lebih. Ukuran disk virtual tidak melebihi ukuran minimum disk fisik. Data pada disk virtual RAID1 akan tersedia selama setidaknya satu disk fisik dari array masih beroperasi. Menggunakan RAID1 menambah redundansi, tetapi merupakan solusi yang agak mahal, karena dalam array yang terdiri dari dua disk atau lebih, kapasitas hanya tersedia satu.

Уровень RAID5 memecahkan masalah biaya tinggi. Untuk membuat array dengan level RAID5, Anda memerlukan setidaknya 3 disk, dan array tersebut tahan terhadap kegagalan satu disk. Data di RAID5 disimpan dalam blok dengan checksum. Tidak ada pembagian tegas antara disk data dan disk checksum. Checksum di RAID5 adalah hasil operasi XOR yang diterapkan pada blok N-1, masing-masing diambil dari disk berbeda.

Meskipun susunan RAID meningkatkan redundansi dan memberikan redundansi, susunan RAID tidak cocok untuk menyimpan cadangan.

Setelah penjelasan singkat tentang jenis-jenis array RAID, Anda dapat beralih ke perangkat dan program yang memungkinkan Anda merakit dan menggunakan array disk.

Jenis pengontrol RAID

Ada dua cara untuk membuat dan menggunakan array RAID: perangkat keras dan perangkat lunak. Kami akan mempertimbangkan solusi berikut:

  • RAID Perangkat Lunak Linux.
  • Intel® Virtual RAID Pada CPU.
  • LSI MegaRAID 9460-8i.

Perhatikan bahwa solusi Intel® berjalan pada chipset, sehingga menimbulkan pertanyaan apakah solusi tersebut merupakan solusi perangkat keras atau perangkat lunak. Misalnya, hypervisor VMWare ESXi mempertimbangkan perangkat lunak VROC dan tidak secara resmi mendukungnya.

RAID Perangkat Lunak Linux

Array RAID perangkat lunak dalam keluarga OS Linux adalah solusi yang cukup umum baik di segmen klien maupun server. Yang Anda perlukan untuk membuat array hanyalah utilitas mdadm dan beberapa perangkat blok. Satu-satunya persyaratan yang ditempatkan RAID Perangkat Lunak Linux pada drive yang digunakannya adalah menjadi perangkat blok yang dapat diakses oleh sistem.

Tidak adanya biaya untuk peralatan dan perangkat lunak merupakan keuntungan nyata dari metode ini. RAID Perangkat Lunak Linux mengatur susunan disk dengan mengorbankan waktu CPU. Daftar level RAID yang didukung dan status array disk saat ini dapat dilihat di file mdstat, yang terletak di root procfs:

root@grindelwald:~# cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid10] 
unused devices: <none>

Dukungan untuk level RAID ditambahkan dengan menghubungkan modul kernel yang sesuai, misalnya:

root@grindelwald:~# modprobe raid456
root@grindelwald:~# cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] 
unused devices: <none>

Semua operasi dengan array disk dilakukan melalui utilitas baris perintah mdadm. Array disk dirangkai dalam satu perintah:

mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/nvme1n1 /dev/nvme2n1

Setelah menjalankan perintah ini, perangkat blok /dev/md0 akan muncul di sistem, yang mewakili Anda sebagai disk virtual.

Intel® Virtual RAID Pada CPU

Array RAID di NVMeKunci Perangkat Keras Standar Intel® VROC
Intel® Virtual RAID On CPU (VROC) adalah teknologi perangkat keras dan perangkat lunak untuk membuat susunan RAID berdasarkan chipset Intel®. Teknologi ini tersedia terutama untuk motherboard yang mendukung prosesor Intel® Xeon® yang Dapat Diskalakan. Secara default, VROC tidak tersedia. Untuk mengaktifkannya, Anda harus menginstal kunci lisensi perangkat keras VROC.

Lisensi VROC standar memungkinkan Anda membuat array disk dengan level RAID 0, 1, dan 10. Versi premium memperluas daftar ini dengan dukungan RAID5.

Teknologi Intel® VROC pada motherboard modern bekerja bersama dengan Intel® Volume Management Device (VMD), yang menyediakan kemampuan hot-swap untuk drive NVMe.

Array RAID di NVMeLisensi Standar Intel® VROC Array dikonfigurasikan melalui Setup Utility saat server melakukan booting. Di tab Advanced Item Intel® Virtual RAID pada CPU muncul, tempat Anda dapat mengonfigurasi array disk.

Array RAID di NVMeMembuat array RAID1 pada dua drive
Teknologi Intel® VROC memiliki keunggulan tersendiri. Array disk yang dibuat menggunakan VROC kompatibel dengan RAID Perangkat Lunak Linux. Ini berarti bahwa keadaan array dapat dipantau di /proc/mdstat dan dikelola melalui mdadm. "Fitur" ini secara resmi didukung oleh Intel. Setelah merakit RAID1 di Setup Utility, Anda dapat mengamati sinkronisasi drive di OS:

root@grindelwald:~# cat /proc/mdstat 
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md126 : active raid1 nvme2n1[1] nvme1n1[0]
      1855832064 blocks super external:/md127/0 [2/2] [UU]
      [>....................]  resync =  1.3% (24207232/1855832064) finish=148.2min speed=205933K/sec
      
md127 : inactive nvme1n1[1](S) nvme2n1[0](S)
      10402 blocks super external:imsm
       
unused devices: <none>

Perhatikan bahwa Anda tidak dapat merakit array di VROC menggunakan mdadm (array yang dirakit akan menjadi Linux SW RAID), tetapi Anda dapat mengubah disk di dalamnya dan membongkar array.

LSI MegaRAID 9460-8i

Array RAID di NVMePenampilan pengontrol LSI MegaRAID 9460-8i
Pengontrol RAID adalah solusi perangkat keras yang berdiri sendiri. Pengontrol hanya berfungsi dengan drive yang terhubung langsung dengannya. Pengontrol RAID ini mendukung hingga 24 drive NVMe. Dukungan NVMe-lah yang membedakan pengontrol ini dari pengontrol lainnya.

Array RAID di NVMeMenu utama pengontrol perangkat keras
Saat menggunakan mode UEFI, pengaturan pengontrol diintegrasikan ke dalam Setup Utility. Dibandingkan dengan VROC, menu pengontrol perangkat keras terlihat jauh lebih kompleks.

Array RAID di NVMeMembuat RAID1 pada dua disk
Menjelaskan cara mengkonfigurasi array disk pada pengontrol perangkat keras adalah topik yang agak rumit dan bisa menjadi alasan untuk artikel lengkap. Di sini kita hanya akan membatasi diri untuk membuat RAID0 dan RAID1 dengan pengaturan default.

Disk yang terhubung ke pengontrol perangkat keras tidak terlihat oleh sistem operasi. Sebaliknya, pengontrol “menutupi” semua array RAID sebagai drive SAS. Drive yang terhubung ke pengontrol, tetapi bukan bagian dari susunan disk, tidak akan dapat diakses oleh OS.

root@grindelwald:~# smartctl -i /dev/sda
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-48-generic] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Vendor:               AVAGO
Product:              MR9460-8i
Revision:             5.14
Compliance:           SPC-3
User Capacity:        1,999,844,147,200 bytes [1.99 TB]
Logical block size:   512 bytes
Rotation Rate:        Solid State Device
Logical Unit id:      0x000000000000000000000000000000
Serial number:        00000000000000000000000000000000
Device type:          disk
Local Time is:        Sun Oct 11 16:27:59 2020 MSK
SMART support is:     Unavailable - device lacks SMART capability.

Meskipun disamarkan sebagai drive SAS, rangkaian NVMe akan beroperasi pada kecepatan PCIe. Namun, fitur ini memungkinkan Anda melakukan booting dari NVMe di Legacy.

Tempat uji coba

Setiap metode pengorganisasian array disk memiliki kelebihan dan kekurangan fisiknya sendiri. Tetapi apakah ada perbedaan kinerja ketika bekerja dengan array disk?

Untuk mencapai keadilan maksimal, semua pengujian akan dilakukan di server yang sama. Konfigurasinya:

  • 2x Intel® Xeon® 6240;
  • 12x DDR4-2666 16GB;
  • LSI MegaRAID 9460-8i;
  • Kunci Perangkat Keras Standar Intel® VROC;
  • 4x Intel® SSD DC P4510 U.2 2 TB;
  • 1x Samsung 970 EVO Ditambah M.2 500GB.

Unit pengujiannya adalah P4510, separuhnya terhubung ke motherboard, dan separuh lainnya ke pengontrol RAID. M.2 menjalankan Ubuntu 20.04 dan pengujian akan dijalankan menggunakan fio versi 3.16.

Pengujian

Pertama-tama, mari kita periksa penundaan saat bekerja dengan disk. Pengujian dijalankan dalam satu thread, ukuran bloknya adalah 4 KB. Setiap tes berlangsung 5 menit. Sebelum memulai, perangkat blok terkait disetel ke none sebagai penjadwal I/O. Perintah fio terlihat seperti ini:

fio --name=test --blocksize=4k --direct=1 --buffered=0 --ioengine=libaio  --iodepth=1 --loops=1000 --runtime=300  --rw=<mode> --filename=<blkdev>

Dari hasil fio kita ambil clat 99.00%. Hasilnya ditunjukkan pada tabel di bawah ini.

Pembacaan acak, s
Rekaman acak, s

cakram
112
78

Linux SW RAID, RAID0
113
45

VROC, RAID0
112
46

LSI, RAID0
122
63

Linux SW RAID, RAID1
113
48

VROC, RAID1
113
45

LSI, RAID1
128
89

Selain penundaan saat mengakses data, saya ingin melihat kinerja drive virtual dan membandingkannya dengan kinerja disk fisik. Perintah untuk menjalankan fio:

fio --name=test --blocksize=4k --direct=1 --buffered=0 --ioengine=libaio  --loops=1000 --runtime=300  --iodepth=<threads> --rw=<mode> --filename=<blkdev>

Kinerja diukur dalam hal operasi I/O. Hasilnya disajikan pada tabel di bawah ini.

Baca acak 1 thread, IOPS
Tulis acak 1 thread, IOPS
Bacaan acak 128 thread, IOPS
Tulis acak 128 utas, IOPS

cakram
11300
40700
453000
105000

Linux SW RAID, RAID0
11200
52000
429000
232000

VROC, RAID0
11200
52300
441000
162000

LSI, RAID0
10900
44200
311000
160000

Linux SW RAID, RAID1
10000
48600
395000
147000

VROC, RAID1
10000
54400
378000
244000

LSI, RAID1
11000
34300
229000
248000

Sangat mudah untuk melihat bahwa penggunaan pengontrol perangkat keras menghasilkan peningkatan latensi dan kinerja yang lebih baik dibandingkan dengan solusi perangkat lunak.

Kesimpulan

Menggunakan solusi perangkat keras untuk membuat array disk dari dua disk terlihat tidak rasional. Namun, ada beberapa tugas yang memerlukan penggunaan pengontrol RAID. Dengan munculnya pengontrol yang mendukung antarmuka NVMe, pengguna memiliki kesempatan untuk menggunakan SSD yang lebih cepat dalam proyek mereka.

Array RAID di NVMe

Hanya pengguna terdaftar yang dapat berpartisipasi dalam survei. Masuk, silakan.

Apakah Anda menggunakan solusi RAID?

  • 29,6%Ya, solusi perangkat keras32

  • 50,0%Ya, solusi perangkat lunak54

  • 16,7%No18

  • 3,7%Tidak diperlukan RAID4

108 pengguna memilih. 14 pengguna abstain.

Sumber: www.habr.com

Tambah komentar