ストレージに関して勉強したことを、備忘録とアウトプットの練習を兼ねてまとめました!
ストレージアーキテクチャの種類
ファイルストレージ
データをフォルダとファイルという階層構造で管理するストレージ。
同時に多数のユーザーがアクセスしても安全な仕組みになっている。(誰かが編集している間はそのファイルにロックがかかる)
社内のファイルサーバー(NAS:Network Attached Storage)でよく使われる。
ブロックストレージ
そのOSの規格を使ってアクセスできるためやり取りが速い。
サーバーにマウントして使う場合が多い。
サーバーから見たローカル環境に存在する。
DBのデータやインスタンス、サーバー内のファイルは基本的にブロックストレージ。
AWSだとEBSはブロックストレージ。
オブジェクトストレージ
データをオブジェクトとして保存するストレージ。
そのデータのIDと、データ、そのデータに関するメタデータを保存する。
階層構造はない。
保存や変更などの操作はHTTP/HTTPS経由でアクセスするため、速度は遅い。
画像や動画、静的サイトのホスティングなど、HTTP経由でアクセスするデータの保存に使われる。
スケーラビリティが高い。
AWSだとS3はオプジェクトストレージ。
ストレージデバイスの種類
HDD
ディスクに物理的に書き込んでいる。
昔のPCで回転音や書き込む音がしていたのはこれのせい。
価格が安い
遅い
壊れやすい
SSD
電気的にデータの書き込みを行う。
価格が高い
速い
HDDより壊れにくい
テープドライブ
機密性が高い
価格が安い
長期保存に向いている
シーケンシャル(連続的に)保存する場合の書き込みが速い
あまり使われる場面はない
ストレージの構成単位
ドライブ
物理的なデバイス(マシン)のこと
HDDやSSDなどのこと
パーティション
ドライブを小分けにした単位
1つの物理的なドライブを論理的に区切ったもの
ストレージプール
複数のドライブを1つのストレージとしてみなすこと。
容量を増やすためや冗長化のために複数ストレージにまたがって利用する際に、アプリケーションから利用しやすくするために、それらのストレージを論理的に1つのストレージとみなして扱えるようにすること
ボリューム
パーティションやストレージプールの中に、ファイルシステムを使ってOSが認識できるように作った論理的な単位。
Dockerを使う際に「コンテナにこのボリュームをアタッチする」というような形で出てくる用語。
例えるならコンテナが部屋でボリュームが箱、その箱を部屋の中に置くことをマウント。
コンテナAとBを立てて、AにあったボリュームをBにマウントするとデータをBに移動させることができる。
ファイルシステム
データをファイルやフォルダとして扱えるようにするもの
レイド(RAID)
ストレージを冗長化するための仕組み。
RAID 0:ストライピング(分散書き込み)
冗長性がなく、データが消える危険性は高いが、シンプルなため高速で容量効率も高い。
| A | B |
|---|---|
| 1 | 2 |
| 3 | 4 |
| 5 | 6 |
RAID 1:ミラーリング(複製保存)
ストレージA、Bを用意してそれぞれに全く同じものを入れる
Aが壊れてもBに同じものが保存されている。
耐障害性は高いが、2倍のストレージが必要なためコストがかかる。
| A | B |
|---|---|
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
RAID 5:パリティ分散
AとBから計算される値(パリティ)をCに保存する。
Aが壊れてもBとCの値から計算すればAの値を復元できる。
容量効率・速度・耐障害性のバランスが良い。
| A | B | C |
|---|---|---|
| 1 | 2 | 1, 2から計算した値 |
| 3 | 4 | 3, 4から計算した値 |
| 5 | 6 | 5, 6から計算した値 |
RAID 10(1+0):ストライピング+ミラーリング
レイド0で作ったストレージを、レイド1の方法で複製する。
速度・耐障害性ともに高いが、最低4つのストレージが必要なため一番コストがかかる。
| A | A' | B | B' |
|---|---|---|---|
| 1 | 1 | 2 | 2 |
| 3 | 3 | 4 | 4 |
| 5 | 5 | 6 | 6 |
データのバックアップに関する用語
スナップショット
その時点でのストレージのメタ情報を保存したもの。
例えるなら、本に栞を挟むようなもの。栞を挟む位置を間違えても、スナップショットを元にして正しい位置に栞を挟み直すことができるが、本自体が燃えてしまうと復元できない。
元データからの差分のみをメタデータとして保存するので、保存処理も速く、保存容量も少なくなる。
保存したデータが破損した場合はスナップショットから復元できるが、
ボリューム(設定など)や物理デバイスが破損した場合は復元できない。
クローン
その時点でのボリュームを丸ごと保存したもの。
例えるなら、全く同じ本をもう1冊用意するようなもの。
元データそのものを保存するため、保存処理に時間がかかり、保存容量も大きくなる。
データの破損に加え、ボリュームが破損した場合にもクローンから復元できる。
参考元
ほぼこちらの内容の文字起こしです。
とっても聴きやすくて初心者に優しいので、読むより音声で聴きたい人はぜひこちらを聴いてみてください!