阿部です。

fsck が Segmentation fault を起こしてしまい、
通常の手順でファイルシステムの復旧ができなくなりました。
このときの対処方法を備忘録として提供します。

現象としては、

# fsck -t ufs /dev/da2s1f
** /dev/da2s1f

CANNOT READ BLK: 137744992
CONTINUE? [yn] y

fsck: /dev/da2s1f: Segmentation fault: 11
#

となり、通常の手動による fsck では復旧できません。

そこで、/usr/ports で

        % make search key="recover"

を実行して、使えそうなツールを検索しました。
# 該当のファイルシステムは、システム領域ではないので
# FreeBSD 自体は起動するので調査作業は可能です。

結果、/usr/ports/sysutils/ffs2recov を見つけました。
pkg-descr を読む限り、使えそうだったので早速インストールして実行。

% ffs2recov -s /dev/da2s1f
superblock: 65536(byte), 128(block)
superblock: 81920(byte), 160(block), cg: 98304(byte), 192(block), 0(nth), fs 
begin: 0(block), primary sb at: 128(block)
readin:  bread failed (blk 18446743884730992096 len 4096) : Input/output error
superblock: 6160384(byte), 12032(block)
%

ffs2recov の結果を見ると、fsck が Segmentation fault を起こすのは、
blk 18446743884730992096 というおかしな値が設定されているからだと推測できます。

そこで、alternate superblock を利用して fsck を実行すると
復旧できるかなと思い、次のコマンドを実行しました。

# fsck_ufs -b 160 /dev/da2s1f
Alternate super block location: 160
** /dev/da2s1f
** Last Mounted on 
** Phase 1 - Check Blocks and Sizes
** Phase 2 - Check Pathnames
** Phase 3 - Check Connectivity
** Phase 4 - Check Reference Counts
** Phase 5 - Check Cyl groups
SUMMARY BLK COUNT(S) WRONG IN SUPERBLK
SALVAGE? [yn] y

17034 files, 16174610 used, 17215823 free (2551 frags, 2151659 blocks, 0.0% 
fragmentation)

UPDATE STANDARD SUPERBLOCK? [yn] y


***** FILE SYSTEM WAS MODIFIED *****

どうやら無事、ファイルシステムを復旧できました。
# alternate superblock を使った復旧は、
# alternate superblock の値を知らないとできないんですね。
# newfs 実行時に表示されるのですが、メモしてなかったので…。

念のため、もう一度、fsck を -p 付きで実行。

# fsck -p /dev/da2s1f
/dev/da2s1f: FILE SYSTEM CLEAN; SKIPPING CHECKS
/dev/da2s1f: clean, 17215823 free (2551 frags, 2151659 blocks, 0.0% 
fragmentation)

問題なさそうなので、マウントをして内容を確認。

        # mount -o ro /dev/da2s1f /mnt

なお、disklabel の復旧には、/usr/ports/sysutils/scan_ffs が使えそうでした。


以上、fsck が使えない場合の復旧方法の一例でした。
めったに遭遇しないと思いますが、参考までに。
# ちなみに、googleearth でドラッグして動かしていたらフリーズしたのでした。

ではでは。
-- 
阿部康一/Kouichi ABE (WALL)
[メールアドレス保護]
http://www.MysticWALL.COM/
4196 185C B814 8F96 D170  B492 71A8 1B2B B9D5 5CF5

メールによる返信