![]() |
knoppix
|
| Date: | Tue, 24 Feb 2004 02:01:45 +0900 |
|---|---|
| X-mailer: | Sylpheed version 0.9.7 (GTK+ 1.2.10; i386-pc-linux-gnu) |
柘植です。こんにちは。
本スレッドの内容を以下に整理します。
私自身の Linux一般についての理解が浅いため、間違ったことを
書いている可能性は大いにあるということをあらかじめお断りして
おきます。
// contents
+00 初出
+01 問題とされた現象の概要
+02 この現象の詳細
+03 この現象が起きる原因
++03-1 ブロックサイズの違い
++03-2 ISO9660ファイルシステムではハードリンクを正しく扱えない
+04 まとめ
// contnts
+00 初出
[knoppix:2912] リマスタ時の奇怪現象
http://www.freeml.com/message/knoppix@xxxxxxxxxx/0002912
+01 問題とされた現象の概要
「マウントされたcloopファイルKNOPPIXの内容をHDにコピーすると
サイズの総和が増加する」
+02 この現象の詳細
/KNOPPIXディレクトリ内のハードリンクの数を調べ、
# for i in $(find /KNOPPIX -type f -links +1); do ls -li $i; done | \
sed 's/^ *//' > hardlink.list
# wc -l hardlink.list
1544 hardlink.list
それらのうちinode番号が同じものが存在しているかどうか調べる。
# cat hardlink.list | cut -d " " -f1 | sort | uniq | wc -l
1544
すべて違うinode番号がついていることがわかる。
ハードディスクにコピーする。
# cp -a /KNOPPIX/* /mnt/hda5
コピー先でハードリンクの数を調べてみると
# wc -l hardlink.list
0 hardlink.list
ハードリンクは1個も存在しなくなっている。
このことで生じるサイズの増加は数十MB程度。
[参考]
freedups.pl ( http://www.stearns.org/freedups/ )
というツールを使うとハードリンクと推定されるファイルを捜し出して
リンクを張り直してくれる。
コピー元の/KNOPPIXディレクトリとコピー先の/mnt/hda5で
サイズの合計の変化を調べてみる。
# du -s /KNOPPIX
# du -s /mnt/hda5
コピー先のブロックサイズが
4096(bytes)の場合
1847310 ---> 2125424 278114(kilobytes) 15% 増加
2048(bytes)の場合
1847310 ---> 1952938 105628(kilobytes) 5.7% 増加
1024(bytes)の場合
1847310 ---> 1877319 30009(kilobytes) 1.6% 増加
コピー元である/KNOPPIXディレクトリはISO9660でマウントされている。
ISO9660ファイルシステムのブロック(セクタ)サイズは一般的に2048 (bytes)。
+03 この現象が起きる原因
++03-1 ブロックサイズの違い
一般的にブロックサイズが小さなファイルシステムのデバイスから
ブロックサイズが大きなファイルシステムのデバイスに、数多くの
ディレクトリや小さなファイルを含むディレクトリツリーのコピー
を行なうとディレクトリツリー全体のサイズが増加する。
KNOPPIXに固有の現象ではない。
また、ディレクトリ自体のサイズはブロックサイズと同じになる。
[参考URL]
http://japan.internet.com/linuxtutorial/20011208/1.html
http://search.luky.org/linux-users.9/msg09161.html
++03-2 ISO9660ファイルシステムではハードリンクを正しく扱えない
これもKNOPPIX固有の現象ではない。
mkisofsでISO9660ファイルシステムを作るとハードリンクの状態が変化する。
create_compressed_fsはこの問題には関係ない。
本来ならハードリンクされたファイル同士は同じinode番号を持つはず。
しかし、ISO9660ファイルシステム上ではinode番号がそれぞれ別々に
なってしまう。
そのため、cloopファイルKNOPPIXをマウントして内容をハードディスクに
コピーすると、ハードリンクされていたファイルがそれぞれ別の独立した
ファイルとしてコピーされるため、その分ファイルサイズの総和が増加する。
[参考URL]
http://www.ussg.iu.edu/hypermail/linux/kernel/0301.1/0664.html
http://www.knoppix.net/forum/viewtopic.php?t=4694
http://mailman.linuxtag.org/pipermail/debian-knoppix/2003-September/003968.html
+04 まとめ
この現象に対する視点を変えてみる必要がある。
「/KNOPPIXディレクトリの中身をHDにコピーしたらサイズの総和
が増えた」
ではなくて、
「ext2ファイルシステム上に存在しているディレクトリツリーを元に
mkisofsでISO9660ファイルシステムを作成したらサイズの総和が減少した」
そう考えれば、再びHDにコピーしたときにはサイズが「増える」
のではなく「元に戻る」のだと考えられる。
ただ、たとえばext2のファイルシステム上で存在していたハードリンクは
mkisofs実行、作成されたイメージファイルをループバックマウントして
その中身を再びext2ファイルシステムにコピー、という手続きを経ることで、
ファイルサイズ、タイムスタンプなどは同じだがハードリンクではない
別々のファイルに変化してしまう、ということは避けられない。
以上。
--
Tsuge Akihide
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | [knoppix:3004] Re: リマスタ時の奇怪現象, Tsuge Akihide |
|---|---|
| Next by Date: | [knoppix:3006] Re: 日タイ版KNOPPIX, Shiori Tamura |
| Previous by Thread: | [knoppix:3004] Re: リマスタ時の奇怪現象, Tsuge Akihide |
| Next by Thread: | [knoppix:3007] Re: リマスタ時の奇怪現象, Shiori Tamura |
| Indexes: | [Date] [Thread] [Top] [All Lists] |