重新布局LVM磁盘

我有一个有两个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时,至less需要247MB的free / boot。 所以我需要减小sda1的大小,以便增加sda2和sda5的大小。 我该怎么做? 我可以find如何收缩逻辑卷组,但是我不清楚如何清除sda1的末尾部分,以便减less物理卷组。 pvresize只是处理这个automagically? 还是那狂野的一厢情愿?

我想可以select将所有东西都备份到其他东西上,从头开始重新创build,或者查看GRUB2是否支持将LVM用于/ boot。

pvresize缩小容纳第一个物理卷的第一个分区后,需要增大/boot分区。

为了扩展/boot分区,你必须在第一个磁盘上移动它的起始点。 你可以使用move命令parted完成。

然后你可以重新调整分区的大小,最后增加文件系统。

在12.04中,启用GRUB中的LVM和RAID模块将使其大于传统的可用于引导加载程序的62个扇区 。 据推测,目前大多数系统的分区alignment1MB标记,所以通常有足够的空间。 你可以使用其中一个fdisk或者parted来检查sda1分区的起始位置(我知道Debian的安装程序对所有事情都很模糊,不知道Ubuntu的安装程序是否有任何不同)。 请务必在尝试之前检查,似乎有很多报告,如果没有足够的空间,grub会抱怨没有足够的空间工作,但仍然尝试,并使系统无法启动。

作为一个例子来看看如何使用fdisk来告诉,这里是我很久以前安装的Debian系统上的fdisk /dev/sda :(使用命令“u”显示扇区,然后使用“p”打印表和“q”退出而不改变)

  Device Boot Start End Blocks Id System /dev/sda1 63 1959929 979933+ 83 Linux 

这表明在我的情况下,只有62个部门。 我将无法从LVM直接启动。

我已经明白了这一点。 在我开始之前,我会说下面的数字可能不会加起来 – 我试图重新创build我所做的,但是我不得不通过数字来回溯。 我的build议是尽可能以千字节为单位,因为所有的工具都认可它们的大小。 非常小心使用fdisk,该分区至less与其所包含的物理卷一样大,因为如果你尝试做一些愚蠢的事情,它不会警告你。

首先,我需要从闪存盘启动(因为根文件系统在LV中)。 然后检查文件系统是否正常:

 e2fsck -f /dev/mapper/root 

然后调整文件系统的大小:

 $ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/root 935093704 472743436 414857916 54% / $ resize2fs /dev/mapper/root 934093704k 

然后调整逻辑卷的大小:

 $ lvresize -L 934093704K /dev/mapper/root 

检查文件系统还是可以的:

 $ e2fsck -f /dev/mapper/root 

现在看看物理卷 – / dev / sdb1应该在最后有一些可用空间:

 $ pvs PV VG Fmt Attr PSize PFree /dev/sda1 toad lvm2 a- 465.76g 4.00m /dev/sdb1 toad lvm2 a- 465.76g 1.28g 

我们需要将这个可用空间移动到/ dev / sdb1的末尾。 首先查看每个驱动器上有多less个扩展盘区:

 $ pvs --segments PV VG Fmt Attr PSize PFree Start SSize /dev/sda1 toad lvm2 a- 465.76g 4.00m 0 119173 /dev/sdb1 toad lvm2 a- 465.76g 1.28g 0 119141 

然后移动一些到另一个:$ pvmove / dev / sda1:118923:119173 / dev / sdb1

 $ pvs --segments PV VG Fmt Attr PSize PFree Start SSize /dev/sda1 toad lvm2 a- 464.55g 1.00g 0 119141 /dev/sdb1 toad lvm2 a- 465.76g 284.0m 0 119141 /dev/sdb1 toad lvm2 a- 465.76g 284.0m 119141 119173 

现在您可以使用pvresize调整物理卷的大小:

 $ pvresize --setphysicalvolumesize 487112704k /dev/sda1 

现在你可以使用fdisk来调整分区大小了。 这里有一个警告:我的分区已经设置好了,所以/ dev / sda1在扇区63开始。我以为这是默认设置,所以实际上并没有logging下来。 然后fdisk只会让我重新创build从扇区2048开始的分区,我不知道这是错误的 – 现在我有一个不可用的系统! 幸运的是,你可以重新删除和重新创build分区,没有任何不良影响,但我不得不猜测分区应该在哪里开始。 所以请注意,在您删除它之前,您的分区将启动!

 $ fdisk /dev/sda Command (m for help): p Disk /dev/sda: 500.1 GB, 500107862016 bytes 255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000730a3 Device Boot Start End Blocks Id System /dev/sda1 63 974227455 488113696+ 8e Linux LVM /dev/sda2 974229504 976771071 1270784 5 Extended /dev/sda5 974231552 976771071 1269760 83 Linux Command (m for help): d Partition number (1-5): 1 Command (m for help): n Partition type: p primary (0 primary, 1 extended, 3 free) l logical (numbered from 5) Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-976773167, default 2048): 2048 Last sector, +sectors or +size{K,M,G} (2048-974229503, default 974229503): +487113696K Command (m for help): x Expert command (m for help): b Partition number (1-5): 1 New beginning of data (1-974229439, default 2048): 63 

我使用GParted移动和调整了/ dev / sda2和/ dev / sda5,这使我不那么紧张。 最后,

 $ mkdir disk $ mount /dev/sda5 disk $ grub-install --boot-directory=./disk /dev/sda 

在新的位置重新安装boot-loader。

请注意,我已经从2048年开始创build分区,然后将开始移动到63。

这里的LVM命令会告诉你是否要做一些愚蠢的事情,比如使物理卷小于其包含的分配盘区,但有些不会,尤其是fdisk – 这很容易导致分区大小的调整切断物理音量的结尾。 这是一件坏事。 确保分区至less与物理量一样大!