KVM ile çevrimiçi disk yeniden boyutlandırılması mümkün müdür?


15

Birkaç projede Linux sanallaştırma için KVM'yi değerlendiriyoruz. Her şey iyi gidiyor. Ancak gereksinimlerimizden biri, çalışan bir misafire yeniden başlatmadan veya çevrimdışı yapmadan disk alanı ekleme yeteneğidir. Bu KVM ile mümkün mü?

Şimdiye kadar bulduğum tek şey (ama henüz test etmedim) diskleri makineye takma yeteneğidir. Bu rotaya gidersem her zaman yeni diski konuktaki bir LVM birim grubuna ekleyebilir ve ardından seçilen mantıksal birimi genişletebilirim. Bu yaklaşımın en büyük dezavantajı, zaman içinde değişken sayıda sanal diske sahip konuklarla sonuçlanabilmemizdir. "Gerçek" disk alanı bir SAN üzerinden ana bilgisayara sağlanacaktır, böylece her zaman ana bilgisayara daha fazla alan ekleyebiliriz.


(Ve "Evet", bu mümkün.)
poige

Yanıtlar:


4

Makineyi indirmeden yapmak istiyorsanız, bahsettiğiniz şeyleri yapmakta sıkıştığınızı düşünüyorum.

Neden sanal makinelere LUN'lara SAN'dan hemen verip oradaki alanı yönetmiyorsunuz? Canlı taşıma gibi özellikleri yine de kullanmak istiyorsanız bu daha iyi çalışır.

KVM, QEMU'ya dayanmaktadır, bu nedenle tüm görüntü formatı desteği bu projeden gelir. İşte Qemu / KVM'nin desteklediği çeşitli formatları yeniden boyutlandırmak için iyi bir nasıl . Ancak Qemu forumu, burada sağlam cevaplar almazsanız bu soruyu sormak için iyi bir yer olacaktır.

İdeal olmayan başka bir seçenek de sürücüler için gerçekten büyük qcow2 veya diğer seyrek görüntü formatlarını kullanmaktır. Böylece her makineye işletim sistemi için küçük bir sürücü ve LVM altında veri için büyük bir seyrek görüntü verebilirsiniz. Bu, en azından yönetmek zorunda olduğunuz sanal sürücü / görüntü sayısını koruyacaktır. Ancak bu ince hazırlık bir sorun olabilir, ancak bunu 1000 makineye yaparsanız ve herkes sizi gördükleri boş alana götürürse.

XEN Şu anda aynı sınırlamalara sahip olduğuna inanıyorum.


Daha da önemlisi, SAN depolama alanını belirttiğiniz gibi misafirin içinden monte etmek muhtemelen gidilecek yoldur. Ek bilgi için de teşekkürler.
Eil

ince hazırlık parçalanma nedeniyle de maliyetli olabilir.
wazoox

15

Bunun eski bir soru olduğunu biliyorum ama çözümü araştırırken buldum ve başka birine yardımcı olabileceğini umuyorum.

Bugün gelince , sabit sürücüyü makinede yeniden boyutlandırmak mümkündür. Burada bir çalışma yolu buldum:

https://bugzilla.redhat.com/show_bug.cgi?id=648594

Aşağıdaki adımlar gerçekleştirilmelidir:

  1. Yeniden boyutlandırmak istediğiniz sabit sürücünün dosya adını ve KVM aygıt adını bulun:

    root@vhstage02:/data# virsh dumpxml test | xpath -e /domain/devices/disk
    Found 2 nodes in stdin:
    -- NODE --
    <disk type="file" device="disk">
      <driver name="qemu" type="qcow2" />
      <source file="/data/test.img" />
      <backingStore />
      <target dev="vda" bus="virtio" />
      <alias name="virtio-disk0" />
      <address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x0" />
    </disk>
    -- NODE --
    <disk type="file" device="cdrom">
      <driver name="qemu" type="raw" />
      <source file="/data/images/debian-8.2.0-amd64-netinst.iso" />
      <backingStore />
      <target dev="hda" bus="ide" />
      <readonly />
      <alias name="ide0-1-1" />
      <address type="drive" controller="0" bus="1" target="0" unit="1" />
    </disk>
    

Bizim için ilginç olan disk. Aramalı sourceve aliasengellemelisiniz. Benim için dosya adı test.imgve diğer ad virtio-disk0. Bu ad drive-için qemu sürücü adını almanız gerekir .

  1. Şimdi qemu monitör kullanarak sürücüyü yeniden boyutlandırıyoruz:

    virsh qemu-monitor-command test block_resize  drive-virtio-disk0  100G --hmp
    

