“错位分区” – 我应该重新分区(如何?)

试图从USB-stick和现有的Win7 OS 64bit一起安装Ubuntu 12.04,现在我不确定安装是否完全成功:磁盘实用工具声称扩展分区(包含Ubuntu分区和交换)是“未对齐”的建议重新分配。 我该怎么做,如果我应该做这个重新分区,怎么做(特别是如果我不想丢失Win7分区上的数据)?

背景信息:一台相当新的Thinkpad笔记本电脑(UEFI BIOS,如果重要的话)。 在安装之前,已经存在“SYSTEM_DRV”分区,主Windows分区和Lenovo恢复分区(所有NTFS)。 现在该表看起来像这样:SYSTEM_DRV(sda1),Windows(sda2),扩展(sda4)(包含Linux(sda5; ext4)和Swap(sda6))和恢复(sda3)。 当我选择Ext时,磁盘工具工具会给出如下消息:“分区未对齐1024字节。这可能导致性能非常差。建议重新分区。”

安装过程中存在几个问题,我将在下面介绍,如果它们恰好相关的话。

安装人员声称它认可现有操作系统没问题,所以我在安装过程中检查了相应的选项。 接下来,当它问我如何分配磁盘空间时,第一个奇怪的事情发生了:安装程序给我一个图形“幻灯片”为预先存在的Win7操作系统和新的Ubuntu分配磁盘空间……但它没有告诉我哪个分区适用于Ubuntu,适用于Windows。 ..well,我决定选择设置安装程序。 (不确定这是否相关,但我想我最好还是提一下 – 之前的分区工具更加不言自明……)

安装后(报告没有错误),GRUB / Ubuntu拒绝启动。 幸运的是,使用live-Ubuntu-USB和Boot-Repair非常简单地解决了这个问题(“推荐修复”工作正常)。 在所有这些麻烦之后,我决定检查分区表“只是为了确定” – 磁盘实用程序给出了我描述的警告消息。

我检查了Hitachi / HGST网站上的磁盘规格,是的,它是高级格式(“高级格式,512字节仿真”)。

另外,fdisk给了我以下内容:

Device Boot Start End Blocks Id System /dev/sda1 * 2048 3074047 1536000 7 HPFS/NTFS/exFAT /dev/sda2 3074048 523241959 260083956 7 HPFS/NTFS/exFAT /dev/sda3 939907072 976771071 18432000 7 HPFS/NTFS/exFAT /dev/sda4 523243518 939907071 208331777 5 Extended Partition 4 does not start on physical sector boundary. /dev/sda5 523243520 932153343 204454912 83 Linux /dev/sda6 932155392 939907071 3875840 82 Linux swap / Solaris 

显然sda4(扩展)分区关闭2个字节(sda4在523243518,sda5 523243520上启动),但如果我理解正确,这应该不是问题,因为逻辑分区sda5似乎没问题(?)。 换句话说,应该不需要重新分区?

这里通常涉及两个问题。 我认为主要问题是磁盘上的物理扇区大小可能是(例如)4096字节,而逻辑扇区大小通常是512字节。 如果分区的开始不在物理扇区的开头,则读取磁盘的方式会出现差异。 这可能主要导致某些驱动器的某些机器出现性能问题。 我不相信它会导致任何数据丢失或类似问题,但我不是磁盘驱动器工程师。

第二个问题是Linux磁盘实用程序和ext文件系统通常假设分区应该与硬盘驱动器上的柱面对齐。 我已经看到它写道,如果圆柱体延伸超过圆柱体边界并且下一个分区在同一圆柱体中开始,则可能导致数据损坏。 对不起,我没有确切的参考,谷歌似乎找到任何东西, 有关气缸对齐的信息,但它与ext2 / 3/4有关,假设它可以在某些情况下写入气缸的末端。

通常,我在开始安装之前使用Gparted设置分区(gparted在LiveDVD上)然后在我到达安装的那一部分时选择“执行其他操作”来选择手动使用分区的方式。 通常以后我才意识到Gparted在驱动器末端留下了几MB未使用的空间,或者如果我在最后使用Gparted设置了整个驱动器。 这是我目前正在使用的驱动器的确切示例。 请注意,我有两个大约20Gb的启动分区,其余的驱动器是包含交换分区和/ home的扩展分区。 请注意扩展分区末尾的2Mb未分配空间。 这是Gparted的做法,而不是我的。 我已经看到其他磁盘(例如)可能在主分区之前或扩展分区之前有一些未分配的空间,因为分区是在不同的时间和不同的程序创建的。

