用語辞典・クラウド・開発運用

ブロックストレージ

ブロックストレージとは

block storage(ブロック・ストレージ)は、仮想ディスクのような固定サイズのブロック単位で読み書きするストレージです。仮想マシンなどのOSからは、連続したアドレスを持つブロック機器として見えます。

ブロックストレージ自身が通常提供するのは「どの位置へ何バイトを書くか」という低い層です。その上に区画表、ファイルシステム、ディレクトリー、ファイル、またはデータベース独自のデータレイアウトを作るのはOSやアプリケーションです。

容量を作っただけではファイルを保存できるとは限りません。新しい空容量なら、添付、機器確認、必要に応じた区画、ファイルシステム作成、マウントという段階を踏みます。

アドレス指定でブロックを読み書きする機器の上へ、OSがファイルシステムを作る容量・ファイルシステム・スナップショット・バックアップを別の層として見る
仮想サーバーへブロックの集まりである容量を接続し、その上にファイルシステムとデータベースを置き、個別ブロックの読み取り・書き込み、スナップショットからの復元、性能指標、アプリケーション整合性を図示したピクトグラム図解
図1図は一般的な層を示します。ブロック大きさ、接続方式、同時接続、複製、最大容量、スナップショットの仕様はサービスごとに異なります。

OSから見えるまでの層

Volume容量を持つ仮想機器

クラウド側で作り、接続先と障害範囲を指定して計算資源へ添付します。

Block位置を指定する読み取り・書き込み

OSはセクター相当のアドレスへI/Oを出し、保存領域側が物理媒体へ対応させます。

Partition機器内の領域分割

用途に応じて作ります。単一ファイルシステムなら機器全体を使う構成もあります。

Filesystemファイルとディレクトリーを管理

名前、権限、空き領域、メタデータをOSが管理できる形へ形式します。

Mountディレクトリーへ接続

ファイルシステムをOSのディレクトリー木構造へ組み込み、アプリケーションがファイルとして利用します。

Snapshot時点のブロック状態を保存

新容量への復元や複製に使えますが、アプリケーション整合性は別に確保します。

ブロックストレージが向く処理

ランダム読み取り・書き込み、低遅延、ファイルシステムのマウント、データベースのデータファイル、OS起動ディスクなど、ディスクに近いインターフェースを必要とする処理へ向きます。アプリケーションは既存のファイルAPIを大きく変えずに使えます。

一方、大量の静的資産をHTTPで直接配る、メタデータ付きオブジェクトを鍵で管理する、複数クライアントから同じデータへサービスAPIでアクセスする用途はオブジェクトストレージの方が自然な場合があります。

容量と実際の空き容量

容量の契約容量と、ファイルシステムが利用可能と表示する容量は一致しません。区画、ファイルシステムメタデータ、予約領域、スナップショット、シンプロビジョニング等が間にあります。

容量をクラウド側で拡張しても、OSが新しい機器大きさを認識し、区画とファイルシステムを拡張する作業が別に必要なことがあります。縮小はデータ移動を伴い、対応しないサービスも多いため、手順を逆に考えません。

IOPS・スループット・遅延

IOPSは単位時間のI/O回数、スループットは単位時間のデータ量、遅延は一回のI/Oが完了するまでの時間です。小さなランダムI/Oと大きなsequential I/Oでは、同じ容量でもボトルネックが変わります。

容量側だけでなく、インスタンスの接続帯域、待ち行列深さ、ファイルシステム、キャッシュ、データベース、暗号化、ネットワーク経路も性能へ影響します。平均値だけでなく高パーセンタイルの遅延と待ち行列長を見ます。

添付と障害範囲

クラウドブロック容量は特定の可用性ゾーンへ属し、同じゾーンの計算資源にだけ添付できる設計があります。別ゾーンへ移すときはスナップショットや複製から新容量を作る場合があります。

一台だけへ読み書き可能な接続する容量を、複数サーバーから普通のファイルシステムで同時マウントすると破損することがあります。multi-attach対応、clusterファイルシステム、分散型ロックなど、共有を前提にした全層が必要です。

スナップショットは何を写すか

スナップショットはある時点の容量ブロックを保存します。増分保存でも、利用者からは選んだ時点へ復元できる形で扱われます。元容量を削除してもスナップショットが残るか、別アカウント・別地域へ複製できるかはサービス設定を確認します。

書き込み中にスナップショットを取ると、ディスク上のブロックは整合していてもメモリー内の未フラッシュデータや複数容量間のトランザクションが揃わない場合があります。ファイルシステムfreeze、データベースフラッシュ、アプリケーション対応バックアップ、multi-volumeスナップショット等で整合点を作ります。

スナップショットとバックアップの違い

同じアカウント・同じ管理プレーンだけにスナップショットを置くと、誤削除や権限侵害で一緒に失う可能性があります。保持期間、別アカウント・別地域複製、変更不能化、復元試験を組み合わせてバックアップとして成立させます。

バックアップは「取った」ではなく「必要なRPOのデータを、必要なRTO内に復元できる」まで確認します。

暗号化と廃棄

at-rest暗号化では保存領域上のブロックを鍵で暗号化し、接続時に透過的に復号する形が一般的です。鍵を失えばスナップショットを含めて読めなくなるため、権限・回転・削除保護を設計します。

ボリュームを切り離して削除しても、OS上のマウント設定や認証情報、スナップショット、複製が別に残る場合があります。リソース一覧で関連物を追跡します。

ブロックストレージはディスクに近い低層の保存領域です。容量の上へファイルシステムやデータベースを置き、性能、接続範囲、スナップショットの整合性、独立バックアップまで別々に管理します。

block deviceとしての接続・format・mount:Amazon EBS「Make a volume available for use」、snapshotの時点copyと増分保存:Amazon EBS snapshots

関連用語