自動調整 VM 磁碟大小

自動調整 VM 磁碟大小

我的 KVM/Qemu 設定效果很好。現在我想簡化新虛擬機器的配置。

兩種明顯的方法是複製現有磁碟或從頭開始安裝(使用自動預置/啟動)。

在我的測試中,使用 preseed/kickstart 進行安裝從創建到啟動並運行至少需要幾分鐘(即使使用本地鏡像)。結果很棒,但時間太長了。

克隆顯然要快得多,但一旦您需要比來源更大的磁碟,它就會產生問題。

現在,如果這只是一次性的事情,那麼手動啟動它並擴展磁碟就很簡單了。但是,我希望在首次啟動時以自動方式執行此操作。

基本上需要執行三項任務:

  • 擴充磁碟(fdisk/cfdisk 等)
  • 調整磁碟區池大小(如果是 LVM)
  • 擴充實際檔案系統

雖然可以編寫腳本,但我想在這裡提出它,因為我懷疑我是唯一一個希望以自動化方式做到這一點的人。我發現的最接近的是raspi 配置對於 Raspberry Pi,它為此提供了一個自動化工具。

我當然可以從 raspi-config 中提取程式碼,但它做了很多假設,所以我希望可能有一個更通用的工具可用。

答案1

libguestfs可能能夠勝任這項任務,但它無法到位,引用:

Copy olddisk to newdisk, extending one of the guest's partitions to fill the extra 5GB of space.

    virt-filesystems --long -h --all -a olddisk

    truncate -r olddisk newdisk
    truncate -s +5G newdisk

    # Note "/dev/sda2" is a partition inside the "olddisk" file.
    virt-resize --expand /dev/sda2 olddisk newdisk

這樣做作為克隆步驟應該可行。

答案2

事實證明growroot,這是雲端初始化可以做到這一點。有關其工作原理的完整範例,請查看我的實現虛擬機器準備

相關內容