NVMe'deki RAID dizileri

NVMe'deki RAID dizileri
Bu yazıda RAID dizilerini düzenlemenin farklı yollarından bahsedeceğiz ve aynı zamanda NVMe desteğine sahip ilk donanımsal RAID denetleyicilerinden birini göstereceğiz.

RAID teknolojisinin tüm uygulamaları sunucu segmentinde bulunur. İstemci segmentinde, çoğunlukla yalnızca iki diskteki RAID0 veya RAID1 yazılımı kullanılır.

Bu makalede, RAID teknolojisine kısa bir genel bakış, üç farklı araç kullanılarak RAID dizilerinin nasıl oluşturulacağına ilişkin kısa bir eğitim ve her yöntemin kullanıldığı sanal disk performansının bir karşılaştırması sunulacaktır.

RAID nedir?

Vikipedi RAID teknolojisinin kapsamlı bir tanımını verir:

RAID (İngilizce Yedekli Bağımsız Diskler Dizisi - yedekli bağımsız (bağımsız) disk dizisi) - hata toleransını ve performansı artırmak için çeşitli fiziksel disk aygıtlarını mantıksal bir modülde birleştirmek için veri sanallaştırma teknolojisi.

Disk dizilerinin yapılandırması ve kullanılan teknolojiler, seçilen RAID düzeyi. RAID seviyeleri spesifikasyonda standartlaştırılmıştır Ortak RAID Disk Veri Formatı. Pek çok RAID düzeyini açıklar ancak en yaygın olanları RAID0, RAID1, RAID5 ve RAID6'dır.

RAID0, veya Stripes, iki veya daha fazla fiziksel sürücüyü tek bir mantıksal sürücüde birleştiren bir RAID düzeyidir. Mantıksal diskin hacmi, dizide bulunan fiziksel disklerin hacimlerinin toplamına eşittir. Bu RAID düzeyinde artıklık yoktur ve bir sürücünün arızalanması, sanal diskteki tüm verilerin kaybolmasıyla sonuçlanabilir.

Seviye RAID1, veya Ayna, iki veya daha fazla diskte verilerin aynı kopyalarını oluşturur. Sanal diskin boyutu, fiziksel disklerin minimum boyutunu aşmıyor. RAID1 sanal diskindeki veriler, dizideki en az bir fiziksel disk çalışır durumda olduğu sürece mevcut olacaktır. RAID1'in kullanılması yedeklilik sağlar ancak iki veya daha fazla diskten oluşan dizilerde yalnızca bir diskin kapasitesi mevcut olduğundan oldukça pahalı bir çözümdür.

Seviye RAID5 Yüksek maliyet sorununu çözer. RAID5 düzeyinde bir dizi oluşturmak için en az 3 diske ihtiyacınız vardır ve dizi, bir diskin arızalanmasına karşı dayanıklıdır. RAID5'teki veriler sağlama toplamlı bloklar halinde depolanır. Veri diskleri ve sağlama toplamı diskleri arasında kesin bir ayrım yoktur. RAID5'teki sağlama toplamları, her biri farklı bir diskten alınan N-1 bloklara uygulanan XOR işleminin sonucudur.

RAID dizileri yedekliliği artırıp yedeklilik sağlasa da yedeklerin saklanması için uygun değildir.

RAID dizilerinin türlerine kısa bir gezinin ardından disk dizilerini birleştirip kullanmanızı sağlayan cihaz ve programlara geçebilirsiniz.

RAID denetleyici türleri

RAID dizilerini oluşturmanın ve kullanmanın iki yolu vardır: donanım ve yazılım. Aşağıdaki çözümleri dikkate alacağız:

  • Linux Yazılımı RAID'i.
  • CPU'da Intel® Sanal RAID.
  • LSI MegaRAID 9460-8i.

Intel® çözümünün bir yonga seti üzerinde çalıştığını ve bunun donanım mı yoksa yazılım çözümü mü olduğu sorusunu gündeme getirdiğini unutmayın. Örneğin, VMWare ESXi hipervizörü VROC yazılımını dikkate alır ve onu resmi olarak desteklemez.

Linux Yazılımı RAID'i

Linux işletim sistemi ailesindeki yazılım RAID dizileri, hem istemci hem de sunucu segmentlerinde oldukça yaygın bir çözümdür. Bir dizi oluşturmak için ihtiyacınız olan tek şey mdadm yardımcı programı ve birkaç blok aygıtıdır. Linux Yazılımı RAID'in kullandığı sürücülere yüklediği tek gereksinim, sistem tarafından erişilebilen bir blok cihaz olmasıdır.

