Vitruvian Penguin
knoppix

[knoppix:2912] リマスタ時の奇怪現象

Date: Sun, 8 Feb 2004 10:43:00 +0700
X-mailer: Apple Mail (2.553)
タイ国ノンタブリ県の田村です。

最近,KNOPPIX3.2/3.3のリマスタをしていて,奇妙な現象に気が付き
ましたので,ご報告いたします。それは,CDから起動してHDにコピー
したリソース(/KNOPPIX以下)の容量が、突如増大するという現象
です。この問題については,かつて本家のForumで情報を集めていた時,
ハンドル名godber氏の投稿を偶然に読んで知ってはいましたが,本当に
経験したのは初めてです。その投稿はここです:

        http://www.knoppix.net/forum/viewtopic.php?t=4694

この現象について当MLでも議論があったのかどうか,過去ログを調べ
てもよく分かりませんでしたので,一応報告だけはしておこうと思いま
した。もし「周知の事実」でしたら,読み飛ばしてください。

さて上記の投稿中godber氏は,2003年9月30日の記述でKnopper氏自身
の言葉を引用しています。それによると「kernelにiso9660の bugがある
んだ。君は運悪く,その犠牲になったんだよ。コピーの過程でhardlinkが
正確に認識されず,それぞれの位置にファイルが保存されてしまったん
だ。云々」というのが、その原因らしいのです。しかし問題は,この現象
がどういう条件下で発生するのか,という点です。いつも起こるという訳
ではありませんから,何か特殊な条件が揃わなければ発生しないに違いあ
りません。しかし,godber氏の記述からは,それを伺い知ることはできま
せんでした。当MLの読者の方々の中には,リマスタをなさっている方が大
勢いらっしゃると思いますが,この現象を経験なさった方がどの位いらっ
しゃるでしょうか。多分きわめて稀な現象なのでしょう。ともあれ,本当
に起きるのです。私の場合は、リマスタでパッケージの削除・追加を何度
も繰り返した後で,ファイルの断片化が心配されたため,それを解消しよ
うと思い,/mnt/hda11/<resource>を空の/mnt/hdb1/に一気に移転した時に
発生した模様です。こうした作業は普段はredhat9上のconsoleで行ってい
ます(私の機械のHDにはKnoppixはインストールしてありませんので)。
しかし,その時は,HD上にあった圧縮KNOPPIXファイルから起動して,
行っていたと記憶しています。それ以前に、この<resource>フォルダが
どの位の容量を有していたのか、正確な記録がありませんが,確か1.7GB
程だったと思います。残っているCDを調べると,事件以前の圧縮KNOPPIX
イメージは673MB (705,755,981 bytes)です。それが、masterからslaveに
移転した途端に巨大化し、2.2 GB (2,354,543,472 bytes)となってしまった
のです。

そしてその解消策ですが,godber氏は2003年10月21日の最後の投稿で,

        http://www.stearns.org/freedubs/

を挙げています。重複ファイルを探し出して,それをhardlinkに置き換え
るscriptらしいです。godber氏自身は,これを使って最終的なisoイメージ
の容量を33MB削減することに成功したと報告しています。早速私も上記
のサイトからfreedups-0.6.0.tar.gzをダウンロードしました。解凍したと
ころ,freedups.plというperl scriptが出てきました。同梱されていたREAD-
MEには長い解説がありましたが,なかなか要領を得ません。しびれを切
らせて,とにかく使ってみようと思いきり,例の如く"chroot", "mount -t
proc /proc proc"という手続きを踏んだ後で,freedups.plを/usr/local/bin/
以下に配置して,"freedups.pl -h"でヘルプを呼び出しました。ヘルプの
最後の部分に幾つかの適用例があり、それが参考になりました。結局:

        freedups.pl -a -d -f /lib
        freedups.pl -a -d -f /usr

を使ってみることにしました。optionの意味は:

        -a:「実際にリンクを張る」
        -d:「最終変更日時が同一のもののみ」
        -f:「ファイル名が同一のもののみ」

です。実は全く確信がなかったのですが,幸いにうまく行ったようで,
それぞれの成果は以下のようなものでした:

        /lib    ->   Space saved:    3,386
        /usr    ->   Space saved:    53,976,514

たぶん単位はbyteだろうと思いますが,どうも計算が合いませんでした。
いずれにせよ,freedups.plを当てた後の<resource>の容量は,約1.7GB
(1,817,705,855 bytes)に戻っていました。この使い方で本当に良かった
のかどうか,HDにインストールした時などに後遺症が発生しないかどう
か、全く不明ですので,ご存じの方がいらっしゃったら,是非ご教示く
ださい。なお,freedups.plの実行にはroot権限は不要とのことでしたが,
一応,rootで実行しました。その際に:
        touch ~/md5sum-v1.cache
        chmod 777 ~/md5sum-v1.cache

として,キャッシュファイルを作成しておき,書き込み可能にしておく
と良いようです。作動に支障はなさそうですが,「書き込みできない」
というエラー・メッセージが表示されます。

最後に,この「hardlinkの悲劇」が発生する条件ですが,一つ思い当たる
ことがあります。実はslaveとして使用しているHDがかなり古いものなの
です。IBMの10GB (ATA 33)で,長らく使用していなかったですが,作業
スペースが足りなくなったために,slaveとして組み込みました。masterが
Seagateの40GB (ATA 100)なので、同一のIDEに繋いで良いものなのかど
うか、不安があったのですが,機械は何の苦情も言わないし,それらしき
障害もこれまで発生してきませんでした。でも,もしかしたら、このこと
が関連しているかもしれません。現在,この「悲劇」を再現しようと色々
実験していますが,まだ「成功」していません。

以上,ご報告まで。なお,私はファイル・システムの技術的なことなど全
く分からぬ素人ですから,上記の記述に誤りや不正確さがありましたら,
どうかご勘弁ください。
田村志緒理

__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!
http://bb.yahoo.co.jp/
<Prev in Thread] Current Thread [Next in Thread>