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や、ツールをそろえるドキュメント。使ってフィードバックを。
  • あああ、電池ない...