NVMe 䞊の RAID アレむ

NVMe 䞊の RAID アレむ
この蚘事では、RAID アレむを構成するさたざたな方法に぀いお説明し、NVMe をサポヌトする最初のハヌドりェア RAID コントロヌラヌの XNUMX ぀に぀いおも説明したす。

RAID テクノロゞヌのさたざたなアプリケヌションはすべおサヌバヌ セグメントにありたす。 クラむアント セグメントでは、0 ぀のディスク䞊の゜フトりェア RAID1 たたは RAIDXNUMX のみが最もよく䜿甚されたす。

この蚘事では、RAID テクノロゞヌの簡単な抂芁、XNUMX ぀の異なるツヌルを䜿甚しお RAID アレむを䜜成する方法に関する短いチュヌトリアル、および各方法を䜿甚した仮想ディスクのパフォヌマンスの比范を提䟛したす。

RAIDずは䜕ですか?

りィキペディア RAID テクノロゞヌの包括的な定矩を瀺したす。

RAID 英語 独立したディスクの冗長アレむ - 独立した (独立した) ディスクの冗長アレむ) - フォヌルト トレランスずパフォヌマンスを向䞊させるために、耇数の物理ディスク デバむスを論理モゞュヌルに結合するデヌタ仮想化テクノロゞ。

ディスク アレむの構成ず䜿甚されるテクノロゞは、遞択したディスク アレむによっお異なりたす。 RAIDレベル。 RAID レベルは仕様で暙準化されおいたす 䞀般的な RAID ディスク デヌタ圢匏。 ここでは倚くの RAID レベルに぀いお説明したすが、最も䞀般的なのは RAID0、RAID1、RAID5、および RAID6 です。

RAID0たたは ストラむプは、XNUMX ぀以䞊の物理ドラむブを XNUMX ぀の論理ドラむブに結合する RAID レベルです。 論理ディスクの容量は、アレむに含たれる物理ディスクの容量の合蚈ず等しくなりたす。 この RAID レベルには冗長性がなく、XNUMX ぀のドラむブに障害が発生するず、仮想ディスク内のすべおのデヌタが倱われる可胜性がありたす。

УрПвеМь RAID1たたは 鏡、デヌタの同䞀のコピヌを 1 ぀以䞊のディスクに䜜成したす。 仮想ディスクのサむズは、物理ディスクの最小サむズを超えたせん。 RAID1 仮想ディスク䞊のデヌタは、アレむ内の少なくずも XNUMX ぀の物理ディスクが動䜜しおいる限り䜿甚できたす。 RAIDXNUMX を䜿甚するず冗長性が远加されたすが、XNUMX ぀以䞊のディスクのアレむでは XNUMX ぀のディスクの容量しか䜿甚できないため、かなり高䟡な゜リュヌションになりたす。

УрПвеМь RAID5 コスト高の問題を解決したす。 RAID5 レベルのアレむを䜜成するには、少なくずも 3 ぀のディスクが必芁で、アレむは 5 ぀のディスクの障害に察しお耐性がありたす。 RAID5 のデヌタは、チェックサム付きのブロックに保存されたす。 デヌタ ディスクずチェックサム ディスクの間には厳密な区別はありたせん。 RAID1 のチェックサムは、それぞれが異なるディスクから取埗された N-XNUMX 個のブロックに適甚される XOR 挔算の結果です。

RAID アレむは冗長性を高めお冗長性を提䟛したすが、バックアップの保存には適しおいたせん。

RAID アレむの皮類に぀いお簡単に説明した埌、ディスク アレむを組み立おお䜿甚できるデバむスずプログラムに進むこずができたす。

RAIDコントロヌラヌの皮類

RAID アレむを䜜成しお䜿甚するには、ハヌドりェアず゜フトりェアの XNUMX ぀の方法がありたす。 次の解決策を怜蚎したす。

  • Linux ゜フトりェア RAID。
  • CPU 䞊のむンテル® 仮想 RAID。
  • LSI MegaRAID 9460-8i。

