ハードウェアは壊れるもの
一般的に、ハードディスクのAFR(Annual Failure Rate:年間故障率)は1%~3%と言われており、100個のハードディスクがあれば年間に数本、1000個のハードディスクがあれば年間数十本が故障する換算となります。エンタープライズのストレージはこのディスク故障、およびCPUやメモリなど全てのハードウェア部品の故障を想定して、障害時にもデータを失わずサービス停止しない冗長化された可用性の高いシステムを提供してきました。
SSDなどNANDフラッシュメモリを使ったデバイスは、回転、駆動する部品が無いため故障率はハードディスクに比べて低く、とても信頼性の高いシステムを構築できます。ただし、NANDフラッシュメモリには書き込み寿命やビットエラーのリスクがあり、それに備えた冗長化の仕組みはエンタープライズの環境では必須と言えます。
ハードディスクやSSDを冗長化する主要技術がRAID(Redundant Arrays of Inexpensive Disks)です。RAIDにはいくつかのレベルがあり、現状のエンタープライズではRAID1、10、RAID5およびRAID6(NetAppのパリティディスク固定方式のRAID-DPを含む)が多く利用されています。
RAID1は2個1ペアのハードディスクやSSDでお互い同一の状態を保つ仕組み(ミラーリング)で、サーバー内のRAIDコントローラーでOSや仮想化ハイパーバイザーの領域を格納する用途によく用いられます。RAID10は偶数個のハードディスクやSSDでデータを分割(ストライプ)したものをさらにミラーリングする仕組みで、高性能な要件に用いられてきました。 RAID5は、複数のハードディスクやSSDにデータを分割した上でパリティ(消失訂正情報)を計算し、別のハードディスクやSSDに書き込みを行います。そうすることで1台が故障した場合でも、他に保存されているデータとパリティによってデータの復旧が可能になります。RAID6では、そのパリティを2重化したもので、さらに別のハードディスクへ同時に書き込みます。そのため2台同時に故障したとしても、データの復旧が可能です。
ハードディスク時代のRAIDは、512バイトや4Kバイトのハードディスクのセクタサイズを意識し、データの分割サイズ(ストライプサイズ)は数百KB(キロバイト)程度が主流でした。しかし、NANDフラッシュメモリを使ったSSDなどでRAIDを構成する場合、1回目や7回目で述べたNANDフラッシュの「ブロック」を意識し、より大きなストライプサイズで書き込む必要があります。NANDフラッシュメモリのブロックサイズは大容量化に伴い年々大きくなっており、1ブロックが数MB(メガバイト)から十数MBのものが現在主流となっています。
そのため、ハードディスクを前提とした従来型ストレージ、PCIスロット上のRAIDコントローラー、SDSなどでは、ブロックサイズやSSDの本数などの構成情報を把握できないがため、NANDフラッシュメモリのブロックに綺麗に書き込むことができずに部分書き換えとなり、余計なパリティ計算が発生したり、ガベージコレクションが頻発したりすることで、大幅な性能低下や早期寿命を招く恐れがあります。
NANDフラッシュメモリの使用を前提とした仮想環境専用フラッシュストレージTintri VMstoreの例では、ファイルシステムを持つNASの特徴を活かし、ファイルシステムがSSDの本数やブロックサイズを考慮してフルストライプで書き込み、かつストライプの部分書き換えをしない仕組みを実装しています。これにより安定した性能と長寿命を実現しています。
RAIDは現在でも広く使われている可用性の技術ですが、ハードディスクの大容量化に伴い、RAIDを組んだストレージの故障時にデータを復旧する時間が多大に必要になるという問題も抱えています。特に1本が数TBのハードディスクの場合、復旧に数日掛かるようなケースが発生し、その再構築中に別のハードディクスが故障した場合はデータが復旧できなくなるというリスクも伴ってきました。そこでNANDフラッシュメモリでRAIDを構築すると、万が一の故障率も低く、また障害時の復旧も高速に行うことができるようになりました。最近ではRAIDを古い技術として見る向きもありますが、このようにNANDフラッシュメモリの特徴を理解した上できちんと実装すれば、RAIDはNANDフラッシュにとって現在と将来にわたって最適な冗長化の技術と成り得ます。
大規模なデータを冗長化するイレイジャーコーディング
近年、スケールアウト型のストレージ、ハイパーコンバージドインフラストラクチャーやSDS(Software-defined Storage)などでは「イレイジャーコーディング(消失訂正符号)」という方式で冗長化が実装されています。イレイジャーコーディングは、CDやDVDなどの光メディアやテープなどのエラーを復元するために使われている消失訂正符号技術をHDDやSSDを用いるストレージに用いたもので、応用が進んでいます。簡単に仕組みを説明すると、データを複数の細かな塊に分割し、それぞれのパリティを別々に保存することで、複数台のディスクやノードが故障しても復元を可能にする技術です。ちなみに、消失したデータを復元するという意味では、RAID5/6もイレイジャーコーディングの一種として分類する場合もあります。
イレイジャーコーディングの長所は、サーバーやストレージのノードを10ギガビット・イーサネットやインフィニバンドなどで接続し、筐体を跨いたストレージを構築できることです。また、ストレージのコントローラーに特別なハードウェアを必要とせず、筐体を増やすだけで容量をスケールアウトできる点も特長のひとつです。
RAIDの構成は、ハードディスクやSSDをSAS-HBAやRAIDコントローラー配下に接続できるため、ひとつのユニット内で冗長化が完結します。より速い速度が要求される、ミッションクリティカルなアプリケーションのデータを保全するには最適です。一方イレイジャーコーディングは、大容量の大容量ハードディスクを10 Gbなどのネットワークインタフェースを介して接続する形式です。当然ですが、ネットワークを経由することで遅延やボトルネックが発生する可能性があります。しかし、ペタバイド級のビッグデータを分散されたストレージに保存し、スケールアウトさせるためには適した技術と言えるでしょう。
ここまで圧縮、重複排除、シンプロビジョニング、RAID、イレイジャーコーディングなどの「ストレージを有効活用しつつ、冗長性を向上させる技術」を概観してきました。次に、それらの上に構築されるさらなるデータの保護機能「スナップショット」や「レプリケーション」の技術について、最新の情報をTintriの製品を例に解説します。
バックアップ、スナップショットそしてリストア
データの消失のリスクは、ハードウェアの故障や障害のみではありません。アプリケーションやプログラムの不具合や、誤った操作を行うなど人的な災害によってデータが消えたり、誤って書き込まれたりするリスクがあります。その際にはバックアップからリストアを実行することまず考え、データを保護し障害から復旧する意味では基本の機能ですが、より細かに履歴を取るという意味ではスナップショットの方が優れています。スナップショットは、「ボリューム」や「LUN」、仮想環境専用フラッシュストレージのTintri VMstoreでは「仮想マシンと仮想ディスク」についてある時点でのコピーを作成し、そこからの更新分を差分データとして個別に保存しておくことにより、いつでもその時点に戻れるようにする機能です。スナップショットを使うことで、たとえば1時間前の状態に瞬時にデータを戻すことが可能となります。
仮想環境に最適なスナップショットとは
仮想環境にフォーカスしてスナップショットを見ていきたいと思います。仮想化ハイパーバイザーの多くは、それ自体がスナップショット機能を持ち、仮想マシン単位にスナップショットを取得することができます。しかし、その多くはDeltaファイル(差分ファイル)を持ち、書き換えられる古いデータを読み、それをDeltaファイルに書き移し、正規の仮想ディスクに新データを書きます。この仕組みのためにスナップショットが存在すると大幅に性能が低下します。そのため、長時間にわたりスナップショットをとり続けることは推奨されておらず、スナップショットを取る仮想マシンの数やスナップショットの個数を数世代に抑えるよう推奨されてることもあります。
Tintri VMstoreであれば、仮想環境に特化したファイルシステムを持ち、性能劣化のない追記型の差分データ管理で仮想マシン単位にスナップショットを実行することができます。世代数は仮想マシンあたり128世代まで、スナップショットをとる際の実行時間も仮想マシンの大きさに関わらず数秒程度で完了します。また、スナップショットには重複排除と圧縮が実行されますので、必要なデータサイズも非常に小さくなるのです。
ストレージのレプリケーションとは
ハードウェア障害、アプリケーションの不具合、人災に加え、天災や社会インフラの障害によるデータの消失やサービス停止のリスクもあります。地震などで建屋やフロアが損壊し、ストレージの筐体全体が損壊するような場合にも、データを保護しサービスを再開することが求められます。その要求に対し、エンタープライズストレージの多くは新旧に関わらず、「レプリケーション」機能を実装しています。
レプリケーションは、筐体、ラック、建屋ひいては国を跨ぎ、データを転送して複製する技術です。データを複製する単位がLUN単位、ボリューム単位、またはより細かい単位なのか、更新タイミングが同期、非同期なのか、転送する際に重複排除や圧縮処理が行われLAN/WAN回線に負担をかけないか、など各ベンダーで機能に差異があります。
Tintri VMstoreでは、仮想マシン単位にレプリケーションの有無を設定でき、同期、非同期のどちらも可能で、同期の場合は、万が一の災害のときでも、レプリケーションを行っていればデータの損失はなく、ディザスタリカバリとして備えることができます。また、非同期の場合は最短1分から間隔を柔軟に設定できます。データは重複排除と圧縮された差分ブロックのみを転送するため、回線に負担をかけず、高速にデータを遠隔地に複製することができます。リストアする際も、仮想マシン単位で行うことができるため、最小限のデータ転送で素早く復旧作業が可能となります。また、転送先で迅速に複製された仮想マシンを起動させたり、仮想化ハイパーバイザーの災害対策ソリューションと連携しリカバリーサイトを自動で切り替えたりすることもできます。
* * *
今回はRAIDとイレイジャーコーディング、そしてスナップショットとレプリケーションに関して解説しました。次回はストレージ管理者、システム管理者にとっての必要な機能などを解説します。
[PR]提供:Tintri