reiser4 on LANDISK

今日は、明日の朝10時、半蔵門オフィスとか言われた(らしい)。
起きて出かけるのが面倒なので半蔵門に泊まり込むことにした。
自宅より用賀より広い作業スペース、かつ、遊ぶものが少ないので
作業環境としてはいいのかも。
さて、表題。
自宅のLANDISK上に、debian26環境を使ってreiser4のファイルシステムを
乗っけてみたのでメモを残そうか、と。
今まで、LANDISKを使って感じていた不満点は
・kernel2.4ベース
・smbのバックのファイルシステムがext2
ということだった。ext2は、フラグメントが出来にくいとはいえ
128MBを越えるファイルでは、必ずフラグメントが起きてしまうし
ファイルの生成消滅を繰り返すとそれは酷くなっていってしまう。
LANDISKは、ファイルサーバに特化しているためCPUが貧弱であり
フラグメントが大きくなったときのパフォーマンスは実はかなり悪くなる。
解消する手段は、ファイルを全部移動して書き戻すしかない。
# ext2用のデフラグもあるのだけど、SH用のバイナリが無くて
# 昔、コンパイルしようとしたけど、自力では問題解決出来なくて断念した
何とかならないものかと、思っていたが、ちょっと凝ったことをしようと思うと
HDDを取り出して別のシステムを入れてしまう、とかになってしまう。
これは「面倒くさい」。
では、と。別のシステムをHDDの現行のシステム上に作ってchrootでその環境を動かす
なんて方法もある、これはやってみたが元のシステムが残ってしまい
メモリ、システムリソースの観点からも、
それでは「面白くない」。
と、思っていたところに、最近kexecのような仕組みで電源を落とさず
カーネルだけをスイッチさせてkernel2.6のシステムを動かそうという
debian26なる試みがあるのを知った。
これを使えば、chrootのように呼びだし元のシステムイメージが残ることはなく
新しいシステムのインスタンスだけが起動するということだ。
ある野望を抱えて、これをやってみることにした。
野望とは「reiser4の利用」である。
パフォーマンスがよい(負荷は高いらしいが・・)という噂がありつつも
(主に政治的理由から)まだ、カーネルのコアに取り込まれていないreiser4。
これは、カーネル2.6に対するパッチという形で提供されているのでカーネル2.6の
環境に移行できれば試す事ができる。
ついでに、sambaもバージョンが上がるので今まで抱えていた、MacOSX(Tiger)での
日本語化けの問題も解消できるはず。
では、その手順。メモなので自分が後でみて分かる程度で。
分かる人は、こんなの見なくても出来るはずだし。
1.telnetdの導入
  何はさておき、telnetdの導入。Webインターフェースから出来るので簡単。
  SSHは、パーティション整理で問題があるのでお勧めできない。
  ページはココを参考に。
2.パーティション整理
2.1.パーティションの削除と作成
  環境構築後、共有ディレクトリはreiser4を使いたいのでパーティションを増やす。
  その際、現行のファイルシステムを壊すので注意。データは自分で待避のこと。
  fdisk で、/dev/hda を覗き、primary partitionの3を消して
  新しく3を10GB、残ったサイズを4に分けてやった。
  取りあえず、3,4共に、mkfs -t ext3 でファイルシステムを作っておく。
  /dev/hda3に新しいdebian26環境を構築し
  /dev/hda4に新しい共有ディレクトリとする予定。
  /dev/hda3は、reiserなどにしたりも出来るはずだがデフォルトのシステムから
  普通に見えた方が何かと都合がよいのでext2互換とする。
2.2.システムツール復活
  オフィシャル環境では、いくつかツール、設定が/dev/hda3に入っているのでこれを復旧する。
  Webインターフェースのトップページにアクセスすると、
  「環境が壊れているので内蔵ディスクをフォーマットするか?」という旨のメッセージが
  表示されるので素直に従って、内蔵ディスクのフォーマットを行う。
  これにより、/dev/hda3が10GBでフォーマットされる。
3.debian26環境の構築
  LANDISKで漕ぎいでな~♪のページを参考に
  debian26環境の構築と、セルフコンパイル環境の構築まで行う
4.カーネルのリビルド
  上のページを参考にdebian26環境を構築するとreiser4の使えない(普通の)カーネルで
  起動するシステムができあがる。
  そこで、カーネルだけを差し替えてreiser4が使えるようにしたいと思う。
