如何修复显示只有 10MB 的 500GB 硬盘?

如何修复显示只有 10MB 的 500GB 硬盘?

我有一个 500GB USB 硬盘。

我一直在摆弄ddcmd - 擦除MBR数据,复制我的Windows内部HD,删除分区等。

fdisk -l回报

Disk /dev/sdc: 10MiB, 10485760 bytes, 20480 sectors
Units: sectors of 1 * 512 bytes = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk Identifier: 8xb77d52b7

Device    Boot  Start   End         Blocks      Id  System
...    
/dev/sdc1 *     2048    718847      358400      7   HPFS/NTFS/exFAT
/dev/sdc2       718848  81922047    40601600    7   HPFS/NTFS/exFAT

lsblk回报

NAME   MAJ:MIN RM   SIZE   RO TYPE
sda     0:0     0  465.9G  0  disk 
>^sda1  0:1     0  350M    0  part
>^sda2  0:2     0  38.7G   0  part
sdc     8:32    0  465.8G  0  disk
loop0   7:0     0  275.1M  0  loop /livemnt/squashfs

lsblk显示 465.8G 同时fdisk -l显示 10MiB

由于 HD 是这样,我不能用它做太多事情...即使是诸如此类的命令也只允许从源到目标dd if=/dev/sda of=/dev/sdc bs=4096最多 10MB 的数据...if=of=

cat /dev/sda > /dev/sdc回报

cat: write error: no space left on device

我已经用parted、fdisk /dev/sdc、gdisk等工具处理这个问题4个小时了,这真的那么难吗?

一定有办法让 HD 恢复到 500GB 状态......

为了确认/dev/sdc是外部硬盘,我断开/重新连接 USB HD 并运行以下命令

dmesg | tail回报

[sdc] Attached SCSI disk

答案1

MBR(又名“磁盘标签类型:dos”)不应直接提及磁盘大小(也不应直接提及旧柱面/扇区/磁头的数量)。

https://en.wikipedia.org/wiki/Master_boot_record#Sector_layout

内核也不应该根据该设备上损坏的 MBR 来限制对该块设备的写入。所以要么是内核,要么是硬件混淆了。令人担忧的是:)。

猜测是no space left on device内核直接生成的。如果设备向内核返回错误并抱怨访问超出了末尾(发生这种情况是因为内核认为它没有超出末尾),我怀疑内核会返回一个通用 IO 错误。如果内核日志 ( dmesg)中未显示此特定设备错误,我会感到惊讶。

奇怪的是,虽然lsblkAFAICT 和fdiskAFAICT 使用略有不同的方法,但 AFAICT 都读取缓存在内核中的值。如果它们始终获得不同的值,这听起来也像是内核有问题。fdisk -l在读取值之前可能会请求重新扫描。然而,听起来你是在追赶lsblkfdisk -l所以这种差异应该不重要。

我会保留一个轻微对这个系统的怀疑。 (“我是否维护任何有价值数据的独立备份,这将是一个很好的做法吗?”可疑)。

相关内容