May 11, 2007

PXE + iSCSIブートするための試行錯誤に費やされた GW前半のメモ

連休中に書いたメモ・その2。編集せずにManchesterからお送りします。

PXEブートしたカーネルからNFS rootやiSCSIデバイスをroot mountすることでディスクレスブートマシンを実現できることは知られているし、枯れた技術でもある。重要なのは、特殊な機材がなくても、PXE compliantなネットワークインタフェースを持つマシンなら何であっても(それが実マシンであっても仮想マシンであっても)「擬似的に」iSCSIブートできるということである。

Stateless Linuxは、この技術をコアにディスクレスクライアントのディスクイメージやプロファイルを中央集中的に管理するマネージャ機能などを提供するもののようだ。が、どの記事を見ても全貌はさっぱり分からない。Component-wiseに「できたもの」からStateless Linuxという名前を付けていくだけなのかもしれない。正式にFedora CoreやRHELのリリースに包含されるようになればもう少し分かりやすくなるだろうが。

それはさておき、StatelessLinuxiSCSIRoot - Fedora Project Wikiには、iSCSIブート用のinitrd.imgを作る方法が書かれているのだが、私が試した限りではちっともうまくいかなかった。

おおまかに言って三つの問題があった。

一つは、StatelessLinuxiSCSIRootにあるとおりに、mkinitrd --net-dev eth0して作ったinitrd.imgに含まれるinitスクリプトに、

network  --device eth0 --bootproto dhcp

と書かれていることだ。この部分はDHCPサーバからIPアドレスなど取得して、ifconfig upしてくれたり、route addしてくれたりするのだと思うのだが、Fedora Core 6ではこれがまったく動かない。dhcpdが動作しているマシン上でtcpdump port dhcpcしていると、PXEのブートシーケンス(dhcpによってIPアドレスなどを確定してカーネルやRAMディスクのイメージをダウンロードする必要がある)ではパケットダンプが観測されるが、initスクリプトの実行部分ではまったく観測できない。なんなんだこれは。

もう一つは、StatelessLinuxiSCSIRootの方法だと、initスクリプトに/sbin/iscsistartを実行する部分が生成されなければならないはずなのだが、実際にはうまく生成されない。いくつか思い付く理由も対策もあるのだが、mkinitrdを改造する必要があるのでとても面倒くさい。

もう一つの問題は、上ができたとしてもiscsistartへの引数がinitrd.img内にスタティックに書き込まれてしまうことである。これだとホストごとに同じ手続きでmkinitrdしなくてはならない。NFS rootの場合と同様に、カーネル引数に渡したオプションを解釈してiscsistartしてくれればよいのだが。

ちょっとNFS rootの補足をすると、rootファイルシステムはread-only mountする(つまり複数のNFS rootクライアントが同じrootを共有する)のに加え、設定を同じくするホスト群のinitrd.img/vmlinuzは共通化して、カーネル引数で渡した情報に基づいてクライアントは各自の設定を行うようになっている。iSCSIブートの場合には、クライアントごとにrootに使用するiSCSIデバイスが異なるのでread-write mountする点に注意することを除けば、NFS rootの場合とほとんど同じようにできるはずだ(むしろ簡単なはず)。

こうした状況にめげずに何とか便利なツールはないものかと探していたわけなのだが、あまりいいツールがない。

iSCSI-initは、カーネル引数を解釈してiSCSIデバイスをアタッチしてくれるカーネルモジュールだが、Open-iSCSI以前のLinux-iSCSIにしか対応していない。CentOS 4.xの場合には使える。

Diskless / remote boot with Open-iSCSI - WPKG - Windows software deployment toolは、initスクリプトそのものを自作のものに置き換えるものでOpen-iSCSIに対応している。その自作スクリプトが難ありで、カーネル引数でホストのIPアドレスなどを指定しなければならないという困った仕様。

正常動作し、カーネル引数を使ってiSCSIの設定を行うinitrdを生成するツールを作るだけでGWの前半を潰してしまった。不慣れなもので。暇があれば続編を書く。

About Me

My Photo

つくばで働く研究者

Total Pageviews

Amazon

Copyright 2012 Ogawa::Buzz | Powered by Blogger
Design by Web2feel | Blogger Template by NewBloggerThemes.com