SSD Cache いろいろ

自分は SSD & PCIe-SSD の使われ方を以下の 3 通りに分類している。

  1. SSD & PCIe-SSD をローカルマシンに接続して主なデータ(プライマリーデータ)の置き場として使う。個人が高速な HDD として SSD を使ったり、OLTP 用途に使うのがこれ。
  2. ローカルマシンは大容量の HDD が接続されたり NFS/CIFS や iSCSI/FC/InfiniBand などで接続される外部ストレージ装置に繋がっている。この時、SSD & PCIe-SSD をさらに追加してプライマリーデータのキャッシュ領域として使う。
  3. 外部ストレージ装置が HDD の替わりに SSD や NAND Flash を載せる。あるいはストレージネットワークの階層の中で SSD & NAND Flash を使った高速 & 小容量のストレージ装置とニアライン SAS などの低速 & 大容量のストレージ装置を階層化して使う。

この中で最近 2. に関係する製品が急増している。

こういう SSD cache はさらに 3 タイプぐらいに分かれている。

  • (A) Intel Smart Response Technology (SRT) のようなローカル HDD を小容量の SSD でキャッシュする製品。主にコンシューマ用途で信頼性は低い。
  • (B) ローカルな大容量 HDD を比較的な大容量な SSD & PCI-e でキャッシュする製品。HDD も SSD もローカルサーバ内で閉じたソリューションなので、サーバがダウンした場合はサービス継続はできない。Write-through/write-back はオプションで選択できる。
  • (C) ネットワークストレージのデータをローカルサーバでキャッシュするサーバサイドキャッシュ。データ自身はサーバの外部にあるので、サーバ故障時には別のサーバに切り替えてサービスを継続することができるような冗長性が考えられているものが多い。そのため write-through となる。
  • (D) (C) の特殊な用途として VMware ESXi/vSphere などの仮想マシンの下部で働くサーバサイドキャッシュがあり、SAN & NFS 上の VM イメージをキャッシュできる。VMware vMotion などの VM migration での使用を前提にしているため、キャッシュは write-through となる。

Intel Smart Response Technology (SRT)

Intel が開発した HDD を SSD でキャッシュするテクノロジーで (A) タイプ。チップセット(Z68 と Z77 のみ。X79 はダメ) と BIOS が対応し、OS にドライバをインストールする必要がある。対応 OS は Windows のみ。
アルゴリズムの詳細は不明。Write-back と write-through の両方が選べる。

DataPlex (Nvelo 社)

これも (A) タイプの SSD キャッシュで、市販の SSD にバンドルされている。Windows のみの対応のようだ。

サーバ向けの製品もあるようだが詳細は不明。

Flashcache

Facebook 社が開発した Linux の device mapper 層で動作するキャッシュドライバ。ブロックデバイスDRAMSSD でキャッシュすることができる。現在は OSS。キャッシュ対象はブロックデバイスであれば HDD でも iSCSI 上のボリュームでもよい。

Bcache

Bcache は flashcache と同様の Linux の device mapper 層で動作するキャッシュドライバ。Bcache は SSD をキャッシュにする場合には電源遮断時にもデータが失われない特徴を持つ*1OSS

TIER

lessfs の人が開発中の Linux の device mapper 層で動作する tiering ドライバ。Flashcache や bcache と似ているがこれらはキャッシュ(cache) つまり HDD に真の primary data があり、SSD は一時的なコピーデータという位置づけだ。一方、tier では HDD と SSD はともに真のデータの置き場であり、アクセス頻度に応じて HDD と SSD でデータの移動をさせている。OSS。まだ完成度が低い。

Directcache (Fusion I/O 社)

Fusion I/O が Flashcache が改良した製品。売り物。

HyperCache (Velobit 社)

(C)、(D) タイプの SSD キャッシュソフト。

VFCache (EMC 社)

PCI-e SSD とそれに附属するキャッシュソフト(id:nminoru:20120209:VFCache)。(C)、(D) タイプのキャッシングが。キャッシュアルゴリズムは write-through cache。

ioTurbine (Fusion-io 社)

(D) タイプ。VMware ESXi/vSphere 4/5 下で動作する仮想マシン向けサーバサイドキャッシュ。ioDrive を付けることを想定している。
ゲストにエージェントを入れることが必須なのが特徴である。そのため現在はゲストが Windows Server しか動かない*2。その代わりゲスト上のデータのどの部分をキャッシュして、どの部分をキャッシュしないかきめ細かく指定できる(ドライブ/パーティション/ファイルを単位として指定可能)。そのため性能は高い。キャッシュアルゴリズムは write-through cache。

Auto Cache (Proximal Data 社)

(D) タイプ。Auto Cache も Hypervisor (VMware) の下に入るサーバサイドキャッシュ。
キャッシュアルゴリズムは現在は write-through cache。

*1:Flashcache は SSD をキャッシュにした場合でもデータが失われることがある。

*2:エージェントに対応していないゲストも hypverisor 上で動作させることはできるがキャッシュは利かない