USBメモリのファイルシステムのエラーチェックと修復
USBメモリにファイルを書出したり削除したり移動したり、ディレクトリを作成したり削除したり移動したりすることができなくなった。それらの操作をするとLinux(Debian Gnu/Linux lenny)がそれらのファイルやディレクトリは「読出し専用」だと応答してくる。しかしそれらのファイルやディレクトリのパーミッションを見ると、rwxrwxrwxとなっており、読出し専用には見えない。このUSBメモリにはそれらの操作を物理的にロックする機能は装備されていない。いったいぜんたいどうなってしまったのやら。
不思議なのは、このUSBメモリを一端umountして再度mountするとこれらの症状が一時的にだが改善すること。物理的に完全に破損してしまったのかと最初は諦めかけたのだが、そうこうしているうちに、この症状が改善したり再発したりを繰り返すようになった。この症状が一端出てしまうと再mountしないかぎり改善しないが、再mountすれば改善する。しかし使っているうちにまた再発する。この繰り返し。
再マウントを繰り返しながらファイルを一つずつ削除しているうちに、削除(rm)しようとすると「入力/出力エラー」を生じるディレクトリに遭遇した。このディレクトリだけは再マウントをいくら繰り返しても削除できず、入出力エラーを吐き出し続けた。これについてはUSBメモリのファイルシステムが壊れている可能性が疑われる。
そこで、コマンドライン上でsuコマンドを使ってルートになり、fsckを使ってファイルシステムのチェックを試みたが、失敗した。このUSBメモリのファイルシステムのタイプはどうやらFAT32らしい。FATのチェックのためには、fsck.vfatもしくはfsck.msdosというコマンドが必要なようだが、コマンドライン上でfsckと入力してタブキーを二度押してもfsck.vfatもfsck.msdosも表示されなかった。
dosfstools-dbg - utilities for making and checking MS-DOS FAT filesystems (debug)
dosfstools - MS-DOS FAT ファイルシステムの作成および検査用ユーティリティ
上述のように、dosfstoolsというdebパッケージがDebian GNU/Linux lennyのリポジトリに見付かったので、これをinstallした。インストール後に再びfsckと入力してタブキーを二度押すと次のように表示された。
fsck fsck.cramfs fsck.ext2 fsck.ext3 fsck.ext4 fsck.ext4dev fsck.minix fsck.msdos fsck.nfs fsck.vfat
fsck.msdosやfsck.vfatが存在するのが分かる。dfコマンドでUSBメモリがマウントされることになるデバイス名を調べ、USBメモリをアンマウントしておく。私の環境では/dev/sda1だった。
と入力して実行するとチェックが始まる。-aというオプションは自動的に修復を試みる場合に指定する。自動的にでなく対話的にするならば-rを指定する。USBメモリによってはfirst fatを使うかsecond
fatを使うか尋ねてくるが、この意味が分からなかった。FAT16かFAT32かを尋ねているのだろうか?
fsck.vfatを実行することによって、「入力/出力エラー」を生じるディレクトリの削除がとりあえずできるようになった。ただし、破損しているファイルはこれを行うことによって元に戻るわけでなく空のファイルになってしまったりするので要注意。
コメント
コメントを投稿