web-dev-qa-db-ja.com

パーティションをマウントできません-どうすればトラブルシューティングできますか?

Raspberry Piで使用したSDカードを持っています。このSDカードをLinuxPCにマウントしてファイルを取得したいのですが、できません。

SDカードをカードリーダーに挿入すると、dmesgで次のように表示されます。

  [  114.117896] usb 4-1: new full-speed USB device number 2 using ohci-pci
  [  114.292885] usb 4-1: New USB device found, idVendor=214b, idProduct=1101
  [  114.292897] usb 4-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
  [  114.292904] usb 4-1: Product: USB2.0 Device   
  [  114.292910] usb 4-1: Manufacturer: Generic 
  [  114.292914] usb 4-1: SerialNumber: 0201202010201000
  [  114.383603] usb-storage 4-1:1.0: USB Mass Storage device detected
  [  114.383803] scsi6 : usb-storage 4-1:1.0
  [  114.383956] usbcore: registered new interface driver usb-storage
  [  115.386965] scsi 6:0:0:0: Direct-Access     USB2.0   CARD-READER      1.01 PQ: 0 ANSI: 2
  [  115.388961] sd 6:0:0:0: Attached scsi generic sg2 type 0
  [  115.409892] sd 6:0:0:0: [sdc] Attached SCSI removable disk
  [  115.471798] sd 6:0:0:0: [sdc] 30679040 512-byte logical blocks: (15.7 GB/14.6 GiB)
  [  115.505782] sdc: detected capacity change from 0 to 15707668480
  [  115.534776]  sdc: sdc1 sdc2 < sdc5 sdc6 > sdc3

このカードのパーティションテーブルは次のとおりです。

  # parted /dev/sdc
  GNU Parted 3.2
  Using /dev/sdc
  Welcome to GNU Parted! Type 'help' to view a list of commands.
  (parted) print                                                            
  Model: USB2.0 CARD-READER (scsi)
  Disk /dev/sdc: 15,7GB
  Sector size (logical/physical): 512B/512B
  Partition Table: msdos
  Disk Flags: 

  Number  Start   End     Size    Type      File system  Flags
   1      1049kB  1275MB  1274MB  primary   fat32        lba
   2      1278MB  15,7GB  14,4GB  extended
   5      1279MB  1342MB  62,9MB  logical   fat16        lba
   6      1343MB  15,7GB  14,3GB  logical
   3      15,7GB  15,7GB  33,6MB  primary

このデバイスをfdiskでチェックすると、次のように表示されます。

  # fdisk /dev/sdc -l

  Disk /dev/sdc: 14.6 GiB, 15707668480 bytes, 30679040 sectors
  Units: sectors of 1 * 512 = 512 bytes
  Sector size (logical/physical): 512 bytes / 512 bytes
  I/O size (minimum/optimal): 512 bytes / 512 bytes
  Disklabel type: dos
  Disk identifier: 0x000daf86

  Device     Boot    Start      End  Sectors  Size Id Type
  /dev/sdc1           2048  2490234  2488187  1.2G  e W95 FAT16 (LBA)
  /dev/sdc2        2496512 30609407 28112896 13.4G 85 Linux extended
  /dev/sdc3       30613504 30679039    65536   32M 83 Linux
  /dev/sdc5        2498560  2621439   122880   60M  c W95 FAT32 (LBA)
  /dev/sdc6        2623488 30607359 27983872 13.4G 83 Linux
  Partition table entries are not in disk order.

/ dev/sdc6が最大のパーティションのようですので、マウントしたいと思います。マウントしようとすると、次のような結果になります。

  # mount -v /dev/sdc6 test
  mount: wrong fs type, bad option, bad superblock on /dev/sdc6,
         missing codepage or helper program, or other error

         In some cases useful info is found in syslog - try
         dmesg | tail or so.

/ dev/sdc6をマウントしようとすると、Dmesgが何も言わない。

fileコマンドでこのパーティションを確認すると、次のように表示されます。

    # file -s /dev/sdc6
    /dev/sdc6: data