4.1.ファイルの取得
  カーネルは、ココから取得する。
  現時点では、linux-2.6.13-sh-landisk.0.7.tgz を取得することになる。(debian26の環境に合わせて)
  取りあえず、
  > cd /usr/src
  > tar zxfv linux-2.6.13-sh-landisk.0.7.tgz
  で、展開しておく
  これに、reiser4が使えるようになるパッチを当てる。
  これは、-mmのパッチを当てればよいので、ココから取得する。
  カーネルのバージョンが合ってるものを取ってくること。
  今回利用したものは、2.6.13用なので
  2.6.13/2.6.13-mm3/ から 2.6.13-mm3.gz を取得した。
4.2.パッチの適用
  これを、カーネルソースに適用する。
  > cd /usr/src/linux-2.6.13.2
  > gunzip -c 2.6.13-mm3.gz | patch -p1
  途中いくつかミスるが無視。landisk関係では出なかったので良いだろう。
4.3.カーネルオプションの設定
  次にカーネルのコンフィグ
  > cd /usr/src/linux-2.6.13.2
  > make menuconfig
  実は、この先のコンパイルでいくつかエラーが出るのでチェックを外した項目がある。
  ・BusOptions>PCCardSupport
  ・DeviceDrivers>CharacterDevices>SerialDrivers>SH SCI(F) serial port support
  PCCard何て使わんし、シリアルポートも使わんから別に外しても問題なかろう。
  reiser4サポートのために必要なオプションは
  ・File systems>Reiser4
  もひとつ、興味があるので
  ・File systems>Network File Systems>Plan 9 Resource Sharing Support
  も付けといた。nfsよりもパフォーマンスがよいという噂なので。
4.4.カーネルビルド
  で、カーネルのコンパイルを行う。
  > cd /usr/src/linux-2.6.13.2
  > make
  これで完了。2.6から簡単になったもんだ。実際、ビルド時間は相当かかるけど。
  モジュールのインストールは、
  > cd /usr/src/linux-2.6.13.2
  > make modules_install
  これは、2.4の時代から変わらない。
4.5.カーネルの差し替え
  では、debian26標準のカーネルと差し替えてみよう。
  /boot に入っているファイルだ。
  > cd /usr/src/linux-2.6.13.2
  > cp arch/sh/boot/zImage /boot/vmlinuz-2.6.13-sh
  > cp System.map /boot/System.map-2.6.13-sh
  ホントは、いざというときのため変更前のは保存しとくべきだけど面倒だから書かない。
5.新しい環境の起動
  では、kexecを使って新しいカーネルを立ち上げてみよう。
  > kexec /boot/vmlinuz-2.6.13-sh
  暫く待つと、新しいカーネルが起動してtelnetが接続できるようになるはずだ
6.reiser4ツールのコンパイル
  debian26環境のapt-getでは、reiser4を作るためのmkfsが入手できないので
  これをソースから導入する
  ソースは、ココから落としてくる
  必要なものは、
  ・libaal
  ・reiser4progs
  で、現時点では、libaal-1.0.5.tar.gz と、reiser4progs-1.0.5.tar.gz が最新になる。
  コンパイルは、非常に簡単で configure&make installで済んでしまう。
  READMEにも書かれているからこれを参考に。
  /etc/ld.so.conf に /usr/local/lib を追加して、ldconfigするのを忘れなければ
  余り問題ないだろう。
6.ファイルシステム作成
  ではいよいよ、reiser4のファイルシステムを作ってみる。
  > mkfs -t reiser4 /dev/hda4
7.ファイルシステムマウント
  最後にマウント。
  > mkdir /home/hda4
  > mount -t reiser4 /dev/hda4 /home/hda4
  これで問題なくマウントできれば成功。
実際にreiser4のパフォーマンスがどんなものかは分からないが、
kernel2.6 + nptl のシステムは、それだけで既に速いような気がする。
# ターミナルでのシェルの反応速度が違う
今後の野望としては、
・reiser4,reiserfs,ext2 のパフォーマンス比較
・samba2,samba3,nfs のパフォーマンス比較
・kernel2.4,kernel2.6 のパフォーマンス比較
辺りをしてみたいかな、と。
するとだいたいチェックする対象は・・・・
・kermel2.4 x ext2 x samba2 (Official)
・kernel2.6 x ext2 x samba3
・kernel2.6 x reiserfs x samba3
・kernel2.6 x reiser4 x samba3
・kernel2.6 x reiserfs x nfs
・kernel2.6 x reiser4 x nfs
ぐらいでいいかな?v9fsもチェックしたいな・・・u9fs入れてみるか・・・
(予想される最速はkernel2.6 x reiser4 x u9fs かな?CPUがついて行かないかな?)
sambaもオフィシャル環境だとsamba2なのでそれだけで速くなってるかもしれない・・・


投稿日

カテゴリー:

投稿者:

タグ:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください