先日デフラグツールを選定した話を書いたので、デフラグについて書いておこう。
デフラグについて、するべきだ、という意見と、するべきでない、という意見の2つが、ネット上で流布している。
どちらの意見がすぐれているか、ということはさておき、まずは前提となるデフラグから書いておこう。
ファイルは、ハードディスク上に記録されている。
この記録は、OS が適切に管理してくれている。
昔のコンピューターは、この「適切さ」に難があった。
たとえば、ファイルは必ず「連続したエリアにおかれなくてはならない」という OS があったのを、僕は知っている。
この場合、扱っているファイルが大きくなってくると、別の専用ツールを使って「ファイル位置を移動して、空き領域を確保する」必要があった。
今の OS は、そんな面倒なことはない。
ファイルが大きくなってきて、ほかのファイルとぶつかりそうになると、離れた場所でも構わないので空き領域を見つけて続きを書き込む。
飛び飛びにファイルが記述されることになるが、OS はその位置を把握しているので、ユーザーが気にする必要はない。
ただ、ひとつだけ難点がある。
ハードディスクは、「物理的に」動作しているのである。
連続した場所に書かれた情報は、連続して読むことができる。しかし、離れた場所にある場合は、探しに行く必要がある。
この、探しに行く時間というのは、ほんのわずかである。しかし、コンピューターの電子的な動作からすると、非常に長い時間なのだ。この時間を無駄にすることになる。
この、「非連続にファイルが記録される」ことを、「ファイルの断片化(フラグメンテーション)」と呼ぶ。
これを解消するのが、デフラグである。
(「デ」は、除去する、元に戻す、などの意味の接頭語。バグ取りをデバグ、というのと同じ)
話をまとめよう。
昔のコンピューターでは、ファイルの容量が増加すると、定期的に専用ツールで空き領域を確保する必要があった。
今のコンピューターではそんな面倒はないのだが、無駄を減らしたければデフラグツールを使って、デフラグをする。
「しなくてもいい」ことはありがたいが、気にする人にとっては、結局昔と変わっていないという、ただそれだけのことである。
先に書いたように、ファイルが断片化したからといって、アクセスにかかる時間の増加はわずかである。
普通に使っていて、あまり気にする必要はない。
でも、デフラグには別の効用もある。
その効用を説明する前に、ハードディスクの「記録方法」の話をしておこう。
古いハードディスクは、「角速度一定」という方法で記録されていた。
ディスクを放射状に区切り、記録のための区画とする方法だ。
これだと、外周は区画が大きくなり、内周は区画が小さくなる。
塗られている磁性体の密度は外周も内周も同じなので、内周の記録密度が全体の設計に影響を及ぼす。
外周には記録密度に余裕があっても、その余裕を捨てていたのだ。
古い話だが、Old Macintosh の 3.5inch ディスクは「線速度一定」だった。
これは、外周を読むときは遅く、内周を読むときは速くディスクを回すことで、磁性体に対するヘッドの速度を一定にする方式である。
ヘッドから、一定の速度で信号を読み書きすると、読み書きの区画は放射状には配置されなくなる。
しかし、記録密度としてはどの場所でも一定となり、無駄は生じない。
この方式、フォーマットしたりするとディスクの速度が明らかに変わっていくのが音でわかって面白かったのだが、ハードディスクほどの高回転になると、「回転速度が安定する」のを待つ必要があり、無駄が多いので採用されなった。
(ちなみに、CD や DVD はこの方式だ。速度が遅くてよいメディアでは有効な方式である)
現代のハードディスクでは、記録密度一定方式がとられている。
回転数は変えないが、外周と内周で、ヘッドからの読み書きのスピードを変えるのだ。
記録されたメディアだけを見れば、線速度一定と変わらないように見える。
しかし、回転数は常に一定なので、回転の安定を待つ必要はなくなり、速度を上げられる。
この場合のデメリットは、内周と外周で読み書き速度が明らかに異なることだ。
内周のアクセスは、外周に比べて3倍も遅いことになる。
ここで、ふたたび話は「デフラグの効用」にもどる。
現代的には、デフラグとは「断片化の解消」ではなく、むしろ「頻繁に使われるデータを外周に集める」作業となっている。
もともと、多くの OS でディスクは外周から使っているため、特に初期状態ではほとんどのファイルが外周に集まっていることになるが、しばらく使ってからだと「最近作ったファイルほど内周に」入っている状態になる。
これを外周に出すことができれば、ディスクアクセス速度が体感できるほどあがることになる。
(先に書いた3倍は、読み書き速度のみ。実際には読み書き前のシーク速度の問題もあるし、ソフトウェア的なオーバーヘッドもある。でも、1.5倍速になれば体感できるほどの速度と考えてよい)
デフラグしたほうが良い、とする人々は、明らかに体感速度が上がることを最大の理由とする。
また、測定方法で大きな誤差はあるものの、速度は定量的に測定できるため、科学的なデータも伴う。
一方、デフラグしないほうが良い、とする人々の意見も、無視はできない。
デフラグによる最大のデメリットは、ディスクに対して明らかな負荷をかけることだ。
多くのデフラグソフトで、デフラグの「程度」を選んでデフラグを行うことができる。
単にデフラグを行うだけ、から、よく使うファイルを外周に集める、という作業まで。
デフラグという作業は、結構「場当たり的」なものである。
A というファイルをデフラグするために、後ろにある B というファイルの一部を移動した結果、今度は B にフラグメント(断片化)が生じるかもしれない。
A も B も C も…すべてのファイルが、同時に最短の手数でデフラグできれば良いのだが、そのような計算は複雑すぎて現実的ではない。
これに、さらに「よく使うものを外周に集める」なんて条件をつけると、計算の複雑さは破滅的なことになる。
結果として、一般的なデフラグ作業は、場当たり的に作業を繰り返し、無駄が生じても時間をかけることで全体の作業を終わらせている。
特に、長年使い続け、1度もデフラグをかけていないディスクに対して、「最大効果の」デフラグをかけた場合、ディスクを動かし続ける時間は非常に長くなる。場合によっては1日かかっても終わらない。
ハードディスクは、読み書きがないときは回転速度を落としていることが普通である。
これは、回転することで周囲の空気を巻き込んで渦を作り、空気の摩擦(と圧縮)で熱を持ってしまうためである。
理想を言えば回転を完全にとめてしまえば良いのだが、そうすると次にアクセスが発生したときに回転が安定するまで待つ時間が長くなるため、よほどのことがない限り、適当に速度を落として待機している。
逆に、アクセスし続けると、熱を発生し続けることになる。
そして、磁気記録媒体にとって、一番の敵は「熱」なのだ。
キュリー点を越えると磁性体は完全に磁性を失うが、そこまで行かなくても熱によって磁性は「減衰」するためである。
デフラグによって長時間ディスクが回され、それによって発生した熱によって、ディスクが破壊される、というのは現実味のあるシナリオだ。
これが、デフラグはしないほうがよい、とする人々の最大の論拠だ。
こちらは、可能性を指摘するだけで科学的根拠がない。というか、あげようがない。
実際、ハードディスクが「壊れる」というのであれば故障率を出さなくてはならないが、数千台を使うような実験は実際問題として難しい。
google は、「ハードディスクの故障率と温度は関連性がない」というレポートを出しているが、これは十分に空冷された状況での温度が前提である。
メンテナンスが不十分で、空気流入口にホコリが詰まったような古い PC で、ハードディスクをフル稼働すれば前提となる温度を簡単に超えてしまい、google ですらも「故障しやすい」と認めている温度に突入する。
科学的論拠がないのは弱いところだが、まったくの言いがかりでもない、というところか。
「するべきでない」派の人には、機械を動かせば当然金属疲労を起こして壊れる、という主張をする人もいる。
でも、これはあまり問題でないというか、言いがかりに思える。
ハードディスクの故障のほぼすべては、データが読み出せなくなる、というものだからだ。
この理由は二つで、磁気が弱まってしまったか、物理的にディスクに傷がついたかだ。
金属疲労でヘッドを動かすアームが折れる、というようなトラブルはまず起こらない。
磁気が弱まる理由は、先に挙げた熱もあるが、「記録してから時間がたった」というものも多い。
単に時間がたっただけで、ディスクは(というか記録は)壊れるものなのだ。
「するべき」派の人には、デフラグすることで再記録が行われ、記録が長持ちするようになる、という効用を上げる人もいる。
でも、じつはハードディスクは「読み出した際に、記録が弱まっていれば自動的に書き直す」機能を持っている。
だから、デフラグしたからといって記録が長持ちするようになるわけではないし、そもそも長期間ほったらかしのデータは、断片化を起こすわけもないので、デフラグ時にもほったらかしだったりする。
…などなど、デフラグを「するべき」「するべきでない」の双方に、ほかにもいろいろな主張があるが、怪しいものが多い。
さて、デフラグはするべきか、否か。
自分の答えは、もちろん「するべき」である。だから、先に書いた日記で、デフラグソフトの選定顛末を書いたのだ。
デフラグを「するべき」派と、「するべきでない」派の論争は、ちょっと両極端すぎるように思える。
デフラグというのは、一種のソートアルゴリズムだ。
ソートアルゴリズムはよく研究されているが、どんなアルゴリズムを使用しても、最大の効率を上げるのは「データがすでにソートされている場合」であることがわかっている。
なにもすることがないのだから、当然だ。
デフラグもソートアルゴリズムなのだから、「すでにデフラグされていれば、最大効率」である。
次に効率がよいのは、「ほとんど」デフラグが終わっている場合だ。
つまり、マシンが古くなって、動作が遅くなってきたからデフラグを行おう、では遅すぎる。
そのときには、デフラグをしなくてはならないファイルがあまりにも多すぎて、ハードディスクに大きな負荷をかけることになってしまう。
その負荷の大きさゆえに故障した、という例を持って「デフラグはしないほうがよい」というのは、極端すぎる意見だ。
でも、実は「デフラグをするべき」という人々の中にも、「デフラグ中の並び替え動作を見ているのがすき」という人たちがいる。
こういう人たちは、時々しかデフラグしない。だって、頻繁にやると、すぐにデフラグが終わってしまってつまらないから。
半年に一回とか、一年に一回とか、断片化を十分溜め込んでから、一気にきれいにする。
これだと、デフラグが好きだといっても、やっぱりディスクに負荷がかかる。
まぁ、気持ちはわかるし趣味なのでとやかく言うことではないのだけれど。
(まったくの余談だが、そういう人たちを満足させる、「わざとディスクを断片化させる」ツールまで存在する。
実際には、デフラグツールを評価する前に、十分に断片化状態を作り出すために作られたツールなのだけどね。)
僕が使うことにした、Smart Defrag 2 では、バックグラウンドで毎日勝手にデフラグを行う。
1回あたりの所要時間は、3分程度。しかも、バックグラウンドで動作しているのが気づかない程度の低負荷で実行している。
この程度の負荷でディスクが熱を持って壊れる、とは思わない。
もしこれで壊れるのなら、普段使いでも壊れるだろう。
週に一度、最適化を行って外周によく使うデータを集めるようにしてある。
これも、かかる時間は10分以内だ。
Smart Defrag ではなく、MyDefrag でも、実行モードとして「Daily Defrag」「Weekly Defrag」「Monthly Defrag」などを用意している。
デフラグ後の状態としては、MyDefrag のほうが評判がよいので、こちらを使うのもよいと思う。
ただし、デフラグ中の動作は、SmartDefrag よりも重いし、時間も長くかかる。
さらにいえば、自動実行させる設定も面倒だ。
いずれにせよ、デフラグツールを作成する側としては、デフラグとは「毎日でも行うもの」であることを前提に考えているのだろう。
最後になるが、断片化している状態、については、どのデフラグツールも見解が一致している。
1つのファイルが分断して記録されていれば、それは誰が見ても「断片化」なのだ。
しかし、断片化「していない状態」については、見解が分かれるようだ。
たとえば、MyDefrag では、頻繁に更新されるデータファイルの後ろは、若干の「空き」があるのが正しい状態だ。
こうしておけば、ファイルが更新されても、デフラグを起こさないから。
でも、できるだけ多くのファイルを外周に詰め込む、という考えを持つと、わずかな「空き」は罪悪である。
ファイルが連続して入っていないということは、これも「断片化」の一種なのだ。
そのため、MyDefrag がきれいに詰め込んだ状態を別のソフトで見ると「デフラグが必要」といわれてしまったりする。
ここら辺になると、宗教論争。
宗教なのだから、自分が信じたデフラグソフト1種類だけを使って、ほかは寄せ付けない、浮気しない、という態度が必要。
もっとも盲信していると、よりよいソフトが出た時に気づかないことになってしまうので、時々世間を知るのはよいように思う。
僕は、以前は MyDefrag を使っていたけど、Windows7 再インストールを機に Smart Defrag2 に乗り換えました。
同じテーマの日記(最近の一覧)
関連ページ
古くて非力なマシンをLinuxBeanで再生してみた【日記 15/10/23】
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |