透过此文件记录扩容过程。 Written by @xxrjun
一开始伺服器的磁碟空间有 30GB,今天(2023/03/17)不过是下载完 MetaMap 的压缩档就发现磁碟爆了(一开始分割的时候只有分配 14GB),虽然可以把剩下的 10GB 多可以分配过去,但是!
- 我不会做扩充磁碟或是磁碟分割有的没的,所以想说可以顺便学
- MetaMap 解压缩就 16G 了,之后还要装资料库的东西,所以现在不弄未来还是得弄!但修了 29 学分的我可不想拖任何事!
在铭祐扩大 vm disk 的容量之前,输入 lsblk
看一下磁碟分割的状况,总共有 30G,我们主要是使用 sda3
的区域,有 28G
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 116.8M 1 loop /snap/core/14784
loop1 7:1 0 55.6M 1 loop /snap/core18/2708
loop2 7:2 0 55.6M 1 loop /snap/core18/2714
loop3 7:3 0 63.3M 1 loop /snap/core20/1828
loop4 7:4 0 62M 1 loop /snap/core20/1587
loop5 7:5 0 139.4M 1 loop /snap/docker/2746
loop6 7:6 0 338M 1 loop /snap/google-cloud-sdk/324
loop7 7:7 0 339.5M 1 loop /snap/google-cloud-sdk/326
loop8 7:8 0 79.9M 1 loop /snap/lxd/22923
loop9 7:9 0 111.9M 1 loop /snap/lxd/24322
loop10 7:10 0 38.7M 1 loop /snap/postgresql10/47
loop11 7:11 0 70.8M 1 loop /snap/powershell/229
loop12 7:12 0 49.8M 1 loop /snap/snapd/18357
loop13 7:13 0 70.8M 1 loop /snap/powershell/231
sda 8:0 0 30G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 28G 0 part
└─ubuntu--vg-ubuntu--lv
接著输入 df -hl
看一下档案系统的使用情况,我们主要档案是使用 /dev/mapper/ubuntu--vg-ubuntu--lv
的空间,只剩下 37MB 可以用了:anguished: ,势必得进行扩充,就算把 sda3
全部的空间分下去,MetaMap 一解压缩就会爆了。
$ df -hl
Filesystem Size Used Avail Use% Mounted on
tmpfs 795M 1.1M 794M 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 14G 13G 37M 100% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda2 2.0G 130M 1.7G 8% /boot
tmpfs 795M 4.0K 795M 1% /run/user/1000
跟铭祐说后我需要多一点空间后,铭祐二话不说马上帮我开到 80GB(真的非常感谢!),接著就是我要想办法完成扩充磁碟的环节了。
题外话: 一开始铭祐是多给我一颗 50GB 的 vm disk,正当我还在懊恼怎么动手时,铭祐发现可以让原本的 vm disk 直接扩充容量,应该是有让接下来的程序变得简单一点!
弄脏手前可以先大概了解一下 LVM: xxrjun/lvm-note.md
vm disk 扩容后,输入 lsblk
查看,sda
从原本的 30G 变成 80G 了!
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 55.6M 1 loop /snap/core18/2708
loop1 7:1 0 116.8M 1 loop /snap/core/14784
loop2 7:2 0 63.3M 1 loop /snap/core20/1828
loop3 7:3 0 62M 1 loop /snap/core20/1587
loop4 7:4 0 139.4M 1 loop /snap/docker/2746
loop5 7:5 0 55.6M 1 loop /snap/core18/2714
loop6 7:6 0 338M 1 loop /snap/google-cloud-sdk/324
loop7 7:7 0 339.5M 1 loop /snap/google-cloud-sdk/326
loop8 7:8 0 79.9M 1 loop /snap/lxd/22923
loop9 7:9 0 111.9M 1 loop /snap/lxd/24322
loop10 7:10 0 38.7M 1 loop /snap/postgresql10/47
loop11 7:11 0 70.8M 1 loop /snap/powershell/229
loop12 7:12 0 70.8M 1 loop /snap/powershell/231
loop13 7:13 0 49.8M 1 loop /snap/snapd/18357
sda 8:0 0 80G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 28G 0 part
└─ubuntu--vg-ubuntu--lv 253:0 0 14G 0 lvm /
因为我没找到扩充现有分割区的方法,所以我选择将 sda3
删掉再新增一个拥有剩下全部空间的分割区。 输入 fdisk /dev/sda
,并针对提示输入,以下是会用到的指令
n
: 建立新分割槽d
: 删除原有分割槽p
: 检视分割区w
: 储存分割区并退出
Command (m for help): d
Partition number (1-3, default 3): 3
Partition 3 has been deleted.
Command (m for help): n
Partition number (3-128, default 3): 3
First sector (4198400-167772126, default 4198400): // 这里按Enterr就好
Last sector, +/-sectors or +/-size{K,M,G,T,P} (4198400-167772126, default 167772126): // 这里按Enter就好
Created a new partition 3 of type ''Linux filesystem'' and of size 78 GiB.
Partition #3 contains a LVM2_member signature.
Do you want to remove the signature? [Y]es/[N]o: n # 这行我不知道要干嘛,但看到 remove 怕出错就选择 No
Command (m for help): p
Disk /dev/sda: 80 GiB, 85899345920 bytes, 167772160 sectors
Disk model: QEMU HARDDISK
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: 98221D5A-EB1E-4412-8F70-4C9F40EF706A
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 4198399 4194304 2G Linux filesystem
/dev/sda3 4198400 167772126 163573727 78G Linux filesystem
Command (m for help): w
The partition table has been altered.
Syncing disks.
建立后需要输入 reboot
重新启动即可生效(好像也可以透过重新挂载来生效)
$ reboot
接著我们需要使用 pvresize
指令调整 /dev/sda3
物理卷(Physical Volume) 大小。透过这个指令,LVM 会重新计算物理卷中可用的空间,并且能够使用及管理新增的空间。
$ pvresize /dev/sda3
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
使用 pvdisplay
确认一下,/dev/sda3
的 PV Size
确实增加 50GB 至 78GB 了。
$ pvdisplay
--- Physical volume ---
PV Name /dev/sda3
VG Name ubuntu-vg
PV Size <78.00 GiB / not usable 16.50 KiB
Allocatable yes
PE Size 4.00 MiB
Total PE 19967
Free PE 12800
Allocated PE 7167
PV UUID g6WsDR-nJP3-YYYv-72b7-wRQB-51bs-G2Kj4A
pvresize
指令执行后,若是 dev/sda3
有多余的空间,会自动分配给其所属的 Volume Group,进而改变 VG Size
,这边改变的很显然是ubuntu-vg
,使用 vgdisplay
检查,ubuntu-vg
的 VG Size
确实变为 78GB
$ vgdisplay
--- Volume group ---
VG Name ubuntu-vg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 5
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.00 GiB
PE Size 4.00 MiB
Total PE 19967
Alloc PE / Size 19967 / <78.00 GiB
Free PE / Size 0 / 0
VG UUID xVsU8T-uO85-oDID-5809-pWVu-bGfH-2snBHs
接著使用 LVM 扩展 /dev/ubuntu-vg/ubuntu-lv
的 Logical Volume 大小,以便能够利用前面使用 pvresize
扩展的空间。
lvextend
为 LVM 指令,用于扩展 LV(Logical Volume) 的容量。l +100%FREE
表示扩展大小为目前 VG 中所有可用空间的 100%。/dev/ubuntu-vg/ubuntu-lv
为要扩展的 Logical Volume 名称。
$ lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
Size of logical volume ubuntu-vg/ubuntu-lv changed from <28.00 GiB (7167 extents) to <78.00 GiB (19967 extents).
Logical volume ubuntu-vg/ubuntu-lv successfully resized.
最后使用 resize2fs
调整档案系统(Filesystem)可用大小,使其与 Logical Volume 的大小相符。因为在扩展 Logical Volume 大小后,磁盘上的文件系统大小并不会自动跟著扩展,所以必须透过这个指令来调整文件系统大小。
$ resize2fs /dev/ubuntu-vg/ubuntu-lv
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/ubuntu-vg/ubuntu-lv is mounted on /; on-line resizing required
old_desc_blocks = 4, new_desc_blocks = 10
The filesystem on /dev/ubuntu-vg/ubuntu-lv is now 20446208 (4k) blocks long.
Finally!
$ df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 795M 1.1M 794M 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 77G 13G 61G 18% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda2 2.0G 130M 1.7G 8% /boot
tmpfs 795M 4.0K 795M 1% /run/user/1000
- 调整 (VM) Disk 大小
- 建立分割区 (
sda3
),并使用预设大小,也就是剩余的全部容量。 - 调整
sda3
Physical Volume 大小,进而影响 Volume Group 的大小 - 调整 Logical Volume 大小
- 调整 Filesystem 的大小
下午弄了两个多小时才搞定,本来因为觉得很麻烦所以乾脆砍掉原本资料重装,但我把分割区 sda3
删掉重装后原本的资料居然还在,完全不知道为啥,希望不会有什么后遗症。第一次弄磁碟相关的东东,怕未来忘记所以打这篇记下。
非常感谢提供资源的铭祐以及整个Cloud Infrastructure Lab团队,也希望专题能够顺顺利利。