已经晚了一点,但是在我的IOMEGA硬盘盒的USB端口断开后,我遇到了类似的问题。我切换到另一个USB-2-SATA机箱,只是发现无法挂载EXT4分区。由于某种原因,IOMEGA案例报告的逻辑扇区大小为4096,但我的新案例表示仅为512字节。这拧紧了MS-DOS分区表。
这让我发疯了,因为testdisk
在更改扇区大小时,借助于我的帮助,我可以访问分区,但是我发现无法更改整个系统的扇区大小。事实证明,这不是必需的,因为EXT4并不关心扇区大小,您只需找到要访问的分区的开始即可。
快速修复:使用回送设备移至分区的正确位置。
永久修复:相应地重写分区表。
就我而言,受影响的驱动器是/dev/sdb
。
我的快速修复相对容易,因为我在扇区63处只有一个分区。
$ sudo sfdisk -d /dev/sdb
# partition table of /dev/sdb
unit: sectors
/dev/sdb1 : start= 63, size=623708785, Id=83
现在,当扇区大小仍为4096字节时,我们必须计算分区的位置:
63 sectors * 4096 bytes = 258048 bytes
并与使用losetup
:
$ sudo losetup /dev/loop0 /dev/sdb -o 258048
$ sudo mount /dev/loop0 /mnt
您的分区现在应该挂载在/mnt
。
对于长期修复,我过去sfdisk
经常转储分区布局:
$ sudo sfdisk -d /dev/sdb > sdb.partitions.sfdisk.text
通过在适当的位置乘以8开头的扇区来固定分区表-在这里,我意识到我的分区表从一开始就有点搞砸了。
我使用以下命令编辑了分区表转储nano sdb.partitions.sfdisk.text
:
/dev/sdb1 : start= 63, size=623708785, Id=83
至:
/dev/sdb1 : start= 504, size=623708785, Id=83
然后扩展该分区以使用所有可用空间(我通过其他方式确定):
/dev/sdb1 : start= 504, size=625141944, Id=83
最后一步是使用以下方法写回分区表:
$ sudo sh -c 'cat sdb.partitions.sfdisk.text | sfdisk /dev/sdb'