我有一个带有两个 500GB 磁盘的 Ubuntu 11.10 系统。分区表如下所示:
/dev/sda1 primary 465.52GB
/dev/sda2 extended 243.17MB
-> /dev/sda5 logical 243.14MB
/dev/sdb1 primary 465.76GB
sda1 和 sdb1 位于单个 LVM 物理卷组中,该组包含一个逻辑卷,该逻辑卷包含一个挂载为 / 的单个逻辑文件系统。sda5 安装为 /boot。
当我想升级到 Ubuntu 12.04 时,问题就来了,它在 /boot 上至少需要 247MB 的空闲空间。所以我需要减小 sda1 的大小,以便我可以增加 sda2 和 sda5 的大小。我到底该怎么做?我可以找到如何缩小逻辑卷组,但我不清楚如何清除 sda1 的末尾部分以便我可以减少物理卷组。pvresize 是否只是自动处理这个问题?还是那疯狂的一厢情愿?
我想替代方案是将所有内容备份到某个东西或其他东西上,然后从头开始重新创建这个东西,或者查明 GRUB2 是否支持将 LVM 用于 /boot。
使用 缩小包含第一个物理卷的第一个分区后
pvresize
,您需要扩大该/boot
分区。为了扩展
/boot
分区,您必须将其起点移动到第一个磁盘上。您可以parted
使用move
命令完成此操作。然后您可以再次调整分区大小
parted
并最终扩大文件系统。在 12.04 中,在 GRUB 中启用 LVM 和 raid 模块将使其比传统的 62 个可用于引导加载程序的扇区更大。据说现在大多数系统的分区都与 1MB 标记对齐,因此通常有足够的空间。您可以使用其中一个
fdisk
s 或parted
来检查sda1
分区的起始位置(我知道 Debian 的安装程序对一切的去向含糊不清,不确定 Ubuntu 的安装程序是否有任何不同)。在尝试之前一定要检查一下,似乎有很多报告说如果没有足够的空间,grub 会抱怨没有足够的空间来工作,但无论如何尝试并使系统无法启动。作为查看如何使用 fdisk 的示例,这是
fdisk /dev/sda
我很久很久以前安装的 Debian 系统:(使用命令“u”显示扇区,然后使用“p”打印表格,使用“q”退出无变化)这表明在我的例子中,它之前只有 62 个扇区。我将无法直接从 LVM 启动。
我已经想通了。在我开始之前,我会说下面的数字可能不会相加——我试图完全重现我所做的,但我不得不回溯这些数字。我的建议是以千字节为单位尽你所能,因为所有工具都同意它们有多大。使用 fdisk 时要非常小心,分区至少与其包含的物理卷一样大,因为如果您尝试做一些愚蠢的事情,它不会警告您。
首先,我需要从闪存盘启动(因为根文件系统在 LV 中)。然后检查文件系统是否正常:
然后调整文件系统的大小:
然后调整逻辑卷的大小:
检查文件系统是否仍然正常:
现在查看物理卷 - /dev/sdb1 末尾应该有一些可用空间:
我们需要将这个空闲空间移动到 /dev/sdb1 的末尾。首先查看每个驱动器上存在多少个盘区:
然后将一些从一个移动到另一个: $ pvmove /dev/sda1:118923:119173 /dev/sdb1
现在您可以使用 pvresize 调整物理卷的大小:
现在您可以使用 fdisk 调整分区大小。此处警告:我的分区已设置为 /dev/sda1 从扇区 63 开始。我曾假设这是默认设置,因此实际上并没有记下来。然后 fdisk 只会让我重新创建从扇区 2048 开始的分区,我不知道这是错误的 - 现在我有一个无法使用的系统!幸运的是,您可以重新删除并重新创建分区而不会产生任何不良影响,但我不得不猜测分区应该从哪里开始。所以在删除之前请注意您的分区开始的位置!
我使用 GParted 移动并调整了 /dev/sda2 和 /dev/sda5 的大小,这让我不那么紧张了。然后,最后:
在新位置重新安装引导加载程序。
请注意,我首先创建了从 2048 开始的分区,然后将开始移动到 63。
这里的 LVM 命令会告诉您是否要做一些愚蠢的事情,比如使物理卷小于它包含的分配范围,但有些不会,尤其是 fdisk - 很容易最终调整分区大小,以便它砍掉物理卷的末尾。这是一件坏事。确保分区至少和物理卷一样大!