圖轉載自這裡
之前曾多次遇到 VirtualBox VM 空間不夠問題,建立 VM 時給的硬碟空間太小,docker 弄一弄 VM 硬碟空間就不夠了。但按照 Stack Overflow 上的解法怎麼改,分割大小都是舊的,最後往往重裝 VM 解決。但每次都一堆 docker image 重抓真的非常麻煩。後來讀文章才整理出解法。
問題根本可以用這張圖說明,現在的 Linux (我用 Ubuntu 20.04 LTS)在檔案系統上疊太多層抽象化,要正確擴充可用空間大小必須每一層都改到。在 VirtualBox 的步驟大概是
1. 修改「實體硬碟」的大小
VirtualBox 需要把所有 Snapshot 取消。有 Snapshot 那 VM 寫入的「硬碟」實際上有可能分散到 snapshot 裡。然後 GUI 的虛擬媒體管理員直接調大小。
2. 修改 Partition 大小
先用 lsblk 看要擴容的檔案系統到底實際是掛在哪顆硬碟上。我是 /dev/sda3,這時
sudo growpart /dev/sda 3
下達後用 lsblk 檢查,/dev/sda3 應該已經擴大,但下方掛的 Logical volume 大小還是舊的,sudo pvdisplay 大小也是舊的
3. 擴大 Physical volume 大小
pvresize /dev/sda3
再來用 sudo pvdisplay 看大小對了,但 lsblk 看到的 ─ubuntu--vg-ubuntu--lv (logical volume)和 df -h 看的大小還是舊的
4. 調整 Logical volume 大小
sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
應該要可以看到 Size of logical volume ... changed from...,再來
sudo vgdisplay
應該就要看到 VG Size 為新的大小,此時 df -h 看到的 Filesystem 大小還是舊的,此時應接最後一道工法
5. 調整 file system 大小
sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
最後 df -h 看到分割區大小變大,打完收工!現在 Linux 的檔案系統真的抽象化堆的太誇張了....全文連結
0 意見:
張貼留言