むンテル® ゜リュヌションはチップセット䞊で実行されるため、ハヌドりェア ゜リュヌションなのか゜フトりェア ゜リュヌションなのかずいう問題が生じるこずに泚意しおください。 たずえば、VMWare ESXi ハむパヌバむザヌは VROC ゜フトりェアを考慮しおおり、正匏にはサポヌトしおいたせん。

Linux ゜フトりェア RAID

Linux OS ファミリの゜フトりェア RAID アレむは、クラむアント セグメントずサヌバヌ セグメントの䞡方で非垞に䞀般的な゜リュヌションです。 アレむの䜜成に必芁なのは、mdadm ナヌティリティずいく぀かのブロック デバむスだけです。 Linux ゜フトりェア RAID が䜿甚するドラむブに課す唯䞀の芁件は、システムからアクセスできるブロック デバむスであるこずです。

機噚や゜フトりェアのコストがかからないこずは、この方法の明らかな利点です。 Linux ゜フトりェア RAID は、CPU 時間を犠牲にしおディスク アレむを線成したす。 サポヌトされおいる RAID レベルのリストず珟圚のディスク アレむのステヌタスは、procfs ルヌトにある 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 コマンド ラむン ナヌティリティを通じお実行されたす。 ディスク アレむは XNUMX ぀のコマンドで組み立おられたす。

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

このコマンドを実行するず、/dev/md0 ブロック デバむスがシステムに衚瀺され、仮想ディスクずしお衚瀺されたす。

CPU 䞊のむンテル® 仮想 RAID

NVMe 䞊の RAID アレむむンテル® VROC 暙準ハヌドりェア キヌ
Intel® Virtual RAID On CPU (VROC) は、Intel® チップセットに基づいお RAID アレむを䜜成するためのハヌドりェアおよび゜フトりェア テクノロゞです。 このテクノロゞヌは䞻に、むンテル® Xeon® スケヌラブル プロセッサヌをサポヌトするマザヌボヌドで利甚できたす。 デフォルトでは、VROC は䜿甚できたせん。 これをアクティブにするには、VROC ハヌドりェア ラむセンス キヌをむンストヌルする必芁がありたす。

暙準 VROC ラむセンスを䜿甚するず、0、1、および 10 RAID レベルのディスク アレむを䜜成できたす。 プレミアム バヌゞョンでは、RAID5 サポヌトによりこのリストが拡匵されたす。

最新のマザヌボヌド䞊のむンテル® VROC テクノロゞヌは、NVMe ドラむブにホットスワップ機胜を提䟛するむンテル® ボリュヌム管理デバむス (VMD) ず連携しお動䜜したす。

NVMe 䞊の RAID アレむむンテル® VROC 暙準ラむセンス アレむは、サヌバヌの起動時にセットアップ ナヌティリティを通じお蚭定されたす。 タブ䞊 高機胜 [Intel® Virtual RAID on CPU] 項目が衚瀺され、ディスク アレむを構成できたす。

NVMe 䞊の RAID アレむ1 ぀のドラむブに RAIDXNUMX アレむを䜜成する
むンテル® VROC テクノロゞヌには独自の゚ヌスが備わっおいたす。 VROC を䜿甚しお構築されたディスク アレむは、Linux ゜フトりェア RAID ず互換性がありたす。 これは、アレむの状態を /proc/mdstat で監芖し、mdadm を通じお管理できるこずを意味したす。 この「機胜」はむンテルによっお正匏にサポヌトされおいたす。 セットアップ ナヌティリティで RAID1 を組み立おた埌、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>

mdadm を䜿甚しお VROC 䞊でアレむを組み立おるこずはできないこずに泚意しおください (組み立おられたアレむは Linux SW RAID になりたす)。ただし、アレむ内のディスクを倉曎したり、アレむを逆アセンブルするこずはできたす。

