最终更新:
我已经知道解决该问题所需采取的措施。我只是不知道该怎么做。我希望会有一些现成的工具自动执行此操作-但找不到任何工具。我接受Rod的回答是因为尽管没有直接解决我的问题,但是它为扇区大小问题提供了很好的背景,并且使我充满信心,这个问题确实是分区对齐和解决。对于遇到相同问题的人员,在进行任何操作之前,请仔细,仔细地阅读它,包括评论。
在一开始的时候
我有一台电脑,需要更多空间,我购买了一个新的500GB驱动器和一个USB机箱。很快,我注意到,如果我在机箱上对驱动器进行了分区并将其移至计算机,它将无法识别分区(反之亦然)。我以为这是机箱的问题,所以不用担心。
然后,悲剧
美好的一天,我的电脑决定不再打开。原来主板(无品牌,上面印有一个很大的中国制造)已经坏了。我一直将其用作文件服务器,而500GB的驱动器现在充满了我无法承受的数据丢失。我现在破产了,买不起新电脑,所以我唯一的希望是USB机箱“有缺陷”。
调查
配备了多个Linux发行版,一台笔记本电脑,VirtualBox和机箱,我对此问题进行了法医分析。dmesg报告的分区大小超出了驱动器末端。因此,我浏览了硬盘驱动器数据表,从头开始计算扇区计数,使用dd手动测试了驱动器边界,一切看起来都还不错,直到我启动fdisk并说:
Note: Sector size is 4096 (not 512).
fdisk多么谦虚。此“注释”是所有问题的根源。经过一些摆弄之后,得出了这些结论:
USB外壳没有缺陷。
至少现在已经死了的主板上的SATA控制器是“怪异”的。它没有向操作系统报告4096字节的扇区,因此OS使用512字节的扇区地址愉快地创建了MBR。
现在,当我尝试访问分区时,操作系统尝试在4096字节的扇区驱动器上使用基于512字节的地址,当然,它将无法正常工作。
问题
因此,除了在十六进制编辑器上手动编辑MBR之外,我如何才能校正MBR中的地址,使其在4096字节的扇区大小上有效,并且
分区未针对4096字节的扇区对齐。除了将其复制到另一个驱动器中和从另一个驱动器中复制出来之外,是否有一些工具可以使它们对齐?(我没有备用驱动器),还是需要创建一些工具来一次将数据“移动”到一侧?分区是ext3。
谢谢!
更新:
我发现有一个聪明的方法可以使用dd在以下问题中移动分区:如何在GNU / Linux中移动分区? 但是我不知道它是否可以在一个扇区的一部分上工作。我目前无法测试,但有时间会测试。
更新2:
因此,我已经使用上述方法成功对齐了分区,并在十六进制编辑器上手动编辑了MBR。重新插入硬盘后,动臂分区自动安装!我不建议这样做,因为在此过程中会发生I / O错误,我可能会丢失所有内容,请参阅对Rod答案的评论。对于其他分区,我不会冒险,将使用旧的HDD并通过复制数据然后将其粘贴回另一个位置来一次对齐大块。
fdisk
编辑MBR(我稍后学习了此知识,无需使用十六进制编辑器:)。您可以更改每个条目的起点和大小,并在应用之前检查更改。所以:start fdisk
,记下当前配置(或者更好的是,用备份MBR dd
),将起始地址和大小值乘以8并更改它们。确保使用计算器检查所有内容,并了解这些值的含义。您会看到Size = End-Start + 1,并且fdisk
以1000个扇区为单位显示大小,因此您可能需要打开专家模式才能看到实际值,等等