我有一個 VM 模板,用於使用 virt-clone / KVM 建立其他 VM。虛擬機器模板為4GB,以節省空間。我由此建構的虛擬機器儲存位於 iSCSI 目標或 LVM 磁碟區上(取決於功能),並且它們的檔案系統大小會根據電腦的角色而有所不同。
從範本建立新虛擬機器後,如果我正在建立需要超過 4GB 磁碟的內容,則必須調整根分割區的大小。這在互動使用parted時工作得很好,但不是腳本化的。當嘗試刪除檔案系統時,系統詢問我是否要繼續,儘管使用“-s”
下面的輸出顯示了失敗的腳本嘗試和實現此目的的工作互動會話。
克隆後調整根分割區大小且可以簡單編寫腳本的最佳方法是什麼?
失敗的分離腳本嘗試
克隆後分區
# parted /dev/vda p
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1049kB 4294MB 4293MB primary ext4 boot
腳本刪除嘗試
# parted /dev/vda -s rm 1
Warning: Partition /dev/vda1 is being used. Are you sure you want to continue?
#
刪除失敗後分割區
# parted /dev/vda p
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1049kB 4294MB 4293MB primary ext4 boot
工作互動調整大小(然後重新啟動)
刪除前分割區
# parted /dev/vda p
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1049kB 4294MB 4293MB primary ext4 boot
刪除並建立使用所有磁碟的新分割區
# parted /dev/vda
(parted) rm 1
Warning: Partition /dev/vda1 is being used. Are you sure you want to continue?
Yes/No? y
Error: Partition(s) 1 on /dev/vda have been written, but we have been unable to
inform the kernel of the change, probably because it/they are in use. As a
result, the old partition(s) will remain in use. You should reboot now before
making further changes.
Ignore/Cancel? I
(parted) mkpart p ext4 1 -1
(parted)
# parted /dev/vda p
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1049kB 10.7GB 10.7GB primary ext4
檔案系統調整大小
# resize2fs /dev/vda1
resize2fs 1.42.9 (4-Feb-2014)
Filesystem at /dev/vda1 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/vda1 is now 2621184 blocks long.
# df -kh .
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 9.8G 1.6G 7.9G 17% /
答案1
我已經想出瞭如何做到這一點。關鍵是 kpartx 讓 LVM 可以透過 VM 外部的 parted 使用(在 Hypervisor 主機上也是如此)。然後修改分割區大小,然後引導來賓並增加檔案系統。
因此,如果您有一個名為 TESTVM 的來賓,其儲存位於 /dev/VMS/VIRT-TESTVM,則您需要在虛擬機器管理程式主機上執行下列操作:
# kpartx -a /dev/VMS/VIRT-TESTVM
# parted /dev/VMS/VIRT-TESTVM rm 1
# parted /dev/VMS/VIRT-TESTVM mkpart -a optimal p ext4 0% 100%
# kpartx -d /dev/VMS/VIRT-TESTVM
然後只需啟動機器,登入並執行
# resize2fs /dev/vda1
為了安全起見,請再次重新啟動。