Previous ToC Next

67. ファイルサーバ (2009/1/1)

スーパーコンピューティングというからには、計算結果とかも大量にでる、と いうことが普通はあるわけで、高速で大容量のストレージ、というものが必要 になってきます。現在私がセンター長(正式名称は「プロジェクト長」)をやっ ていることになっている国立天文台のシミュレーション用計算機センターであ る「天文シミュレーションプロジェクト」のストレージシステムを例に、HPC 用計算機センターにおけるストレージシステムの需要はどんなもので、どのよ うなシステムを提供するべきか、というのを考えてみます。

その前に、他のところはどんなふうか、というのをみてみます。 筑波大学の T2K システムでは、DDN のデュアルヘッドのファイルサー バ S2A9550 を5台用意し、それぞれに240台づつディスクをつけて、 RAID6 で 合計800TB のシステム、と書いてあります。ディスクが 750GB とすると 800TB は多いし、 1TB とすると少ないのですが、まあ、その辺りのディスク を多数つけたシステム、ということです。接続は 9550 と OSS(Lustre ファイ ルシステムにおけるデータノード)の間が多分ファイバチャネル 4 本で、 16Gb/s とか、5台合計で 80Gb/s (デュアルヘッドの使いかたによってはこの2 倍)となります。ディスク容量は東大で 1PB、京都が 800TB と、なかなか足 並みがそろった構成です。転送速度もそれぞれ 10-20GB/s と思われます。

9550 は4U のユニット1つに48台ディスクが入るような気がするので、ラック1 本で480ディスクまでいけるのではないかという気もしますが、、、、全部は 埋めてないということでしょうね。

さて、この 10-20GB/s というのはどういう速度かというと、ピークがでるな ら1分で 1TB, 1 時間で60TB 転送できる速度ですから、フルスピードで書くと 10時間でディスクを全て一杯にできる速度です。これは、明らかに

のどちらか、おそらくは両方を意味しています。

実際問題としてシミュレーション用の計算機センターのストレージがどういう ものであるべきか、というのは、現代においては非常に難しい問題になってい ます。これは、大容量低価格のオフラインデバイス、というものが事実上存在 しなくなったためです。

20年ちょっと前、私が東大の計算機センターを使っていたころのことを考える と、ユーザーに割り当てられたディスクスペースは標準では 10MB で、なんか 申請したら 40MB に増えたような記憶があります。それ以上は、1週間毎に消去 されるワークディスクと、磁気テープです。当時の磁気テープはオープンリー ルの、6240 bpi, 2400フィートのものでしたからこれで 170MB くらい書けた 計算です。 が、私がいた駒場にあった計算機のテープドライブは 1600BPI しか読み書き できなかったので、私が使っていたのはそっちで、40MB くらいが書けた、と いうことになります。まあ、1600BPI しか使えなかったのは駒場にいたからで、 普通は 6250BPI が使えます。そうすると、当時の S-810 の主記憶が 256MB だったので、主記憶一杯くらいのデータがテープ一本に書けたことになります。

現在はテープはどういう感じかというと、例えば HP の StorageWorks (と書い てあると旧 DEC ですね、、、)では、 LTO4 という形式のテープが使えるそう で、これは1巻 800GB です。で、それは良いのですが、価格が現時点で18,000 円となってます。つまり、少なくとも 2009年初めの時点では、このテープは SATA のハードディスクよりもビット単価がかなり高いわけです。現在は 1TB や 1.5TB のディスクはGB単価が 8円前後ですから、ほぼ 1/3 です。速度、信 頼性でディスクが劣ることはないですし、SATA のインターフェースがついてき て別にドライブもいらないわけですから、現在はテープというものは全く意味 がないものになっているわけです。まあ、多分、少し軽い、ということはある かもしれませんが、 2.5インチ 500GB のディスクでもビット単価でテープよ り安いので、これも現在ではメリットになりません。

昔の計算機センターで、ユーザがテープに書いてデータを研究室に持ち帰った りしていたのは、別に研究室にテープドライブがあるからではなくて、単に 計算機センターに置き場がないから、というケースのほうが普通だったと思います。 もちろん、自分が普段使っている計算センターとは違うところで大量に計算し た時には結果をテープで運ぶとかするわけですが、基本的には保存したデータ をまた処理する時には計算センターにテープをもっていってディスクにコピー するわけです。

