无法安装分区-我该如何排除故障?

无法安装分区-我该如何排除故障?

我有一张用于 Raspberry Pi 的 SD 卡。我想将这张 SD 卡安装到 Linux PC 上以从中获取文件,但我不能。

当我将 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 -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,然后它启动时没有问题。

答案1

根据发布的fsck输出,部分数据有望恢复。

我会推荐:

  1. 将文件系统复制dd到磁盘文件(例如fdsump.orig)。如果失败,请尝试ddrescue。开始之前请确保有足够的可用空间。
  2. 不要直接处理此文件,而是创建一个新副本(例如cp fsdump.orig fsdump),以便您随时可以返回到此步骤并重新开始。
  3. 从数据文件mount -o loop创建设备fsdump(例如/dev/loop1
  4. 尝试fsck.ext3 /dev/loop1直到不会出现错误。需要的次数越多,损坏就越大。
  5. 将其挂载/dev/loop1到目录。将所有文件复制到安全位置。 (使用cp -arsync来保留文件属性)。其中任何一个都可能被损坏、截断等。
  6. 您现在可以卸载循环文件系统。

有关详细信息,请参阅上述实用程序的手册页。

答案2

你可能会使用文件(1)因为file -s /dev/sdc6这会从块设备读取一些字节并猜测那里有什么。

如果无法识别任何内容,您就会遇到麻烦,并且可能会丢失数据;要采取任何措施来恢复它,你应该知道先验那里有什么文件系统。

如果可以识别某些文件系统,您可以尝试使用安装(8)具有明确的-t type

分区表条目不按磁盘顺序排列

这味道不太好闻。也许您需要对整个磁盘进行重新分区(但之前备份其数据);看来您有两个重叠的分区 (sdc2sdc6)

由于您正在其他一些 Linux PC 上运行,因此您可以将数据从 SD 卡复制到 PC(到某个文件中),也许可以使用日(1)

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

顺便说一句,请在该命令之后检查dmesg复制是否顺利。

您甚至可以复制dd整个 SD 卡。

然后,您可能会花费数小时(或数月)的时间来尝试破译$HOME/diskdataLinux PC 上该文件中的混乱内容。你可以使用调试(8)为此,如果您认为原始文件系统是 ext3 或 ext4

SD 卡是脆弱的设备,很快就会磨损。我猜你的身体已经坏了。准备好面对一些明确的数据丢失。

相关内容