Dosya adının .img uzantısı olmadan kullanıldığını ve sürücünün disk takma adına eklendiğini unutmayın. 100G, sahip olmak istediğimiz sürücünün boyutudur

  1. Makineye giriş yapın ve gerçek boyutun değiştirilip değiştirilmediğini kontrol edin:

    root@test:~# fdisk -l
    
    Disk /dev/vda: 100 GiB, 107374182400 bytes, 209715200 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x7e6e7f71
    
    Device     Boot  Start       End   Sectors  Size Id Type
    /dev/vda1  *      2048    499711    497664  243M 83 Linux
    /dev/vda2       501758 167770111 167268354 79.8G  5 Extended
    /dev/vda5       501760 167770111 167268352 79.8G 8e Linux LVM
    

Bu kadar! Artık yeni bölümler oluşturabilir veya mevcut bölümleri yeniden boyutlandırabilirsiniz.


1
Geri gelip bu yanıtı eklediğiniz için teşekkür ederiz! İşleri eski yapmanın yolundan çok daha basit hale getirir.
Dave Sherohman

4

AFAIK, bu mümkün değil - yeni disk görüntüleri ekleyebilirsiniz ve işaret ettiğinizde LVM birimine yeni görüntüler de ekleyebilirsiniz, ancak etkin, önyüklenebilir bir disk görüntüsünü yeniden boyutlandırmak için görüntüyü kapatabilirsiniz. ve bölümleri düzenleyin.

İşte bir görüntüyü genişletmek için iyi bir açıklama . Kapatma gerektirse de, özellikle --nonsparse görüntü seçeneğinden kaçınırsanız ve gparted diski bir iso dosyasına dd ve KVM misafirinize önceden monte ederseniz, sadece birkaç dakikalık kesinti süresi ile kurtulabilirsiniz. Bu yardımcı olur umarım.


2
Sorun aslında KVM ile ilgili değil; Linux'tan önyüklediğiniz diski yeniden boyutlandıramazsınız. Fiziksel RAID dizileri için de geçerlidir.
wazoox

3

Bir Linux sistemini çalışırken diskler arasında taşımak mümkündür. Sınırlama değiştirmediğini olmasıdır bölümleri olan bir disk üzerinde bölümler kullanımda.

Bunu yapmak için kök dosya sisteminizin bir LVM üzerinde olması gerekir, bu genellikle ayrı bir önyükleme dosya sistemine sahip olmanız gerektiği anlamına gelir (ancak bu gerekli değildir, sadece işleri kolaylaştırır)

Yeni diski taktıktan sonra, vgextend ile LVM'ye eklersiniz, kök dosyaları yeni diske taşımak için pvmove kullanın, sırasıyla mantıksal birimi ve dosya sistemini genişletmek için lvextend ve resize2fs kullanın, ardından eski diski birimden kaldırmak için vgreduce kullanın grubudur. Çıkardıktan sonra eski birim fişten çıkarılabilir.

Basit durumda, önyükleme dosya sistemi için asla dokunmanız gerekmeyen küçük bir diskiniz var. O kendi üzerinde Ama eğer öyle kolay bir yenisini, fişi prizden çekin ve sistemi durdurmadan önyükleme diski yeniden kaldırmak için. (sadece bunu yaparken çarpmayın)

Not: resize2fs dosya sistemlerini de küçültebilir.


0

Atm mümkün değil, ama afaik geliştirilmekte olan bir özellik. Bunun yerine VM'den bir iSCSI hedefine bağlanmak ve SAN tarafında bu hedef üzerindeki alanı yönetmek.


Soruyu kullanabileceği bir cevapla cevaplamadınız.
Mei

@David: ve bunu düşündüren ve hatta cevabımı küçümseyen şey nedir? Cevabım eldeki konuya nasıl bir çözüm getirmez?
dyasny

"Mümkün değil atm ..." ifadesini söylediniz ve ona şu anda mümkün olmayan bir özellik söylediniz. (Şimdi, neredeyse iki yıl sonra, farklı olabilir - ama bu cevap bunu söylemiyor.)
Mei

1
Yani iki yıl önce ona "iki yıl içinde mümkün olacak" demeliydim? Sana bir peygamber gibi mi görünüyorum? O zamanlar hotplugging geliştiriliyordu ve ben de tam olarak bunu söyledim. Sonra, VM'ye bağlı depolama için tüm qemu özellik kümesinden bağımsız olacak farklı bir yaklaşım önerdim. Asla bunun tek yaklaşım olduğunu söylemedim, ama bir yol.
dyasny

Şimdi anlıyorum ... Niyetinizi daha iyi göstermek için cevabınızı düzenledim.
Mei
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.