2008年01月21日

Linuxでデフラグが必要のない理由

よくLinuxではデフラグの必要がないと言われますが、理由がよくわかりませんでした。それをわかりやすく説明しているサイトがありました。

参照サイト:Why doesn't Linux need defragmenting?

要約すると、次のようになります。

【Windowsの場合】
def-1
←hello.txtという名前で「Hello, world」という内容のファイルを保存。


def-2
←bye.txtという名前で「Goodbye, world」という内容のファイルを追加。


つまり、この場合、追加するデータは最初のデータの直後に連続して保存されます。そこで、最初のデータを「Hello, world!!」と書き換えると、「!!」が次のように分割されてしまいます。これが、断片化の正体です。

def-3


【Linuxの場合】
Linuxでは事情が違います。2つのデータは下の画像のように、初めから離れた別の場所に格納されます。これは、Linuxではもともとマルチユーザを前提にしていることに起因するようです。なので、ファイルを変更する際に断片化が起こりづらいということですね。

def-5
←上と同様に、hello.txtという名前で「Hello, world」という内容のファイルを保存。続いて、bye.txtという名前で「Goodbye, world」という内容のファイルを追加。さらに、最初のデータを「Hello, world!!」と書き換えた結果。


もちろんデータ量が相当大きくなれば、断片化も起こり得ますが、その頃にはPC自体を買い換えたり、OSを入れ替えたりしているでしょうから、実質的に必要ないという結論になるのでしょう。

ただし、HDDは複数のディスクで構成されており、ディスクをまたがったデータは断片化とは認識されないが、実際にはHDDの針が移動するので、パフォーマンスへの影響を免れないとも説明されています。

僕も詳しくないので、誤解している部分があるかも知れません。
間違いがあったら、ご指摘下さい。

…でも、なんとなくすっきりした気がします。


vine_user at 22:09 │Comments(9)TrackBack(3)その他 

トラックバックURL

この記事へのトラックバック

1.  Windowsの断片化に対する誤解  [ hitoのふりみて我がふり直せ ]   2008年01月26日 13:08
http://blog.livedoor.jp/vine_user/archives/51201150.html 元記事(http://geekblog.oneandoneis2.org/index.php/2006/08/17/why_doesn_t_linux_need_defragmenting)の「Windowsの場合」というのはFAT32の場合で、NTFSはLinuxの多くのファイルシステムと同じように投機的
2. 今週の話題 : Google Docs アップローダーの解説など  [ WebOS Goodies ]   2008年01月26日 17:12
本日は時間がないので、余談はなしで。もともと必要ないという話もありますが(^^; 週末恒例の「今週の話題」です。今週見つけたさまざまなネタをまとめてご紹介します。過去に掲載したネタは米 Yahoo! の [[My Web>http://myweb.yahoo.com/myweb?friendid=WxOWnIrY...
3. Linuxでデフラグが必要のない理由 from 独学Linux  [ エセプログラマーの戯言 ]   2008年02月14日 22:04
友人に教えてもらって、気に入っているブログがあるんですが、そこで興味深いものを発見しました。 [http://blog.livedoor.jp/vine_user/archives/51201150.html Linuxでデフラグが必要のない理由] なるほど、Windowsで良く聞く断片化というのは、こういうことだっ...

この記事へのコメント

1. Posted by あ    2008年01月22日 23:05
何というか黒板に書かれた文字をノート一杯に隙間を開けずびっしり写す人と、数行ずつ開けながら書いてる人の違いみたい。
後から書き足せるかどうかってとかな。
あとwineでGTA Sanandreas インストールしたけどwindowsの10倍ぐらいロード時間が早かったです。
失礼しました〜
2. Posted by vine_user    2008年01月23日 00:03
ノートの例えはわかりやすいですね。

会社のWindowsの動きが鈍くなったとき、一生懸命に消しゴムで消している姿が目に浮かんできそうです。
3. Posted by 伊藤    2008年01月26日 17:27
こんにちは、歩行者こと伊藤です。
トラックバックさせていただきました。

このあたりは Linux が最初からマルチユーザー前提で設計されている証ですよね。昔のようにシングルユーザーでファイルの更新がさほど頻繁でなければ、 FAT のようにファイルを集めたほうが効率が良いのでしょうけど。

ではでは。今後ともよろしくお願いします!
4. Posted by vine_user    2008年01月27日 00:28
伊藤さん、お久しぶりです。トラックバックありがとうございました。

僕も3年目の節目で、実名にしようかとも思ったんですが…。

もう1件、別の方からいただいたトラックバック先のサイトによると、上記のWindowsの場合に関する内容は、FAT32の場合で、NTFSでは事情が異なるようです。

結論としては、Windowsの方が断片化がおこりやすいというのは間違いでもなさそうな感じですが。

5. Posted by 伊藤    2008年01月27日 03:05
NTFS の件は、元の英語記事のコメント欄でも議論になっていますね。 NT 系は一応サーバー OS なので、そこらへんは考えてあるのでしょう。

Windows に比べてどうかということよりも、 Linux が断片化を抑える仕組みのほうが重要かと思います。それを知っていれば、ディスクパフォーマンス低下に対処できますからね。その意味で、こちらの記事はとても参考になります ;)
6. Posted by 中野    2008年02月05日 11:02
一概にデフラグの必要は無いという事はないですよ。

私も実際に ext3 にてフラグメンテーションが発生しているサーバで、読み取り性能が 25% 程度まで低下した事がありました。
どうも書き込み処理が同時多発するサーバで、フラグメンテーションが多発している様な状況でした。

このサーバのデフラグは、全く同じ環境のサーバを別に用意して、rsync にてファイルを転送する事(書き込みプロセスを1個にした状態)で、性能は元に戻りました。

以下は参考URLです。
http://tiki.is.os-omicron.org/tiki.cgi?c=v&p=FedoraJP%CA%D9%B6%AF%B2%F1%2F7
7. Posted by vine_user    2008年02月05日 23:55
なるほど…。
DAVLを試してみようと思いましたが、Ubuntuではコンパイルできなかったので、時間のあるときに、Fedoraで試してみます。

デスクトップ用途では、どうなんでしょうか?

「書き込み処理が同時多発するサーバ」で多発したとのことですが、デスクトップ用途で使用する場合も同じような状況があり得るのかどうか気になるところです。

8. Posted by よっくん    2008年02月14日 23:58
5 こんにちは、よっくんと申します。

興味深い内容だったのでトラックバックさせて頂きました!
これからも、ブログ見にきますのでよろしくお願いします!
9. Posted by vine_user    2008年02月15日 02:32
よっくんさん、トラックバックありがとうございます。
今後ともよろしくお願いします。

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