NVMe дээрх RAID массивууд

NVMe дээрх RAID массивууд
Энэ нийтлэлд бид RAID массивыг зохион байгуулах янз бүрийн аргуудын талаар ярихаас гадна NVMe дэмжлэгтэй анхны RAID хянагчуудын нэгийг харуулах болно.

RAID технологийн бүх төрлийн програмууд серверийн сегментээс олддог. Үйлчлүүлэгчийн сегментэд зөвхөн хоёр диск дээрх RAID0 эсвэл RAID1 програм хангамжийг ихэвчлэн ашигладаг.

Энэ нийтлэлд RAID технологийн товч тойм, гурван өөр хэрэглүүр ашиглан RAID массивыг хэрхэн үүсгэх тухай товч заавар, арга тус бүрийг ашиглан виртуал дискний гүйцэтгэлийг харьцуулах болно.

RAID гэж юу вэ?

Википедиа RAID технологийн цогц тодорхойлолтыг өгсөн:

RAID (Eng. Хараат бус дискний илүүдэл массив - бие даасан (бие даасан) дискүүдийн илүүдэл массив) - алдааг тэсвэрлэх чадвар, гүйцэтгэлийг нэмэгдүүлэхийн тулд хэд хэдэн физик дискний төхөөрөмжийг логик модуль болгон нэгтгэх өгөгдөл виртуалчлалын технологи.

Дискний массивын тохиргоо болон ашигласан технологи нь сонгосон зүйлээс хамаарна RAID түвшин. Тодорхойлолтод RAID түвшинг стандартчилсан болно Нийтлэг RAID дискний мэдээллийн формат. Энэ нь олон RAID түвшинг тодорхойлдог боловч хамгийн түгээмэл нь RAID0, RAID1, RAID5, RAID6 юм.

RAID0болон Stripes, нь хоёр ба түүнээс дээш физик дискийг нэг логик диск болгон нэгтгэдэг RAID түвшин юм. Логик дискний эзлэхүүн нь массив дахь физик дискүүдийн эзлэхүүний нийлбэртэй тэнцүү байна. Энэ RAID түвшинд илүүдэл байхгүй бөгөөд нэг дискний эвдрэл нь виртуал дискний бүх өгөгдөл алдагдахад хүргэдэг.

түвшин RAID1болон толин тусгал, хоёр ба түүнээс дээш дискэн дээрх өгөгдлийн ижил хуулбарыг үүсгэдэг. Виртуал дискний хэмжээ нь физик дискний хамгийн бага хэмжээнээс хэтрэхгүй байна. RAID1 виртуал диск дээрх өгөгдөл нь массиваас дор хаяж нэг физик диск ажиллаж байгаа үед бэлэн байх болно. RAID1-ийг ашиглах нь илүүдлийг нэмэгдүүлдэг боловч хоёр ба түүнээс дээш дискний массивуудад зөвхөн нэг дискний багтаамж байдаг тул нэлээд үнэтэй шийдэл юм.

түвшин RAID5 өндөр өртөгтэй асуудлыг шийддэг. RAID5 түвшний массив үүсгэхийн тулд танд дор хаяж 3 диск хэрэгтэй бөгөөд массив нь нэг дискний эвдрэлд тэсвэртэй байдаг. RAID5 дахь өгөгдөл нь хяналтын нийлбэр бүхий блокуудад хадгалагддаг. Өгөгдлийн диск болон шалгах нийлбэрийн дискний хооронд хатуу хуваагдал байхгүй. RAID5 дахь шалгах нийлбэр нь N-1 блокуудад хэрэглэгдсэн XOR үйлдлийн үр дүн бөгөөд тус бүрийг өөр дискнээс авсан.

Хэдийгээр RAID массив нь илүүдлийг нэмэгдүүлж, илүүдлийг хангадаг ч нөөцлөлтийг хадгалахад тохиромжгүй.

RAID массивын төрлүүдтэй товч танилцсаны дараа та дискний массивыг угсарч ашиглах боломжийг олгодог төхөөрөмж, програмууд руу шилжиж болно.

RAID хянагчийн төрлүүд

RAID массив үүсгэх, ашиглах хоёр арга байдаг: техник хангамж, програм хангамж. Бид дараах шийдлүүдийг авч үзэх болно.

  • Линукс програм хангамжийн RAID.
  • CPU дээр Intel® Virtual RAID.
  • LSI MegaRAID 9460-8i.

Intel® шийдэл нь чипсет дээр ажилладаг бөгөөд энэ нь техник хангамж эсвэл програм хангамжийн шийдэл үү гэсэн асуултыг төрүүлдэг гэдгийг анхаарна уу. Жишээлбэл, VMWare ESXi гипервизор нь VROC програм хангамж гэж үздэг бөгөөд албан ёсоор дэмждэггүй.

Линукс програм хангамжийн RAID

