StableBit DrivePool

安定稼働しているのでそろそろまとめを書いてみようかな?と思った次第。

StableBit DrivePoolとは?

drivepool09

  • ストレージプールというのを作るドライバ(サービス)です。
  • ホームページは ここ。

ストレージプールって?

  • ストレージプールというのは複数のHDDであるとか、RAIDで構成されたボリュームなどをいくつかのグループにまとめて一つの領域としてみせる手法です。
  • 爆発的に増加するデータに比べ格納できるHDD容量の進歩は劇的には変わっていません。大きいファイル置き場が欲しい、でも物理的にはない・・・じゃあ複数のストレージをまとめて一つの大きなやつに見せちゃおう!というものです。
  • 8TBのHDD10個をつかって80TBの容量を持つ1つのドライブなどを作れます。

RAID・・・(´;ω;`)ウッ…頭が

一つのHDDを複数まとめるというとRAIDが思い浮かぶかもしれませんが、運用したことがある方なら想像いただけるとおもいますけれどもRAIDは構築した後が大変です。ディスクの追加、削除・・・安易にはできません。が、ストレージプールは実在しない大きさの容量などを仮に設定することができたり、その容量内において好きにHDDを追加したり削除したりできたりと構築するにあたってRAIDのように含まれる台数を事前に設計する必要がなかったり、取り回しが良いことが多いのがRAIDと異なる点です。

ストレージプールの可用性にも気を付けなければいけないことが多い

ストレージプールのような概念のものには色々な実装があり、ストレージプールを一度作ってしまうと「サイズを大きくするのはいいが小さくするのはだめ」だとか、「やむを得ない事情でストレージプール内の一つのHDDをパソコンから外してファイルをサルベージしたい」とかいう用件があると、RAIDのように容易に触れないケースが多く、市販NASやWindows Serverの基本機能として実装されているストレージプールは一度組んでしまうと非破壊で崩すのが容易ではありません。しかし、DrivePoolはそれらの不都合がありません。

どういう人が使うと幸せになるの?

  • 動画とか音楽ファイルとかため込みまくっててHDDが1クールごとに増えていくような手遅れの人。
  • その時々でバイト単価が安いHDDに格納しているが、徐々に買い換えながら入れ替えたりしていきたい人。
  • 何かあったときにHDD内のデータが消えないようにしたい。または救い出したい。ただしRAIDテメーはだめだという人。
  • すでにデータがたくさん入ったディスクがあるが統合にあたって待避先などを用意するのが難しく、現構成から非破壊で移行したい人。

使わない方がいい人は?

  • データベースや仮想マシンの仮想ディスクを格納しようとしている人。理由は後述。
  • 業務利用しようとしている人。個人レベル使っているシステムで出し入れされるファイルが自分の目の届く範囲だとかで完全に管理できる人向け。理由は後述。

StableBit DrivePoolの特徴

NTFSなどのファイルシステムの上に被さる仮想ストレージである

drivepool03これはどういうことかというと、束ねる前の個々のHDDは普通にNTFSでフォーマットされています。そして格納されるデータはファイルベースで格納されます。つまり、このHDDをDrivePoolが動作していない他のパソコンに持っていっても中のデータが普通に読めます。RAIDなどでは許容された以上のHDDが壊れると全てのデータが飛びますよね。それに単体HDDを別のシステムに持って行ってもファイルは読み出せません。しかしDrivePoolは飛んだディスクがあったとしても、それ以外の正常なディスクは普通に読めます。

 

HDDを追加するときも削除するときもファイルは非破壊

NTFSの上に被さるような層でストレージプールが提供されるのでファイル自体は非破壊です。これはHDDをストレージプールに加える際も、外す際にもファイルはそのままの姿で存在しつづけます。

ただしファイルの配置変更機能(Balancing)があり、何も考えずに追加すると複数台のHDDにファイルがバラバラに移動されます。そのため「このHDDにはこのデータが入っていて欲しい」というようなコントロールをしたい場合は、自分でBalancingを調整する必要があります。

冗長性はファイルベースの複製(duplicate)で担保

「普通のNTFSドライブにファイルベースで入ってるんだったら、それが消えたらどうすんだ」と思われると思います。DrivePoolがどうやって冗長性を担保するかと言うとストレージプールに含めた別々のHDDに複製します。コピー数は調整することができ、たとえば3つコピーするようにすると、物理的に異なる3つのHDDにコピーが作成されます。格納した実ファイルの容量の倍以上がストレージプール全体としては消費されるわけで、RAID5のようなものと比べると効率という点では劣ります。

ファイルベースコピーなんだったらアクセス速度が遅いんじゃないの?

このように思われた方、するどい。この仕組みだと書き込み速度がRAIDのように速くなったりしません。常にHDD1台に対しての書き込みになり、並列書き込みはされないためパフォーマンスが上がりません。ただし複数作成されたコピーファイルを並列で読むことはできるので読み込みは速くなります。また複製作業はアイドルタイム(あるいは手動で明示的に行うことも可)に行われるのでそのせいで遅くなったりなどはありません。加えて階層化設定を行えば緩和できますがこれについては後述します。

データベース、仮想化システムのストレージには向きません。ファイルベースであるので巨大なファイルが複製され、かつ頻繁に更新がおこなわれるので要件に合いません。これらのシステムでパフォーマンスが要求されるのであれば「ブロックレベル」で動くストレージプールシステムが必要ですが、DrivePoolはそうではありません。ファイルサーバーやメディアサーバーといった用途にはあいます。

フォルダやファイルがダブらない(重要)

例えば2つのHDDに、「Movie」という「同名フォルダ」があったとします。これを一つにまとめた場合、どのように見えるのでしょうか?

期待する結果としては「同名フォルダは1つだけ見え、複数HDDの中にあるファイルが全てマージされた内容が見える」ことでしょう。ただ、案外これをクリアするものが付け外しが容易なストレージプールにはありません。DrivePool以外で個人レベルで購入できる価格帯のソフトウェアではTiger Technology製のpoolitというものなどが可能でしたが、昔のFTPdなどで仮想フォルダ機能を持つもののような古い実装の中には以下のようになるものもあります。

  • 同名のフォルダが複数見えてしまう。そして中に入っているものがバラバラ。
  • フォルダは1つだけ見えるが片方のHDDの内容だけしか反映されないとか、ファイルが重複する、あるいは重複しているのに見えない。

つまり束ねることはできるが整合性を持って統合することができないのですが、DrivePoolではこれらがクリアされています。

階層化

パフォーマンス云々については階層化という概念をDrivePoolで利用すると幾分解消できます。

drivepool06

このように複数種別のストレージが重なった構造となっているため階層化といいます。

DrivePoolでの階層化設定

  1. BalancerオプションでSSD Optimizerプラグインを有効
  2. 処理順序を上位に設定
  3. プラグインオプション内でSSDドライブに対し「SSD」にチェックを入れる
  4. HDDは「Archive」にチェックを入れる

書き込み動作が行われると以下のような処理が行われます。

  1. まずSSDにファイルが書き込まれる。
  2. 書き込まれたファイルのコピーがArchiveに指定されたHDDに順次作成される。
  3. 使用頻度の高いファイルはSSDにとどまる。
  4. 使用頻度の低いファイルはSSDから消える。

SSDドライブがキャッシュドライブになり、書き込みパフォーマンスはSSDが溢れるまで常にSSDの速度で行われるようになります。つまり容量はHDDが何台も連なった巨大さでありながらも読み書き速度がSSD並になるという嬉しい構成になります。

”Archive層をRAIDで構築する”方法もある

実はHDDを単体で使うのではなくRAID1/0などの速度重視のボリュームとしてストレージプールに追加することもできます。ストレージプールのパフォーマンスを気にする場合はそういうアプローチもありますが、ストレージプールとは別のシステムを2重に管理することになり煩雑さが増えます。SSDを前段に置く方がシンプルなのでおすすめ。

運用で気を付けなければいけないこと

フォルダパスの文字数制限

ストレージプールに加えたHDDを単体でみると、次のようなフォルダ構成になります。

drivepool07

ルートディレクトリに「PoolPart.XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX」というフォルダが作成され、以下にストレージプールとしてみたときのルート構造が入ります。

このとき何が問題になるかというと「Windowsのファイル名の最大長」の制限に届きやすくなるのです。

ストレージプールに対し長大なファイルパスで書き込みをすると、一端問題なく書き込まれたように見えるのですが「実際にはPoolPartホニャララのパスの下」に作成され、そこに格納された時点で「ファイル名の最大長」に達する事があり、このとき次のようなことが起こります。

  • 正しく書き込んだつもりのファイルにアクセスできなかったり削除もできなくなる。
  • DrivePoolのダッシュボードをみると「Other」と表示された、Duplicateされないファイルがいつの間にか増えている。

この状況は日本語名でファイルを作る習慣があるとか、クラシック音楽のように長大なタイトルになる曲をファイル名やフォルダとして使用しているときになりやすく、気がついたときにちゃんと書き込まれていない、複製されていないという事態が進んでハードウェア障害が起きたときにバックアップが無いことに気づくという最悪の結果を招く場合があります。

この問題のやっかいなところはストレージプールに書き込みする時点では気がつかないことにあり、「Other」(もちろんUnduplicatedも)の値について細心の注意を払う必要があります。ありがちなケースとしては、ファイル名の最大長についてLinuxとWindowsでは異なる部分であるためLinuxベースのNASなどからデータを移行したときに顕在化することがあります。

また、ファイルやフォルダに長大な名前を付けないようにするという習慣が利用者に無ければなりません。ストレージプールのような巨大な領域は業務用として使う場合はファイルサーバーということになると思いますが、一般的にいってこのようなことを気にしながら使っている人はほとんどおらず、パソコンに詳しくない人ほど「人間が見てわかりやすい名前」を付けようとし、長いファイル名などをつける傾向があります。管理者がこれらに目を行き届かせることは事実上無理があることが業務用に適さない理由です。

「Other」表示についての補足

drivepool08

注意点として、「Duplicated」でもなく「Unduplicated」でもない「Other」という表示については、必ずしもファイル長問題とは該当していない場合があります。ここに書かれていますが、NTFSメタデータやシャドウコピー領域などのシステム上必要な領域が該当する場合があります。

 

 

 

 

 

市販ストレージを超える領域を手に入れよう

市販NASはクラウドサービス連携やメディア機能などの強化へ舵を切り差別化を図り始めた製品が目立ちますが、やはりその本業はデータをストアすることでしょう。

それらの付加価値と製品価格にあまり納得がいかないでいるとか、自作のWindowsサーバーにHDDを何個もつなげて使っているような方にはDrivePoolがおすすめです。