もちろん、最近はユーザーの手元にも強力なパソコンがあるので、データを運 ぶ方法としてディスクを、というのは現実的な話です。ネットワークはSINET3 のバックボーンでも結果のところ 10Gbps くらいなわけで、通常のユーザーが 現実的に使えるのは運が良くて 100Mbps といったところでしょう。これだと 1TB に1日で、もうちょっと運が悪いと1TBに何日もかかるわけです。

まあ、これは、アカデミックなネットワークでこういうご家庭でも使えるよう な速度しかでないのが問題ではあるのですが、とりあえず当面これは急激に改 善されるというわけにもいかないと思われます。

こういう状況下で、計算センターとしてはどのような対応をするべきなのか、 というのは、まだどこでもあまり考えられていないような気がします。つまり、 上の T2K システムがそうであったように、今年度調達の国内のシステムだと典 型的には 100 Tflops に対して 1PB 程度のディスクを 10GB/s オーダーの速度 で、となっています。海外の例でも ORNL Jaguar が 1Pflops に対して 240GB/s、 10PB というところです。システムの価格が 50-200億なわけですが、 生のディスクのコストは 0.2% 程度になります。もちろん、これらのシステム を調達した時にはディスクは現在の価格の2-3倍しましたが、それでも 0.5% というところです。つまり、生のディスクの価格で見る限り、ストレージに掛 けているコストは恐ろしく小さいのです。

もちろん、上で繰り返し「生のディスクの価格で見る限り」と書いたのは要す るにそういうことで、実際の調達価格はだいぶ違うでしょう。例えば、富士通 のディスクアレイ ETERNUS8000 のフルサイズのラック1本のモデル (モデル 1200) は、値段が1億2000万から、となっています。これでディスクは 1000台 しか入らないので、ディスク1台あたり 12万円するわけです。つまり、これを 買うだけで生のディスクの10倍のお金を払っていることになります。ディスク のほうが匡体より安いということもないとすると、ディスクも1台10万円くら いで売っているのではないかと思われます。そうすると、生のディスクのが大 体 20倍のコストがかかっていることになり、システム全体に占めるコストも 5% 程度で、まだ小さいような気もしますがそれなりに普通のところです。 ちなみに、DDN の機械は ETERNUS に比べて桁でとはいいませんがはるかに安 い、というのはここで強調しておきます。

このことが意味しているのは、大規模なディスクアレイ装置というのが、コス ト的に見合うものではなくなった、ということです。その大きな理由が、ディ スクドライブの単価の低下です。20年前には大容量のディスクドライブは1台 100万円とかしたわけですから、それを1000台、あるいは 100台でも入れるこ とができる機械が1億円してもなんの問題もありませんでした。しかし、 10年前にはビット単価が最も安いドライブの価格は2万円前後となっており、 それが最近は1万円を切るようになっています。ですから、1000台のディスク をつける装置は 1000万円を大きく切るのでないと、ディスクよりも箱やコン トローラのほうが高い、という良くわからない状況になってしまうわけです。

例えば、Dell のサイトで PowerVault MD3000 を選んで 1TB ディスクが 15 台はいった構成にすると 150万円とかでてきます。箱が50万、ディスクが1台 6万5千円です。デスクトップの機械に 1TB のディスクをつけると3万円ちょっ となので何故2倍もするんだと思いますが、ビット単価にすると Dell ですら ディスクだけの販売価格で秋葉原価格の8-9倍、箱を入れると 12倍になるわけ です。

もちろん、実際に Dell の営業にきいたらもっと全然安い、とかそういう話も ありますが、しかし、それはせいぜいファクターで、10倍違うのはどうにもな りません。また、 Dell ですらこの状況ですから、他のメーカーや SIer は これよりもさらに高いものを提供してくれているわけです。

では、構築の手間その他を度外視した場合に、例えば 1PB 程度のストレージ はどの程度のコストで組むことができるのでしょうか?実際問題として、こう いった話は真っ当な計算機センターの人よりも2ちゃんねる自作板の住人のほ うが適切な情報をもっていたりするようです。以下は私の経験に基づくもので、 完全に一般性があるわけではありません。

