SB C&Sの最新技術情報 発信サイト

C&S ENGINEER VOICE

【連載/かんたんCohesity】【番外編】Cohesityの裏側を知ろう

データマネジメント
2020.01.17

こんにちは。SB C&S 中原です。
「かんたんCohesity」と題してCohesityの主な機能を連載でご紹介してきました。

-------------------------------------------------------------------------------------------
プロローグ セカンダリストレージとは
第1回 Cohesityの「買い方」
第2回 Cohesityはセットアップも「かんたん」
第3回 NASとして使うCohesity
第4回 バックアップサーバーとして使うCohesity
第5回 Cohesityによるバックアップの"活用"
第6回 Cohesityならアプリケーション導入も「かんたん」

番外編 Cohesityの裏側を知ろう
-------------------------------------------------------------------------------------------

今回は「番外編」です。

連載を通じてCohesityの操作が「かんたん」であることをお伝えしてきましたが、実はCohesityがユーザーに見えないように裏で色々な処理をやってくれています。 通常、Cohesityを使っている間にこれらを意識することはほとんどありませんので知らなくても基本的な操作はできますが、せっかくの「技術ブログ」ですから"番外編"としてDeep Diveをお送りしたいと思います。

本稿では「SpanFS」「SnapTree」をピックアップして内部動作をご紹介します。 とはいえ可能な限り「かんたん」にご紹介しますので、Cohesityの内部動作が気になる方はぜひご一読ください。

 

SpanFSによるデータの扱い方

連載第3回で触れましたが、CohesityはSpanFSという分散ファイルシステムを採用しています。 実際のSpanFSではiNodeやBlob、Brickといった複数の構成要素によりファイルを効率的に扱っていますが、全てを細かく説明すると煩雑になってしまいますので「実データ(Chunk / Chunkfile)」と「メタデータ」に抽象化してご説明します。

■Chunk / Chunkfile

Cohesityでは書き込まれる実データを8~24KB(可変長)に分割して、小さな塊で管理しています。 この分割されたデータのひとつひとつを「Chunk(チャンク)」と呼びます。
Cohe-chunk.png

(重複排除の設定が有効にされている場合は)Chunk単位で重複排除されます。可変長のChunk単位で重複排除、すなわち可変長重複排除ですので、データ削減効率の良いテクノロジと言えます。

さらにChunkは8MBの「Chunkfile(チャンクファイル)」としてまとめられた上で、ディスクに書き込まれます。
Cohe-chunkfile.png 

■メタデータ

Cohesityに対してあるファイルの読み出しが要求された場合は「メタデータ」を参照して必要なChunkを探し出し、ファイルを提供します。 「メタデータ」では、あるファイルを構成するChunkがどれか / ChunkがCohesityクラスタ内のどのディスクに書き込まれているかといった情報を保持しています。
Cohe-meta.png

 

Chunk / Chunkfileとメタデータの書き込み先についてもここで確認しておきましょう。 連載第1回でCohesityの物理アプライアンス版をご紹介しました。 いずれのモデルもディスクがFlash(SSD)とHDDのハイブリッドであることを覚えていらっしゃいますでしょうか。

CohesityのメタデータはSSDに書き込まれます。 Chunk (Chunkfile)については、中身がランダムデータであればSSDに、シーケンシャルデータであればHDDに書き込まれるというのがデフォルトの動作です。(ランダム / シーケンシャルの判別はCohesityが内部的に行ってくれます。)
Cohe-ssdhdd.png

 データの中身によって書き込み先を変え、処理の高速化を図っているという訳ですね。

 

Cohesityの耐障害性

ストレージ製品についてお話をする際、避けて通れないのが耐障害性の仕様です。 仕様が少々複雑になっていますので、ここで整理しておきましょう。

Cohesityの耐障害性の仕組みとしては「RF (Replication Factor)」と「EC (Erasure Coding)」の2種類が備わっています。 これらをまとめて「Resiliency」と呼んだりします。

まず押さえておきたいポイントは、「メタデータと実データ(Chunk / Chunkfile)でそれぞれ設定できるResiliency設定が異なる」という点です。
メタデータに対し設定できるのはRFのみです。 Chunk (Chunkfile) に対してはRFまたはECのいずれかを設定できます。
Cohe-resiliency.png

 

次に、RFとECの仕組みを詳しく見てみましょう。
Cohe-rfec.png

■RF (Replication Factor)

RFはあるデータの同一コピーを保持するもの(ミラーリング)です。
Cohesityでは「RF2」または「RF3」を設定することができます。(バージョン6.4.1からは「RF4」の設定が可能です。) 「RF2」であればデータのコピーを2つ、「RF3」であればデータのコピーを3つ保持します。 もしも「RF2」でCohesityを利用する場合、Cohesityの実効容量は物理容量の1/2になります。 「RF3」なら実効容量は物理容量の1/3です。

