逻辑扇区大小会根据是通过 USB 还是直接 SATA 连接而变化

逻辑扇区大小会根据是通过 USB 还是直接 SATA 连接而变化

我有一个 3TB 的 WD 磁盘(在 My Book Essential 外置硬盘中)。我在 Linux 下使用 parted 将其分区为 GPT 磁盘标签,并通过 USB 电缆将笔记本电脑上的数据加载到磁盘中。然后我将其打开,并将其切换为另一台计算机(台式机)上的内置 SATA 硬盘。

Linux(两台电脑上都是 Fedora 14)无法识别磁盘。parted 提示无法识别磁盘标签。它还报告逻辑扇区大小为 512 字节:“扇区大小(逻辑/物理):512 字节/4096 字节。当我通过 USB 将其连接到笔记本电脑时,报告为 4096/4096。

我尝试通过将所有扇区偏移量乘以 8 来重新分区,但它仍然无法识别数据。(我并不感到非常惊讶。)

如果我切换到台式机上的 USB 连接,它会切换回 4096 字节逻辑扇区。因此,看来是 USB 控制器板让它使用 4096 字节逻辑扇区。老实说,考虑到它是硬件扇区大小,4096 对我来说更有意义,但有没有办法让 USB 或 SATA 使用另一个值?

答案1

虽然有点晚了,但我的 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'

答案2

获取临时访问权限的另一种方法(实际上改进了此处提到的方法)是使用losetupkpartx。这是我所做的:

losetup -f /dev/sdl
kpartx -a /dev/loop2

现在我们可以使用/dev/mapper/loop2pX而不是/dev/sdlX

答案3

这是当今大容量(>= 512 GB)外置硬盘的常见功能。扇区大小由外置硬盘外壳中的 USB 板转换,此技巧似乎用于兼容各种操作系统(如旧版 Windows XP)。

Saikee 对此进行了彻底的测试和描述: http://forums.justlinux.com/showthread.php?153881-3TB-硬盘用作外部USB连接或内部Sata连接

关于您的第二个问题,我没有找到任何人可以改变并修复此行为,即使理论上似乎是可能的,但驱动器不会接受写入。

答案4

像 WD 品牌这样的新外置硬盘使用预定义格式。因此,结果无论如何都不能保证。如果您仍想尝试,我建议低级格式化。这可能或不得工作。

相关内容