使用 sfdisk 对 SSD 进行分区

使用 sfdisk 对 SSD 进行分区

我一直在尝试对这个 SSD(三星 840)进行分区。我想确保页面与 SSD 页面对齐,以限制写入量。我发现本网站建议使用 224 个磁头和 56 个扇区。

我已经有一个想要复制的 sfdisk 转储,但我想将起始分区向上移动一点。它以扇区为单位,我在扇区、磁头、磁柱和所有内容之间移动时感到很困惑(我的伙伴给了我 2048 个起始数字):

# partition table of /dev/sdb
unit: sectors

/dev/sdb1 : start=     2048, size=   995329, Id=83, bootable
/dev/sdb2 : start=   997377, size= 10242047, Id=83
/dev/sdb3 : start= 11239424, size= 24611328, Id=83
/dev/sdb4 : start= 35850752, size= 67223296, Id= 5
/dev/sdb5 : start= 35850808, size= 10235848, Id=83
/dev/sdb6 : start= 46086712, size= 56987336, Id=83

所以我一直使用 将该布局放到磁盘上sudo sfdisk -H224 -S56 /dev/sdb < sfdisk.dump。但在前面提到的链接中,那个人说他确保他的分区从 2 柱面开始,以确保它位于柱面边界上。

我尝试检查我的启动缸,它处于 0 :(

$ sudo sfdisk -l -uC /dev/sdb        

Disk /dev/sdb: 18689 cylinders, 224 heads, 56 sectors/track
Units = cylinders of 6422528 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdb1   *      0+     79-     80-    497664+  83  Linux
/dev/sdb2         79+    895     817-   5121023+  83  Linux
/dev/sdb3        896    2857    1962   12305664   83  Linux
/dev/sdb4       2858    8216    5359   33611648    5  Extended
/dev/sdb5       2858+   3673     816-   5117924   83  Linux
/dev/sdb6       3674+   8216    4543-  28493668   83  Linux

我还想调整一些分区的大小,但在磁柱、磁头、磁扇区和兆字节之间进行转换似乎不一致,让我很头疼。我在谷歌上搜索了很多,但仍然不明白如何构建分区或计算几何形状。

我也尝试了另一种方法来配置 sfdisk:

echo "2,512,83,*
,5000,83
,10000,83
,,5
,6000,83
,6000,83
"|sudo sfdisk -uM -H224 -S56 /dev/sdb

并尝试增加兆字节数 - 并检查 - 起始柱面位置,但在发生故障之前只能达到 6 兆字节(Warning: given size (5005) exceeds max allowable size (6))并且我仍然在零柱面。

磁盘几何学!它是如何工作的!?

有没有更简单的方法?有人有计算几何类型之间的公式吗?有人知道一个好的教程可以给我链接吗?有人之前为他们的 SSD 做过这个吗?

亲切的问候

答案1

在 MBR 磁盘上,扇区值以两种方式存储:

  • CHS 格式-- 磁柱/磁头/磁扇区 (CHS) 格式使用奇怪的 24 位编码来保存磁扇区值。算一下,2^24 * 512 字节 = 8GiB。(事实上,真正的 CHS 限制比这个要低一点,因为并非所有 CHS 值都是合法的。)注意,这是 8吉布,这远远低于大多数现代磁盘(甚至是 SSD)的总容量,这意味着 CHS 编码毫无用处,因此在当今的大多数用途中都被忽略了。因此,关注 CHS 值和 CHS 几何形状(确定磁盘的最大柱面、磁头和扇区值)是浪费时间。
  • 采用 LBA 格式-- 线性(或逻辑)块寻址 (LBA) 格式使用单个 32 位值来指定扇区。2^32 * 512 字节 = 2TiB,因此 MBR 的限制为 2TiB。这对于所有现代 SSD 甚至许多现代旋转磁盘来说都足够大;但更大的现代磁盘需要较新的 GPT 分区系统,该系统使用 64 位 LBA 值,而不使用 CHS 值。

过去,分区是按柱面值对齐的,因为这样可以提高那个时代(20 世纪 80 年代,也许是 20 世纪 90 年代初期)磁盘的性能。从那时起,柱面对齐就很常见,只是出于习惯和向后兼容,但实际上没有任何用处。今天,柱面对齐是有害的,因为较新的技术(SSD、某些类型的 RAID 阵列和高级格式磁盘)在按某些 2 的幂倍数扇区(8、512、2048 等)对齐时效果更好,但具体细节因磁盘类型而异。大多数现代分区工具默认将至少第一个分区按 2048 的倍数扇区对齐,因为这适用于大多数现代磁盘;但是,某些 SSD 需要更大的值,例如 4096 甚至 8192。如果您可以获得 SSD 的技术细节,则可以了解其要求是什么。如果没有,请尝试使用默认对齐值 2048、4096 或 8192。

我对此的熟练程度sfdisk有限(我从来都不喜欢它的命令集),所以我不能准确地说出如何使用该工具来做到这一点,只能给出一般性建议:在行业,不在圆柱体中。如果您手动设置,请拿出一个袖珍计算器(或使用计算器桌面应用程序),并确保分区开始取决于您使用的对齐值是否能整除的值。终点并不重要,除非您可能希望它们在下一个起点之前结束一个扇区,以尽量减少浪费的空间。

partedgdisk在强制分区对齐方面都比 做得更好(fdisk我怀疑sfdisk)。因此,您可能需要考虑使用其中一种工具 - 但gdisk仅适用于 GPT 磁盘,因此仅当您想从 MBR 切换到 GPT 时才应使用它。

相关内容