microSDカードのバックアップ(Raspberry Pi)には元のファイルシステムは問題ないようですが、常に破損したext4ファイルシステムがあります。

microSDカードのバックアップ(Raspberry Pi)には元のファイルシステムは問題ないようですが、常に破損したext4ファイルシステムがあります。

私のRaspberry Pi microSDカードのすべてのバックアップイメージが破損しているようです。イメージファイルを作成したり、microSDカードを別のmicroSDカードに直接バックアップしても、違いはありません。

私はさまざまなアプローチを試しました。使用されたバックアップコマンド:

dd if=/dev/sde of=pi.img
cat /dev/sde > pi.img
dd if=/dev/sde2 of=pi_part2.img
dd if=/dev/sde2 of=pi_part2.img oflag=dsync bs=64k
pv /dev/sde > /dev/sdf

元のファイルシステムで fsck を実行してもエラーは表示されません。

fsck.ext4 -fnv /dev/sde2
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information

      169390 inodes used (17.63%, out of 960992)
         686 non-contiguous files (0.4%)
         153 non-contiguous directories (0.1%)
             # of inodes with ind/dind/tind blocks: 0/0/0
             Extent depth histogram: 159486/127
     2576756 blocks used (67.10%, out of 3840256)
           0 bad blocks
           1 large file

      141540 regular files
       17848 directories
          30 character device files
           0 block device files
           2 fifos
          53 links
        9898 symbolic links (9674 fast symbolic links)
          63 sockets
------------
      169434 files

私は新しいmicroSDカード、イメージファイル、losstupで作成されたループデバイス、kpartxで作成されたループデバイスでfsckを実行してみました。結果は常に同じで、パーティションをイメージ化するかドライブ全体をイメージ化するかは重要ではありません。

losetup -vf pi.img
or
kpartx -a pi.img
or 
losetup -vf pi_part2.img
or
kpartx -a pi_part2.img
fsck.ext4 -fnv /dev/sdf2
Pass 1: Checking inodes, blocks, and sizes
Inode 651592 has an invalid extent node (blk 2661556, lblk 0)
Clear? no

Inode 651592 extent tree (at level 1) could be shorter.  Optimize? no

Inode 651592, i_blocks is 200, should be 0.  Fix? no

Inode 652399 has an invalid extent node (blk 2656133, lblk 0)
Clear? no

Inode 652399 extent tree (at level 1) could be shorter.  Optimize? no

Inode 652399, i_blocks is 96, should be 0.  Fix? no

Inode 653587 has an invalid extent node (blk 2655215, lblk 0)
Clear? no

Inode 653587 extent tree (at level 1) could be shorter.  Optimize? no

Inode 653587, i_blocks is 51776, should be 0.  Fix? no

Inode 781825 seems to contain garbage.  Clear? no

Inode 781825 has inline data and extent flags set but i_block contains junk.
Clear inode? no

Inode 781825 has INLINE_DATA_FL flag on filesystem without inline data support.
Clear? no

...

Directories count wrong for group #99 (275, counted=0).
Fix? no

Free inodes count wrong (791602, counted=786221).
Fix? no


/dev/sdf2: ********** WARNING: Filesystem still has errors **********


      169390 inodes used (17.63%, out of 960992)
         592 non-contiguous files (0.3%)
         140 non-contiguous directories (0.1%)
             # of inodes with ind/dind/tind blocks: 0/0/0
             Extent depth histogram: 134099/114
     2576756 blocks used (67.10%, out of 3840256)
           0 bad blocks
           1 large file

      118579 regular files
       15409 directories
          30 character device files
           0 block device files
           0 fifos
  4294967090 links
        8110 symbolic links (7886 fast symbolic links)
          58 sockets
------------
      142315 files

1093872行でエラーが発生しました。

私は代替スーパーブロックを試してみました。 zfsファイルシステムのext4に画像を保存しようとしています。イメージを作り、新しいmicroSDカードに入れてみました。別のmicroSDカードに直接コピーしようとし、カードを取り外してアダプタの書き込みロックを押して、100%後で何も変更できないようにしました。

結果は常に同じです。

生のファイルシステムをマウントしてrsyncバックアップを実行すると、完全に機能します。

編集する: SDカードのファイルシステムは、画像/バックアップの作成には絶対に使用されません。まだマウントされておらず、iostatによると、どのブロックも書き込んでいません。私はまた、これを行うために2台の異なるコンピュータを使用します。 1つはKaliと内蔵カードリーダーが付属し、もう1つはDebian Busterと外部USBカードリーダーが付属しています。

