感謝銘祐兄開給我更多的空間!
透過此文件記錄擴容過程。 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團隊,也希望專題能夠順順利利。