ブログネタ
Linuxに関する運用 に参加中!

はじめに


今回は、ファイルシステムの高速化最適化を紹介したいと思います。と、言ってましたがしてはいけません。そもそもfsckを気軽にするものではないということみたいです。確かに私の経験談では、Linux起動しなくてエイヤ!!って実行して起動出来た事はありますが、それは運が良かっただけだそうだ。昨今のジャーナリングファイルシステムだからってもおあるかもとかですが… 本当に何も手がなくてデータがなくなってしまうことを覚悟してするものだとか。まあLinuxデスクトップな使用ならホームパーティションバックアップとってあればなんとかなりますが、ディスク痛めるのもいやですし。企業なんかだとfsckを実行していいか許可をとってからするものらしいです。それなのに私はこんな高速化出来るとかって嘘を広めてしまって…
というわけで皆さん

fsckは気軽に実行してはいけませんよ!!



PCを使っているとファイルシステムが断片化したり、HDDにバッドセクタが出来たりします。
特に、バッドセクタはシステムがクラッシュしたときなどに生じることが多いと思われます。
今回は、この断片化バッドセクタの修復法を紹介したいと思います。
(必ず最後まで読んでコマンドを実行してください。不用意にfsckすると
返ってファイルシステムが壊れる可能性があります。
もちろん、何があっても保証はしませんのでバックアップも忘れずに。またこの作業は長時間かかると思われますのでご注意を。)


断片化について


ではまずは、断片化についてちょっと触れると、
Linuxでは、ファイルシステムが優れているからデフラグは必要ないとよく言われます。

ですが、ディレクトリに限りどうやらデフラグ、圧縮してくれる機能がfsckに実は備わっているようです。
詳しいことは、

man fsck.ext4

を読んでもらうとして、どうやら、extなファイルシステムのfsckでは-Dオプションを使えば良いようです。

バッドセクタについて


つぎに、バッドセクタとは、バッドセクタ(不良セクタ)とは? - ハードディスクデータ復旧実績白書によると、I/Oエラーが検出されたセクタの総称のことらしいです。
で、要約するとHDD出荷時にもバッドセクタはあるらしいのですが、
OSインストール時にフォーマットする際に、バッドセクタは使わないように
ファイルシステムを構築するようです。

ですが、はじめにの節でも述べましたが、PCもしくはサーバーにシステム障害があって
HDDとの同期が取れずに終了するとバッドセクタができることがようです。
Linuxでは通常、システムを起動する際に簡易なファイルシステムチェックが行われるようにできており、
ファイルシステムが正常であれば、そのまま起動し、
異常があればファイルシステムのチェックを開始するような仕組みが搭載されています。
(もちろん、Windowsにもあります。)

ですが、起動時のfsckでは、簡易なチェックでしか行わないためファイルシステムが正常だと判断されると、
バッドセクタの修復(実際にはバッドセクタを使わないようにする)をしてくれないこともあるようです。
バッドセクタの修復をするには、fsckに-cオプションを使います。

実際の作業方法


では、実際にLinuxでデフラグとバッドセクタを修復する方法を紹介します。

まずは、システムが起動している場合は、再起動します。
電源を切っている場合はもちろん、ONにしましょう。

シングルユーザーモードで起動


まずは、シングルユーザーモードで起動します。
Linuxシステムが起動したら、grubの画面が出ると思います。
出たら、e(editを意味する。)を押してください。
↓キーでkernelの行に移動し、eを押します。
kernelの行の一番最後に移動するので、[スペース]キーを押し、sを入力、[Enter]キーを押し、
[Esc]キーで戻ってbを押し、ブートすればシングルユーザーモードで起動できます。
起動すると

#

とコマンドを受け付ける状態が表示されると思います。

アンマウント


通常システムが起動すると、ファイルシステムを全てマウントします。
ですが、このままfsckを実行するとファイルシステムが壊れてしまいます。
ですのでまずは、アンマウントしましょう。

umount -a


fsck


無事、アンマウント出来たらファイルシステムを修復、デフラグ、バッドセクタの修復をします。

fsck -fpcDv

とします。

  • -fはファイルシステムが正常でもチェックする。

  • -pは自動的にファイルシステムを修復する。

  • -Dはいわゆるデフラグをする。

  • -cはバッドセクタを修復する。

  • -vはfsckの状況を詳細に出力する。


を意味します。
全部、チェックし終わると
REBOOT LINUX
と表示されるので、
再起動してください。

これで、HDDへのアクセスがOSを再インストールをしたとき並に高速化最適化されると思います。