動作がおかしい・・・?
サーバに一応ログインできるけどDBなどサービスが止まってる。
HDDの読み書きが以上に遅い。
S.M.A.R.T.(smartctl -a)情報にエラーが出ている。
topやlsやcpなどのコマンドを打つとInput / Output Errorが出てしまう。
dmesgを見るとmount時に「end_request critical target error」「blk_update_request: critical medium error」などの変なエラーが出ている。
そんな怪しい症状が出たら・・・サーバのHDDが故障しているかもしれません。
エラーをチェック&修復
まずはfsckコマンドを使います。対象HDDをマウントしている状態では使えないので、アンマウントするか、より安全を期してレスキューモードがサーバ管理画面にあればそれを使って入り(実機ならDVD起動)、
# fsck /dev/sdb1
とパーティションに対しコマンド実行します。
「Group descriptor 0 checksum is invalid. FIXED.」みたいなのが出たら異常があったので修復したという事です。
「Free blocks count wrong for group #177 (25930, counted=27450).
Fix? yes」みたいなのが大量に確認を要求して来る事があるので、その時は一旦Ctrl + Cでキャンセルして、fsck -y /dev/sda1で再実行すると全ての確認をパスする事ができます。
どちらも一応修復はされますが、このエラーが出る時点で故障が近づいている可能性もあるので気を付ける必要があります。
再マウント時に「mount: wrong fs type, bad option, bad superblock on /dev/sdb1」みたいなエラーが出てると、致命的に壊れてる事が多いかもです。通常は未フォーマットHDDをマウントする時に出るエラーです。
TestDiskツールでパーティションを復旧
パーティションテーブルが壊れている場合は大抵は詰みですが、なんとそれを復旧してくれる超便利なTestDiskというツールがあります。
CentOSでインストールする場合は
# yum install epel-release # yum update # yum install testdisk
でOKです。
# testdisk
を打つとメニュー画面が出て来るので、上下カーソルで調べたいドライブを選択します。
2TB以下の容量ならIntel、それ以上ならEFI GPTを選びます。
次にAnalyseを選択します。
解析すると、現時点で確認できるパーティション情報が表示されます。パーティションテーブルが壊れている場合には何も表示されません。
Quick Searchを選ぶとスキャン開始されます。この時点で候補となるパーティションのリストが出てきます。RAIDとか特殊な構成とかでなければ「D: linux filesys. data」というのが出てくると思います(これが緑色で表示されていれば正しいパーティション候補である可能性大)ので、Pを押します。運が良ければここでHDD内のファイルリストが表示されます。ここで他HDDにコピーする事もできます。パーティションを修復したい場合はqで戻り、パーティション候補で左右キーを押すと頭文字のDがPに変わりますのでそこでEnterします。さらにWriteを選ぶと確認画面が出ますので、Yを押すとパーティションテーブルを書き込みます。その後qで画面を出て再起動すると設定が反映されます。
もしQuick Searchの時点で出てきた候補でPを押してもファイルリストが見つからない場合、Deeper Searchを行います。HDDを時間をかけて読み込んでいき、どんどんパーティションの候補が増えていきます。
linux filesys. dataがどんどん増えて行きますが、右側欄のセクタ情報等の数値が異なるので別のパーティションだと認識できます(重複もあります)。HDD全てをスキャンしなくても、ある程度でEnterを押すとスキャン中断し操作が行える様になります。
最初の linux filesys. dataとは数値が異なるパーティション候補を選びPを押し、ファイルリストが出たらビンゴです。その候補の頭文字をPに変更し、上述の手順を踏んでください。
それでHDDが復旧したら完全に故障する前にすぐに新しいHDDにデータを避難させます。
Fdisk or Partedによるパーティションの作成
新HDDに換装した、またはHDDの物理故障ではないようなのでパーティションを作り完全にフォーマットしたいという場合は、MBRの場合はfdisk、GPTの場合はpartedというコマンドを使ってパーティションを作成します。
# parted /dev/sdb # 2番目のHDDにパーティション1つ切ってみる (parted)mklabel unrecognised disk label #まっさらなディスクにはこれが出ても問題ない New disk label type? gpt # 2TB以上はGPT、そうでなければMBR (parted)mkpart File system type? [ext2]? ext4 # ファイルシステムはext4 Start? 0% #HDDの最初から最後まで1つのパーティションにする End? 100%
Gparted Error: Input/Output error during read on /dev/sdbみたいなエラーが出る場合は、HDDまたはシステムボード、コネクタに問題があると思います。
mkfsによるファイルシステム作成
fdisk or partedでパーティション分けが出来ても、ファイルシステムがまだ出来てないのでmountが失敗します。あせって/etc/fstabに追記して再起動、とかしてはいけません。
# mkfs.ext4 /dev/sdb1
のようにしてファイルシステムとしてフォーマットします。partedやdf -hで確認し、問題がなければ
# mount /dev/sdb1 /var/www/html/data
のようにしてマウントし、問題なければ/etc/fstabに追記します。
コメント