安く大量にディスクを動かすためには、まず安い箱、というのが重要です。こ れは、実は殆ど選択肢がありません。殆どの箱は現在のディスクの価格から見 るととても高価なものだからです。かろうじて許容範囲なのはセンチュリーの 「裸族のマンション」くらいでしょう。これは5台収納で3000円以下です。

ディスクを制御するには基本的には単に普通の PC を使えばよいわけです。で、 これに本当に沢山ディスクをつけるなら、 SATA ポートマルチプライア対応の raid カードをつける、ということになります。ポートマルチプライアは、玄人志向 のものや MAXSERVE の NA-910C で、5ポートで1万円前後です。Raid カードは 色々ありますが、例えば Highpoint RR2522 とかだと8ポートで、最大 32台ディ スクがつくとメーカー Web サイトには書いてあります。なお、この RAID カー ドは現在のところ5万円くらいして、PC1台よりも高い、というところには 注意するべきかもしれません。とはいえ、 PCIe x8 が4枚くらいささるマザー ボードを使えば、これでディスクが 128台、8台毎に RAID6 にする構成でも 1.5TB ディスクを作るなら 144TB になり、これを7台で1PB を超えることにな ります。

この構成だと、1組みあたりコストは

 1.5 TB ディスク 1.2万 128台        154万
 ポートマルチプライア 1万 32個      32万
 RR2532 raid カード   5万 4枚       20万
 ホストPC                           5万くらい?
 電源ユニット         2万くらい 8個 16万
 合計                                230万くらい
 ディスク1台当り                    1.80万
となって1500万円くらいで 1PB のストレージになります。但し、このシステ ムの最大の弱点は、ネットワークです。まあ、それでも、PC それぞれに 10GbE のカードをつければ、100万円程度の追加コストで 70Gbps にはなるの で、 T2K システムくらいの性能はハードウェアとしては出ることになります。 少し違う例としてポートマルチプライアを使わないで多ポートの raid カード を使うことにすると

 1.5 TB ディスク 1.2万 64台        77万
 RR2340 raid カード   5万 4枚       20万
 ホストPC                           5万くらい?
 電源ユニット         2万くらい 4個 8万
 合計                                110万くらい
 ディスク1台当り                   1.712万
で、ノード数が増えるのですがこっちのほうが少し安いです。オンボードの SATA ポートが8あるマザーでマルチプライアをつけると

 1.5 TB ディスク 1.2万 40台        48万
 ポートマルチプライア 1万 8個      8万

 ホストPC                           5万くらい?
 電源ユニット         2万くらい 3個 6万
 合計                                67万くらい
  ディスク1台当り                   1.675万
となってさらにほんの少し安くなります。但し、性能的には、Raid カードを 複数つける構成のほうが余裕はあると思われます。

保守とかいろんなことでこういう構成には問題がないか?というのはもちろん あって、富士通とかがサポートしてくれるわけではないので人手がかかりそう です。が、所詮 PC 10台とか20台なので、経験がある人なら一度組んだ後のメ ンテは 0.x 人くらいでできる話でしょう。もちろん、それにはスペアの適切 な構成とか、障害の自動通知、予備的なディスク交換とかのノウハウが必要で す。

ディスクが 1000台ともなると、消費電力も大きな問題です。 これは、

の2つの問題があり、例えば必要な電源容量を決めるのは前者だったりします。 2ちゃんねるの報告では Seagate の現在の 1.5TB 品は起動時 35W、アイドル でも12W なんだそうで、アクセスしていると 20W くらいかもしれません。そ うすると、1000台あるだけで 12KW と、決して馬鹿になりません。Seagate の データシートにはアイドル 8W、シーク時10W、スタンバイ 0.9W、スリープ 0.9W と書いてあるらしいので、スタンバイにできれば1000台でも 1KW となっ てまあ小さいことになります。これは、RAID カードのほうがサポートしてい るようなので、例えば数分アクセスがなければスタンバイになるようにしてお いて、OS が邪魔しなくてちゃんとスピンダウンすればよい、ということのよ うです。1Wまで落ちるなら、それ以上頑張る必要もなさそうです。

さて、生で容量や速度があるのは良いとして、ユーザーからどう見えるべきで しょうか?もちろん、なるべく単純なほうがよい、という考え方からすれば、 例えば、ユーザーから見えるディレクトリは

   /home/foo
   /work/foo