■EC (Erasure Coding)

ECはあるデータを書き込む場合に、データを分割したものとパリティをディスクに書き込むというものです。
CohesityではChunkfileを分割したものを「Data Stripe (データストライプ)」、パリティを「Code Stripe (コードストライプ)」と呼びます。 Cohesityではこのストライプ数をユーザーが指定することができ、「EC2:1」や「EC5:2」というようにM:Nの比で表記されます。 前項(M)がデータストライプ数、後項(N)がコードストライプ数を表しています。 例えば「EC2:1」であれば、Chunkfileを2分割したもの(データストライプ数2)と、パリティを1つ(コードストライプ数1)ディスクに書き込みます。 EC2:1の場合の実効容量は物理容量の2/3です。

 

以前に「おすすめのResiliency設定はありますか?」という質問を頂いたことがありますが、特に推奨設定はありません。 RFはデータをコピーするだけですので処理は早いですが、ディスク利用効率はECの方が良いと言えます。 一方でECはデータを分割しパリティを生成する処理が発生しますので、処理はRFに比べて遅くなります。
以下のグラフをご覧頂くとRFとECの特徴を捉えやすいと思います。
Cohe-rfec2.png処理性能を重視するのであればRF、ディスク利用効率を重視するのであればECを設定するとよいでしょう。

なお、RF2にするかRF3にするか / ECを何対何にするかについては、ディスクやノードの破損をいくつまで許容するかを考慮して決定します。

 

SnapTreeとは

Cohesityによるデータの「書き込み」処理を中心にご紹介しましたが、「読み出し」に関連した処理についてもご紹介します。

連載第5回でCohesityによるクローン機能をご紹介した際、弊社環境ではクローンVMの提供が10秒程で完了したとお伝えしました。 ここには「Cohesityが自身のディスク上でばらばらになっているデータを集める時間」も含まれています。

バックアップからのリカバリも含め、Cohesityは「ばらばらになっているデータを集める」能力に優れています。 これはCohesity独自の「SnapTree」によるものです。
さらにSnapTreeでは特にスナップショットの世代数上限が定められていません。 これはどのように実現されているのでしょうか。

従来のスナップショットとSnapTreeを比較してみましょう。
例えばAとBというデータから成るスナップショットがあったとして、データBが更新されるごとにスナップショットを取っていきます。一般的な従来製品のスナップショットは以下のようにデータが保持されます。
Snapshot-1.png

ここでスナップショットSnを使いたい場合、データAとBnが必要になります。 データAを参照するには、Snのひとつ前、さらにそのひとつ前、...というようにひとつずつ世代を遡る必要があります。 そうするとデータAに至るまでの「チェーン」が長くなってしまい、参照に時間がかかってしまいます。
Snapshot-2.pngスナップショットの世代数について上限が定められているケースがあるのはこのためです。 例えばVMware vSphereでは、ひとつのチェーンあたり最大32スナップショットまでがサポートされています。 さらにパフォーマンスを考慮した場合のベストプラクティスとしては2~3スナップショットです。 (詳細はVMware社のKBをご参照ください。)

一方でCohesityは独自の「SnapTree」により効率よくデータを参照することができます。SnapTreeではB+ツリーの木構造が採用されており、ポインタでデータにアクセスします。
Snapshot-3.png

データAを使う場合に以前のスナップショットを参照しなくてよいため、このぶん時間が短縮されます。 いくつもの世代数を遡ったとしても、ポインタにより迅速に実データにアクセスできるようになっていますので、特にスナップショット数の上限値が定められていません。

ストレージとバックアップサーバーが一体になったCohesityならではの強みとも言えるでしょう。

 

 

連載「かんたんCohesity」の番外編ということでDeep Diveをお送りしました。
内部仕様をご紹介したためやや複雑な内容になってしまいましたが、CohesityのDashboardはこのようなテクノロジを深く理解していなくとも利用できるユーザーフレンドリーなつくりになっています。
弊社ではCohesityの貸出機をご用意しておりますので、ぜひ一度体感頂ければ幸いです。

 

本稿をもちまして連載「かんたんCohesity」は完結です。 お読みくださりありがとうございました。

とはいえ、本連載でご紹介できたのはCohesityの機能の基礎的な部分のみです。 皆様にCohesityの良さをより深くご理解頂くべく、引き続き様々な機能をご紹介していきたいと思います。 直接お目にかかる機会もあるかと思います。 Engineer Voiceでのテクノロジ解説や検証レポート等のリクエストがありましたら可能な限り対応したいと思いますので、お気軽にお声がけください。

 

 

※ サービスや製品の仕様ならびに動作に関しては、予告なく改変される場合があります。

Cohesity関連記事の一覧はこちら

著者紹介

SB C&S株式会社
技術統括部 第1技術部 2課
中原 佳澄