Linuxにはデフラグは不要って説、本当なのか、前から気になっていたので、ちょっと調べてみました。
Linuxでファイルサーバーを長い間(10年以上)使っていて、疑問だったんですよね。
あと、テレビ番組を録画するHDDレコーダー。長い間使い続けていると、だんだん動作が重くなって、画面がカクカクするようになると誰かが書いていました。はっきりとではないのですが、私のHDDレコーダーも最近なんだかあやしいんですよね・・・。(調べてみたら予想通り、多くのHDDレコーダーがLinux系のファイルシステムを使用しているとの事でした。)
結論から言うと、本当だけど、嘘(笑)
フラグメンテーション(断片化)が “起きにくい” けれど、絶対に起きないわけではない。
ただ、デフラグは意味がない。
どういう事か? やっと理解できました。
まず、毎度おなじみWindowsのファイルシステムから説明。
Windowsの場合、データをHDDの先頭から順番に記録していくのだそうで。
イメージ画像
赤 → 青 → 緑 → 黄 → 灰 という順にデータ記録されたわけですね。
で、この後、赤のファイルを編集し、上書き保存しました。ただ、編集後は最初のファイルよりサイズが大きくなってしまったんですね。そうすると、こうなる。
赤の収まり切らなかった部分は、後ろのほうの空いている領域に続きが書き込まれます。そしてその後、別のファイル(茶)が書き込まれてしまった。また赤のファイルが大きくなったら、さらに茶色のデータの後に書き込まれる事になるわけです。
データの扱いとしては、赤のデータがどこどこに配置されているのかの記録を元にファイルを操作するので問題はないわけです。
ただ、これを繰り返していると、データはどんどん断片化していきますね。
で、Linuxの場合はどうしているかというと
データを記録する際、最初から、なるべくディスク全体に分散して、他のファイルと最大限離れた場所に記録していくんですね。
最初に赤が記録され、次の青はディスクの真ん中らへんに記録。その次のデータは赤と青の中間くらいに記録、といように・・・(実際にどうしているのかは知りません、イメージです。)
他のファイルとの間に十分な空き領域があるので、多少書き換えられてデータが増えたとしても何の問題もありません。
ええ、これは以前から知ってましたよ。でも・・・
これだと、空き領域が足りなくなった時に、断片化は発生するのでは?
⇒正解であり、不正解であり(笑)
正解なんですが、実は、Linuxのファイルシステムは、上書き保存をすると断片化が発生する場合は、断片化させないで済む空き領域の多い場所を探して、黙ってそちらに保存してくれるんだそうで。これがミソですね。この機能のおかげで、断片化は起きにくくなってるわけです。
考えてみたら、上書き保存だって、前のデータを消して、その上にデータを書き込んでいるだけですから、別の場所に保存してその後で元データを消してくれればいいわけですよね。
なるほど! インテリジェントなオペレーションですね!
・・・あれ、でも、十分な空き領域がなかったら?
⇒はい、そうなると、Windowsと同じように断片化するようです。
つまり、空き領域が十分にある場合は 断片化しない が正解ですね。
HDDの容量がどんどん巨大化している昨今では、断片化は起きないでしょう、という感じ。
ただ、HDDレコーダーのように、空き領域をギリギリまで使い切ってしまうような状況だと、断片化が起きるわけですね。
(HDDレコーダーが断片化した時にファイルを移動・整理しているかは不明。・・・HDDレコーダーに関しては、多分、していないような気はしますね。ひとつひとつのファイルのサイズが大きすぎるし、暗号化されているので、動かせない説も。そもそも、録画番組って、編集→上書き保存ってあまりしないし、いちいち別の空き領域にそっくり保存すると時間が掛かってしょうがないですからね。)
ただ、上記の構造を理解していれば、なるほど、断片化が起きてしまうほどHDDに空き容量がない状態では、そもそもデフラグが不可能ですよね。だから、Linuxにはデフラグはない、という事なんですね。
重要なのは、十分空き容量の大きい状態で使うこと、という感じでしょうか。
断片化が起きてしまった場合、解消するのに一番簡単な方法は、別の十分大きい空き容量のHDDにデータをそっくり移動すること。(同じ容量のものだと、断片化がまたすぐに始まってしまいますからね。)
自分のHDDレコーダー、先日やりました。外付けのHDDに全部まるごと移動してやればいいわけですね。
私のはブルーレイ付だったので、とっておきたい番組は全部BDメディアに書き出し。ペンディングのやつは、BD-REなどのメディアにデータを一旦移動、また本体内のHDD内に戻す、という作業を行いました。
作業中にミスやトラブルでデータが消える可能性もゼロではありませんから、やる方は自己責任でどうそ(笑)
コメント