Ekipman ve yazılım maliyetlerinin olmaması bu yöntemin bariz bir avantajıdır. Linux Yazılımı RAID, disk dizilerini CPU zamanı pahasına düzenler. Desteklenen RAID düzeylerinin listesi ve geçerli disk dizilerinin durumu, procfs kökünde bulunan mdstat dosyasında görüntülenebilir:

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

RAID düzeylerine yönelik destek, uygun çekirdek modülünün bağlanmasıyla eklenir, örneğin:

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

Disk dizileriyle yapılan tüm işlemler mdadm komut satırı yardımcı programı aracılığıyla gerçekleştirilir. Disk dizisi tek bir komutla birleştirilir:

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

Bu komutu çalıştırdıktan sonra sistemde sizi sanal disk olarak temsil eden /dev/md0 blok aygıtı görünecektir.

CPU'da Intel® Sanal RAID

NVMe'deki RAID dizileriIntel® VROC Standart Donanım Anahtarı
Intel® Virtual RAID On CPU (VROC), Intel® yonga setlerini temel alan RAID dizileri oluşturmaya yönelik bir donanım ve yazılım teknolojisidir. Bu teknoloji öncelikle Intel® Xeon® Ölçeklenebilir işlemcileri destekleyen anakartlar için mevcuttur. Varsayılan olarak VROC mevcut değildir. Etkinleştirmek için bir VROC donanım lisans anahtarı yüklemeniz gerekir.

Standart VROC lisansı, 0, 1 ve 10 RAID düzeylerine sahip disk dizileri oluşturmanıza olanak tanır. Premium sürüm bu listeyi RAID5 desteğiyle genişletir.

Modern anakartlardaki Intel® VROC teknolojisi, NVMe sürücüleri için çalışırken değiştirme özelliği sağlayan Intel® Volume Management Device (VMD) ile birlikte çalışır.

NVMe'deki RAID dizileriIntel® VROC Standart Lisansı Diziler, sunucu önyüklendiğinde Kurulum Yardımcı Programı aracılığıyla yapılandırılır. Sekmede gelişmiş Disk dizilerini yapılandırabileceğiniz Intel® Virtual RAID on CPU öğesi görünür.

NVMe'deki RAID dizileriİki sürücüde RAID1 dizisi oluşturma
Intel® VROC teknolojisinin kendi kozları var. VROC kullanılarak oluşturulan disk dizileri Linux Yazılımı RAID ile uyumludur. Bu, dizilerin durumunun /proc/mdstat'ta izlenebileceği ve mdadm aracılığıyla yönetilebileceği anlamına gelir. Bu "özellik" resmi olarak Intel tarafından desteklenmektedir. RAID1'i Kurulum Yardımcı Programı'nda birleştirdikten sonra, işletim sistemindeki sürücülerin senkronizasyonunu gözlemleyebilirsiniz:

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>

Mdadm kullanarak VROC üzerinde dizileri birleştiremeyeceğinizi unutmayın (birleştirilmiş diziler Linux SW RAID olacaktır), ancak bunların içindeki diskleri değiştirebilir ve dizileri parçalara ayırabilirsiniz.

LSI MegaRAID 9460-8i

NVMe'deki RAID dizileriLSI MegaRAID 9460-8i denetleyicisinin görünümü
RAID denetleyicisi bağımsız bir donanım çözümüdür. Denetleyici yalnızca kendisine doğrudan bağlı sürücülerle çalışır. Bu RAID denetleyicisi 24 adede kadar NVMe sürücüyü destekler. Bu denetleyiciyi diğerlerinden ayıran şey NVMe desteğidir.

NVMe'deki RAID dizileriDonanım denetleyicisinin ana menüsü
UEFI modunu kullanırken denetleyici ayarları Kurulum Yardımcı Programına entegre edilir. VROC ile karşılaştırıldığında donanım denetleyici menüsü çok daha karmaşık görünüyor.

NVMe'deki RAID dizileriİki diskte RAID1 oluşturma
Bir donanım denetleyicisindeki disk dizilerinin nasıl yapılandırılacağını açıklamak oldukça hassas bir konudur ve tam teşekküllü bir makalenin nedeni olabilir. Burada kendimizi yalnızca varsayılan ayarlarla RAID0 ve RAID1 oluşturmakla sınırlayacağız.

