Active Clusterと非同期ミラーリング

最近、データの複製・コピーを遠隔地に配置し、万が一災害などでサーバーに障害が発生した場合でも別の拠点からサーバーを暫定運用する、あるいはデータ復旧を行うといった運用を検討する企業が増えています。ディザスタリカバリ(Disaster Recovery)、事業継続計画(Business Continuity Plan)といった用語を耳にされた方もいらっしゃるでしょう。FlashArrayは、これらの要件を満たすためのデータ複製を行うレプリケーション機能である「非同期レプリケーション」および「Active Cluster(同期レプリケーション)」機能を提供しています。レプリケーション機能と聞くと「構築、運用が煩雑そう」「高そう」といったイメージを持たれるかもしれません。しかし、「シンプル」をポリシーとしているPure StorageのFlashArrayですので、その設定も簡単、かつ全てWeb GUIから設定が可能です。また、FlashArrayでは全ての機能が標準ライセンスに含まれているため、上記2つの機能も追加ライセンスの購入等必要なく利用可能となっています。 上記の通り簡単な設定でデータ保護機能が利用可能であることをご理解いただくため、今回から全3回に渡ってそのレプリケーション機能のひとつ「非同期レプリケーション」についてご紹介致します。  

同期/非同期レプリケーションとは

ストレージにおけるレプリケーション機能は「別のストレージ上にデータの集合の複製を作成する」機能です。レプリケーションは複製用データの転送タイミングによって「同期レプリケーション」と「非同期レプリケーション」の2種類に分けることができます。

同期レプリケーションは、2つのストレージ間で常に同一のデータを保持します。同一データの書き込みの保証のため、ローカルのストレージはリモートのストレージ(のキャッシュ)への書き込みを確認した段階で、書き込み完了の通知(以下ack)をサーバーに返します。 一方非同期レプリケーションは、任意のタイミングもしくは一定間隔でローカルのストレージからリモートのストレージにデータを送り、複製を作成します。 上記のような書き込み時の仕組みの違いにより、同期レプリケーションでは障害時でもRPO(目標復旧時点)=0、つまり最新の状態への復旧が可能です。しかし、リモートのストレージへの書き込みを確認するまでackを返すことができないため、レイテンシが大きくなる、もしくはあまりにも離れたサイトとの間ではそもそも機能の利用が難しい場合もあります。一方非同期レプリケーションでは、常に同一のデータを保持するわけではないため、障害時には最後にデータ複製が行われた時点以降のデータ変更が反映されていない状態で復旧されます。しかし、サーバーストレージ間のレイテンシに影響はありません。 上記のように同期レプリケーション、非同期レプリケーションは「リモートストレージへのデータの複製」という部分に関しては同じですが、データの複製タイミングという観点では大きく異なります。データ保護の要件とデータ書き込み時のパフォーマンス、そして回線などの環境も加味し、どちらを利用すべきか検討する必要があります。  

FlashArrayの非同期レプリケーションのアーキテクチャ

FlashArrayの非同期レプリケーションおよびスナップショットは、Volume単位で行われます。そしてこれらのデータ保護機能を利用する際には、どちらも”Protection Group”が設定のキモとなります。

基本的には、どれくらいの頻度(ポリシー)で、どのVolumeを、(レプリケーションの場合のみ)どのターゲットArrayにスナップショットを保存するのか、の設定をProtection Groupに対して行うだけで、設定は完了です。また、同じデータ保護設定を行いたいVolumeは後から同じProtection Groupに紐付けを行うだけで、同一設定でのデータ保護の対象とすることができます。 
  そして、非同期レプリケーションのアーキテクチャを図に表したものが下記です。

  1. レプリケーションの実行タイミングで、ソースArrayにてスナップショットを取得する
  2. 前回のスナップショットと比較し差分メタデータを生成、差分比較後古いスナップショットは削除される
  3. 生成された差分メタデータと重複排除済みの実データは、圧縮されてターゲットArrayへ転送(初回転送時にはVolumeの全てのデータが転送される)
  4. ターゲットArrayにてインライン重複排除を行う
  5. 最新世代のスナップショットとして保存する
  6. ポリシーに基づいた期間スナップショットを複数世代保持し、保持期間の終了後削除する

 上記の様に、スナップショット間の差分、かつ重複排除/圧縮済みのデータが送信されるため、効率よく帯域幅を利用してデータの転送を行うことができます。  

非同期レプリケーションで利用される物理ポートの構成

FlashArray//Xシリーズでは、背面のポート構成は下記のようになっています。(構成時の選択によりスロット構成は異なります。)

 FlashArrayでは各物理ポートに対してデータ/管理/レプリケーション の各サービスがあらかじめ割り当てられています。上記画像のポートのうち、赤枠の4つのポートがレプリケーション専用ポートとなります。レプリケーション専用ポートでは、1/10/25 GbEが利用可能です。 また、レプリケーションにおけるポートの利用方法には、bondingを用いて”Replbond”というあらかじめ定義された仮想ポートに各ポートを束ねて利用する方法(以降Replbond構成)と、レプリケーション専用ポート4つ全てにIPアドレスをそれぞれ振って利用する方法(以降Physical Replication Port構成)の2種類があります。 Replbond構成はPurity OS 4.9以前との互換性のために提供されています。Physical Replication Port構成の方が利用可能な帯域幅、フェイルオーバー時のパス切り替え時間の観点から優れているため、Purity OS 5.0以降ではPhysical Replication Port構成が推奨となっています。 また、FlashArrayは2つのコントローラーにてActive-Standby構成をとります。そのため、Physical Replication Port構成の場合には、Activeとなっているコントローラー上の2つのレプリケーション専用ポートがレプリケーションにて実際に利用されるポートとなります。(ただし、1つのレプリケーションスケジュールが利用できるポートは1つのみです。2つ以上のスケジュールが同時に実行される場合にのみ2つのポートが同時に利用されます。)  今回は、ストレージにおけるレプリケーションについての説明に始まり、FlashArrayでの非同期レプリケーションの特長、ポート構成についてご紹介しました。  次回は実際の設定/操作手順をご紹介します。ご覧いただければ幸いです。