如何使用 LVM VG 作為儲存池來增加 KVM 來賓磁碟大小?

如何使用 LVM VG 作為儲存池來增加 KVM 來賓磁碟大小?

KVM 主機伺服器運行 CentOS 6.5,LVM 磁碟區組「storage_pool」用作 KVM 的主儲存池。

Ubuntu 用戶端使用 ext4 檔案系統安裝,並將整個 /dev/vda1 掛載為 /。這是來賓磁碟配置:

<disk type='block' device='disk'>
  <driver name='qemu' type='raw' cache='none' io='native'/>
  <source dev='/dev/storage_pool/kvmguest.img'/>
  <target dev='vda' bus='virtio'/>
  <alias name='virtio-disk0'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>

增加來賓磁碟大小的最佳方法是什麼? VG 有大量可用空間。

我找到了一些範例,但大多數也在來賓中使用 LVM,或者不完全適用。據我了解,常見的方法是在同一個VG中創建一個更大的LV,關閉guest,傳輸數據,編輯配置以使用新的LV?

預先感謝您的任何建議或指示

答案1

無需關閉 guest 虛擬機器(至少 2019 年不再需要)。

簡單地

lvextend -L+<size>G /dev/<group>/<volume>

然後

virsh blockresize <domain> /dev/<group>/<volume> --size <newsize>

最後進入您的客人並為您的客人做任何必要的事情以利用額外的空間。

在 Windows 來賓中,您可以執行下列操作

diskpart

list volume

select volume <n>

extend

這些是我在使用 qemu 3.1.0 的 Ubuntu 19.04 下擴充功能作為 KVM 網域運行的 Windows 10 用戶端的 C: 磁碟機時所遵循的具體步驟

答案2

這是我所遵循的程序:

  1. 擴展kvm guest的邏輯卷

    # lvextend -L+50G /dev/storage_pool/guest.img
    
  2. 關閉 kvm guest 並停用邏輯卷

    # virsh shutdown guest
    # lvchange -a n /dev/storage_pool/guest.img
    
  3. 列出並記下 kvm guest 的分區信息,最重要的是第一個扇區。如果它不顯示扇區,您可能需要添加“-u”或“-u扇區”開關

    # fdisk -l /dev/storage_pool/guest.img
    
  4. 刪除並重新建立分割區以填滿整個擴充空間,確保使用磁區作為單位並選擇相同的第一個磁區(如果分割區對齊,通常為 2048),您可以使用“u”fdisk 指令在單位之間切換

    # fdisk /dev/storage_pool/guest.img
    Command (m for help): d
    Partition number (1-4): 1
    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    p
    Partition number (1-4): 1
    First sector (...): 2048
    Last sector...: hit enter and use the default last sector
    Command (m for help): a
    Partition number (1-4): 1
    Command (m for help): w
    
  5. 公開 ext3/4 檔案系統並調整其大小

    # kpartx -a -v /dev/storage_pool/guest.img
    # e2fsck -p -f /dev/mapper/storage_pool-guest.img1
    # resize2fs /dev/mapper/storage_pool-guest.img1
    # e2fsck -p -f /dev/mapper/storage_pool-guest.img1
    # kpartx -d -v /dev/storage_pool/guest.img
    
  6. 啟動邏輯磁碟區並啟動kvm guest

    # lvchange -a y /dev/storage_pool/guest.img
    # virsh start guest
    

答案3

搜尋同樣的東西,我發現你的問題還沒有答案。對我來說,以下事情有效:

  1. 以通常的方式關閉來賓(在我的例子中是 Debian 7.0)。

  2. 擴展“原始”LV(當然是在主機的VG中),例如透過5G。為此,您必須是主機上的 root/sudo:

    lvextend -L +5G /dev/YourStoragePoolVG/YourVirtualMachinesVGToExtend

  3. 在 gparted 中開啟新擴充的 lv(即虛擬機器的「磁碟」):

    gparted /dev/mapper/YourStoragePoolVG-YourVirtualMachinesVGToExtend

  • 註:你必須使用“/dev/mapper/...”路徑, 不是“/dev/dm-77”或“/dev/YourStoragePoolVG/...”或其他(這似乎是 LVM 的錯誤/功能)!
  1. 修改已修改磁碟區上的分割區(像平常一樣使用 GUI)
  • 注意:請考慮有關資料遺失、檔案系統類型等的警告!
  • 注意:小心。
  • gparted,您可以調整分割區大小並在 LV 內 virtio 磁碟上儲存的分割區表中移動它們。
  • 恕我直言,擴展一個或多個分區不是問題。對於分割區/檔案系統縮小,請使用 Google...
  • gparted 也會調整分割區上的檔案系統(而不僅僅是分割區本身。
  1. 重新啟動您的虛擬機器。現在它可以看到修改後的分割區。

正如我所說,這對我有用(我可以在一些玩具安裝上嘗試這個而不需要冒險)。如果這一般有效,有人可以查看上述說明並發表評論嗎?謝謝。

答案4

這很簡單 - 在主機的 LVEXTEND|LVRESIZE 從帶有 GPARTED 的 LiveCD ISO 啟動到 VM 後。 CD 啟動完成後,使用虛擬機器內使用的根分割區名稱執行 GPARTED:

$ gparted /dev/vda1" # for VirtIO /dev/vda

或者

$ gparted /dev/sda1" # for SATA emulated /dev/sda

並依照 GPARTED 的常用方式執行分割區大小調整

相關內容