在 Alpine/Ubuntu 的 VM 加大硬碟空間(LVM)

  • 環境 : Ubuntu 24.04.3 LTS + lvm
  • 情境 : 將原本 60G 虛擬硬碟擴大為 120G
  1. 先在 VM 管理介面將虛擬硬碟加大 看虛擬硬碟加大後相關資訊
  2. 使用 growpart 工具擴展分區

    # 安裝 cloud-guest-utils(如果沒有)
    apt update
    apt install cloud-guest-utils
    
    # 擴展分區 3
    growpart /dev/sda 3

  3. 重新讀取分區表

    partprobe /dev/sda

  4. 擴展 Physical Volume

    pvresize /dev/sda3
    pvdisplay    # 確認 PV Size 變大了

  5. 擴展 Logical Volume

    # 使用所有新增的空間
    lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
    lvdisplay    # 確認 LV Size 變大了

  6. 擴展檔案系統(線上擴展,不需卸載)

    # ext4 檔案系統可以線上擴展
    resize2fs /dev/ubuntu-vg/ubuntu-lv

  7. 驗證結果

    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

  • 環境 : alpine3 + lvm
  • 情境 : 將原本 16G 虛擬硬碟擴大為 36G
  1. 先在 VM 管理介面將虛擬硬碟加大 Exp. PVE
    1. 選要加大的虛擬硬碟 Exp. Hard Disk(scsi)
    2. 點 Disk Action → Resize → 20 (因為原本有 16G 所以增加 20G 就可以變成 36G)
  2. 進入 alpine 安裝必要的工具

    apk add e2fsprogs-extra

  3. fdisk /dev/sda 增加 /dev/sda3 看增加後的結果
  4. pvcreate /dev/sda3 → 將 /dev/sda3 變成可被加入 lvm 的硬碟
  5. vgdisplay 看目前 vg 狀況 → 只有一個 vg0
  6. vgextend vg0 /dev/sda3 → 將 /dev/sda3 加入 vg0
  7. vgdisplay vg0 ← 可看到 vg0 的 Free PE/Size <20G
  8. lvextend -l +100%FREE /dev/vg0/lv_root → 將所有可用空間都擴展到 lv_root
  9. vgdisplay vg0 ← 可看到 vg0 的 Free PE/Size 0/0
  10. resize2fs /dev/vg0/lv_root ← 讓增加的 20G 生效
  11. df -h 就可以看到 / 已經變成 33.2G
  • pvcreate /dev/sda3
    vgextend vg0 /dev/sda3
    lvextend -l +100%FREE /dev/vg0/lv_root
    resize2fs /dev/vg0/lv_root

    • 看執行操作訊息
  • tech/vm_diskresize.txt
  • 上一次變更: 2026/01/14 14:00
  • jonathan