Линукс үйлдлийн систем дэх програм хангамжийн RAID массив нь үйлчлүүлэгч болон серверийн сегментүүдэд нэлээд түгээмэл шийдэл юм. Массив үүсгэхийн тулд танд хэрэгтэй зүйл бол mdadm хэрэгсэл болон цөөн хэдэн блок төхөөрөмж юм. Линукс Програм хангамжийн RAID-ийн ашигладаг хөтчүүдэд тавих цорын ганц шаардлага бол системд нэвтрэх боломжтой блок төхөөрөмж байх явдал юм.

Тоног төхөөрөмж, програм хангамжийн зардал байхгүй байгаа нь энэ аргын илт давуу тал юм. Линукс Програм хангамжийн RAID нь CPU-ийн цагийн зардлаар дискний массивуудыг зохион байгуулдаг. Дэмжигдсэн RAID түвшний жагсаалт болон одоогийн дискний массивуудын статусыг procfs root-д байрлах mdstat файлаас харж болно.

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

RAID түвшний дэмжлэгийг зохих цөмийн модулийг холбосноор нэмэгддэг, жишээлбэл:

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

Дискний массив бүхий бүх үйлдлийг mdadm командын шугамын хэрэгслээр гүйцэтгэдэг. Дискний массивыг нэг тушаалаар цуглуулдаг:

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

Энэ командыг гүйцэтгэсний дараа /dev/md0 блок төхөөрөмж системд гарч ирэх бөгөөд энэ нь таныг виртуал диск хэлбэрээр илэрхийлнэ.

CPU дээр Intel® Virtual RAID

NVMe дээрх RAID массивуудIntel® VROC стандарт тоног төхөөрөмжийн түлхүүр
Intel® Virtual RAID On CPU (VROC) нь Intel® чипсет дээр суурилсан RAID массив үүсгэх техник хангамж, програм хангамжийн технологи юм. Энэ технологи нь Intel® Xeon® Scalable процессоруудыг дэмждэг эх хавтангуудад зориулагдсан. Анхдагч байдлаар, VROC боломжгүй байна. Үүнийг идэвхжүүлэхийн тулд та VROC техник хангамжийн лицензийн түлхүүрийг суулгах ёстой.

Стандарт VROC лиценз нь 0, 1, 10 RAID түвшний дискний массив үүсгэх боломжийг танд олгоно. Дээд зэрэглэлийн хувилбар нь RAID5 дэмжлэгтэйгээр энэ жагсаалтыг өргөжүүлдэг.

Орчин үеийн эх хавтан дээрх Intel® VROC технологи нь Intel® Volume Management Device (VMD)-тай хамтран ажилладаг бөгөөд энэ нь NVMe хөтчүүдийг халуунаар солих боломжийг олгодог.

NVMe дээрх RAID массивуудIntel® VROC стандарт лиценз Сервер ачаалах үед массивуудыг Setup Utility-ээр тохируулдаг. Таб дээр Нарийвчилсан Intel® Virtual RAID on CPU гэсэн хэсэг гарч ирэх бөгөөд та дискний массивыг тохируулах боломжтой.

NVMe дээрх RAID массивуудХоёр диск дээр RAID1 массив үүсгэх
Intel® VROC технологи нь өөрийн гэсэн онцлогтой. VROC ашиглан бүтээсэн дискний массивууд нь Linux Software RAID-тэй нийцдэг. Энэ нь массивуудын төлөвийг /proc/mdstat-д хянаж, mdadm-ээр дамжуулан удирдах боломжтой гэсэн үг юм. Энэхүү "онцлог"-ыг Intel албан ёсоор дэмждэг. Setup Utility дээр RAID1-ийг угсарсны дараа та үйлдлийн систем дэх хөтчүүдийн синхрончлолыг ажиглаж болно.

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 ашиглан VROC дээр массив цуглуулах боломжгүй гэдгийг анхаарна уу (угсарсан массивууд нь Linux SW RAID байх болно), гэхдээ та тэдгээрийн доторх дискүүдийг сольж, массивуудыг задалж болно.

LSI MegaRAID 9460-8i

NVMe дээрх RAID массивуудLSI MegaRAID 9460-8i хянагчийн харагдах байдал
RAID хянагч нь бие даасан техник хангамжийн шийдэл юм. Хянагч нь зөвхөн түүнд шууд холбогдсон хөтчүүдтэй ажилладаг. Энэхүү RAID хянагч нь 24 хүртэлх NVMe хөтчийг дэмждэг. Энэ хянагчийг бусад олон хүмүүсээс ялгаж өгдөг NVMe дэмжлэг юм.

NVMe дээрх RAID массивуудТехник хангамжийн хянагчийн үндсэн цэс
UEFI горимыг ашиглах үед хянагчийн тохиргоог Setup Utility-д нэгтгэдэг. VROC-тэй харьцуулахад техник хангамжийн хянагчийн цэс илүү төвөгтэй харагдаж байна.

