fdisk 扇区大小和对齐问题

fdisk 扇区大小和对齐问题

我执行了以下命令:

# fdisk /dev/sda1

输出为:

The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.

Command (m for help): p

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0xe0c5913d

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1              63    40965749    20482843+  1c  Hidden W95 FAT32 (LBA)
Partition 1 does not start on physical sector boundary.
/dev/sda2   *    40966144   334567423   146800640    7  HPFS/NTFS/exFAT
/dev/sda3       334567424   753997823   209715200   83  Linux
/dev/sda4       753999870  1953525167   599762649    5  Extended
Partition 4 does not start on physical sector boundary.
/dev/sda5       753999872  1949376511   597688320   83  Linux
/dev/sda6      1949378560  1953525167     2073304   82  Linux swap / Solaris

我遇到麻烦是因为以下几点:

  • 设备显示的逻辑扇区大小小于物理扇区大小。建议与物理扇区(或最佳 I/O)大小边界对齐,否则可能会影响性能。

  • 分区 1 不是从物理扇区边界开始的。

  • 分区 4 不是从物理扇区边界开始的。

我怎样才能解决其中一个或多个问题而不丢失文件和分区?

如果保持现状不变我会遇到什么问题?

答案1

对于大多数现代磁盘来说,逻辑扇区大小小于物理扇区大小是正常的。这只是高级格式磁盘最常实现。一些外部磁盘对物理扇区和逻辑扇区使用相同的扇区大小(4096 字节),我听说现在一些高端内置磁盘也这样做,但现在大多数磁盘都是高级格式型号,逻辑扇区为 512 字节,物理扇区为 4096 字节。你对此无能为力(或不应该尝试)。

话虽如此,正确对齐高级格式磁盘的分区非常重要。我对高级格式磁盘进行了一些测试,以确定分区未对齐时会发生什么,并发布了结果这里。简而言之,问题的严重程度因文件系统和磁盘的不同而有很大差异,但几乎总是存在显著的(有时巨大的) 与未对齐分区相关的性能损失。

但是,您的/dev/sda4并不直接拥有文件系统;它是一个扩展分区,这意味着它只是其他分区的容器。与 直接关联的数据/dev/sda4只是两个(逻辑)扇区,它们可能彼此不相邻,因此它们不能正确对齐。真正的性能损失将来自 中包含的分区的对齐/dev/sda4。在您的例子中,/dev/sda4保留/dev/sda5/dev/sda6,两者都正确对齐。因此,您不必担心/dev/sda5。您看到的警告只是代码过于热衷于报告“问题”,而实际上并不存在问题。

另一方面,您的/dev/sda1未正确对齐 - 它从扇区 63 开始,不能被 8 整除。您是否应该对此采取任何措施取决于您使用该分区的频率、您如何使用它(文件大小、读取与写入等)、从中获得最佳性能的重要性、您是否有足够的备份等。我建议您阅读我之前引用的文章,然后决定是否修复该问题。(由于篇幅原因,我没有在那篇文章中报告 FAT 结果,但 FAT 性能受到严重影响 - 如果我没记错的话,没有 ReiserFS 那么严重,但至少与大多数其他 Linux 原生文件系统一样严重。)

如果您决定要修复/dev/sda1,则应先备份它。备份完成后,修复它的一种方法是删除它,在原位置创建一个新分区,然后恢复其文件。另一种方法(备份后)是在 GParted 中调整分区大小。对起点进行微小更改;任何较新版本的 GParted 都应四舍五入为 2048 个扇区的倍数,这样就没问题了。移动分区的起点总是比移动终点更危险,而且耗时更长。由于分区只有 19GiB,因此操作不会花费太多时间,即使移动起点也是如此,但不会立即完成。

附注和背景信息:只有相当老的工具才能使现代高级格式磁盘上的分区错位。我猜你使用这样的工具(可能是旧版本的 Linuxfdisk或 DOS FDISK)创建/dev/sda1,然后使用更现代的工具(可能是较新的fdiskparted或 GParted)创建其余分区。

相关内容