Donanım denetleyicisine bağlı diskler işletim sistemi tarafından görülmez. Bunun yerine denetleyici, tüm RAID dizilerini SAS sürücüleri olarak "maskeler". Denetleyiciye bağlı olan ancak disk dizisinin bir parçası olmayan sürücülere işletim sistemi tarafından erişilmeyecektir.

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.

NVMe dizileri, SAS sürücüleri gibi görünmelerine rağmen PCIe hızlarında çalışacaktır. Ancak bu özellik Eski sürümde NVMe'den önyükleme yapmanıza olanak tanır.

deneme standı

Disk dizilerini düzenlemeye yönelik her yöntemin kendi fiziksel artıları ve eksileri vardır. Ancak disk dizileriyle çalışırken performans farkı var mı?

Maksimum adaleti sağlamak için tüm testler aynı sunucuda gerçekleştirilecektir. Yapılandırması:

  • 2x Intel® Xeon® 6240;
  • 12x DDR4-2666 16 GB;
  • LSI MegaRAID 9460-8i;
  • Intel® VROC Standart Donanım Anahtarı;
  • 4x Intel® SSD DC P4510 U.2 2 TB;
  • 1x Samsung 970 EVO Plus M.2 500GB.

Test birimleri P4510 olup, bir yarısı anakarta, diğer yarısı da RAID denetleyicisine bağlıdır. M.2, Ubuntu 20.04'ü çalıştırıyor ve testler fio 3.16 sürümü kullanılarak yürütülecek.

Test

Öncelikle diskle çalışırken gecikmeleri kontrol edelim. Test tek bir iş parçacığında gerçekleştirilir, blok boyutu 4 KB'dir. Her test 5 dakika sürer. Başlamadan önce, ilgili blok cihazı G/Ç zamanlayıcısı olarak hiçbiri olarak ayarlanmamıştır. Fio komutu şuna benzer:

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

Fio sonuçlarından clat'ı %99.00 olarak alıyoruz. Sonuçlar aşağıdaki tabloda gösterilmiştir.

Rastgele okuma, μs
Rastgele kayıt, μs

disk
112
78

Linux Yazılımı RAID, RAID0
113
45

VROC, RAID0
112
46

LSI, RAID0
122
63

Linux Yazılımı RAID, RAID1
113
48

VROC, RAID1
113
45

LSI, RAID1
128
89

Verilere erişimdeki gecikmelerin yanı sıra sanal sürücülerin performansını da görmek ve bunları fiziksel diskin performansıyla karşılaştırmak istiyorum. Fio'yu çalıştırma komutu:

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

Performans, G/Ç işlemleri açısından ölçülür. Sonuçlar aşağıdaki tabloda sunulmaktadır.

Rastgele 1 ileti dizisini okuyun, IOPS
Rastgele 1 iş parçacığı yazın, IOPS
Rastgele okuma 128 ileti dizisi, IOPS
Rastgele yazma 128 iş parçacığı, IOPS

disk
11300
40700
453000
105000

Linux Yazılımı RAID, RAID0
11200
52000
429000
232000

VROC, RAID0
11200
52300
441000
162000

LSI, RAID0
10900
44200
311000
160000

Linux Yazılımı RAID, RAID1
10000
48600
395000
147000

VROC, RAID1
10000
54400
378000
244000

LSI, RAID1
11000
34300
229000
248000

Donanım denetleyicisi kullanmanın, yazılım çözümleriyle karşılaştırıldığında gecikmenin artmasına ve performansta düşüşe yol açtığını görmek kolaydır.

Sonuç

İki diskten disk dizileri oluşturmak için donanım çözümlerini kullanmak mantıksız görünüyor. Ancak RAID denetleyicilerinin kullanımının haklı olduğu görevler vardır. NVMe arayüzünü destekleyen denetleyicilerin ortaya çıkmasıyla birlikte kullanıcılar projelerinde daha hızlı SSD'ler kullanma fırsatına sahip oluyor.

NVMe'deki RAID dizileri

Ankete sadece kayıtlı kullanıcılar katılabilir. Giriş yapLütfen.

RAID çözümleri kullanıyor musunuz?

  • %29,6Evet, donanım çözümleri32

  • %50,0Evet, yazılım çözümleri54

  • %16,7hayır18

  • %3,7RAID gerekmez4

108 kullanıcı oy kullandı. 14 kişi çekimser kaldı.

Kaynak: habr.com

Yorum ekle