KVM + LVM:將 LVM 放在哪裡?
嗨,我目前正在使用 libvirt+kvm 設置一個新伺服器。之後,這台伺服器上應該有大約 5 個虛擬機正在執行(+一些測試機器)。
儲存放置在使用 LVM 設置的 raid-5 設備上。KVM 現在可以在一些 LVM 邏輯卷上執行。
問題是:在虛擬機內部再次(第二次)使用lvm來分區空間有什麼缺點嗎? 所以它會是:Harddisk-> Raid Controler -> 物理伺服器的 LVM -> 每個 VM 一個邏輯卷 -> 每個 VM 內的 LVM -> 每個 VM 內的幾個邏輯卷。
如果我想在我的虛擬機中使用動態分區,還有其他可能性嗎?
謝謝
LVM 的性能成本是微不足道的,使用它兩次不會改變這一點。您的 raid-5 設備將比 lvm 產生更大的影響。
http://hyperthese.net/post/kvmized-debian-on-lvm/上的一篇部落格文章建議您在主機(物理伺服器)上創建 LVM 邏輯卷並直接在其上創建文件系統,而不創建分區,並且在創建之前虛擬機。
我試過了,長話短說:似乎工作,我能夠擴大一個 LV 和它上面的文件系統。
這是長篇大論,即我所做的:
在主機(執行 Ubuntu 10.04)上為 VM 的 root、var 和 swap 創建 LVM 邏輯卷:
me@host:~$ sudo lvcreate -L4G -n test-root vg1 me@host:~$ sudo lvcreate -L20G -n test-var vg1 me@host:~$ sudo lvcreate -L2G -n test-swap vg1
創建文件系統並在 LV 上交換:
me@host:~$ sudo mkfs.ext3 /dev/mapper/vg1-test--root me@host:~$ sudo mkfs.ext3 /dev/mapper/vg1-test--var me@host:~$ sudo mkswap -f /dev/mapper/vg1-test--swap
創建虛擬機:
me@host:~$ sudo virt-install --name=test --ram=2048 --os-type=linux --os-variant=ubuntulucid --cdrom=ubuntu-server-10.04-lts-64bit.iso --disk path=/dev/mapper/vg1-test--root --disk path=/dev/mapper/vg1-test--var --disk path=/dev/mapper/vg1-test--swap --network bridge=br0 --vnc --noautoconsole
然後我使用 virt-viewer 連接到新的虛擬機,Ubuntu 安裝程序在那裡等待。我選擇了“安裝最小虛擬機”模式(F4 鍵)。
在分區階段,我選擇了手動分區。安裝程序找到了虛擬磁碟 vda、vdb 和 vdc,並辨識出前兩個具有 ext3 和最後一個作為交換。我選擇了 ext3 分區並告訴將它們用作 ext3 分區(預設為“不使用”),“不,保留現有數據”和掛載點為 / 用於第一個分區和 /var 用於第二個分區。預設情況下,交換已正確設置。然後我選擇在第一張磁碟上安裝 grub。
我讓虛擬機啟動並執行良好。Fdisk 顯示 vda 有一個空的分區表,而 vdb 和 vdc 沒有一個有效的分區表。我不知道是否有分區表是一個問題,在https://unix.stackexchange.com/questions/5162/how-to-install-grub-to-a-whole有一些討論-ext4-disk-without-partition-table。
最後我嘗試調整 var 磁碟的大小。首先,在主機上:
me@host:~$ sudo lvextend -L24G /dev/vg1/test-var
然後我重新啟動了虛擬機並調整了虛擬機上文件系統的大小:
me@test:~$ sudo resize2fs /dev/vdb
它調整了它的大小。
我不知道這是否是一個好方法,但到目前為止它似乎有效。任何意見?