我有一个非常具体的问题。我有一个 LVM 在虚拟机上的单个物理卷上运行。逻辑卷的大小是 ~150GB,我希望将其扩展到 ~250GB。
我能够从我的虚拟机管理器扩展物理卷,但物理大小的变化没有反映在我的 LVM 逻辑卷上。
我没有直接找到任何答案,通过一些实验找到了解决方案。我想我会在下面的答案中分享它。
一个示例 LVM 图:
LVM 的思想是将逻辑卷从物理卷中抽象出来,使得多个物理卷在用户面前呈现为一个连续的逻辑卷。
根文件系统在/dev/file-server-vg/root,交换在/dev/file-server-vg/swap. 这个想法是我们实际上可以在 PV 层中拥有多个真正的硬盘,并且可以将它们全部添加到一个卷组中,这将允许它们在/dev/file-server-vg/root.
在这个问题中,我一直/dev/file-server-vg/root用作文件服务器,但它的空间不足。幸运的是,这个系统在虚拟机上,我能够/dev/sda使用虚拟机管理器扩展物理卷。但是,大小的增加不会自动传递到/dev/file-server-vg/root文件系统。我们需要做一些简单的命令来让它工作。
在我们开始之前,使用pvdisplay查看存在哪些物理卷。这将列出所有物理卷及其所属的卷组。在这种情况下,我们只有一个物理卷,即/dev/sda3。
--- Physical volume ---
PV Name /dev/sda3
VG Name file-server-vg
PV Size 155.26 GiB / not usable 0
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 65346
Free PE 0
Allocated PE 65346
PV UUID 0EXhc4-EoHZ-b79R-ncSe-SWXI-ztPe-Fsc7zk
Run Code Online (Sandbox Code Playgroud)
可以使用sudo parted和 然后列出当前分区表print。
Number Start End Size File system Name Flags
1 1049kB 538MB 537MB fat32 boot
2 538MB 794MB 256MB ext2
3 794MB 167GB 166GB lvm
Run Code Online (Sandbox Code Playgroud)
在本例中,我们希望将容量从 155.56GiB 扩展到 255.56GiB。使用虚拟机管理器,我们通常可以扩展磁盘空间,在这种情况下,我们将其扩展为 100GiB。
扩展成功后,生成的分区表(use print free)将如下所示。请注意“可用空间”显示为 108GB (~100GiB)。
Number Start End Size File system Name Flags
1 1049kB 538MB 537MB fat32 boot
2 538MB 794MB 256MB ext2
3 794MB 275GB 166GB lvm
167GB 275GB 108GB Free Space
Run Code Online (Sandbox Code Playgroud)
扩展逻辑卷有两种方法:创建一个新分区并将其添加到卷组中,或者增加相同的分区。
在我看来,在可能的情况下,第二种方法更简洁。当然,如果/dev/sda3是物理硬盘,而你又买了一块硬盘来扩展空间,那么使用第一种方法是合乎逻辑的。
在 parted 类型中,resize 3 794MB 275GB将调整分区 3 的大小以占用所有可用空间,几乎:
Number Start End Size File system Name Flags
17.4kB 1049kB 1031kB Free Space
1 1049kB 538MB 537MB fat32 boot
2 538MB 794MB 256MB ext2
3 794MB 275GB 274GB lvm
275GB 275GB 1032kB Free Space
Run Code Online (Sandbox Code Playgroud)
这已经足够了,只有 1MB 没有被使用。
接下来我们将重新启动机器。这是刷新分区表所必需的。
您现在将看到的是,物理卷的大小随着 pvdisplay
--- Physical volume ---
PV Name /dev/sda3
VG Name file-server-vg
PV Size 255.26 GiB / not usable 0
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 65346
Free PE 0
Allocated PE 65346
PV UUID 0EXhc4-EoHZ-b79R-ncSe-SWXI-ztPe-Fsc7zk
Run Code Online (Sandbox Code Playgroud)
大小的增加将自动传递给卷组,使用vgdisplay您获得以下内容。请注意,vgextend它实际上并没有像您认为的那样做。它不占用可用空间,而是用于向特定卷组添加新的物理卷。
--- Volume group ---
VG Name file-server-vg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 255.26 GiB
PE Size 4.00 MiB
Total PE 65346
Alloc PE / Size 65346 / 255.26 GiB
Free PE / Size 0 / 0
VG UUID NwwIgT-W0SH-aeTe-d078-hcxx-XZ6W-QfnSA0
Run Code Online (Sandbox Code Playgroud)
逻辑卷的大小不会自动增加。这实际上是有道理的,因为计算机不知道您想要增加哪个逻辑卷的大小,或者您可能想要使用卷组中的额外空间创建一个新的逻辑卷。所以用lvdisplay你会看到下表,显示/dev/file-server-vg/root只有153.26GiB,但不用担心我们很接近。
--- Logical volume ---
LV Path /dev/file-server-vg/root
LV Name root
VG Name file-server-vg
LV UUID l6qvYZ-AmYw-tdgi-2jUu-XNB2-gecQ-6fDPt8
LV Write Access read/write
LV Creation host, time file-server, 2014-07-10 14:54:58 +1000
LV Status available
# open 1
LV Size 153.26 GiB
Current LE 64834
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:0
--- Logical volume ---
LV Path /dev/file-server-vg/swap_1
LV Name swap_1
VG Name file-server-vg
LV UUID OohMkN-rGLa-fM4M-6he2-MbM9-BBc3-Ck2Hs5
LV Write Access read/write
LV Creation host, time file-server, 2014-07-10 14:54:58 +1000
LV Status available
# open 2
LV Size 2.00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:1
Run Code Online (Sandbox Code Playgroud)
增加逻辑卷的方法是使用 lvextend -L +100GB /dev/file-server-vg/root
之后,扩展文件系统 resize2fs /dev/file-server-vg/root
你已经完成了。您可以lvdisplay检查/dev/file-server-vg/root卷是否已扩展到 253.26GiB
--- Logical volume ---
LV Path /dev/file-server-vg/root
LV Name root
VG Name file-server-vg
LV UUID l6qvYZ-AmYw-tdgi-2jUu-XNB2-gecQ-6fDPt8
LV Write Access read/write
LV Creation host, time file-server, 2014-07-10 14:54:58 +1000
LV Status available
# open 1
LV Size 253.26 GiB
Current LE 64834
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:0
--- Logical volume ---
LV Path /dev/file-server-vg/swap_1
LV Name swap_1
VG Name file-server-vg
LV UUID OohMkN-rGLa-fM4M-6he2-MbM9-BBc3-Ck2Hs5
LV Write Access read/write
LV Creation host, time file-server, 2014-07-10 14:54:58 +1000
LV Status available
# open 2
LV Size 2.00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:1
Run Code Online (Sandbox Code Playgroud)