LSI MegaRAID 9460-8i

NVMe 䞊の RAID アレむLSI MegaRAID 9460-8i コントロヌラの倖芳
RAID コントロヌラヌはスタンドアロンのハヌドりェア ゜リュヌションです。 コントロヌラヌは、コントロヌラヌに盎接接続されたドラむブでのみ動䜜したす。 この RAID コントロヌラは、最倧 24 台の NVMe ドラむブをサポヌトしたす。 このコントロヌラヌを他の倚くのコントロヌラヌず区別するのは、NVMe サポヌトです。

NVMe 䞊の RAID アレむハヌドりェアコントロヌラヌのメむンメニュヌ
UEFI モヌドを䜿甚する堎合、コントロヌラヌ蚭定はセットアップ ナヌティリティに統合されたす。 VROC ず比范するず、ハヌドりェア コントロヌラヌ メニュヌははるかに耇雑に芋えたす。

NVMe 䞊の RAID アレむ1 ぀のディスクに RAIDXNUMX を䜜成する
ハヌドりェア コントロヌラヌでディスク アレむを構成する方法を説明するのはかなりデリケヌトなトピックであり、本栌的な蚘事が必芁になる可胜性がありたす。 ここでは、デフォルト蚭定で RAID0 ず RAID1 を䜜成するこずに限定したす。

ハヌドりェア コントロヌラヌに接続されおいるディスクは、オペレヌティング システムからは認識されたせん。 代わりに、コントロヌラヌはすべおの RAID アレむを SAS ドラむブずしお「マスク」したす。 コントロヌラに接続されおいるが、ディスク アレむの䞀郚ではないドラむブには、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.

SAS ドラむブずしお停装されおいるにもかかわらず、NVMe アレむは PCIe 速床で動䜜したす。 ただし、この機胜を䜿甚するず、レガシヌで NVMe から起動できるようになりたす。

テストスタンド

ディスクアレむを構成する各方法には、それぞれ物理的な長所ず短所がありたす。 しかし、ディスクアレむを䜿甚する堎合にパフォヌマンスの違いはあるのでしょうか?

最倧限の公平性を実珟するために、すべおのテストは同じサヌバヌ䞊で実行されたす。 その構成:

  • 2x むンテル® Xeon® 6240;
  • 12x DDR4-2666 16 GB;
  • LSI MegaRAID 9460-8i;
  • むンテル® VROC 暙準ハヌドりェア キヌ;
  • 4x むンテル® 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 ぀のスレッドで実行され、ブロック サむズは 5 KB です。 各テストは XNUMX 分間続きたす。 開始する前に、察応するブロック デバむスは I/O スケゞュヌラずしお none に蚭定されたす。 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

ハヌドりェア コントロヌラヌを䜿甚するず、゜フトりェア ゜リュヌションに比べお遅延が増加し、パフォヌマンスが䜎䞋するこずが簡単にわかりたす。

たずめ

ハヌドりェア ゜リュヌションを䜿甚しお XNUMX ぀のディスクからディスク アレむを䜜成するのは非合理的です。 ただし、RAID コントロヌラヌの䜿甚が正圓化されるタスクもありたす。 NVMe むンタヌフェむスをサポヌトするコントロヌラヌの出珟により、ナヌザヌはプロゞェクトでより高速な SSD を䜿甚する機䌚が埗られたす。

NVMe 䞊の RAID アレむ

登録ナヌザヌのみがアンケヌトに参加できたす。 ログむンお願いしたす。

RAID ゜リュヌションを䜿甚しおいたすか?

  • 芖聎者の%がはい、ハヌドりェア ゜リュヌション32

  • 芖聎者の%がはい、゜フトりェア ゜リュヌション54

  • 芖聎者の%がNo18

  • 芖聎者の%がRAID は必芁ありたせん4

108 人のナヌザヌが投祚したした。 14名のナヌザヌが棄暩した。

出所 habr.com

コメントを远加したす