fdisk扇区大小和对齐问题

Modified on: Sun, 10 Jun 2018 03:38:23 +0800

我执行了命令:

# 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不会在物理扇区边界上开始。

如何在不丢失文件和分区的情况下如何解决其中一个或多个项目?

我将留下的所有问题是什么?

最佳答案

对于大多数现代磁盘,逻辑扇区大小小于物理扇区大小是正常的。这就是最常实现高级格式化磁盘的方式。一些外部磁盘对物理和逻辑扇区使用相同的(4096字节)扇区大小,我听说一些高端内部磁盘现在也这样做,但是现在大多数磁盘都是512字节的高级格式模型逻辑扇区和4096字节的物理扇区。没有什么可以(或应该尝试)做到这一点。

尽管如此,正确对齐高级格式磁盘的分区非常重要。我在高级格式磁盘上运行了一些测试,以确定当分区未对齐并发布结果时会发生什么这里。简而言之,问题的严重程度因文件系统而异,从一个磁盘到另一个磁盘,但几乎总是有一个重要的(有时巨大的)与未对齐分区相关的性能损失。

/dev/sda4并不直接保存文件系统;它是一个扩展分区,这意味着它只是其他分区的容器。与/dev/sda4直接相关的数据只是两个(逻辑)扇区,它们可能甚至彼此不相邻,因此它们不能正确对齐。真正的性能损失将来自/dev/sda4中包含的分区的对齐。在您的情况下,/dev/sda4包含/dev/sda5/dev/sda6,两者都正确对齐。因此,您无需担心/dev/sda5。您所看到的警告只是代码,当一个“问题”不存在时,它过于热心地报告“问题”。

另一方面,你的/dev/sda1没有正确对齐 - 它从第63区开始,它不能被8整除。你是否应该做任何事情取决于如何很多你使用该分区,如何使用它(文件大小,读取与写入等),从中获得最佳性能的重要性,是否有足够的备份等等。我建议你阅读我之前提到的文章,然后决定是否解决问题。 (由于空间原因,我没有在那篇文章中报告FAT结果,但是FAT表现非常糟糕 - IIRC,不像ReiserFS那么糟糕,但至少与大多数其他Linux原生文件系统一样糟糕。)

如果您决定要修复/dev/sda1,则应首先进行备份。完成后,修复它的一种方法是删除它,在其位置创建一个新分区,并恢复其文件。另一种方法(备份后)是在GParted中调整分区大小。对起点做一个微小的改变;任何最新版本的GParted应该会轮到2048个扇区的倍数,你会没事的。移动分区的起点总是比较危险,并且比移动终点需要更长的时间。由于分区的大小只有19GiB,操作不应该花费大量的时间,甚至移动起点,但它不会是瞬时的。

作为旁注和背景,只有相当旧的工具在现代高级格式磁盘上错位分区。我的猜测是你使用了这样一个工具(可能是Linux的fdisk或者DOS FDISK的旧版本)来创建/dev/sda1,然后使用更现代的工具(更新的fdiskparted,或者也许是GParted)来创建其余的分区。

作者:Rod Smith

相关问答

添加新评论