RaspberryPi3で使っているmicroSD壊れLinuxコマンドfsckで検証

RaspberryPi3で使っているmicroSD壊れ
白いSanDisk Ultraは2017年09月にリリースして2018年06月に起動出来ない状態。運転期間は約9ヶ月でした。予備の同一microSDに当時作ったimgファイルを書き込みをしてapt-get update → apt-get ...

↑ここで問題発生したmicroSDをCentOS Linuxの母艦fsckコマンドを用いて調べてみました。
結果赤いTrancendはfdiskで認識すらできない状態。白いSanDisk Ultraはvfat,ext4ともエラーを抱えておりext4では修復もでませんでした。心置きなく捨てました。。。ポイポイ

以下修復ができるかな?と考えて行った作業記録メモとなります。

母艦の環境

OS CentOS
PC Panasonic CF-S9

microSD→USB変換アダプタ Transcend型番不明

fdisk

/dev/sdbがmicroSDです。

mount

これから使うコマンドはmount状態では使えないので/dev/sdbはunmountする必要があります。

# umount /dev/sdb*

修復コマンド

このオプションでは障害は見つけられても修復はできない

-w -r オプションを付けて実行 修復されている事を確認。

sdb2は修復できないほど壊れている様子 yを連打するも終わらない

諦め悪くパーティション操作で生き返るか→否

パーティションのrmのみはできましたが、パーティション作成ができません。

当然ながらWindowsのフォーマッターも使えませんでした。なのでポイです。

もう一機不調(再起動時ハング)のRaspi3がありそちらのmicroSDも調べてみましたが、正常でした。機体側か供給電源の不安定さが原因なのでしょう。機体の交換で様子を見る予定です。

おまけ(文字抜け、スペース変)

# man fsck(引用)

FSCK(8) System Manager's Manual FSCK(8)


fsck - Linux ファイルシステムのチェックと修復を行う


fsck [ -sAVRTNP ] [ -C [ fd ] ] [ -t fstype ] [filesys ... ] [--] [ fs-specific-options ]


fsck は (ひとつまたは複数の) Linux ファイルシステムをチェックし、 また指定すれば修復も行う。 filesys に指定できるのは、デバイス名 (例: /dev/hda1,
/dev/sdb2)、 ファイルシステムのマウントポイント (例: /, /usr, /home)、 ext2 ラベルまたは UUID 指定 (例: UUID=8868abf6-88c5-4a83-98b8-bfc24057f7bd,
LABEL=root) である。 通常 fsck は、 物理的に異なるディスク上にある複数のファイルシステムを並列的にチェックし、
全ファイルシステムのチェックに要する時間を短縮しようとする。

コマンドラインからファイルシステムがひとつも指定されず、かつ -A オプションも指定されなかった場合は、 fsck はデフォルトの動作として /etc/fstab
に書かれているファイルシステムを逐次的にチェックする。 これは -As オプションを指定した場合の動作と同じである。

fsck の返り値は、以下の状態を表す数の和となる。
0 - エラーなし
1 - ファイルシステムのエラーが修正された
2 - システムをリブートする必要がある
4 - ファイルシステムのエラーが修正されないまま
残っている
8 - 操作エラー
16 - 利用法・文法のエラー
32 - fsck がユーザ要求によってキャンセルされた
128 - 共有ライブラリのエラー
複数のファイルシステムをチェックした場合の返り値は、 チェックした各ファイルシステムの返り値に対して、 ビットごとの OR をとったものになる。

fsck は、実際には Linux で利用できるさまざまなファイルシステムチェッカー (fsck.fstype) への単なるフロントエンドにすぎない。
ファイルシステム固有のチェッカーは、 /sbin, /sbin/fs.d, /sbin/fs, /etc/fs, /etc, 環境変数 PATH 内のディレクトリの順にサーチされる。
詳細はファイルシステム固有のチェッカーのマニュアルを参照すること。


-s fsck の動作を逐次的にする。 複数のファイルシステムを インタラクティブ (対話) モードでチェックする際に有用。 (注意: デフォルトでは e2fsck(8)
の動作は対話モードである。 e2fsck(8) を非対話モードで動作させるには、 -p オプションか -a
オプションを使用する。また非対話的にエラーを自動修復させたい場合は -n オプションを利用する。)

-t fslist
チェックするファイルシステムのタイプを指定する。 -A オプションが指定されている場合は、 fslist
にマッチするファイルシステムのみをチェックする。 fslist パラメータは、コンマで区切られた ファイルシステムとオプション指定のリストである。
このコンマ区切りのリストに含まれるファイルシステムのすべてに、 否定演算子 'no' または '!' を前置することもできる。 これにより、 fslist
にリストされていないファイルシステムだけがチェックされる。 fslist のファイルシステムすべてに否定演算子が付けられていない場合は、 fslist
にリストされているファイルシステムのみがチェックされる。 (訳註: リストの一部だけに否定演算子を付けることはできない)

