@_hito_さんのLinuxファイルシステムの話を聞こう

8
hito @_hito_

Linuxのファイルシステムの話をしよう。まずext3。拡張を使っても16Tに壁がある。3TB HDDを使ったと仮定して6台でアウトなので、RAID6で8台構成にすると壁にあたる。

2012-07-23 23:17:45
hito @_hito_

そしてext3にはとっても厄介な問題として、「削除がジャイアントロック」という呪いがある。ファイルがたくさんあるディレクトリを消そうとすると、その間システム全体のI/Oがロックする。泣ける。

2012-07-23 23:18:33
hito @_hito_

次。"Killer" fsとして有名なReiserFSさん。ハンスさんが殺人で捕まったので開発が続かない上、ハンスさん以外には手を入れたくない感じが全開の箇所がいくつかある。

2012-07-23 23:19:40
hito @_hito_

アクまみれなのになんでmainline入りしてるかっつーと、今BtrFS作ってるMasonが泣きながら(かどうかは知らないが)リファクタしまくったから。

2012-07-23 23:20:17
hito @_hito_

ReiserFSには「マウント時に暗黙でfsckを走らせる上、fsckはリーフノードに格納されたファイル( < 4KB)に問題がある場合はnoticeなく消す」というカオスを誘発する呪いがかかっている。

2012-07-23 23:21:14
hito @_hito_

次。XFS。世代によってアロケーショングループ(≒可能なロックの数)の実装が違うとかいろいろ呪いがあるが、旧世代のはAGが32までで、33並列以上をVFS以外の経路でI/Oすると死ぬ。

2012-07-23 23:22:28
hito @_hito_

「VFS以外の経路」つーのは要するにkernel NFSのこと。あと断片化が激しくなったりすると古いカーネルだと死ぬ。スタックがでかくなりすぎて死ぬ呪いはつい最近治ったけど、古代のやつはNFSとかLVMと併用するといい感じに負荷時に死ぬ。

2012-07-23 23:23:34
hito @_hito_

もしXFSで納品されたシステムがあるなら、次のような質問をしてみよう。「これreclaimコンテキストでスタック突き破ったりするバグ治ってます?」 これを聞いてトラウマに刺さった感じの超嫌そうな表情をした技術者を抱えているあなた、おめでとうございます。その人は信用していいです。

2012-07-23 23:26:17
hito @_hito_

あとなんか現状で使われる余地のあるローカルファイルシステムあったっけ。BtrFSとJFSについてはノーコメントで済ませたいのだけども(ぉ ああext4か。

2012-07-23 23:29:38
hito @_hito_

XFSネタで忘れてた。fsck時に1TBにつき1GBの物理メモリが必要な呪いがかかってる。reclaimコンテキストでお亡くなりになる問題とあわせて、メモリとか空きpageが潤沢な環境でないと総じて死ぬ。

2012-07-23 23:36:03
hito @_hito_

ちなみにXFSには断片化するとツリー参照コストが爆発するという欠点があるので、断片化させにくいように事前予約をかけながらIOしたりできるようになってる。しかしそれを使った実装がRFIOしかないので、ほとんどHEP方面でしか使われてない気がする。

2012-07-23 23:40:36
hito @_hito_

@suzumura_ss ああ。ちなみにext4がネタになってないのは他のと違ってアホほど使い込んでないからです。ぶっちゃければ「今のLinuxにNTFSレベルにマトモなファイルシステムなぞない」。

2012-07-26 01:06:24