NVMe дээрх RAID массивуудХоёр диск дээр RAID1 үүсгэх
Техник хангамжийн хянагч дээр дискний массивыг хэрхэн тохируулах талаар тайлбарлах нь нэлээд нарийн сэдэв бөгөөд бүрэн хэмжээний нийтлэлийн шалтгаан байж болох юм. Энд бид зүгээр л RAID0 болон RAID1-ийг анхдагч тохиргоогоор үүсгэхээр хязгаарлах болно.

Техник хангамжийн хянагчтай холбогдсон дискүүд үйлдлийн системд харагдахгүй. Үүний оронд хянагч нь бүх RAID массивыг SAS хөтчүүд болгон "далдалдаг". Дискний массивын нэг хэсэг биш, хянагчтай холбогдсон хөтчүүдэд үйлдлийн систем хандах боломжгүй болно.

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 массивууд нь SAS хөтчүүдийн дүрд хувирсан ч PCIe хурдаар ажиллах болно. Гэсэн хэдий ч, энэ функц нь Legacy-д NVMe-ээс ачаалах боломжийг олгодог.

Туршилтын тавиур

Дискний массивыг зохион байгуулах арга бүр өөрийн гэсэн физик давуу болон сул талуудтай байдаг. Гэхдээ дискний массивтай ажиллахад гүйцэтгэлийн ялгаа бий юу?

Шударга байдлыг дээд зэргээр хангахын тулд бүх туршилтыг нэг сервер дээр явуулна. Түүний тохиргоо:

  • 2х Intel® Xeon® 6240;
  • 12x DDR4-2666 16 ГБ;
  • LSI MegaRAID 9460-8i;
  • Intel® VROC стандарт тоног төхөөрөмжийн түлхүүр;
  • 4x Intel® SSD DC P4510 U.2 2TB;
  • 1x Samsung 970 EVO Plus M.2 500GB.

Туршилтын нэгжүүд нь P4510 бөгөөд нэг тал нь эх хавтантай, нөгөө тал нь RAID хянагчтай холбогдсон байдаг. M.2 нь Ubuntu 20.04-ийг ажиллуулж байгаа бөгөөд туршилтыг fio 3.16 хувилбарыг ашиглан явуулна.

Тест хийх

Юуны өмнө дисктэй ажиллахад саатал гарч байгааг шалгая. Туршилтыг нэг урсгалаар гүйцэтгэдэг, блокийн хэмжээ 4 KB байна. Туршилт бүр 5 минут үргэлжилнэ. Эхлэхийн өмнө холбогдох блок төхөөрөмжийг I/O хуваарьлагчийн хувьд байхгүй гэж тохируулсан. fio тушаал дараах байдалтай байна.

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

Fio үр дүнгээс бид clat 99.00% авдаг. Үр дүнг доорх хүснэгтэд үзүүлэв.

Санамсаргүй унших, μs
Санамсаргүй бичлэг, μs

диск
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

Өгөгдөл рүү нэвтрэхэд саатал гарахаас гадна виртуал хөтчүүдийн гүйцэтгэлийг харж, тэдгээрийг физик дискний гүйцэтгэлтэй харьцуулахыг хүсч байна. fio-г ажиллуулах тушаал:

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

Гүйцэтгэлийг I/O үйлдлээр хэмждэг. Үр дүнг доорх хүснэгтэд үзүүлэв.

Санамсаргүй уншсан 1 хэлхээ, IOPS
Санамсаргүй бичих 1 хэлхээ, IOPS
Санамсаргүй уншсан 128 хэлхээ, IOPS
Санамсаргүй бичих 128 хэлхээ, IOPS

диск
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

Техник хангамжийн хянагч ашиглах нь програм хангамжийн шийдлүүдтэй харьцуулахад хоцрогдол, гүйцэтгэлийн амжилтад хүргэдэг болохыг харахад хялбар байдаг.

дүгнэлт

Хоёр дискнээс дискний массив үүсгэхийн тулд техник хангамжийн шийдлүүдийг ашиглах нь үндэслэлгүй юм шиг санагддаг. Гэсэн хэдий ч RAID хянагч ашиглах нь үндэслэлтэй ажлууд байдаг. NVMe интерфэйсийг дэмждэг хянагчууд гарч ирснээр хэрэглэгчид өөрсдийн төслүүдэд илүү хурдан SSD ашиглах боломжтой болсон.

NVMe дээрх RAID массивууд

Зөвхөн бүртгэлтэй хэрэглэгчид санал асуулгад оролцох боломжтой. Нэвтрэх, гуйя.

Та RAID шийдлүүдийг ашиглаж байна уу?

  • 29,6%Тиймээ, техник хангамжийн шийдэл32

  • 50,0%Тийм ээ, програм хангамжийн шийдлүүд54

  • 16,7%Үгүй 18

  • 3,7%RAID шаардлагагүй4

108 хэрэглэгч санал өгсөн. 14 хэрэглэгч түдгэлзсэн.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх