5. メンテナンス・トラブルシュート - ハードディスク・ファイルトラブル - badsect 不良セクタを封じ込める

 
5.1 概要
5.2 ハードディスクのプロパティを調査
5.3 不良セクタを封じ込める

5.1 概要

 現在(2018年5月2日)、FreeBSD をインストールしているメインのマシンとバックアップ用マシンがあります。  バックアップ用マシンは、以前、メインのマシンとして使用していたのですが、不良セクタが発生して、重要なファイルが壊れていまうといかんので、バックアップ用マシンに格下げしました。  バックアップ用マシンに不良セクタがあるというのもなんだかなぁの話ではありますが・・・。  FreeBSD には badsect というコマンドがあって、これは BAD というファイルを作成して、その中に不良セクタを封じ込めることにより、他の正常なファイルに影響を与えないようにするものです。  使ってみたかったのですが、メインのマシンでコマンドを打ち間違えるのが怖くて、使っていませんでした。  この際、バックアップ用マシンに格下げしたことですし、バックアップ用マシンに不良セクタがあるのも・・・なので、badsect を使ってみようと思います。  本項は以下のサイトを参考にさせていただきました。
badsect を行い、 fsck をかける: uyota 匠の一手」
「はとちゃんの足跡 ~タイムマシンにお願い~ badsectコマンド萌え

5.2 ハードディスクのプロパティを調査

 ハードディスクのプロパティを調査するそうな。

> fdisk
******* Working on device /dev/ada0 *******
parameters extracted from in-core disklabel are:
cylinders=310101 heads=16 sectors/track=63 (1008 blks/cyl)

Figures below won't work with BIOS for partitions not in cyl 1
parameters to be used for BIOS calculations are:
cylinders=310101 heads=16 sectors/track=63 (1008 blks/cyl)

Media sector size is 512
Warning: BIOS sector numbering starts with sector 1
Information from DOS bootblock is:
The data for partition 1 is:
sysid 238 (0xee),(EFI GPT)
    start 1, size 312581807 (152627 Meg), flag 0
        beg: cyl 0/ head 0/ sector 2;
        end: cyl 1023/ head 255/ sector 63
The data for partition 2 is:
<UNUSED>
The data for partition 3 is:
<UNUSED>
The data for partition 4 is:
<UNUSED>
 えっとこの start + size の値(上記の場合は 312581808 か)を dd コマンドに食わせるのだそうで・・・。  大量に不良セクタが存在しそうなので script でファイルに吐くか、Tera Term のログ機能を有効にして

> dd if=/dev/ada0p2 of=/dev/null count=312581808 conv=sync,noerror
dd: /dev/ada0p2: Input/output error
456+0 records in
456+0 records out
233472 bytes transferred in 11.892989 secs (19631 bytes/sec)
dd: /dev/ada0p2: Input/output error
dd: /dev/ada0p2: Input/output error
457+0 records in
457+0 records out
233984 bytes transferred in 23.850947 secs (9810 bytes/sec)
dd: /dev/ada0p2: Input/output error
dd: /dev/ada0p2: Input/output error
458+0 records in
458+0 records out

	・・・

 /dev/ada0p2 の箇所は
/etc/fstab
 に書いてあるデバイス名(イマドキはマウントポイントを1つにしているのでわかりやすい)。  果たしてどれくらい出力されるのか、どれくらい時間がかかるのか?  456 以降、果てしなく連続するので不安になる。

5.3 不良セクタを封じ込める

 不良セクタを封じ込める BAD ディレクトリはマウントポイントのルートに作成するそうで、1つしかマウントしていないので

> mkdir -pv /BAD
 で、前項で抽出した不良セクタを封じ込めるわけです。

> cd /
> badsect BAD 456 457 (スペースで区切って指定するのだそうな・・・)
 とまぁ。ここまで書いたものの・・・実際に badsect コマンドを使用することはなかったのです。  今回のディスクドライブの不良は、不良セクタというものとは違う模様・・・。  だって・・・。fsck ではエラーが出なかったんだもん・・・。  ここまでの手順で解決できるのは、不良セクタが点在するような場合のようで・・・。  どうにもならん場合は、ハードディスクを購入するのであるが・・・。  久々にローレベルフォーマッタを使ってみるか・・・。  これは別のページに。