オプション指定をコンマで区切った形で fslist に含めても良い。 これらは opts=fs-option という書式でなければならない。
オプション指定が存在すると、 /etc/fstab のマウントオプションのフィールドに fs-option があるファイルシステムのみがチェックされる。
オプション指定の前に否定演算子がある場合は、 /etc/fstab のマウントオプションのフィールドに fs-option
がないファイルシステムのみがチェックされる。

例えば、 opts=ro を fslist に指定すると、 /etc/fstab にリストされているファイルシステムのうち、 ro
オプションを持つものだけがチェックされる。

fsck プログラムへの非公式なユーザインターフェース変更に 依存したブートスクリプトを使っている Mandrake
ディストリビューションとの互換性のため、 fslist にファイルシステムタイプ loop があった場合、 -t オプションの引き数として opts=loop
が指定されていると仮定する。

通常ファイルシステムのタイプは、 filesys を /etc/fstab ファイルから検索して見つかったエントリから取得する。
ファイルシステムのタイプが取得できず、 かつ 1 つのファイルシステムだけが -t オプションの引き数になっている場合、 fsck はそれを利用する。
指定してあるファイルシステムタイプを利用できない場合は、 デフォルトのファイルシステムタイプ (現時点では ext2) を利用する。

-A /etc/fstab に列記されているファイルシステムをすべてチェックする。 このオプションを用いれば、複数のファイルシステムに対して fsck
をひとつひとつ単独で実行しなくてもよいため、 システムの初期設定ファイルである /etc/rc 中でよく利用される。

-P オプション (後述) が指定されていなければ、 ルートファイルシステムが最初にチェックされる。その後、 /etc/fstab ファイルの第 6
フィールドである fs_passno の順序にしたがって他のファイルシステムがチェックされる。 fs_passno の値が 0
であるファイルシステムは、スキップされて一切チェックされない。 fs_passno の値が 0 より大きいファイルシステムは、小さい fs_passno
値を持ったものを優先し、順番にチェックされる。 同じ番号が指定されているファイルシステムが複数ある場合には、 fsck
はそれらを並列してチェックしようとする。 しかし同じ物理ディスクにあるファイルシステムの同時チェックは避ける。

したがって、 /etc/fstab に対する最も普通の設定は、ルートファイルシステムの fs_passno を 1 とし、他のすべてのファイルシステムの fs_passno を
2 とするものである。こうすると fsck は、(効果が期待できる場合には) 自動的にファイルシステムチェッカーを 同時に並列して動作させる。
何らかの理由で複数ファイルシステムの 並列チェックをしたくない場合には、システム管理者はこの設定をしてはいけない。
たとえばマシンのメモリが少なく、余分なページングが 問題になる場合などがこれにあたる。

-C [ fd ]
作業完了分・残り分の棒グラフをサポートしている ファイルシステムチェッカー (現在 ext2 と ext3 用のものだけ) に、 表示を行わせる。 fsck
は一度にひとつのチェッカーだけが表示を行うように、 複数のチェッカーを管理する。 GUI フロントエンドにはファイルディスクリプタ fd
を指定することができる。 この場合、棒グラフの情報はファイルディスクリプタに送られる。

-N 実際には実行せず、何が行われるかだけを表示する。

-P -A オプションが指定されている場合、 ルートファイルシステムを他のファイルシステムと並列にチェックする。
ルートファイルシステムが壊れている場合には e2fsck(8) 自体が壊れている可能性もあるため、
このオプションを用いるのは安全性を損なうことになる。 このオプションは、
ルートファイルシステムを小さくコンパクトなパーティションに切りなおしたくない システム管理者向けのオプションである
(ルートファイルシステムを小さくコンパクトにまとめるのが正しい解なのだが)。

-R -A オプションを用いて全てのファイルシステムをチェックする際に、 ルートファイルシステムをチェックしないようにする
(ルートファイルシステムがすでに read/write でマウントされている場合)。

-T 起動時にタイトルを表示しない。

-V fsck から起動されるシステム固有のコマンドを含め、詳細な表示をする。

fs-specific-options
fsck が理解しないオプションは、ファイルシステム固有のチェッカーに渡される。 これらのオプションは引き数をとってはな
なぜなら、どのオプションが引き数をとるか (とらないか) を fsck が正しく判断できる方法がないためである。

-- 以降に指定したオプションと引き数は、ファイルシステム固有のオプションとして ファイルシステム固有のチェッカーに渡される。

