![fdisk 扇区大小和对齐问题](https://linux22.com/image/872185/fdisk%20%E6%89%87%E5%8C%BA%E5%A4%A7%E5%B0%8F%E5%92%8C%E5%AF%B9%E9%BD%90%E9%97%AE%E9%A2%98.png)
我执行了以下命令:
# 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
,然后使用更现代的工具(可能是较新的fdisk
、parted
或 GParted)创建其余分区。