我的硬盘崩溃了,修复公司能够将所有内容复制到另一个新驱动器上。
我认为他们使用了 dd 或类似的。
它有两个 xfs 分区。但是,现在我只能安装第一个。
如果我尝试使用 gparted 查看分区,它会显示:
Can't have a partition outside the disk
看来新的磁盘比原来的要小一点(不同型号)。
更新,我证实了我的怀疑:
fdisk -l -u=sectors
Disk /dev/sdd: 9,1 TiB, 10000797794304 bytes, 19532808192 sectors
Disk model: Elements 25A3
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
Device Start End Sectors Size Type
/dev/sdd1 2048 9766436863 9766434816 4,6T Linux filesystem
/dev/sdd2 9766436864 19532871679 9766434816 4,6T Linux filesystem
但数字不匹配!:
19532808192-9766434816-9766434816-2048=63488
如何更新分区表和 xfs 文件系统以适合当前的硬盘驱动器?
答案1
如果问题完全出在分区表上(如果文件系统本身实际上在边界内),则无论如何您都可以使用循环设备来访问伪造的分区:
losetup --find --show --read-only --offset=$((9766436864*512)) /dev/sdx
如果文件系统大于设备,则必须将其复制到更大的设备,或通过设备映射器模拟更大的设备(dmsetup 创建线性目标)。如果您已经备份了 上的所有内容/dev/sdd1
,您可以复制/dev/sdd2
到/dev/sdd1
然后使第一个分区更大。
因此,有多种方法可以解决这个问题,但它是否有效将取决于那些丢失的几兆字节对文件系统的重要性。你不会拿回那些。