fsck は任意の複雑なオプションをファイルシステム固有のチェッカーに渡すようには 設計されていない点に注意すること。
複雑なことをやろうとするときは、 ファイルシステム固有のチェッカーを直接実行してほしい。 非常に複雑なオプションと引き数を fsck
に渡した場合に、期待した動作をしなかったとしても、 バ
にやらせるべきではないことを、あなたがやったのだから。

ファイルシステム固有の fsck のオプションは、標準化されていない。 確かでない場合は、ファイルシステム固有のチェッカーの man ページを調べること。
保証されたものではないが、以下のオプションは ほとんどのファイルシステムチェッカーでサポートされている。

-a 質問なしで自動的にファイルシステムを修復する (このオプションの使用には注意を要する)。 ほとんどのファイルシステムチェッカーは -a
オプションに対応しているが、 e2fsck(8) においては -a オプションは過去互換性のために準備されているだけである。 したがって e2fsck
では、このオプションは (安全に利用できる) -p オプションにマップされ、 いくつかのフィルシステムチェッカーがサポートしている -a
にはマップされない。

-n ファイルシステム固有のチェッカーの中には、 -n オプションが指定されると、
問題点を修復するのではなく、その問題点を単に標準出力に書き出すものもある。 しかし全てのファイルシステム固有のチェッカーが、
このような動作をするわけではない。 特に fsck.reiserfs(8) は、このオプションが指定されても破損箇所を報告しない。 また fsck.minix(8) は、 -n
オプションを全くサポートしていない。

-r 対話的にファイルシステムを修復する (確認を求める)。 注意: fsck が並列に動作している場合にこのオプションを利用するのは
あまり賢いとはいえない。 e2fsck においては並列動作がデフォルトであり、 このオプションは過去互換性のためにのみ準備されている。

-y ファイルシステム固有のチェッカーの中には、 -y オプションが指定されると、検出されたファイルシステムの破損箇所を
常に自動的に修復しようとするものもある。 エキスパートは、より上手に fsck を手動で実行させることができる場合もある。
全てのファイルシステム固有のチェッカーが、 このオプションを実装しているわけではない点に注意すること。 この man
ページを書いている時点では、特に fsck.minix(8) と fsck.cramfs(8) は -y オプションをサポートしていない。


Theodore Ts'o (tytso@mit.edu)


/etc/fstab


fsck プログラムの振舞いは、以下の環境変数による影響を受ける。

FSCK_FORCE_ALL_PARALLEL
この環境変数が設定されていると、 fsck は指定されたファイルシステムすべてを、
それらのファイルシステムが同じデバイス上にあるように見えるかどうかを問わず、 並列にチェックしようとする。 (これは IBM や EMC
などの会社から販売されているような、 RAID システムやハイエンドのストレージシステムで有用である。)

FSCK_MAX_INST
この環境変数は、同時に動作するファイルシステムチェッカーの最大数を制限する。 この指定を行えば、多数のディスクを備えたシステムにおいて fsck
がたくさんのファイルシステムチェッカーを同時に起動し、 システムで利用できる CPU やメモリなどの資源に
過度の負荷を与えてしまうことを避けることができる。 この値を 0 にすると、spawn するプロセス数の制限がなくなる。 現在はこれがデフォルトだが、
fsck の将来の版では、OS からアカウンティングデータを取得することにより、
同時に行うファイルシステムチェックの数を自動的に決めるようになるかもしれない。

PATH PATH 環境変数はファイルシステムチェッカーを探索する際に用いられる。 まず最初に、一連のシステムディレクトリが検索される。これらは /sbin,
/sbin/fs.d, /sbin/fs, /etc/fs, /etc である。これに続いて PATH 環境変数に指定されたディレクトリ群が検索される。

FSTAB_FILE
この環境変数を用いると、システム管理者は /etc/fstab ファイルの標準的な置場所を変更できる。 これは fsck
のテストを行う開発者にとっても便利である。


fstab(5), mkfs(8), fsck.ext2(8) または fsck.ext3(8) または e2fsck(8), cramfsck(8), fsck.minix(8), fsck.msdos(8), fsck.jfs(8), fsck.nfs(8),
fsck.vfat(8), fsck.xfs(8), fsck.xiafs(8), reiserfsck(8).

E2fsprogs version 1.39 May 2006 FSCK(8)

# man fsck.fat(引用)

FSCK.FAT(8) dosfstools FSCK.FAT(8)

NAME
fsck.fat - check and repair MS-DOS filesystems

SYNOPSIS
fsck.fat|fsck.msdos|fsck.vfat [-aAflnprtvVwy] [-d PATH -d ...] [-u PATH -u ...] DEVICE

