Count from April/13/2004

HTTP-FUSE-KNOPPIX/Xenoppix

【注意事項】KNOPPIX日本語版関連(VMKnoppix、HTTP-FUSEなど)のホームページは http://www.rcis.aist.go.jp/project/knoppix/ に移動しました。
このホームページは更新しませんので、最新情は新しいホームページにご移動ください。

English

 Special Topic


はじめに
HTTP-FUSE KNOPPIX は「積み上げ型」KNOPPIXです。通常のKNOPPIXでは700MB のisoファイルを最初にダウンロードしますが、HTTP-FUSE KNOPPIXではルートファイルシステムの読み出し要求がある度に必要な部分(ピース)をHTTPからダウンロードします。ピースは手元のPCに「積み上げ」られます。HTTP-FUSE で最初に必要なものはLinuxカーネルとminiroot を含むブートローダのみで、そのサイズは6MBです。
 ルートファイルシステムを含むオリジナルのブロックデバイスは小さなピースに分割されます。小さなピースは圧縮されてファイルに保存されます。このファイルを「分割圧縮ブロックファイル」と呼びます。分割圧縮ブロックファイルは要求があるときにダウンロードされます。分割圧縮ブロックファイルはHTTP-FUSEを通して仮想的なブロックデバイスとして再構成されます。
.# HTTP-FUSEはユーザスペースファイルシステムFUSE をベースにしています。 http://fuse.sourceforge.net/.

HTTP-FUSE-KNOPPIX は起動時にルートファイルシステムを選ぶことができます。HTTP-FUSE KNOPPIX ではカスタマイズ毎にCDを作成する必要がありません。カスタマイズしたルートファイルシステムをHTTPサーバにアップロードするだけです。
更にHTTP-FUSE KNOPPIXでは、カスタマイズされたKNOPPIXとオリジナルのKNOPPIXの差分の「分割圧縮ブロックファイル」をアップロードするだけです。この特徴はサーバの容量を少なくし、カスタマイズを簡単にします。

下の図で通常のKNOPPIXとHTTP-FUSE-KNOPPIXの違いを示します。

通常のKNOPPIX

ISOは700MBで全て(ブートローダ、カーネル、ミニルート、cloopファイル)を含む。
カスタマイズはCD丸ごと作り直し。

HTTP-FUSE-KNOPPIX

最初に必要なものは 6MB(ブートローダ、カーネル、ミニルート)のみ。
ルートファイルシステムであるcloopファイルは「分割圧縮ブロックファイル」で構成され、HTTPよりHTTP-FUSEを通してオンデマンドで取得する。

「分割圧縮ブロックファイル」は、ローカルPCに保存され、再利用可能。

ルートファイルシステムは起動時に選択可能。カスタマイズのためにCD-ROMを作り直す必要なし。

カスタマイズを行った場合でも差分の「分割圧縮ブロックファイル」のアップロードのみ。オリジナルとの共通部分は共用される。


如何に起動を早くするか

HTTP-FUSE-KNOPPIX の起動時間はネットワークレイテンシ(遅延)の大きく影響されます。

分割圧縮ブロックファイルの配信にはCDN(Contents Delivery Network) を使います。現在のCDNのターゲットとしては RING プロジェクト ミラーサーバ群"Corali化された" サーバ ("Coral" はP2P プロキシのサーバプロジェクト) を想定しています。. これらのCDNでは多くのサイトがあり、CDN内のDNSによりクライアントに近いサイトを割り当てる機能があります。Ringプロジェクトでは日本国内に多くのサイトがあり、日本のクライアントに対してブロードバンドのネットワークを提供してくれます。Coral プロキシは PlanetLab で世界中にサイトをもちます。

さらにHTTP-FUSE-KNOPPIXでは "netselect"を使ってCDNで割り当てられたサイトのうち一番近いものを見つけます。この機能は世界中どこにいてもネットワークレイテンシの短いサイトを見つけます。

"netselect" が CDNでもっと近いダウンロードサイト見つける


利点のまとめ

------------------------------------
SFS-KNOPPIX
 での苦い経験

HTTP-FUSE-KNOPPIXを開発する前に SFS-KNOPPIX を作りました。SFS-KNOPPIXもSFS(Self-certifying File System)を利用してインターネットから
起動するものです。ここで我々は苦い経験をしました。SFSのサーバが日本にあったため、海外からの利用では長いネットワーク遅延のため、起動に時間がかかりました。アメリカやヨーロッパからの利用ではネットワーク遅延が100mse以上あったため、SFS-KNOPPIXの起動に30分以上かかりました。

これはインターネット上でのサーバ・クライアントモデルに問題がありました。SFS-KNOPPIX ではブートする度にSFSを通してルートファイルシステムをマウントしなければなりませんでした。ここではネットワーク遅延の問題から逃れられませんでした。この問題を解決するためにHTTP-FUSE KNOPPIXを作成しました。この要点は下記に挙げるものです。


ダウンロード

HTTP-FUSE-KNOPPIX(CD 版)

HTTP-FUSE-KNOPPIX(USB 版)


要求事項


準備

HTTP-FUSE-KNOPPIX(CD 版)

HTTP-FUSE-KNOPPIX(USB 版)

WindowsXP/2000 からのインストーラがあります。


分割圧縮ブロックファイルを保存する方法


起動


特別なブートオプション


HTTP サーバ& 分割圧縮ブロックファイル

HTTP サーバリスト: http://unit.aist.go.jp/itri/knoppix/knxblock/deliver_menu


ブロックファイルリスト: http://unit.aist.go.jp/itri/knoppix/knxblock/contents_menu

"*.cue"はブロックファイルの詳細リスト.


実装の詳細

下図はcloopドライバの詳細を現しています。cloopファイルは通常のブロックデバイスファイルから構成されます。ブロックデバイスを64KB毎に切り出し、圧縮をかけています。それらは1つのcloopファイルに保存されます。cloopファイル内のヘッダは分割/圧縮したブロックの位置データです。cloopドライバはアクセスがあるときに該当ブロックを解凍して、ブロックデバイスを再構成します。


下図はHTTP-FUSEとcloopドライバの関係を表しています。ここでは、64KB毎に切り出されたブロックデバイスデータは圧縮され、それぞファイルとして保存されます。このファイルを「分割圧縮ブロックファイル」と呼びます。HTTP-FUSE では分割圧縮ブロックファイルからcloopファイルを再構成しています。




下図はHTTP-FUSEドライバが分割圧縮ブロックファイルをHTTPサーバから取得している例を示しています。




カスタマイズしたKNOPPIX用の分割圧縮ブロックファイルは減らすことができます。なぜなら、ほとんどの分割圧縮ブロックファイルは共通で共用可能です。下の図は差分の分割圧縮ブロックファイルの利用の仕方を現しています。


問題点と対処


Reference

Related work


謝辞

本研究の一部は独立行政法人 情報処理推進機構「未踏ソフトウェア創造事業 どこからともなくブートするOS」鵜飼文敏プロジェクトマネージャの成果です。共同開発者の岡島純氏との議論/発案により推進/実装されました。深謝します。