多读书多实践,勤思考善领悟

对虚拟机ubuntu系统的lvm系统盘扩容

虚拟机系统盘的根目录空间不够用,在无加盘条件下,只能考虑给系统盘空间扩容。这种方法风险较高,开始之前,在虚拟机内创建了快照。

一、修改分配内存

在主机中对虚拟机的分配内存进行修改

1、通常使用esxi,对虚拟机进行扩容操作,现在加40G,由原来的40G空间,扩容至80G。更改完成后保存即可,接下来就要到机器内继续进行后续操作。

2、VirtualBox中还可以用以下方法进行修改:

2.1、下VirtualBox安装目录下,在命令行中输入:

1
VBoxManage list hdds
1
2
3
4
5
6
7
8
9
C:\Program Files\Oracle\VirtualBox>VBoxManage list hdds
UUID: e7543ad8-6667-4cb9-bf40-84627a31371d
Parent UUID: base
State: created
Type: normal (base)
Location: C:\Users\mmm\VirtualBox VMs\ubuntu22\ubuntu22.vdi
Storage format: VDI
Capacity: 40960 MBytes
Encryption: disabled

2.2、查看当前各个虚拟机的状态,在命令行中输入:

1
2
VBoxManage modifyhd UUID --resize Capacity
#修改要修改虚拟机的内存大小。UUID为修改虚拟机的ID,Capacity为想要修改的大小。
1
C:\Program Files\Oracle\VirtualBox>VBoxManage modifyhd e7543ad8-6667-4cb9-bf40-84627a31371d --resize 80960

二、登录检查分区

登录ubuntu系统后,使用lsblk命令检查发现,增加的空间到了硬盘,并没有到所需要的分区。

1
lsblk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
root@ubuntu22:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 63.3M 1 loop /snap/core20/1778
loop1 7:1 0 63.3M 1 loop /snap/core20/1822
loop2 7:2 0 67.2M 1 loop /snap/lxd/21835
loop3 7:3 0 49.8M 1 loop /snap/snapd/17950
loop4 7:4 0 91.9M 1 loop /snap/lxd/24061
loop5 7:5 0 49.9M 1 loop /snap/snapd/18357
sda 8:0 0 80G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 1.5G 0 part /boot
└─sda3 8:3 0 38.5G 0 part
└─vgubuntu-root 253:0 0 38.5G 0 lvm /
sr0 11:0 1 1024M 0 rom

其实这里可以重新对硬盘进行分区,创建lvm逻辑卷进行扩容,本着折腾为主,尝试直接对/dev/sda3进行扩容。

三、对硬盘分区

使用fdisk命令对硬盘进行分区操作。

1
fdisk /dev/sda

这里我先输入p,查看扇区,记录下起始扇区,后面重新分区时,要保持一致。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
root@ubuntu22:~# fdisk /dev/sda

Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): p #查看扇区,记录sda3起始扇区号

Disk /dev/sda: 80 GiB, 85899345920 bytes, 167772160 sectors
Disk model: Virtual disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 7F13220A-DDDB-44AD-BC0D-E3F369DDE708

Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 3149823 3145728 1.5G Linux filesystem
/dev/sda3 3149824 83884031 80734208 38.5G Linux filesystem #扇区起始号为3149824

Command (m for help): d #删除分区
Partition number (1-3, default 3): 3 #删除3号分区

Partition 3 has been deleted.

Command (m for help): n #新建分区
Partition number (3-128, default 3): 3 #分区号为3,与之前的保持一致
First sector (3149824-167772126, default 3149824): 3149824 #扇区起始号,与之前的保持一致
Last sector, +/-sectors or +/-size{K,M,G,T,P} (3149824-167772126, default 167772126): #结束扇区,这里直接回车默认使用所有

Created a new partition 3 of type 'Linux filesystem' and of size 78.5 GiB.
Partition #3 contains a LVM2_member signature.

Do you want to remove the signature? [Y]es/[N]o: n #这里一定要选n,不然原来存在的lvm卷就会被干掉

Command (m for help): w #最后输入w,保存退出

The partition table has been altered.
Syncing disks.

然后执行lsblk查看/dev/sda3的空间已经由原来的38.5G增加至78.5G

