tech:raid
no way to compare when less than two revisions
差分
このページの2つのバージョン間の差分を表示します。
— | tech:raid [2022/09/03 22:10] (現在) – 作成 - 外部編集 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | ===== RAIDについて ===== | ||
+ | |||
+ | 昔書いたRAID規格の整理表。 | ||
+ | |||
+ | 実質RAID50/ | ||
+ | |||
+ | | http:// | ||
+ | | 規格 | ||
+ | | RAID0 | 耐故障性のないディスクアレイ方式。複数のディスクをつなげて単純に1台に見せる。コンキャットネートディスク(Concat)ということもある。 | | ||
+ | | RAID1 | 二重化(ミラーリング/ | ||
+ | | RAID1+0 | ||
+ | | RAID2 | ビット単位での専用誤り訂正符号ドライブ方式。ハミングコードを用いたECCによる冗長化機構を利用しているため、全RAID中もっとも耐障害性に優れている。現在のHDDの信頼性は、ECCを用いる必要があるほど低くないため、RAID2を利用することはなく、市販製品もない。 | | ||
+ | | RAID3 | ビット・バイト単位での専用パリティードライブ方式。RAID2における誤り訂正符号作成方式を排他的論理和(XOR)によってパリティーに変換する手法に置き換え、演算コストを低減した物である。最低3台のHDDを利用し、1台を誤り訂正政府号に割り当て、残り複数台にデータを記録する。RAID5によって効率・性能が大幅に改善されたため、現在ではRAID3は利用されない。 | | ||
+ | | RAID4 | ブロック単位での専用パリティードライブ方式。RAID2, | ||
+ | | RAID5 |ブロック単位でのパリティー分散記録方式。RAID5は複数のハードディスクに誤り訂正符号データと共に分散させて記録することで、RAID3、RAID4のボトルネックを回避する方式であルーターだし、読み出しは> | ||
+ | | RAID5+0 | ||
+ | | RAID5+1 | ||
+ | | RAID6 | フロック単位での複数パリティー分散方式。HDDを最低4台必要とする。RAID5では、同時に2台のディスクが故障した場合(復旧中にディスクが故障する場合も含む)対応ができない。この問題に対応するために開発された。パリティー情報を複数作成するため、RAID 5よりもさらに書き込みが遅くなる。 | | ||
+ | | RAIDZ | ZFS上に実装されたRAID同等の機能。RAID5やRAID6には、パリティ更新時に何らかの障害が発生した場合、データとパリティが一致しなくなり、システム上では正常に見えても内部ではデータ破壊が進んでいるという状態(サイレントクラッシュ)に陥るという致命的な欠点がある。またストライプ幅より小さいデータを書き込む際、全体のデータとパリティを読み込んで再計算をする必要があり、パフォーマンスが著しく低下するという弱点もある。RAIDZは常にストライプ全体への書き込みを行う。これに、コピーオンライトを組み合わせることによりRAID5やRAID6が持つサイレントクラッシュの問題を完全に回避できる。| | ||
+ | | RAIDZ1 | ||
+ | | RAIDZ2 | ||
+ | | RAIDZ3 | ||
+ | |||
+ | ==== RAIDの遅さ ==== | ||
+ | RAID/ | ||
+ | |||
+ | RAIDによる冗長性+容量を採るか、Mirrorによる冗長性+読み出し速度を採るかは状況によるが、特にHDDを利用する場合、大きく効いてくるので注意が必要。特に、AppleのTimeMachineを利用するのであれば、Mirrorを利用するなどの高速化を視野に入れる必要がある。 | ||
+ | ===== RAIDに関する若干の考察 ===== | ||
+ | 自宅などでRAIDを用いたNASなどを構築するときのためのメモ | ||
+ | |||
+ | ==== 前提条件 ==== | ||
+ | * FreeBSDでZFSを利用するものとする | ||
+ | * 考慮対象は Mirror(RAID1), | ||
+ | * 故障理由に書き込み寿命等の要件は考慮しないものとする | ||
+ | * Mirroringを採用した場合、 | ||
+ | * 書き込み速度は1倍、 | ||
+ | * 読み込みは並列読み込みできるものとし、n台のDIskでMirrorをするなら単純にn倍になるとする | ||
+ | * RAIDZを利用する場合、 | ||
+ | * Parity計算にかかる時間は概ね無視できる(CPUに十分な計算力があると仮定) | ||
+ | * 書き込み速度は1倍(Parity計算を無視できるとする) | ||
+ | * 読み込み速度は1倍(ParityからのData再計算はしないとする) | ||
+ | |||
+ | ==== 仮定条件 ==== | ||
+ | - Diskへの書き込みに関して、Errorは出ない | ||
+ | |||
+ | 実際には、HDDからの情報読み出しにおいては、回復不能なエラーが発生する可能性がある。 | ||
+ | 以下はSeagate製品のカタログから抜き出している。 | ||
+ | * Consumer向けHDDで、 1bit/ | ||
+ | * Enterprise向け高信頼HDDで 1bit/ | ||
+ | これは、Consumer 向け2TB disk 5本で構築されたRAID5システムにおいて、一回全領域を読み出した場合、60%の確率で1bit、「回復不能」のエラーが発生する可能性があることを示している。なお、Enterprise向け高信頼HDDならば、同条件で1bitの「回復不能」エラーが発生する確率は単純に0.6%である。 | ||
+ | つまり、Rebuildを実施した場合、Consumer向けHDDでは60%の確率でRebuildに失敗することを意味する。ただし、実際には、Disk容量を100%使い切ることはないであろうことから、失敗する確率はもう少し低くなると考えられる。 | ||
+ | |||
+ | ==== 注意点 ==== | ||
+ | 以下、Disk2本でRAIDZ1を組むという本質的には無意味な設定を検討している。 | ||
+ | これは、実際には構築できない設定が含まれることを意味するが、思考実験でもあるので、注意して欲しい。 | ||
+ | |||
+ | ==== Diskが2本の場合 ==== | ||
+ | 可能な選択は、 | ||
+ | |1|Mirror|Disk 1本分|READ 2倍|WRITE 1倍|最小破損台数2台|最大故障台数1台| | ||
+ | |2|RAIDZ1|Disk 1本分|READ 1倍|WRITE 1倍|最小破損台数2台|最大故障台数1台| | ||
+ | の2種類。 | ||
+ | |||
+ | この場合、書き込み速度は変わらないが、読み出し速度はMirrorの方が単純に2倍早くなる | ||
+ | Diskが1台故障した場合、復旧にかかる時間は、 | ||
+ | * Mirrorの場合、単純なコピーで済む | ||
+ | * RAIDZ1の場合、Parityからのデータ再計算が必要になるため、CPUの計算量を無駄に消費する | ||
+ | |||
+ | 結論:単純にMirrorを選択すべき。 | ||
+ | |||
+ | 以下、同容量での組み合わせでRAID vs Mirrorという条件が発生したらMirrorのみを考慮するものとする | ||
+ | |||
+ | ==== Diskが3本の場合 ==== | ||
+ | 可能な選択は、 | ||
+ | |1|3本Mirror | ||
+ | |2|3本でRAIDZ2|Disk 1本分|READ 1倍|WRITE 1倍|最小破損台数3台|最大故障台数2台| | ||
+ | |3|3本でRAIDZ1|Disk 2本分|READ 1倍|WRITE 1倍|最小破損台数2台|最大故障台数1台| | ||
+ | の4種類。 | ||
+ | |||
+ | 結論:実際に選択可能な選択は事実上(1)か(3)となる。 | ||
+ | |||
+ | これは、必要となる容量と同時故障台数予測を以ってで考えるべき | ||
+ | |||
+ | ・Diskが4本の場合 | ||
+ | 可能な選択は、 | ||
+ | |1|4本でMirror | ||
+ | |2|4本でRAIDZ2 | ||
+ | |3|4本でRAIDZ1 | ||
+ | |4|2本でMirror、2setでMirror|Disk 1本分|READ 4倍|WRITE 1倍|最小破損台数4台|最大故障台数3台| | ||
+ | |5|2本でMirror、2setでRAID0 |Disk 2本分|READ 2倍|WRITE 1倍|最小破損台数2台|最大故障台数2台| | ||
+ | の5種類。 | ||
+ | |||
+ | * (1)と(4)は実質同等であるが、管理の複雑さを考慮すると、選択肢は(1)となる | ||
+ | * (2)と(5)は容量は等価。読み込み速度は(5)の方が2倍早くなるが、故障時のリスクが(5)の方が大きくなる | ||
+ | * (2)場合、Diskが2本破損しても稼働する | ||
+ | * (5)の場合、DiskをA, | ||
+ | * C or Dが破損した場合は、稼働する | ||
+ | * Bが破損した場合、(A, | ||
+ | となるため、3台中2台までは破損しても稼働する=2/ | ||
+ | |||
+ | 障害復旧に関しては、(1)=(4)< | ||
+ | |||
+ | 結論:実際の選択としては、(1), | ||
+ | ただし、読み出し速度が重要な局面では、(2)の代わりに(5)を選択する局面がある | ||
+ | |||
+ | ==== Diskが5本の場合 ==== | ||
+ | 事実上可能な選択は | ||
+ | |1|5本でMirror| | ||
+ | |2|5本でRAIDZ2| | ||
+ | |3|5本でRAIDZ1| | ||
+ | となる。 | ||
+ | |||
+ | 議論はDiskが4本の場合と同じ。ただし、Diskが4本の場合と異なり、(5)の選択肢はない | ||
+ | |||
+ | ==== Diskが6本の場合 ==== | ||
+ | 事実上可能な選択は | ||
+ | |1|6本でMirror | ||
+ | |2|6本でRAIDZ2 | ||
+ | |3|6本でRAIDZ1 | ||
+ | |4|2本でMirror、3setでRAID0 |Disk 3本分|READ 2倍|WRITE 1倍|最小破損台数2台|最大故障台数3台| | ||
+ | |5|2本でMirror、3setでRAIDZ1|Disk 2本分|READ 2倍|WRITE 1倍|最小破損台数4台|最大故障台数4台| | ||
+ | |6|3本でMirror、2setでRAID0 |Disk 2本分|READ 3倍|WRITE 1倍|最小破損台数3台|最大故障台数4台| | ||
+ | |||
+ | * 一般の用途において、5多重は考慮の対象から外して問題ない。従って、(1)は対象から外れる。 | ||
+ | * (2)と(4)は容量が必要な場合に検討対象となる。 | ||
+ | * (4)と(6)は読み込み速度が重要な場合に検討対象となる。 | ||
+ | * ただし、(4)は、故障条件が厳しすぎて、実質1台の故障しか許容できないところに問題がある。 | ||
+ | *最小2台の故障でVolumeが壊れる。最大3台までは破損しない可能性もある | ||
+ | * (5)は、同時故障台数の許容量は大きいが、これなら(6)の方が有効 | ||
+ | * Diskが5本以上ある場合、RAIDZ1では同時故障の許容度が低すぎる。これで問題がない場合もあるが、復旧時の負荷を考えると(3)は外さざるを得ない | ||
tech/raid.txt · 最終更新: 2022/09/03 22:10 by 127.0.0.1