问题描述
我想缩小我的第二个(LVM)分区,以便在新释放的空间中创建一个新的分区。我正在使用Live CD执行此操作,因为我知道在使用该分区时无法调整/移动此分区。当我在Live CD中打开GParted时,我意识到我无法调整分区大小,因为当我使用right-click时,选项”resize/move”被禁用。
我尝试卸载它,以”lazy”卸载它(umount -l /dev/sda2
),但它没有奏效。
GParted的屏幕截图:
最佳解决方案
谷歌似乎有很多结果,人们也遇到类似的问题。一个例子:
在尝试此操作之前备份所有重要数据。始终假定调整分区大小时可能会丢失所有数据。
Shrink LVM without dataloss
这个论坛主题提出了以下过程,在这个例子中我们将一个分区从10G缩小到9G:
First, we unmount.
sudo umount /dev/vg_blah/lv_blah
Check the file system.
sudo e2fsck -f /dev/vg_blah/lv_blah
Resize the file system and the logical volume. Doing this in one step can avoid mistakes which cause dataloss. (Note lvreduce parameter
-L
interpretsG
as 2^30 bytes andg
as 10^9 bytes.)sudo lvreduce --resizefs -L 9G /dev/vg_blah/lv_blah
(optional) Remove a physical drive from the volume group if desired (if you now have an unused drive).
sudo vgreduce vg_blah /dev/sdxy
所有功劳都归于brianmcgee。
注意:如果您在磁盘末尾有另一个lv,vgreduce
将会失败,并显示cannot resize to xxxxx extents as later ones are allocated
– 我有一个交换lv,我将其删除。请参阅How to shrink Ubuntu LVM logical and physical volumes?以获取有关该情况的帮助。
次佳解决方案
您可以使用GUI工具非常轻松地缩小/扩展逻辑卷:system-config-lvm
。由于system-config-lvm
不是来自pre-installed,所以一旦从live-cd引导,您必须安装它:
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) universe"
sudo apt-get update
sudo apt-get install system-config-lvm
安装完成后,运行该程序,在左侧面板中选择要更改的逻辑卷,然后单击’Edit Properties’。
现在根据需要更改参数!
关于system-config-lvm
的一个好处是,如果新的分区大小小于所有现有数据(我刚刚尝试过并亲眼看到),它将不会允许您继续。
参考文献:
-
How-To Geek tutorial(这是图像的来源)。
第三种解决方案
这些是调整LVM或LVM2分区大小所需的所有步骤 –
sudo lvresize --verbose --resizefs -L -150G /dev/ubuntu/root
sudo pvresize --setphysicalvolumesize {any size here} /dev/sda5
/dev/sda5: cannot resize to xxxxx extents as later ones are allocated.
您必须重新排列LVM末尾的未分配空间。这意味着在root和swap_1分区之后。所以,你需要使用下面的命令来移动这个可用空间
pvs -v --segments /dev/sda5
这将显示如下的输出
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g 0 xxx root 0 linear /dev/sda:0-xxx
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g xxx yyyy 0 free
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g yyyy end swap 0 linear /dev/sda5:yyyy-end
现在使用下面的命令删除外部碎片 –
sudo pvmove --alloc anywhere /dev/sda5:yyyy-end
现在让我们看看它是如何发展的 –
pvs -v --segments /dev/sda5
这将显示如下的输出
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g 0 xxx root 0 linear /dev/sda:0-xxx
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g xxx yyyy swap 0 linear /dev/sda5:xxx-yyyy
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g yyyy end 0 free
之后,使用gparted并将LVM调整为最大使用区域,其余部分将位于未分配的空间中。请享用…
第四种方案
只有最新版本的Gparted(0.14)支持调整LVM物理卷的大小。 Ubuntu 12.10或13.04附带的版本不支持它。
以下是如何调整LVM物理卷的大小:
-
如果与LVM物理卷关联的卷组没有足够的未分配空间,则需要通过缩小逻辑卷来进行一些操作。查看bigbadonk420’s answer以获取有关如何操作的说明。如果您更喜欢GUI,您也可以使用GNOME磁盘(包含在Ubuntu中)执行一些步骤。
-
刻录latest .iso image from GParted’s website,然后刻录在CD上或放在USB memory 棒上。从CD或U盘启动。或者,你可以从源代码编译最新版本的GParted。
-
使用GParted调整LVM物理卷的大小。 GParted不会让您将LVM物理卷缩小到比未分配空间允许的更小的尺寸。
第五种方案
我会推荐另一个GUI工具 – KVPM。它结合了GParted和system-config-lvm的功能。此外,它允许在system-config-lvm doesn’t allow实时(安装的)分区上执行一些操作,但是卷必须被卸载才能收缩。
从Ubuntu 12.04开始,它位于Universe存储库中,所以只需执行sudo apt-get install kvpm
即可
注意:以root权限sudo kvpm
启动它
第六种方案
我偶然发现了这个答案,但至少对我至少有效。在我的情况下,我已经在根后留下了一个未分配的磁盘空间,所以我跳过了部分,如何获得更多空间,并解释了如何在不启动的情况下在根上使用它。
注意:而不是使用gparted
,您可能最好使用system-config-lvm
。下一次,我会使用这一个,而不是…我的gparted版本是0.18。
-
首先,我使用
gparted
尽可能扩展根分区。令我惊讶的是,它只扩展了物理尺寸,并没有对逻辑部分做任何事情。所以df -k
命令表示磁盘已满。 -
lvresize -l +100%FREE /dev/ubuntu-vg/root
尽可能扩展逻辑分区。不需要用各种方法检查和计算GB或块。 -
然后
resize2fs /dev/ubuntu-vg/root
是我做的第三步:它将文件系统扩展到逻辑分区的大小。
最后一步可以合并到第二步:
lvresize -l +100%FREE --resizefs /dev/ubuntu-vg/root