badsect ではマウントできないファイルシステムは回避できない2017年05月19日 17時44分47秒

FreeBSD には badsect という不良セクタを回避するプログラムがある。不良セクタが出ていたので試そうとしたが、今回は無理なケースだった。これはファイルをあらかじめ作成して、以降の利用を防ぐので、ファイルシステムが機能しないと使えない。

fsck を何度かけても、特定の場所で失敗する。

$ fsck_yfs -y /dev/ada0s2e
** /dev/ada0s2e
** Last Mounted on /usr/local
** Phase 1 - Check Blocks and Sizes

CANNOT READ BLK: 20468128
UNEXPECTED SOFT UPDATE INCONSISTENCY

CONTINUE? yes

THE FOLLOWING DISK SECTORS COULD NOT BE READ: 20468153, 20468154,
** Phase 2 - Check Pathnames
** Phase 3 - Check Connectivity
** Phase 4 - Check Reference Counts
** Phase 5 - Check Cyl groups
215141 files, 2680121 used, 2396958 free (27470 frags, 296186 blocks, 0.5% fragmentation)

***** FILE SYSTEM STILL DIRTY *****

***** PLEASE RERUN FSCK *****
本来なら、
$ mkdir .BAD
$ badsect .BAD 20468153 20468154
なのだろう。

しかし、かなりのダメージがあるようで、

# mount -onoatime /dev/ada0s2e /mnt/ufs
mount: /dev/ada0s2e: R/W mount of /usr/local denied.
Filesystem is not clean - run fsck.: Operation not permitted
と失敗する。

ここから復帰するには、newfs は避けられない様に見える。

次回