Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
データ冗長化のしくみRAID 基礎概念とRAID1編
Search
Satoru Takeuchi
PRO
April 14, 2024
Technology
2
130
データ冗長化のしくみRAID 基礎概念とRAID1編
以下動画のテキストです。
https://youtu.be/RrgTcrSO3Nk
Satoru Takeuchi
PRO
April 14, 2024
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
利きプロセススケジューラ
sat
PRO
5
2.9k
俺とVSCode Python Debugger Extension
sat
PRO
1
180
コード再利用のしくみ ライブラリ
sat
PRO
3
49
AWKへの愛を語る
sat
PRO
3
520
syncコマンドのデータ同期 完了待ちやエラー検出
sat
PRO
0
64
動作中のLinux環境の全メモリを見る
sat
PRO
1
96
Linuxの時間を10秒止める
sat
PRO
2
210
プロセスへのメモリ割り当て4 - 実際に使うときにメモリを獲得するデマンドページング(実践編)
sat
PRO
1
120
プロセスへのメモリ割り当て(3) 実際に使うときにメモリを獲得するデマンドページング
sat
PRO
1
73
Other Decks in Technology
See All in Technology
あなたの知らない Function.prototype.toString() の世界
mizdra
PRO
2
340
TypeScriptの次なる大進化なるか!? 条件型を返り値とする関数の型推論
uhyo
2
1.7k
心が動くエンジニアリング ── 私が夢中になる理由
16bitidol
0
100
TanStack Routerに移行するのかい しないのかい、どっちなんだい! / Are you going to migrate to TanStack Router or not? Which one is it?
kaminashi
0
600
Lambda10周年!Lambdaは何をもたらしたか
smt7174
2
130
誰も全体を知らない ~ ロールの垣根を超えて引き上げる開発生産性 / Boosting Development Productivity Across Roles
kakehashi
2
230
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
2
3.2k
SSMRunbook作成の勘所_20241120
koichiotomo
3
170
『Firebase Dynamic Links終了に備える』 FlutterアプリでのAdjust導入とDeeplink最適化
techiro
0
160
iOS/Androidで同じUI体験をネ イティブで作成する際に気をつ けたい落とし穴
fumiyasac0921
1
110
オープンソースAIとは何か? --「オープンソースAIの定義 v1.0」詳細解説
shujisado
10
1.3k
Security-JAWS【第35回】勉強会クラウドにおけるマルウェアやコンテンツ改ざんへの対策
4su_para
0
190
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
169
14k
Typedesign – Prime Four
hannesfritz
40
2.4k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
Faster Mobile Websites
deanohume
305
30k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
0
110
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
It's Worth the Effort
3n
183
27k
Transcript
データ冗長化のしくみ RAID ~ 基礎概念とRAID1編~ Apr. 14th, 2024 Satoru Takeuchi X:
satoru_takeuchi 1
RAIDとは何か • 複数のディスクを束ねることによって高信頼性、高可用性、高速性、大容量などの 特性を実現する技術 ◦ 一般に全て容量が等しいディスクで構成する • Redundant Arrays of
Inexpensive Disksの略 ◦ 生まれた当時は上記特性の実現には高価な専用ディスクを使う必要があった ◦ これらの特性を安価なディスクの組み合わせによって実現するというコンセプトだったので Inexpensiveを含む名前がついた ◦ 「高価な専用ディスク」は廃れたので InexpensiveをIndependentと書くことも 2
RAIDの実現方法 • 複数のディスクを束ねて1台の仮想的な一台のディスクとして見せる ◦ ユーザからは普通のディスクと同じようにアクセスできる • 仮想ディスクに書き込むと、RAIDを構成する複数のディスクに書き込む • 誰がこれらの機能を実現するかは色々な方法がある ◦
ハードウェアRAID ◦ ソフトウェアRAID ◦ fake RAID • 📝 詳しくは別動画「RAIDの実現方法」を参照 3
RAIDレベル • RAIDの個々のディスクに何を書き込むかの仕組みごとに名前がついている ◦ それぞれの方法を「RAIDレベルn」あるいは「RAID n」と表記する ◦ よく使われるRAIDレベルは「1」「0」「10」「5」「6」 • 本動画ではRAID1(ミラーリング)を例に基礎概念を説明
◦ 📝 他のRAIDレベルについては別動画で 4
RAID1 • n台(nは2以上)のディスクで構成 • 全ディスクに同じデータをコピー ◦ 📝 同じデータ2台だけにコピーする RAID1Eという派生もある •
例: 2台のディスクA,BでRAID1を組む 5 aaa iii aaa iii 仮想ディスク aaa iii ディスクA ディスクB
RAID1の特性(n台で組んだ場合) • 耐障害性: n-1台のディスクが壊れてもデータは残る • アクセス速度 ◦ 書き込み: 同じデータをn回書くので、1台で構成する場合より遅くなる ◦
読み出し: 別ディスクに並列アクセス可能なので 1台構成のn倍に近い速度が出ることもある • 容量: 個々のディスクの容量に等しい (全ディスクの総容量から見ると 1/n) 6
書き込み時に発生しうるデータ不整合 • 例: 2台のディスクA,Bを使ってRAID構成を組み、ディスクにdata aaaが保存されて いる状態でデータをiiiに書き換え 7 disk A data:
aaa disk B data: aaa 1. 書き込み開始 2. disk Aを更新 disk A data: iii disk B data: aaa disk A data: iii disk B data: aaa 3. マシンがダウン データ不整合発生 再起動後に、読み出す ディスクによって 読めるデータが異なる
データ不整合への対処 • ハードウェアによる対策 ◦ 不揮発性キャッシュメモリを搭載して再起動後にデータの整合性を戻す ◦ UPS(無停電電源装置)を付ける • ソフトウェアによる対策 ◦
ディスク上にジャーナル領域や「書き込み中」であることを示すビットマップを用意して、再起動後に データの整合性を戻す 8
冗長性の回復 • ディスク故障時は、故障したディスクを正常なディスクと交換した上でリビルドという 処理によってデータの冗長性を回復させる • リビルドでは正常なディスクのデータをもとに、新規追加した交換されたディスクに 正しいデータを書き込む 9
可用性について色々(実装によって大きく変わる) • ディスク故障時にデータ冗長度が下がったまま運用できることも ◦ 所定の冗長度まで下がったら危険と判断して運用を止めることも • 運用中にリビルドできることもある ◦ 大量のI/Oが走るのでリビルド中は性能劣化する •
ホットスペア ◦ 交換用の予備ディスク (これをホットスペアと呼ぶことも )を最初からマシンに挿しておく ◦ 故障時に交換用ディスクを使って自動的にリビルドできることも • ホットプラグ ◦ 運用中にディスクを抜き差しする技術 ◦ とくに(故障した)ディスクを別のもので交換することをホットスワップという 10
RAIDのスコープ外のもの • バックアップ ◦ RAIDはバックアップ「ではない」 ◦ データは冗長化されているが、常に最新のデータが冗長化されているだけ ▪ データ更新時に過去のデータは全て新しいもので更新される •
マシンが丸ごと故障するケース ◦ RAIDは1台のマシンに挿している複数ディスクによって構成する z技術 ▪ ネットワーク越しのディスクを使うこともあるが今は考えない ◦ マシンが燃えたらデータ全損 ◦ 燃えなくてもマシンが落ちたらマシン上の全データにアクセスできなくなる 11
RAIDを使う際によくやること • 仮想ディスクの構築に使うディスクの型番をやロットを分ける ◦ 同じ型番やロットに共通して発生する問題を引くと RAIDを構成している全ディスクが一度に壊れる ことがある • 使用開始時期をずらす ◦
同じ時期に投入したディスクは同時期に壊れがち ▪ とくに型番やロットが同じ場合 12
まとめ • RAIDは複数のディスクを束ねて仮想的に一つのディスクを構築し、可用性などを 高める技術 ◦ アクセス速度や冗長性も変化する ◦ RAIDレベルによっても変わる ◦ 実装によっても変わる
• 何がRAIDのスコープ内で、何がスコープ外なのかは意識する必要がある 13