我已经知道我需要做什么来解决这个问题;我只是不知道该怎么做。我希望有一些现成的工具可以自动执行此操作 - 但找不到任何工具。我接受 Rod 的回答,因为尽管没有直接解决我的问题,但它为扇区大小问题提供了非常好的背景,并使我相信该问题确实是分区对齐和寻址。对于那些遇到同样问题的人,在做任何事情之前,请彻底仔细地阅读它,包括评论。
我有一台电脑,需要更多空间,我买了一个新的 500GB 驱动器和一个 USB 外壳。很快我就注意到,如果我对机箱上的驱动器进行分区并将其移动到计算机上,它就无法识别这些分区(反之亦然)。我认为这是外壳的问题,并没有担心。
美好的一天,我的电脑决定不再打开。结果发现主板(没有品牌,只是上面印着一个很大的 MADE IN CHINA)已经死了。我一直将它用作文件服务器,而那个 500GB 的驱动器现在充满了我不能丢失的数据。我现在破产了,买不起新电脑,所以我唯一的希望是“有缺陷的”USB 外壳。
配备了几个 Linux 发行版、一台笔记本电脑、VirtualBox 和机箱,我对这个问题进行了取证分析。dmesg 报告分区大小超出驱动器末端。所以我查看了硬盘数据表,从头开始计算扇区数,用 dd 手动测试驱动器边界,一切看起来都很好,直到我启动 fdisk 并说:
Note: Sector size is 4096 (not 512).
Run Code Online (Sandbox Code Playgroud)
多么谦虚的fdisk。这个“笔记”是所有问题的根源。经过一番折腾,得出了以下结论:
USB 外壳没有缺陷。
至少现在已经死了的主板上的 SATA 控制器是一个“奇怪的”控制器。它没有向操作系统报告 4096 字节的扇区,因此操作系统愉快地使用 512 字节的扇区地址创建了 MBR。
现在,当我尝试访问分区时,操作系统会尝试在 4096 字节的扇区驱动器上使用基于 512 字节的地址,当然,这是行不通的。
那么,除了在十六进制编辑器上手动编辑 MBR 之外,如何更正 MBR 中的地址,使它们在 4096 字节扇区大小上有效,以及
分区未针对 4096 字节扇区对齐。除了复制进出另一个驱动器之外,还有一些工具可以用来对齐它们吗?(我没有备用驱动器),或者我是否需要创建一些工具将数据一次“转移”到一边一小块?分区是ext3。
谢谢!
我发现有一种聪明的方法可以使用 dd 在这个问题中就地移动分区:How to move a partition in GNU/Linux? …
我最近购买了一个具有 3 TB (2.72 TiB) 存储容量的外置磁盘驱动器。
现在,根据维基百科关于 MBR 的文章,使用 MBR 方案格式化的磁盘上的最大可寻址存储空间被限制为 2TB (1.81 TiB),因此按理说大容量硬盘驱动器 (>2TB) 必须使用GUID 分区进行格式化表 (GPT) 方案能够使用 HDD 的全部容量。
那么为什么 3TB WD My Book 外置磁盘驱动器出厂时使用 MBR 方案格式化,更令人惊讶的是,为什么当 MBR 最多只能寻址 1.81 TiB 时,它在 Windows 上显示为 2.72 TiB 驱动器?
有没有其他拥有大容量西部数据(或其他品牌)硬盘的人见过这个?
如果有帮助,则硬盘已使用格式化NTFS且扇区大小为4096 bytes. 另外,这里有一些截图:
现在 MBR 分区下的 LBA 使用 32 位值寻址,最大为 2^32 或 4294967296。硬盘上的每个 LBA 对应一个 512 字节的扇区值(即使在 4K 高级格式化驱动器上,它们仍然显示为OS 的 512 字节扇区驱动器),因此 …