« 「壊れていないものを修理してはいけない」「改良は計画的にやる」 | トップページ | 時代遅れなものに、今から飛びつく »

2011.09.20

Linuxにデフラグが見当たらない理由

MS-DOSの時代から最新のWindowsに至るまで、パソコンのヘビーユーザーが興味を持つユーティリティソフトとして、ディスクのファイルや空き領域を整とんするデフラグソフトがある。私自身も、Windows用のデフラグソフトを色々試して、今は、自分でスクリプトを書いてカスタマイズできる MyDefrag を使っている。

いろんなスクリプトを書いて、総量では数百GBの読み書きをハードディスクにさせて実感したことは、
「ほとんどのファイルは、どこに配置しようが少々断片化していようが、パソコンの性能には全然影響しない。とりわけ、サイズの大きな動画データなどは、よほど細切れになっていない限り、連続して読み出している時間のほうがハードディスクの読取ヘッドの移動時間より長いので、デフラグの必要はない。パソコン起動時に読まれるファイルなど、特定のものだけにだけ整理しておけば十分だ。」
と、いうことで、パソコンの性能を最大限を引き出そうなどと考えて、一生懸命ファイルの配置を考えたりしても、現実としては、ほとんど無駄な努力だった。まあ、無駄な行為だという知識を得たという意味では、無駄ではないのだけれど。

ところで、Linuxの世界にはデフラグ関連のユーティリティはほとんどない。10年以上も前から、Windowsユーザーから投げかけられる「なぜLinuxはデフラグは不要なの」は、いわゆるFAQというもので、そのたびに文章でいろいろ説明がなされるけれど、いまいち合点が行かない。

しかし、今日、自分のパソコンの中のディスクが、こういう状態になっているのを見て、なるほどと納得した。

Defrag


部分拡大図

Defrag2


前置きが長くなるけれど、まず、私のパソコンの状況の説明をする。
現在、私のデスクトップパソコンのハードディスクは、全領域が NTFS形式でフォーマットされており、Windows XP をインストールしている。先日、ノートパソコンの方で Ubuntuを試すべく、パーティションを切り直し、しかも普通ではない使い方をしてしまった結果、ノートPCでは Windowsも Linuxも起動できない状態におちいった。それにこりたので、デスクトップパソコンのほうでは、ハードディスクに一つしかないWindows XP の管理下にある NTFSのパーティションに、Ubuntuの「お試しインストール」をしてみた。Ubuntuが使用するルートパーティションやスワップパーティションは、Windows XPの Cドライブの中に、大きな連続領域のファイルとして確保される。Ubuntuが不要になったら、普通のアプリと同様にWindows上でアンインストールコマンドを実行すればよい。実に簡単。

パソコンの電源を入れて起動OSとして Ubuntuを選んだ時、Ubuntuのファイルシステムでは、Cドライブが自動的に/host にマウントされる。Linuxでは、だいぶ前から NTFS形式のドライブを自由に読み書きできるようになっているので、この Windowsのドライブを間借りしている Ubuntuを使うにあたって、もし Ubuntuのルートパーティション用に確保しされている領域では足りない量のファイルを作りたいなら、ただ単純に /host 以下に適当なディレクトリを作り、普通に読み書きすれば問題ない。わざわざルートパーティションのファイルサイズを大きく作りなおす必要はない。

さて、ここ2日ほど Ubuntuばかり使っていた。そして、さきほど、ひさしぶりに Windows XPを使うことにして、そのとき何気なく MyDefrag を起動させてみたら・・・ ハードディスクの中は、先に上げた図のようになっていたのだ。話には聞いていたけれど、実際に目で見てなるほど納得した。この図のなかで、すき間なく断片化もなく固まっている領域は、数日前に MyDefragで整理した Windows のファイルや Ubuntuのパーティションとして使われているファイルだ。一方、網目模様のようにばらまかれているファイルは、今日、Ubuntuから /host に書き込んだ合計30Gバイト程度のファイルで、これもWindowsからは単なるファイルとみなされるし普通に読み書きもできる。

(※注意 Linuxはファイル名で大文字と小文字を区別するのに対し、Windowsはデフォルトの設定では区別しない。NTFS自身のファイル情報の管理領域には、ちゃんと大文字も小文字も違うものとして記録されているけれど、Windows のプログラムには区別ができない。レジストリの操作で区別するようにしてすることは可能だが、それをやると、大文字小文字を区別しないという前提で作られたプログラムが動作しなくなるので、やるべきではない。この違いのため、Ubuntuが /host 経由で作ったファイルを Windowsから扱う場合、時として、厄介なことが起こる。例えば、TEST.TXT, test.txt, Test.txt は、Linuxではそれぞれ違うファイルだし、NTFSでもこの3つを保持できるが、Windowsのアプリケーションからアクセスするときに混乱が生じる。しかも厄介なことにエクスプローラーがファイル名として表示する大文字や小文字は、本当にファイル管理領域に書かれているものとは違っている場合がある。管理領域の上では全部小文字のファイル名なのに、エクスプローラーは先頭を大文字にして表示することがあり、「ここにあると見てわかるのに、Windows からは消せない」というファイルができてしまうことがある。)

さて、上の図を見て分かるように、マルチユーザーによる使用を当然の前提としてきた Linuxでは、個々のファイルをなるべくディスク全体に分散させている。そうしなければ、各ユーザーに対して平等にディスクを使わせることは難しい。空白領域は細切れになるけれど、これなら、ファイルのサイズが後々で少しくらい大きくなってもファイルの後ろに「伸びしろ」があるので断片化は起こらない。この方針は、ディスクの容量にゆとりがある場合、十分効果を発揮する。

もちろん、ディスクの使用率が高まれば、Linuxのやり方でも断片化と性能低下は当然発生するので、「Linuxなら断片化は起きない」は、事実に反するし、サイズの大きな動画データをいくつも保存したりすれば、かなりの確率でファイルの断片化が進むことになるだろう。でもまあ、動画などは別パーティションに置くようにすれば、少なくとも個人がデスクトップ環境として Linuxを使う限り、Linuxでは断片化の心配はほとんど必要ないと思う。

もっとも、「起動時に読まれるファイルは、ハードディスクの外周部、つまり読み書きの速度の高速な場所に置きたい」というようなチューニングをしたいなら、Linuxでも、デフラグや再配置などのソフトは必要になるし、一般論として、ファイルシステムのメンテナンスツールとして、デフラグに限らずファイルの絶対的な位置の管理をするユーティリティは、いざというときのために提供されているほうが望ましいとは思うのだけど。

« 「壊れていないものを修理してはいけない」「改良は計画的にやる」 | トップページ | 時代遅れなものに、今から飛びつく »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: Linuxにデフラグが見当たらない理由:

« 「壊れていないものを修理してはいけない」「改良は計画的にやる」 | トップページ | 時代遅れなものに、今から飛びつく »

2021年11月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        
無料ブログはココログ