四、物理卷大小调整

使用lvm命令查看,此时虽然增加了/dev/sda3的可用空间,但是lvm物理卷空间是没有增加的

1
lvm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
root@ubuntu22:~# lvm

lvm> vgdisplay
--- Volume group ---
VG Name vgubuntu
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size <38.50 GiB
PE Size 4.00 MiB
Total PE 9855
Alloc PE / Size 9855 / <38.50 GiB
Free PE / Size 0 / 0 #可用空间为0
VG UUID giBEa4-0pAc-zwzz-N916-Cwlz-bo5L-MqwWey

接着折腾lvm物理卷,使用pvresize命令对物理卷大小进行调整

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
lvm> vgs     #查看空间
VG #PV #LV #SN Attr VSize VFree
ubuntu-vg 1 1 0 wz--n- <38.50g 0

lvm> pvresize -t /dev/sda3 #先测试一下
TEST MODE: Metadata will NOT be updated and volumes will not be (de)activated.
Physical volume "/dev/sda3" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized

lvm> pvresize /dev/sda3 #测试成功去掉 -t 执行
Physical volume "/dev/sda3" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized

lvm> pvs #再次查看空间大小已经更改
PV VG Fmt Attr PSize PFree
/dev/sda3 vgubuntu lvm2 a-- <78.50g 40.00g

稳妥起见,退出检查可用空间是否增加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
root@ubuntu22:~# vgdisplay vgubuntu
--- Volume group ---
VG Name vgubuntu
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size <78.50 GiB
PE Size 4.00 MiB
Total PE 20095
Alloc PE / Size 9855 / <38.50 GiB
Free PE / Size 10240 / 40.00 GiB #这里可用空间已经增加
VG UUID giBEa4-0pAc-zwzz-N916-Cwlz-bo5L-MqwWey

这里还需要将可用的物理卷空间扩容至逻辑卷

1
2
3
4
5
6
7
8
9
root@ubuntu22:~# lvextend -l +100%FREE /dev/vgubuntu/root      #将可用空间全部给逻辑卷
Size of logical volume vgubuntu/root changed from <38.50 GiB (9855 extents) to <78.50 GiB (20095 extents).
Logical volume vgubuntu/root successfully resized.

root@ubuntu22:~# resize2fs /dev/vgubuntu/root #重新调整一下大小
resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/vgubuntu/root is mounted on /; on-line resizing required
old_desc_blocks = 5, new_desc_blocks = 10
The filesystem on /dev/vgubuntu/root is now 20577280 (4k) blocks long.

最后看看根目录空间是否已经增加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
root@ubuntu22:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 63.3M 1 loop /snap/core20/1778
loop1 7:1 0 63.3M 1 loop /snap/core20/1822
loop2 7:2 0 67.2M 1 loop /snap/lxd/21835
loop3 7:3 0 49.8M 1 loop /snap/snapd/17950
loop4 7:4 0 91.9M 1 loop /snap/lxd/24061
loop5 7:5 0 49.9M 1 loop /snap/snapd/18357
sda 8:0 0 80G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 1.5G 0 part /boot
└─sda3 8:3 0 78.5G 0 part
└─vgubuntu-root 253:0 0 78.5G 0 lvm /
sr0 11:0 1 1024M 0 rom

root@ubuntu22:~# df -Th
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs tmpfs 1.6G 1.3M 1.6G 1% /run
/dev/mapper/vgubuntu-root ext4 78G 8.6G 66G 12% /
tmpfs tmpfs 7.9G 0 7.9G 0% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup
/dev/loop1 squashfs 64M 64M 0 100% /snap/core20/1822
/dev/loop2 squashfs 68M 68M 0 100% /snap/lxd/21835
/dev/loop0 squashfs 64M 64M 0 100% /snap/core20/1778
/dev/sda2 ext4 1.5G 303M 1.1G 22% /boot
/dev/loop3 squashfs 50M 50M 0 100% /snap/snapd/17950
/dev/loop4 squashfs 92M 92M 0 100% /snap/lxd/24061
/dev/loop5 squashfs 50M 50M 0 100% /snap/snapd/18357
tmpfs tmpfs 1.6G 0 1.6G 0% /run/user/0