Fsckでファイルシステムをチェックすると、次のようになります。

  # LC_ALL=C fsck.ext3 -n /dev/sdc6
  e2fsck 1.43.4 (31-Jan-2017)
  ext2fs_open2: Bad magic number in super-block
  fsck.ext3: Superblock invalid, trying backup blocks...
  root was not cleanly unmounted, check forced.
  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
  Free blocks count wrong for group #0 (4245, counted=11608).
  Fix? no

  Free blocks count wrong for group #1 (1373, counted=707).
  Fix? no

  Free blocks count wrong for group #2 (1699, counted=1880).
  Fix? no

  (...)

  Inode bitmap differences:  -(57345--131072) -172034 -172037 -(172042--172043) -172045 -172047 -172049 -172053 -172057 -172059 -172062 -172065 (...)
  Fix? no

  root: ********** WARNING: Filesystem still has errors **********

  root: 91692/876544 files (0.8% non-contiguous), 1413337/3497984 blocks

なんらかの理由でLinuxがこのファイルシステムをマウントできないことを理解しています。理由を知りたいのですが、ファイルシステムが壊れているのですか、それとも他の理由がありますか?そして、私はこのファイルシステムをマウントするか、何らかの方法でそのファイルを回復したいと思います。

この問題をトラブルシューティングするには、今何をすべきですか?

編集:私は助けてくれたみんなに感謝したいです!最後に-fsckを使用して-パーティションにLinux extファイルシステムが含まれていることがわかりましたが、ファイルシステムが壊れているため、マウントできませんでした。カードのバックアップを作成し(「cat/dev/sdc | gzip> mybackup」を使用)、デバイスに不良ブロックが含まれているかどうかを確認しました。不良ブロックが含まれていない(SDカードのファイルシステムが壊れたSDカードリーダーで使用したために壊れた可能性がある)ため、ファイルシステムをfsckで修正し、カードをRaspberry Piに挿入して、起動せずに起動しました問題。

2
user983447

投稿されたfsckの出力によると、一部のデータが復元される可能性があります。

私がお勧めします:

  1. ファイルシステムのddコピーをディスクファイルに作成します(例:fdsump.orig)。失敗した場合は、ddrescueを試してください。開始する前に、十分な空き容量があることを確認してください。
  2. このファイルを直接操作せずに、新しいコピーを作成します(例:cp fsdump.orig fsdump)なので、いつでもこのステップに戻ってやり直すことができます。
  3. mount -o loopfsdumpデータファイルからデバイスを作成します(例:/dev/loop1
  4. fsck.ext3 /dev/loop1エラーがなくなるまで。より多くのパスが必要になるほど、被害は大きくなります。
  5. /dev/loop1ディレクトリに。すべてのファイルを安全な場所にコピーします。 (使用する cp -aまたはrsync(ファイル属性を保持する)。それらのいずれかが破損したり、切り捨てられたりする可能性があります。
  6. これで、ループファイルシステムをアンマウントできます。

詳細については、前述のユーティリティのマニュアルページを参照してください。

3
VPfB

file(1)file -s /dev/sdc6として使用すると、ブロックデバイスからいくつかのバイトが読み取られ、そこに何があるかが推測されます。

何も認識されない場合は、問題が発生しており、データが失われている可能性があります。それを回復するために何かをするために、あなたはアプリオリどのファイルシステムがそこにあったかを知っているべきです。

一部のファイルシステムが認識されている場合は、明示的な-ttypeを指定して mount(8) を使用してみてください。 )

パーティションテーブルのエントリがディスク順になっていない

これはあまりにおいがしません。おそらく、ディスク全体を再パーティション化する必要があります(ただし、前にデータをバックアップしてください)。 2つのパーティションが重複しているようです(sdc2sdc6

他のLinuxPCで実行しているので、おそらく dd(1) を使用して、SDカードからPCに(ファイルに)データをコピーできます。

dd if=/dev/sdc6 of=$HOME/diskdata bs=4k

ところで、そのコマンドの後にdmesgでコピーがうまくいったことを確認してください。

SDカード全体をddでコピーすることもできます。

次に、Linux PCの$HOME/diskdataファイルの混乱を解読するために何時間(または数ヶ月)の作業を費やす可能性があります。元のファイルシステムがext3またはext4であると思われる場合は、 debugfs(8) を使用できます。

SDカードは壊れやすいデバイスであり、すぐに消耗します。私はあなたが物理的に壊れていると思います。いくつかの決定的なデータ損失に備えてください。