FreeBSDにて。
いつも使っていたUSBメモリがfsckで「partition 1 does not end on a track boundary.」(パーティション1がトラックの切れ目で終わってないよ!)のエラーが出てしまい、mountできなくなってしまった。
なんとかかんとかデータをデータのサルベージはできたので、その手順を記録。

手順

①データ退避

ddコマンドで。

1
2
3
$ dd if=/dev/da0 of=usb.img bs=128M
$ dd if=/dev/da0 of=usb.noerror.img conv=noerror,sync bs=128M

②デバイスにファイルを割り当て

mdconfig を使って、上記イメージファイルをデバイスにする

1
2
3
$ mdconfig -a -t vnode -f usb.noerror.img
md0


確認
1
2
$ ls -l /dev/md0


マウントしてみるテスト
1
2
3
$ mount /dev/md0 /mnt
mount: /dev/md0 R/W mount of /export denied. Filesystem is not clean - run fsck.: Operation not permitted

失敗!

③割り当てたデバイスをリカバリ

fsckする

1
2
3
$ fsck /dev/md0
fsck: Could not determine filesystem type

ダメー!
fsck_ffsで再チャレンジ

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
$ fsck_ffs /dev/md0
** /dev/md0
** Last Mounted on /export
** Phase 1 - Check Blocks and Sizes
** Phase 2 - Check Pathnames
** Phase 3 - Check Connectivity
** Phase 4 - Check Reference Counts
** Phase 5 - Check Cyl groups
12623 files, 895298 used, 1016773 free (1181 frags, 126949 blocks, 0.1% fragmentation)

***** FILE SYSTEM MARKED CLEAN *****


もっかいマウント
1
2
3
4
$ mount /dev/md0 /mnt
$ ls /mnt
.snap           bin             svn-repos       usercmd


マウント成功!
とりあえず、これでデータをサルベージ。

④後始末

いろいろアンマウント

1
2
3
$ umount /mnt
$ mdconfig -d -u /dev/md0


 

参考URL

閲覧順に列挙