の2つくらいで、 /home はソースプログラムや実行ファイル、 /work は計算 結果等を置いて、 Lustre や PVFS、 pNFS 等を使った並列ファイルシステム になっているのがよいのかもしれません。しかし、サポート、メンテナンスに あまり人手を使いたくない時にそういうシステムがよいか、というのは難しい 問題です。特に問題なのは、 (pNFS は知らないですが Lustre, PVFSは)基本 的に耐障害性のための機能はなく、各ノードがちゃんと動くことを前提にして いることです。つまり、もちろん RAID 等でなんとかしているはずとはいえ、 ノード1つがなんらかの事故によって完全に失われると、全てのユーザーの全 てのデータが死んでしまう可能性があります。まあ、もちろん、これは全ノー ドを使って単一の Lustre や PVFS システムを組んだ場合の話で、分割すれば よいのですが、元々10-20ノードしかないのであればそれを複数の並列ファイ ルシステムにするのもどんなものかという気がします。逆に、ノード毎に別の ファイルシステムにして、各ノードになるべく少ない人数のユーザーを置くよ うにすれば、どれかのノードが完全に死んでも、そこを使っていたユーザー以 外には被害がないわけです。

容量の観点からは、この方法であまり問題はありません。ノード1つで全体シ ステムの 1/10 程度あるわけですから、大口ユーザーでも十分です。問題は 速度です。まあ、 1GB/s で書き込みができれば、100TB でも1日で一杯にでき るわけなので実はあまり問題がないような気もします。

もちろん、国立天文台でも約 800 ノードの Cray XT4 をもっているわけで、こ れが計算結果を書き出す先としては 1GB/s はいくらなんでも貧弱です。現在の 天文台の構成では 1 ラックの DDN システムがあり、 4Gbps の FC 8本で XT4 の I/O ノードにつながっています。これは 60TB のディスクをもち、他に大容 量のデバイスが低速にしてもオンラインで利用可能ならワークエリアとしては 十分でしょう。

実は、今回のシステム調達では、この 60TB (仕様書には 20TB と書いたよう な気もします)の高速ディスクはレンタル契約に含まれるのですが、大容量の ストレージやテープドライブは仕様に含めていません。これは、2年前に我々 が仕様を作っていた段階でも、 SATA ディスクドライブのビット単価が急激に 低下するので、5年レンタルでそんなものを導入するべきではないこと、また、 通常の HPC ベンダーからディスクを導入した場合には恐ろしく高価なもの になることがはっきりしていたからです。

思い付くままに書いたのでかなり長くなりました。要点を整理すると

といったことになります。

耐障害性を高める方法は、

といった方法が考えられます。商品では、Panasas のシステムは実効的に ネットワークにつながったサーバーノード間での Raid になっており、 信頼性の高いシステムを提供しているようです。

なお、RAID5 システムの結構大きな問題は、再構築に失敗する可能性がそんな に低くない、ということです。どういう場合にこれが起こるかというと、どれ かディスクが死んだとして、それを交換して残りのディスクから再構築をする わけですが、残りのディスクのどこかにセクタエラーがあるとかいう場合です。 原理的には、これは、 RAID を単純なパリティ方式ではなく ECC にすれば解 決するような気がします。 その昔の Thinking Machines の DataVault ディ スクでは、39台並列動作するディスクで32ビットデータをとる方式でディスク 間 ECC を実現していました。例えば 16+6 とか(8+5はメリットが低いような 気がするので、、、原理的には11+5が可能?) の構成では RAID6 で 6+2 に比 べて大きなデメリットがあるわけではないので、こちらのほうが明らかに望ま しいような気がします。

現在の Linux Software Raid はパリティディスクしかサポートしていません が、これを ECC にするのは原理的にはさして難しいこととは思えないのです が、、、、

まあ、今時なら、 iSCSIかNBD の上に並列ファイルシステムを実装して、そこで ECC を、とかいう話かもしれません。FUSE で誰か作るとか。もちろん、並列 ファイルシステムって既に一杯あるので、新しく作るのは?という気もします が、HPC 用のってデータベース用とかとは全然違って、必要な機能が根本的に 少ないので、専用に実装するほうが簡単そうです。
Previous ToC Next