====== 在 Alpine/Ubuntu 的 VM 加大硬碟空間(LVM) ======
===== Ubuntu =====
* 環境 : Ubuntu 24.04.3 LTS + lvm
* 情境 : 將原本 60G 虛擬硬碟擴大為 120G
- 先在 VM 管理介面將虛擬硬碟加大 ++看虛擬硬碟加大後相關資訊|
root@claude-code-194:/var/lib/docker# pvdisplay
--- Physical volume ---
PV Name /dev/sda3
VG Name ubuntu-vg
PV Size <58.00 GiB / not usable 0
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 14847
Free PE 0
Allocated PE 14847
PV UUID KMzN5K-KMoy-W7I1-wJ6p-TItW-VrCb-0arRqF
root@claude-code-194:/var/lib/docker# vgdisplay
--- Volume group ---
VG Name ubuntu-vg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 2
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 <58.00 GiB
PE Size 4.00 MiB
Total PE 14847
Alloc PE / Size 14847 / <58.00 GiB
Free PE / Size 0 / 0
VG UUID hbyja8-nOz5-rc2t-ttAG-M8O9-JO9H-Xf0FoB
root@claude-code-194:/var/lib/docker# lvdisplay
--- Logical volume ---
LV Path /dev/ubuntu-vg/ubuntu-lv
LV Name ubuntu-lv
VG Name ubuntu-vg
LV UUID wn0ndd-X8KW-zqc2-tH8M-amTr-uAOT-a4qQIY
LV Write Access read/write
LV Creation host, time ubuntu-server, 2025-07-25 11:41:57 +0800
LV Status available
# open 1
LV Size <58.00 GiB
Current LE 14847
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:0
root@claude-code-194:/var/lib/docker# df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 794M 1.1M 793M 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 57G 54G 0 100% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda2 2.0G 197M 1.6G 11% /boot
tmpfs 794M 16K 794M 1% /run/user/1000
++
- 使用 growpart 工具擴展分區
# 安裝 cloud-guest-utils(如果沒有)
apt update
apt install cloud-guest-utils
# 擴展分區 3
growpart /dev/sda 3
- 重新讀取分區表
partprobe /dev/sda
- 擴展 Physical Volume
pvresize /dev/sda3
pvdisplay # 確認 PV Size 變大了
- 擴展 Logical Volume
# 使用所有新增的空間
lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
lvdisplay # 確認 LV Size 變大了
- 擴展檔案系統(線上擴展,不需卸載)
# ext4 檔案系統可以線上擴展
resize2fs /dev/ubuntu-vg/ubuntu-lv
- 驗證結果
root@claude-code-194:/var/lib/docker# df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 794M 1.1M 793M 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 116G 31G 80G 28% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda2 2.0G 197M 1.6G 11% /boot
tmpfs 794M 16K 794M 1% /run/user/1000
===== Alpine =====
* 環境 : alpine3 + lvm
* 情境 : 將原本 16G 虛擬硬碟擴大為 36G
==== 處理程序 ====
- 先在 VM 管理介面將虛擬硬碟加大 Exp. PVE
- 選要加大的虛擬硬碟 Exp. Hard Disk(scsi)
- 點 Disk Action -> Resize -> 20 (因為原本有 16G 所以增加 20G 就可以變成 36G)
- 進入 alpine 安裝必要的工具
apk add e2fsprogs-extra
- fdisk /dev/sda 增加 /dev/sda3 ++看增加後的結果|
pve-wiki:~# fdisk /dev/sda
The number of cylinders for this disk is set to 36864.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): p
Disk /dev/sda: 36 GB, 38654705664 bytes, 75497472 sectors
36864 cylinders, 64 heads, 32 sectors/track
Units: sectors of 1 * 512 = 512 bytes
Device Boot StartCHS EndCHS StartLBA EndLBA Sectors Size Id Type
/dev/sda1 * 1,0,1 300,63,32 2048 616447 614400 300M 83 Linux
/dev/sda2 301,0,1 1023,63,32 616448 33554431 32937984 15.7G 8e Linux LVM
/dev/sda3 1023,63,32 1023,63,32 33554432 75497471 41943040 20.0G 8e Linux LVM
++
- pvcreate /dev/sda3 -> 將 /dev/sda3 變成可被加入 lvm 的硬碟
- vgdisplay 看目前 vg 狀況 -> 只有一個 vg0
- vgextend vg0 /dev/sda3 -> 將 /dev/sda3 加入 vg0
- vgdisplay vg0 <- 可看到 vg0 的 Free PE/Size <20G
- lvextend -l +100%FREE /dev/vg0/lv_root -> 將所有可用空間都擴展到 lv_root
- vgdisplay vg0 <- 可看到 vg0 的 Free PE/Size 0/0
- resize2fs /dev/vg0/lv_root <- 讓增加的 20G 生效
- df -h 就可以看到 / 已經變成 33.2G
==== 快速執行命令 ====
*
pvcreate /dev/sda3
vgextend vg0 /dev/sda3
lvextend -l +100%FREE /dev/vg0/lv_root
resize2fs /dev/vg0/lv_root
* ++看執行操作訊息|
openvas-28:~# pvcreate /dev/sda3
Physical volume "/dev/sda3" successfully created.
openvas-28:~# vgextend vg0 /dev/sda3
Volume group "vg0" successfully extended
openvas-28:~# lvextend -l +100%FREE /dev/vg0/lv_root
Size of logical volume vg0/lv_root changed from 27.84 GiB (7128 extents) to <87.84 GiB (22487 extents).
Logical volume vg0/lv_root successfully resized.
openvas-28:~# resize2fs /dev/vg0/lv_root
resize2fs 1.47.0 (5-Feb-2023)
Filesystem at /dev/vg0/lv_root is mounted on /; on-line resizing required
old_desc_blocks = 4, new_desc_blocks = 11
The filesystem on /dev/vg0/lv_root is now 23026688 (4k) blocks long.
++
{{tag>vmdisk resize alpine ubuntu lvm}}