DESCRIPTION
fsck.fat verifies the consistency of MS-DOS filesystems and optionally tries to repair them.

The following filesystem problems can be corrected (in this order):

* FAT contains invalid cluster numbers. Cluster is changed to EOF.

* File's cluster chain contains a loop. The loop is broken.

* Bad clusters (read errors). The clusters are marked bad and they are removed from files owning them. This check is optional.

* Directories with a large number of bad entries (probably corrupt). The directory can be deleted.

* Files . and .. are non-directories. They can be deleted or renamed.

* Directories . and .. in root directory. They are deleted.

* Bad filenames. They can be renamed.

* Duplicate directory entries. They can be deleted or renamed.

* Directories with non-zero size field. Size is set to zero.

* Directory . does not point to parent directory. The start pointer is adjusted.

* Directory .. does not point to parent of parent directory. The start pointer is adjusted.

* Start cluster number of a file is invalid. The file is truncated.

* File contains bad or free clusters. The file is truncated.

* File's cluster chain is longer than indicated by the size fields. The file is truncated.

* Two or more files share the same cluster(s). All but one of the files are truncated. If the file being truncated is a directory file that has
already been read, the filesystem check is restarted after truncation.

* File's cluster chain is shorter than indicated by the size fields. The file is truncated.

* Clusters are marked as used but are not owned by a file. They are marked as free.

Additionally, the following problems are detected, but not repaired:

* Invalid parameters in boot sector.

* Absence of . and .. entries in non-root directories

When fsck.fat checks a filesystem, it accumulates all changes in memory and performs them only after all checks are complete. This can be disabled
with the -w option.

OPTIONS
-a Automatically repair the filesystem. No user intervention is necessary. Whenever there is more than one method to solve a problem, the least
destructive approach is used.

-A Use Atari variation of the MS-DOS filesystem. This is default if fsck.fat is run on an Atari, then this option turns off Atari format. There
are some minor differences in Atari format: Some boot sector fields are interpreted slightly different, and the special FAT entries for
end-of-file and bad cluster can be different. Under MS-DOS 0xfff8 is used for EOF and Atari employs 0xffff by default, but both systems recog‐
nize all values from 0xfff8...0xffff as end-of-file. MS-DOS uses only 0xfff7 for bad clusters, where on Atari values 0xfff0...0xfff7 are for
this purpose (but the standard value is still 0xfff7).

-b Make read-only boot sector check.

-d Delete the specified file. If more that one file with that name exists, the first one is deleted.

-f Salvage unused cluster chains to files. By default, unused clusters are added to the free disk space except in auto mode (-a).

-l List path names of files being processed.

-n No-operation mode: non-interactively check for errors, but don't write anything to the filesystem.

-p Same as (-a), for compatibility with other *fsck.

-r Interactively repair the filesystem. The user is asked for advice whenever there is more than one approach to fix an inconsistency.

-t Mark unreadable clusters as bad.

-u Try to undelete the specified file. fsck.fat tries to allocate a chain of contiguous unallocated clusters beginning with the start cluster of
the undeleted file.

-v Verbose mode. Generates slightly more output.

-V Perform a verification pass. The filesystem check is repeated after the first run. The second pass should never report any fixable errors. It
may take considerably longer than the first pass, because the first pass may have generated long list of modifications that have to be scanned
for each disk read.

-w Write changes to disk immediately.

-y Same as -a (automatically repair filesystem) for compatibility with other fsck tools.

Note: If -a and -r are absent, the filesystem is only checked, but not repaired.

EXIT STATUS
0 No recoverable errors have been detected.

1 Recoverable errors have been detected or fsck.fat has discovered an internal inconsistency.

2 Usage error. fsck.fat did not access the filesystem.

FILES
fsck0000.rec, fsck0001.rec, ...
When recovering from a corrupted filesystem, fsck.fat dumps recovered data into files named 'fsckNNNN.rec' in the top level directory of the
filesystem.

BUGS
Does not create . and .. files where necessary. Does not remove entirely empty directories. Should give more diagnostic messages. Undeleting files
should use a more sophisticated algorithm.

SEE ALSO
fatlabel(8)
mkfs.fat(8)

HOMEPAGE
More information about fsck.fat and dosfstools can be found at <http://daniel-baumann.ch/software/dosfstools/>.

AUTHORS
dosfstools were written by Werner Almesberger <werner.almesberger@lrc.di.epfl.ch>, Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de>, and oth‐
ers. The current maintainer is Daniel Baumann <mail@daniel-baumann.ch>.

3.0.19 2013-06-11 FSCK.FAT(8)

コメント