尝试从 USB 棒安装 Ubuntu 12.04 以及现有的 Win7 OS 64 位,现在我不确定安装是否完全成功:磁盘实用程序工具声称扩展分区(包含 Ubuntu 分区和交换分区)“未对齐”,并建议重新分区。我应该怎么做,如果我应该重新分区,怎么做(特别是如果我不想丢失 Win7 分区上的数据)?
背景信息:一台相当新的 Thinkpad 笔记本电脑(UEFI BIOS,如果这很重要的话)。在安装之前,已经有一个“SYSTEM_DRV”分区、主 Windows 分区和一个 Lenovo 恢复分区(全部为 NTFS)。现在表格如下所示:SYSTEM_DRV (sda1)、Windows (sda2)、扩展 (sda4)(包含 Linux (sda5;ext4) 和交换 (sda6))和恢复 (sda3)。当我选择 Ext 时,磁盘实用程序工具会显示以下消息:“分区错位了 1024 个字节。这可能会导致性能非常差。建议重新分区。”
安装过程中出现了几个问题,如果它们恰好相关的话,我将在下面进行描述。
安装程序声称它可以很好地识别现有的操作系统,因此我在安装过程中检查了相应的选项。接下来,当它问我如何分配磁盘空间时,发生了第一件奇怪的事情:安装程序给我一个图形“幻灯片”,为预先存在的 Win7 操作系统和新的 Ubuntu 分配磁盘空间……但它没有告诉我哪个分区用于 Ubuntu,哪个分区用于 Windows。……好吧,我决定使用安装程序建议的设置。(不确定这是否相关,但我想我还是最好提一下——以前的分区工具更加不言自明……)
安装后(未报告任何错误),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 似乎没有问题(?)。换句话说,应该不需要重新分区?
答案1
这里通常涉及两个问题。我认为主要问题是磁盘上的物理扇区大小可能是(例如)4096 字节,而逻辑扇区大小通常为 512 字节。如果分区的起始位置不在物理扇区的起始位置,则磁盘的读取方式就会出现差异。这主要会导致某些带有某些驱动器的机器出现性能问题。我不认为这实际上会导致任何数据丢失或类似问题,但我不是磁盘驱动器工程师。
第二个问题是,Linux 磁盘实用程序和 ext 文件系统通常似乎假设分区应该与硬盘上的磁柱对齐。我看到有人写道,如果磁柱延伸到磁柱边界之外,并且下一个分区从同一个磁柱开始,则可能导致数据损坏。抱歉,我对此没有确切的参考,谷歌似乎找不到任何东西但有关磁柱对齐的信息,但它与 ext2/3/4 有关,假设它可以写入磁柱的末尾在特定情况下。
通常,我在开始安装之前使用 Gparted 设置分区(gparted 在 LiveDVD 上),然后在安装到该部分时选择“执行其他操作”来手动选择如何使用分区。通常后来我才意识到 Gparted 在驱动器末尾留下了几 MB 的未使用空间,或者如果我使用 Gparted 设置了整个驱动器,则在末尾留下了几 MB 的未使用空间。这是我当前所在的驱动器的确切示例。请注意,我有两个大约 20Gb 的启动分区,驱动器的其余部分是包含交换分区和 /home 的扩展分区。请注意扩展分区末尾的 2Mb 未分配空间。这是 Gparted 的所作所为,不是我的。我见过其他磁盘(例如)可能在主分区之间或扩展分区之前有一些未分配的空间,因为分区是在不同时间和使用不同程序创建的。
由于只有几 MB,并且在阅读了有关潜在问题的信息后,我通常会放手不管。如果 Gparted 想要带一条皮带和吊带方法我很乐意让它这样做。
我建议您再次从 LiveDVD/USB 启动,然后使用 Gparted 调整 Ubuntu 所在的 ext4 分区的大小。我认为您会发现 Gparted 会尝试将分区与柱面对齐,这应该可以为您解决问题。除非调整大小会以某种方式破坏 Linux 启动,否则不要重新安装。
我在谷歌搜索时确实找到了有关 Gparted 对齐到完整 MB 数据的信息,但这不是我的经验。剩余空间量更像是圆柱体的值,而不是表示 MB 边界的东西。
答案2
Fabricator4 的说法是正确的,大多数现代磁盘的物理扇区大小为 4096 字节,而逻辑扇区大小为 512 字节。这可能会导致严重的性能问题(但不会导致数据丢失);请参阅这是我前段时间写的关于这个话题的文章了解详情。
旧实用程序将分区对齐到“柱面”,其原因在 20 世纪 80 年代有效,但今天已不再适用。尽管如此,这种做法在大多数 Linux 分区工具中一直延续到一两年前。然而,任何文件系统都不应在其包含分区的边界之外写入,据我所知,ext2/3/4 从未有过任何类型的柱面对齐假设。
如今,某些磁盘实用程序在某些情况下会发出有关对齐问题的误报,我怀疑您看到的就是这种情况。特别是,扩展分区的对齐无关紧要。您只需要关心主分区和逻辑分区的对齐。要 100% 确定您得到了什么,请使用fdisk
(或parted
使用扇区精确数据,或gdisk
对于 GPT 磁盘,您的不是)查看分区表。检查所有主分区和逻辑分区是否从 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 字节物理扇区的磁盘的营销名称。
如果你没有高级格式磁盘或者如果所有主分区和逻辑分区都正确对齐,则您不必担心磁盘工具的任何投诉。
答案3
这可能是由于高级格式化造成的,这意味着光盘上的物理扇区大于传统的 512 字节,即 4 KB,是 8 倍。如果使用使用 512 B 扇区的旧格式化工具格式化光盘,则可能导致分区无法正确对齐,并可能导致显示该消息。
正确对齐的分区将略微优化,而未对齐的分区上的随机写入性能将更慢。但它可以工作。
如果系统运行良好,您无需担心。但是如果您想修复它,那么我建议您备份系统,以防万一。我建议您修复它,下次您有充分的理由重新安装并重新分区驱动器。