====== 在 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}}