💫

クラウドに再現する従来型ストレージ

2023/10/10に公開

はじめに

サーバ、ネットワーク装置と比べてストレージ装置 (従来型ストレージ[1]) は情報が少なく、何より気軽に触りながら習得する環境がありません。

そこで、従来型ストレージ装置をクラウドに再現し、気軽に触れる環境の構築を試みました。

従来型ストレージのアーキテクチャ

下記は一般的に見られる従来型ストレージ[2]のアーキテクチャです。


従来型ストレージのアーキテクチャ

LUN、ストレージプールなどの論理的な構成要素とI/Oの流れを追記したものが以下です[3]


従来型ストレージの論理構成

クラウドにおけるアーキテクチャ

クラウド (GCP) で実現するための (仮想的な) ハードウェアは以下のように構成します。


クラウドで再現する従来型ストレージのアーキテクチャ

Persistent Disk (永続ディスク) のmulti-writer modeの説明は以下です。
https://cloud.google.com/compute/docs/disks/sharing-disks-between-vms?hl=ja

ソフトウェアを含む論理的な構成は以下です。これにより従来型ストレージを再現します。


クラウドで再現する従来型ストレージの論理構成

  • コントローラの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)。

https://zenn.dev/lightgreenface/articles/b9c4bc74bc9eb2

脚注
  1. アプライアンスストレージなどとも言われます ↩︎

  2. ミッドレンジストレージ、オールフラッシュストレージでこのようなアーキテクチャが見られます ↩︎

  3. ハイエンドストレージ (エンタープライズストレージ) は複数コントローラがACTIVEとして動作するため本記事で扱うミッドレンジストレージ的なアーキテクチャとは異なります ↩︎

  4. 04:41:04付近でACTIVEコントローラを再起動したため、STANDBYコントローラがACTIVEに昇格し、ACTIVEコントローラは再起動後にSTANDBYコントローラとして復帰しています ↩︎

  5. AWS (Amazon EBSマルチアタッチ)、VirtualBoxなどでディスクの共有が設定可能なようです ↩︎

Discussion