クラウドに再現する従来型ストレージ
はじめに
サーバ、ネットワーク装置と比べてストレージ装置 (従来型ストレージ[1]) は情報が少なく、何より気軽に触りながら習得する環境がありません。
そこで、従来型ストレージ装置をクラウドに再現し、気軽に触れる環境の構築を試みました。
従来型ストレージのアーキテクチャ
下記は一般的に見られる従来型ストレージ[2]のアーキテクチャです。
従来型ストレージのアーキテクチャ
LUN、ストレージプールなどの論理的な構成要素とI/Oの流れを追記したものが以下です[3]。
従来型ストレージの論理構成
クラウドにおけるアーキテクチャ
クラウド (GCP) で実現するための (仮想的な) ハードウェアは以下のように構成します。
クラウドで再現する従来型ストレージのアーキテクチャ
Persistent Disk (永続ディスク) のmulti-writer modeの説明は以下です。
ソフトウェアを含む論理的な構成は以下です。これにより従来型ストレージを再現します。
クラウドで再現する従来型ストレージの論理構成
- コントローラのACTIVE / STANDBYをPacemaker (OSSのHAクラスタ) で制御
- ストレージプールとそこから切り出されるLUNをLVMで構成
- ACTIVEコントローラはLogical VolumeをLUNとしてiSCSIでサーバに提供する
- 以下理由からSTANDBYコントローラにもiSCSIでLUNを提供する
- STANDBYコントローラはACTIVEコントローラからiSCSIでLUNの提供を受け、さらにそのLUNをiSCSIでサーバに向けて提供する
実際に構築して動かしてみる
GCP上にこのストレージを構築、サーバから認識させると以下のようにマルチパス構成のLUNが確認できます。
[root@instance-1 ~]# multipath -ll
mpatha (36001405f9f9cf62713749caaadf0fb14) dm-0 LIO-ORG,LUN0
size=3.0G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
`-+- policy='round-robin 0' prio=50 status=active
|- 1:0:0:0 sdc 8:32 active ready running
`- 2:0:0:0 sdb 8:16 active ready running
:
(省略)
:
mpathf (3600140596dfdd629d414658a24c4af59) dm-5 LIO-ORG,LUN1
size=3.0G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
`-+- policy='round-robin 0' prio=50 status=active
|- 1:0:0:1 sdm 8:192 active ready running
`- 2:0:0:1 sdl 8:176 active ready running
[root@instance-1 ~]#
mpathf (LUN1) にext4でファイルシステムを作成、マウントした後にddコマンドでファイル書き込みをしながらコントローラを再起動しても書き込みは継続されます。
04:39:04付近と04:41:04付近にtps (IOPS)の低下が見られるタイミングでコントローラを再起動しています。
サーバから見たI/O状況 (mpathf)
04:39:04付近がSTANDBYコントローラ、04:41:04付近がACTIVEコントローラの再起動ですが、両タイミングとも10秒かからずにI/Oが再開されています。
サーバから見たI/O状況 (mpathf) - 04:39:04付近
サーバから見たI/O状況 (mpathf) - 04:41:04付近
また、パス (コントローラ)単位でI/O状況を見ると、片方のコントローラが再起動されて復旧するまでは2つのパスに分散されていたI/Oが片方のパスに寄っている (tps約2倍) 様子が見えます。
サーバから見たI/O状況 (ACTIVE側パス) - 04:41:04付近からACTIVE → 再起動 → STANDBY組込[4]
サーバから見たI/O状況 (STANDBY側パス) - 04:41:04付近でSTANDBY → ACTIVE切替
あとがき
GCPのCompute Engineで構築しましたが、GCP固有の機能は使用していませんのでGCP以外でも複数マシン間のディスクの共有が設定できる環境[5]であれば動作すると考えられます。
なお、GCP上に構築する手順は別記事にまとめる予定です公開しました (2023.10.18)。
-
アプライアンスストレージなどとも言われます ↩︎
-
ミッドレンジストレージ、オールフラッシュストレージでこのようなアーキテクチャが見られます ↩︎
-
ハイエンドストレージ (エンタープライズストレージ) は複数コントローラがACTIVEとして動作するため本記事で扱うミッドレンジストレージ的なアーキテクチャとは異なります ↩︎
-
04:41:04付近でACTIVEコントローラを再起動したため、STANDBYコントローラがACTIVEに昇格し、ACTIVEコントローラは再起動後にSTANDBYコントローラとして復帰しています ↩︎
-
AWS (Amazon EBSマルチアタッチ)、VirtualBoxなどでディスクの共有が設定可能なようです ↩︎
Discussion