我有一个 2TB 三星 EVO SSD,我刚刚安装它来替换旧的、较小的型号。这是多个操作系统安装的共享资源。我的驱动器上有 4 个分区,因为并非所有分区都用于共享资源的每个操作系统。我做了 bonnie++ 测试,该驱动器的性能大约是我预期的一半。
fsidk -l 的输出是,
$ sudo fdisk -l /dev/sdb
Disk /dev/sdb: 2000.4 GB, 2000398934016 bytes, 3907029168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x01033206
Device Boot Start End Blocks Id System
/dev/sdb1 * 4096 511991549 255993727 7 HPFS/NTFS/exFAT
/dev/sdb2 511995904 716795903 102400000 83 Linux
/dev/sdb3 716800000 1740799999 512000000 83 Linux
/dev/sdb4 1740804096 3907029167 1083112536 83 Linux
我认为这是一个对齐问题,但我无法确定正确的开始和结束扇区。
尽管物理扇区大小被列为 512,但我相信它实际上是 4096。这意味着分区应该从 4096 倍数的扇区边界开始。第一个分区(抱歉,在本例中是 ntfs)从扇区 4096 (2MB) 开始,所以看起来是正确的,但我不确定它在哪里应该结束。根据上面的打印输出,该分区覆盖了 255993727 个块。该值除以 4096 为 62,498.4685059,它不是整数,因此看起来末端扇区不是最佳的。
分区需要 ~250GB。我不知道如何计算结束扇区应该在哪里。我使用 GParted 创建分区,您只能指定分区大小(以 MB 为单位)。您可以对齐到 MiB、圆柱体或不对齐,但我也不知道那里的正确选项。如果更有意义的话,我可以使用 fdisk 来进行分区。
如果第一个分区未最佳对齐,其他分区可能也不会最佳对齐。我可以通过调整分区 sdb1 的大小以在不同的扇区结束来解决此问题吗?如果是的话,分区大小应该是多少MB?
我想如果我能回答的话我就能弄清楚剩下的事情。如果我需要发布更多信息,请告诉我。
LMH医药化学
答案1
最佳实践是将分区与 1MiB 边界对齐。这确保了与扇区、块和其他分段(例如 raid、lvm 等)的最佳兼容性
基本:
1 sector = 512byte
1Kib = 1024byte or 2 sectors
1MiB = 1024 * 1KiB = 1024 *1024byte = 1048576byte or 2048 sectors
1GiB = 1024 * 1MiB = 1024 * 1024 * 1024byte = 1073741824byte or 2097152 sectors
由于 1MiB 边界为 1048576 字节,等于 2048 个扇区,因此从扇区 4096 开始的第一个分区与 2MiB 边界对齐。
如果您希望第一个分区有 250GiB,那么它是尺寸应该
250GiB = 250 * 1024MiB = 256000MiB
256000MiB * 2048 sectors/MiB =
524288000sectors
这最后一个扇区第一个分区的大小应为
(起始扇区) - 1 + (扇区大小)
4096 -1 + 524288000 =
524292095
然后,您的第二个分区可以从扇区 524292096 开始,该扇区与 256002MiB 边界对齐
524292096 (sectors) / 2048 (sectors per 1MiB) = 256002MiB (boundary)
如果您遵循此方案,那么您可以计算所有后续分区的开始、大小和结束。