Slide 1

Slide 1 text

データ冗長化のしくみ RAID ~ 冗長性が無いRAID0編~ Jun. 7th, 2024 Satoru Takeuchi X: satoru_takeuchi 1

Slide 2

Slide 2 text

はなすこと ● RAIDの一種と言われたり「いや違う」と言われたりするRAID0の説明 ● 何が嬉しいのか ● なぜRAIDじゃないと言われることがあるのか ● 注: RAIDはLinux RAIDで実現しているものとします 2

Slide 3

Slide 3 text

RAID0 ● 複数のディスクを束ねることによって高速なデバイスを構築する技術 ● デバイスへのアクセスを複数台のディスクへの並列アクセスによって実現できるの で高速 3

Slide 4

Slide 4 text

RAID0のデータ配置方法 ● RAID0デバイス上のデータは所定の長さのチャンクに区切る ● チャンクは複数のディスクに順番に配置される ● 例) 2台のディスクsda,sdbから構成したRAID0デバイスdm-0 4 dm-0 sda sdb A B C D A C B D

Slide 5

Slide 5 text

データアクセス方法 ● シーケンシャル書き込みを例に説明 ● 仮定 ○ ディスクsda,sdbからRAID0デバイスdm-0を構成している ○ チャンクサイズは100MiB ○ ディスクのシーケンシャル書き込み速度は 100MiB/s ● やること: 400MiBのデータをdm-0に書き込む ○ sdaに直接書き込む場合は、完了まで 4秒(=400/4)かかる ○ dm-0への書き込みの場合は 4秒より短くなるのだろうか ? 5

Slide 6

Slide 6 text

初期状態 ● メモリの中にデータA,B,C,Dがある ● それぞれサイズはチャンクサイズと同じ100MiB ● A,B,C,Dをdm-0にシーケンシャルに書き込む 6 dm-0 sda sdb メモリ A B C D 0~ 100MiB~ 200MiB~ 300MiB~ 0~ 100MiB~ 0~ 100MiB~

Slide 7

Slide 7 text

前半 1. dm-0のドライバがsdaにAを書き込むよう指示 2. dm-0のドライバがsdbにBを書き込むよう指示 3. dm-0のドライバがA,Bの書き込み完了を待つ 7 dm-0 sda sdb メモリ A B C D 0~ 100MiB~ 200MiB~ 300MiB~ 0~ 100MiB~ 0~ 100MiB~

Slide 8

Slide 8 text

前半 1. dm-0のドライバがsdaにAを書き込むよう指示 2. dm-0のドライバがsdbにBを書き込むよう指示 3. dm-0のドライバがA,Bの書き込み完了を待つ 8 dm-0 sda sdb メモリ A B C D 0~ 100MiB~ 200MiB~ 300MiB~ 0~ 100MiB~ 0~ 100MiB~ ここは一瞬で終わる

Slide 9

Slide 9 text

前半 1. dm-0のドライバがsdaにAを書き込むよう指示 2. dm-0のドライバがsdbにBを書き込むよう指示 3. dm-0のドライバがA,Bの書き込み完了を待つ 9 dm-0 sda sdb メモリ A B C D 0~ A 100MiB~ B 200MiB~ 300MiB~ 0~ A 100MiB~ 0~ B 100MiB~ ここは1秒かかる。 100MiB/sのsda,sdbにそれぞれ 100MiBを書き込むため

Slide 10

Slide 10 text

後半 1. dm-0のドライバがsdaにCを書き込むよう指示 2. dm-0のドライバがsdbにDを書き込むよう指示 3. dm-0のドライバがC,Dの書き込み完了を待つ 10 dm-0 sda sdb メモリ A B C D 0~ A 100MiB~ B 200MiB~ 300MiB~ 0~ A 100MiB~ 0~ B 100MiB~

Slide 11

Slide 11 text

後半 1. dm-0のドライバがsdaにCを書き込むよう指示 2. dm-0のドライバがsdbにDを書き込むよう指示 3. dm-0のドライバがC,Dの書き込み完了を待つ 11 dm-0 sda sdb メモリ A B C D 0~ A 100MiB~ B 200MiB~ 300MiB~ 0~ A 100MiB~ 0~ B 100MiB~ ここは一瞬で終わる

Slide 12

Slide 12 text

後半 1. dm-0のドライバがsdaにCを書き込むよう指示 2. dm-0のドライバがsdbにDを書き込むよう指示 3. dm-0のドライバがC,Dの書き込み完了を待つ 12 dm-0 sda sdb メモリ A B C D 0~ A 100MiB~ B 200MiB~ C 300MiB~ D 0~ A 100MiB~ C 0~ B 100MiB~ D ここは1秒かかる。 100MiB/sのsda,sdbにそれぞれ 100MiBを書き込むため

Slide 13

Slide 13 text

結果 ● 合計所要時間は2秒程度 ● 単一ディスクの場合(4秒)に比べて2倍高速になった ● 説明は省略するが、シーケンシャル読み出し、ランダム読み書きともに2倍程度高 速化できることがある ● RAID0を構成するデバイスの数を増やせば、さらに高速化 ○ 📝: ドライバによるI/O発行処理に時間がかかるようになってくるなどの事情でディスク数に応じて線 形に速度向上…とはいかない 13

Slide 14

Slide 14 text

RAID0の弱点 ● n台のディスクのうち1台でも壊れたらデータを失うので、RAID0を構成するディスク 数が増えれば増えるほどデータを失うリスクは高まる ● RAIDは”Redundant Arrays of Inexpensive Disks”の略なのに冗長性 (redundancy)が無い! ● なので「RAID0はRAIDではない」と言われることも 14

Slide 15

Slide 15 text

📝ベンチマーク記事で愛されるRAID0 ● 新型のディスクが出るたびに「RAIDを組んだときの性能は云々」と書かれているも のはRAID0のことがよくある ● RAID0はディスク単品を大幅に上回る性能が出て見栄えがするからかも ○ 例: 「3GiB/sのディスクを4枚束ねて10GiB/s以上を達成!」 ● RAIDは高速化技術ではなく、あくまで冗長化技術なことに注意 15

Slide 16

Slide 16 text

まとめ ● RAID0は複数のディスクを束ねて高速なデバイスを構築する技術 ● Redundancy(冗長性)は無い 16