JLC2010「NILFS2ソフトウエアツールの開発」をtudaったログ
- ようやく本命「NILFS2ソフトウエアツールの開発」。紹介、ツールの対応、まとめと課題。
- NILFS2を知らない人も結構いるなぁ。LCなのに。使ったことある人数名。
- NTTサイバースペース研究所で開発されたファイルシステム。2.6.30からkernelにマージ。nilfs.org。
- (あれ?logfsだってことは言わないの?)
- LinuxでのFSの仕組み。VFS。Linux利用できるFSは30数種類(NFSなどを除く)。ディスクユーティリティは8種くらいまでしかない。使うにはギャップがある。VFSを経由しないでブロックデバイスを扱うツールは4つほど。
- bootloader、ラベル/UUIDでマウント、パーティションツール、ディスクユーティリティ。
- NILFS2の説明。追記型のFS。履歴を保存する連続的なチェックポイント。空き領域作成するためのgc。システムの状態を保存しておくスナップショット。
- ディスクフォーマットの概要。ディスクをリニアなデバイスだと考える。(ってかテープからのlogfsの歴史を説明しないのか?) 追記のみをしていく。変更履歴がログという形で蓄積。追記型のFS。FSが変更されるたびにチェックポイントを生成。過去の状態を保存。戻れる。
- スペースがなくなる。リングバッファなので、gcで古いデータを削除。(差分記録ってことを説明してないから、gcの意義がわかりにくいと思うな。)
- 状態を保存するスナップショット。チェックポイントの番号で遡る。
- ブートローダーでの対応。grub2での説明。bootstrap。MBRを読み込んで、次にbootloaderの実体を読み込み、これがkernelを読んで起動する。bootloader設定にはpath名。FSを解釈する必要がある。
- NILFSでは、読み込むブートローダーのアドレスが変わっていく。nilfs2.modを追加するとFSを解釈できるようになる。kernelを見つけられるようになる。読むだけでいい。スーパーブロックやlogはNILFSではCRCを保存している。
- FS壊れてたら読めないのはあたりまえ。チェックは省く。それよりは実装を小さく。NILFSチェックポイント番号の読み出しは不可能。
- debian sidでは、grub2でNILFSが使えるようになっている。他ではだめ。glub2はGPL3で、NILFSはGPL2。ライセンスコンフリクト。なのでスクラッチで書いている。
- ラベル/UUID。mountコマンド。普通はブロックデバイス指定でマウントするが、パーティション内のメタ情報を使ってマウントするが、kernel内でのモジュール以外のところでメタ情報が読めないといけない。mount(2)がラベルやUUIDでは見てくれない。ブロックデバイスのみ。
- システムコールの前にブロックデバイスへのマッピングが必要。blkidで行う。libblkid。パーティション検知モジュールがある。ここにもnilfs2用モジュールが必要。実装した。ラベル/UUIDとも認識可能に。util-linuxにPatchは了承されたがリリースがまだない。
- パーティションツール。Parted,fdisk,cfdisk。Partedは既存のパーティションを改変する。拡大縮小。FSもサイズ変化に連動する必要がある。FSにパーティションの変化を通知して変更する必要がある。
- libparted->libfs。RAID情報なども持っているので、FS検知がモジュール化されている。実装した。認識と破壊のみ実装。ハンドラを全てサポートしなくても、徐々に機能を付けることができる。最低限やった。
- FSFがメンテナンスしている。10行以上のパッチは、FSFと譲渡契約を結ぶ必要がある。契約が終わらず、patchが受け取ってもらえていない。紙の契約書に手書きでサインが必要。grubで数週間。partedは数ヶ月たっても進まない。たぶんなくした?送り直す。まだ進まない...
- ディスクユーティリティ。palimpsest。ハードディスクの情報を表示。あんまり知られていない? フォーマット、ラベルの編集などができるGUIのツール。ディスクに対して操作を行わずdbusで別のサーバープロセスに対してリクエストを送るだけ。
- udisksという鯖部分に対してパッチを書いた。裏ではlibblkidやlibpartedを使っている。FSの検知、作成、ラベルの変更に対応した。
- パッチは出ているが、リリースは出ていない。チェックポイント指定したマウントができない。udisksにはインターフェイスがないので、対応方法が課題。
- おわり。
- 今後の課題。Parted:パーティションの拡張がNILFSではできない。フォーマット対応。NILFSの独自の機能:チェックポイントを指定したkernelのロード。Uncleanな状態からのlogのroll fowerding。
- OSSなので、個人レベルじゃないかな。RT @hutai: @kinneko おつかれさまです。わかりよかったです。FSFだと、会社の代表取締役のサインを求めるでしょうから、結構、盛合某氏、苦労しているでしょうね。 QT @kinneko: おわり。
- NILFSのFS構造の変更は当面ない。(安定度、パフォーマンスなど、一人で3回も質問してしまつた。あと何質問したっけか?) ドキュメントを書く人、backportや、ツールをそろえるドキュメント。使ってフィードバックを。
- あああ、電池ない...