故事

故事

故事

我有一个已格式化为 Linux 使用的外部硬盘。不幸的是,我将此磁盘插入 Windows 计算机。之后它立即损坏了。我曾在 Windows 和 Linux 上交替使用外部磁盘,对于使用 NTFS 格式化的磁盘没有任何问题。然而,这次 ext4 让我措手不及。

硬盘

这涉及一个外部 4TB USB 外置硬盘,带有旋转磁盘,在 Linux 上格式化,具有 GPT 分区和 ext4 文件系统。它只包含一个分区。磁盘包含 500 GB 到 2000 GB 之间的数据。除了用于数据和电源的 USB 电缆外,磁盘不使用其他电源。该硬盘不到一年,只是偶尔使用,直到本周一直没有任何问题。

确切原因

以下是时间线:

  • 我将 ext4 格式的 USB 外部硬盘连接到 Windows 11 计算机(错误 #1)
  • Windows 资源管理器显示一个空磁盘
  • 我执行了“安全删除驱动器”(错误 #2)
  • 我物理上断开了硬盘
  • 我将硬盘连接到 Linux Mint 电脑
  • Linux 现在也在文件管理器中显示一个空硬盘

为了解决这个问题您尝试过什么?

  • 我尽量减少侵入性操作
  • 我使用“-n”选项运行了 fsck.ext4(见下文)
  • 我在谷歌上研究了如何在 Windows 中从 ext4 格式的磁盘上的“安全删除驱动器”中恢复
  • 我尝试了解 Windows 下的“安全删除驱动器”功能
  • 我尝试使用可以诊断硬盘的软件
  • 我使用 dd 命令将分区复制到另一个相同的磁盘,但在复制了 3.9 TB 后,系统显示“磁盘已满”。打算找一个更大的磁盘。

CLI 输出

stack@exchange:~$ sudo lsblk  /dev/sdd
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdd      8:48   0  3,7T  0 disk 
└─sdd1   8:49   0  3,7T  0 part /home/stack/classes
stack@exchange:~$ sudo lsblk  -f  /dev/sdd
NAME   FSTYPE LABEL           UUID                                 FSAVAIL FSUSE% MOUNTPOINT
sdd                                                                               
└─sdd1 ext4   maxtor_classes b5169f43-d688-4f8d-a659-3d030eaeb7df    3,4T     0% /home/stack/classes
stack@exchange:~$ sudo blkid /dev/sdd  /dev/sdd1
/dev/sdd: PTUUID="a06d421e-6ccd-4993-b9b7-993c3a5ae2b0" PTTYPE="gpt"
/dev/sdd1: LABEL="maxtor_classes" UUID="b5169f43-d688-4f8d-a659-3d030eaeb7df" TYPE="ext4" PARTUUID="b27c013b-4a40-4900-4cb8-a362727c5fc3"
stack@exchange:~$ sudo mount | egrep sdd 
/dev/sdd1 on /home/stack/classes type ext4 (rw,relatime)
stack@exchange:~$ sudo fdisk -l /dev/sdd  /dev/sdd1
Disk /dev/sdd: 3,65 TiB, 4000787029504 bytes, 7814037167 sectors
Disk model: M3 Portable    
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt 
Disk identifier: A06D421E-6CCD-4993-B9B7-993C3A5AE2B0

Device     Start        End    Sectors  Size Type
/dev/sdd1   2048 7814035455 7814033408  3,7T Linux filesystem


Disk /dev/sdd1: 3,65 TiB, 4000785104896 bytes, 7814033408 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
stack@exchange:~$ sudo dmesg | tail -19 
[3043967.678351] usb 2-8: new SuperSpeed Gen 1 USB device number 121 using xhci_hcd
[3043967.698757] usb 2-8: New USB device found, idVendor=0bc2, idProduct=61b7, bcdDevice= 0.00
[3043967.698758] usb 2-8: New USB device strings: Mfr=2, Product=3, SerialNumber=1
[3043967.698759] usb 2-8: Product: M3 Portable
[3043967.698760] usb 2-8: Manufacturer: Seagate
[3043967.698760] usb 2-8: SerialNumber: HQ8P1VMT
[3043967.702631] scsi host7: uas 
[3043967.703046] scsi 7:0:0:0: Direct-Access     Seagate  M3 Portable      9300 PQ: 0 ANSI: 6
[3043967.703490] sd 7:0:0:0: Attached scsi generic sg4 type 0
[3043967.703619] sd 7:0:0:0: [sdd] Spinning up disk...
[3043968.738250] .......ready
[3043974.882695] sd 7:0:0:0: [sdd] 7814037167 512-byte logical blocks: (4.00 TB/3.64 TiB)
[3043974.988515] sd 7:0:0:0: [sdd] Write Protect is off 
[3043974.988516] sd 7:0:0:0: [sdd] Mode Sense: 4f 00 00 00
[3043974.988656] sd 7:0:0:0: [sdd] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA 
[3043974.988839] sd 7:0:0:0: [sdd] Optimal transfer size 33553920 bytes
[3043975.132112]  sdd: sdd1
[3043975.155029] sd 7:0:0:0: [sdd] Attached SCSI disk
[3043975.771110] EXT4-fs (sdd1): mounted filesystem with ordered data mode. Opts: (null)

从这里我首先卸载了磁盘。

stack@exchange:~$ sudo umount /dev/sdd
stack@exchange:~$ sudo umount /dev/sdd
umount: /dev/sdd: not mounted.
stack@exchange:~$ sudo fsck.ext4 -n /dev/sdd
e2fsck 1.45.5 (07-Jan-2020)
ext2fs_open2: Bad magic number in super-block
fsck.ext4: Superblock invalid, trying backup blocks...
fsck.ext4: Bad magic number in super-block while trying to open /dev/sdd

The superblock could not be read or does not describe a valid ext2/ext3/ext4
filesystem.  If the device is valid and it really contains an ext2/ext3/ext4
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
    e2fsck -b 8193 <device>
 or
    e2fsck -b 32768 <device>

Found a gpt partition table in /dev/sdd
stack@exchange:~$ sudo umount /dev/sdd1
umount: /dev/sdd: not mounted.
stack@exchange:~$ sudo fsck.ext4 -n /dev/sdd1
e2fsck 1.45.5 (07-Jan-2020)
maxtor_classes: clean, 11/244195328 files, 15606527/976754176 blocks
stack@exchange:~$ 

一些分析

从我的研究中,我现在知道“安全移除驱动器”会将数据从写入缓存写入驱动器。但是,在这个特定情况下,我没有执行任何可能导致写入缓存包含任何数据的操作。插入驱动器后,我看到 Windows 资源管理器显示一个空的文件列表,然后我立即继续使用“安全移除驱动器”按钮。

问题

  • 我怎样才能从该硬盘恢复数据或者修复硬盘?

答案1

很好,看来你确实尽职尽责了。

不过这里有一点:

e2fsck 1.45.5 (2020 年 1 月 7 日) ext2fs_open2:超级块中的魔幻数字错误 fsck.ext4:超级块无效,正在尝试备份块... fsck.ext4:尝试打开 /dev/sdd 时超级块中的魔幻数字错误

无法读取超级块,或者超级块未描述有效的 ext2/ext3/ext4 文件系统。如果设备有效,并且确实包含 ext2/ext3/ext4 文件系统(而不是交换或 ufs 或其他文件系统),则超级块已损坏,您可以尝试使用备用超级块运行 e2fsck:e2fsck -b 8193 或 e2fsck -b 32768

您是否尝试过使用备份块?dumpe2fs将为您提供要尝试的备份块列表。e2fsck应该使用其中一个备份恢复主数据如果由于某种原因 e2fsck 不起作用,您还可以使用备份块安装驱动器,以获取数据。

testdisk还应该能够重写分区表。

哦,Windows 可能尝试将“desktop.ini”文件写入该程序,或者其他程序。我再怎么强调也不为过,不要将(任何东西)与 Windows 混合使用 - 它无法与其他程序很好地兼容。

相关内容