假设您在 PC 中使用新驱动器作为辅助驱动器,并计划仅将数据存储在那里。(在我的情况下,它是 Windows 的 %USERS% 和 Linux 的 /home。程序和系统将留在主驱动器上,我们在本问题中不考虑这一点。)让我们进一步假设您使用 GPT 作为分区方案。但是,显然,它gdisk
不允许您使用所有空间:
Command (? for help): n
Partition number (1-128, default 1):
First sector (34-1000204287, default = 2048) or {+-}size{KMGTP}: 34
Information: Moved requested sector from 34 to 2048 in
order to align on 2048-sector boundaries.
Use 'l' on the experts' menu to adjust alignment
据我所知,如果您计划从此驱动器启动并在第一个分区之前放置一些启动代码,则保留 2014 = 2048-34 个扇区很有用。但您计划拥有一个仅用于数据的辅助驱动器;您永远不会从它启动。此外,还可能会有一些性能下降或额外的磨损。但是,您最好将写入访问与 4 KiB 或 512 KiB 边界对齐,而文件系统本身的开头是否与 1 MiB(= 2048 个扇区 * 512 字节/扇区)边界对齐,并不起太大作用。
那么,如果您克服这个限制并从第 34 扇区启动分区(例如,NTFS 或 ext4),会发生什么问题?
答案1
但是你最好将写入访问与 4 KiB 或 512 KiB 边界对齐,并且
不可以。您无法在操作系统的文件级别上对齐您的写访问权限。一旦您格式化了数据驱动器上的单个分区,您就可以使用操作系统复制文件。在那个阶段,您没有办法对齐您的写访问权限。
文件系统本身的开头是否与 1 MiB(= 2048 个扇区 * > 512 字节/扇区)边界对齐,并不起太大的作用。
当然可以。由于它是当前物理扇区大小的整数倍,因此文件系统的簇将与物理扇区对齐。
那么,如果您克服这个限制并从第 34 扇区启动分区(例如,NTFS 或 ext4),会发生什么问题?
从技术上来说这应该可行,但需要付出代价。
对于使用 4096 字节物理扇区同时模拟 512 字节逻辑扇区的现代驱动器,地址 34*512 不是 4096 的整数倍。处理 512/4096 配置的驱动器时,应将分区对齐为 8 的倍数。因此,32 或 40 是与错误选择 34 相邻的好选择。
否则,您将遭受驱动器上可避免的磨损,因为每次写入操作之前都必须进行读取操作。
您的特定案例的示例
3333333333444444444 逻辑 512 字节扇区数(十分之一)
0123456789012345678 逻辑 512 字节扇区号(个位)
33444444444555555555 物理 4096 字节扇区号
如果您想将分区的第一个簇写入扇区 34,会发生什么情况?典型的 NTFS 簇为 4096 字节,操作系统要求驱动器写入 8 个连续的 512 字节扇区,从 34 到 41。如上所示,扇区 34 到 39 属于物理扇区 4。然而,扇区 40 和 41 属于物理扇区 5。
由于驱动器内部只能写入包含扇区 32-40 的物理扇区 4,因此它必须读取该扇区,因为它包含您无法覆盖的逻辑扇区 32 和 33 的信息。只有现在缓冲了之前的内容后,驱动器才能覆盖物理扇区 5。
这同样适用于物理扇区 5 的末尾 - 必须先读取并缓冲它,然后使用逻辑扇区 40 和 41 的内容在其开头进行部分覆盖。
要验证数据驱动器的运行情况,请使用h2testw在 Windows 机器上或f3在Linux机器上。
答案2
以下摘录man gdisk
很好地解释了原因:
如果分区未根据其内部数据结构正确对齐,则每个物理扇区具有更多逻辑扇区的磁盘(例如现代高级格式驱动器)、某些 RAID 配置和许多 SSD 设备可能会出现性能问题。在新磁盘上,默认情况下,GPT fdisk 会尝试在 1 MiB 边界上对齐分区(在具有 512 字节扇区的磁盘上为 2048 个扇区),这可以优化所有这些磁盘类型的性能。在预分区磁盘上,GPT fdisk 会尝试识别该磁盘上使用的对齐值,但即使检测到较小的对齐值,也会在大于 300 GB 的磁盘上设置 8 扇区对齐。