編集する: きれいなmicroSDカードを分割し、同等のファイルシステムを作成し、ファイルでいっぱいにしました。上記のように作成されたバックアップイメージにエラーはありません。元のmicroSDカードや元のext4ファイルシステムに問題があるようです。 fsckがエラーを表示せずに問題を起こさずにファイルシステムをマウントして使用するのはなぜですか?

編集する: e2fsckバージョンは非常に新しいバージョンです(Debian Busterの最新バージョン):

e2fsck -V
e2fsck 1.44.5 (15-Dec-2018)
    Using EXT2FS Library version 1.44.5, 15-Dec-2018

主に使用する命令を確認してくださいfsck.ext4e2fsck違いなし。

編集する:

mount | grep /dev/sde
/dev/sde2 on /mnt/oldpi type ext4 (rw,relatime,stripe=1024)
blkid /dev/sde
/dev/sde: PTUUID="21f74a8c" PTTYPE="dos"
blkid | grep /dev/sde
/dev/sde1: UUID="4B06-547E" TYPE="vfat" PARTUUID="21f74a8c-01"
/dev/sde2: UUID="e6935217-65c8-44be-bde3-79d93b146920" TYPE="ext4" PARTUUID="21f74a8c-02"

編集する: 2つの別々の画像を作成すると、同じ画像が作成されます。

sha256sum *
da464bf4884c8f5db546637cd3e82c41ddd63d65f91f38ca1ec85af1f71c6757  pi_sdcard_20200404_1.img
da464bf4884c8f5db546637cd3e82c41ddd63d65f91f38ca1ec85af1f71c6757  pi_sdcard_20200404_2.img

リカバリモードでは、Raspberry piに直接コピーを作成してroを再マウントすると、エラーの少ない利用可能なコピーが作成されます。

fsck.ext4 -nvf /dev/sde2 
e2fsck 1.44.5 (15-Dec-2018)
Warning: skipping journal recovery because doing a read-only filesystem check.
Pass 1: Checking inodes, blocks, and sizes
Inode 653587 has an invalid extent node (blk 2655215, lblk 0)
Clear? no

Inode 653587 extent tree (at level 1) could be shorter.  Optimize? no

Inode 653587, i_blocks is 51776, should be 0.  Fix? no

Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Block bitmap differences:  -2655215 -(2895872--2896020) -(2898068--2898069) -(2902016--2902036) -(2902038--2902039) -(2902043--2902200) -(2902233--2902297) -(2902330--2902648) -(2902681--2904063) -(2906112--2906552) -(2906554--2906617) -(2906619--2907710) -(2907712--2907775) -(2907777--2907840) -(2907842--2908115) -(2908117--2908871) -(2908873--2908936) -(2908938--2909256) -(2909258--2909321) -(2909323--2909386) -(2909388--2909451) -(2909453--2909516) -(2909518--2909581) -(2909583--2909646) -(2909648--2909711) -(2909713--2909776) -(2909778--2909841) -(2909843--2909906) -(2909908--2909971) -(2909973--2910036) -(2910038--2910207) -(2912405--2912406) -(2914448--2914455) -(2916498--2916504) -(2943123--2943129) -(2945171--2945242) -(2945244--2945266) -(2945268--2945331) -(2945333--2945392) -(2945394--2945428) -(2945430--2945441) -(2945472--2945478)
Fix? no


/dev/sde2: ********** WARNING: Filesystem still has errors **********


      169390 inodes used (17.63%, out of 960992)
         685 non-contiguous files (0.4%)
         153 non-contiguous directories (0.1%)
             # of inodes with ind/dind/tind blocks: 0/0/0
             Extent depth histogram: 159485/126
     2575505 blocks used (67.07%, out of 3840256)
           0 bad blocks
           1 large file

      141539 regular files
       17847 directories
          30 character device files
           0 block device files
           2 fifos
          53 links
        9898 symbolic links (9674 fast symbolic links)
          65 sockets
------------
      169434 files

fsckを使用した後、自動的にエラーを修正します。すべてが大丈夫だと思います。

デバッグまたはmicroSDカードが破損しているかどうかを確認する方法はありますか?私にとって最も重要な質問は:なぜこれが起こるのですか?このバックアップ方法(dd、cat、pvなど)を使用してSDカード、フラッシュドライブなどをバックアップできますか?

関連情報