Gparted屏幕

由于它只有几MB,在阅读了有关潜在问题的信息之后,我通常会这样做。 如果Gparted想采取腰带吊带方式,我很乐意让它这样做。

我建议你再次启动LiveDVD / USB,只需调整Ubuntu的ext4分区,然后使用Gparted。 我想你会发现Gparted会尝试将分区与气缸对齐,这应该可以解决你的问题。 除非resize以某种方式破坏Linux启动,否则不要费心重新安装。

在我的谷歌搜索过程中,我确实找到了有关Gparted与完整MB数字对齐的信息,但这不是我的经验。 剩余的空间量更像是一个圆柱体的值,而不是表示MB边界的东西。

Fabricator4对于大多数现代磁盘的物理扇区是正确的,其大小为4096字节,而逻辑扇区的大小为512字节。 这可能会导致严重的性能问题(但不会导致数据丢失); 看到这篇文章我前段时间就这个主题写了详细信息。

由于在20世纪80年代有效但今天没有影响的原因,旧的公用设施将“圆柱体”上的分区对齐。 尽管如此,大多数Linux分区工具的实践在一两年前仍在继续。 但是,没有文件系统应该在其包含分区的边界之外写入,并且AFAIK ext2 / 3/4从未进行任何类型的柱面对齐假设。

今天,一些磁盘实用程序在某些情况下会产生关于对齐问题的错误警报,我怀疑这就是你所看到的。 特别是,扩展分区的对齐是无关紧要的。 您只需要关注主分区和逻辑分区的对齐。 要100%确定您拥有的内容,请使用fdisk查看分区表(或使用扇区精确数据分区,或者使用gdisk磁盘的gdisk ,而不是您的分区表)。 检查所有主分区和逻辑分区是否以8的倍数开始的扇区值开始。(分区结束值与扩展分区的起始值无关。)例如:

 $ sudo fdisk -lu /dev/sda Disk /dev/sda: 160.0 GB, 160041885696 bytes 255 heads, 63 sectors/track, 19457 cylinders, total 312581808 sectors Units = sectors of 1 * 512 = 512 bytes Disk identifier: 0x8e0cb6b5 Device Boot Start End Blocks Id System /dev/sda1 63 20033054 10016496 27 Unknown /dev/sda2 20033055 103699574 41833260 17 Hidden HPFS/NTFS /dev/sda3 * 103699575 249907139 73103782+ 5 Extended /dev/sda5 103699638 131781194 14040778+ 17 Hidden HPFS/NTFS /dev/sda6 131781258 183992444 26105593+ b W95 FAT32 /dev/sda7 183992508 187076924 1542208+ 82 Linux swap / Solaris /dev/sda8 * 187076988 187398224 160618+ 83 Linux /dev/sda9 187398288 249907139 31254426 8e Linux LVM 

这是一个使用柱面对齐分区的旧磁盘,因此您可以看到许多分区不会以8扇区倍数开始。 这不是问题,因为它是一个使用512字节物理扇区的旧磁盘。 如果您看到这样的结果,则应与磁盘制造商联系以确定其状态。 请注意提及高级格式,这是具有4096字节物理扇区的磁盘的市场营销名称。

如果您没有高级格式化磁盘, 或者所有主分区和逻辑分区都已正确对齐,则不必担心来自“磁盘工具”的任何投诉。

这可能是由于高级格式化,这意味着光盘上的物理扇区大于传统的512字节,即4 KB,这是8倍大。 如果光盘使用旧格式化工具格式化,使用512 B扇区,这可能导致分区无法正确对齐,并且可能导致消息显示。

正确对齐的分区将非常优化,并且非对齐分区上的随机写入性能将更慢。 但它会奏效。

如果系统运行良好,您无需担心。 但是如果你想修复它,那么我建议你备份你的系统,以防万一。 我建议你可以修复,下次你有一个很好的借口重新安装,并重新分区驱动器。