Apakah ukuran disk online dimungkinkan dengan KVM?

15

Kami sedang mengevaluasi KVM untuk virtualisasi Linux pada beberapa proyek. Semua berjalan dengan baik sejauh ini. Tetapi salah satu persyaratan kami adalah kemampuan untuk menambahkan ruang disk ke tamu yang sedang berjalan tanpa me-reboot atau menjadikannya offline. Apakah ini mungkin dengan KVM?

Satu-satunya hal yang saya temukan sejauh ini (tetapi belum diuji) adalah kemampuan untuk mem-hotplug disk ke dalam mesin. Jika saya pergi rute ini, maka saya selalu bisa menambahkan disk baru ke grup volume LVM pada tamu dan kemudian memperluas volume logis yang dipilih. Kelemahan terbesar dari pendekatan ini adalah bahwa seiring berjalannya waktu kita mungkin berakhir dengan tamu yang memiliki jumlah disk virtual yang bervariasi. Ruang disk "nyata" akan disediakan untuk host melalui SAN, jadi kami selalu dapat menambahkan lebih banyak ruang ke host kapan pun.

Eil
sumber
(Dan "Ya", itu mungkin.)
poige

Jawaban:

4

Saya pikir Anda terjebak melakukan apa yang Anda sebutkan jika Anda ingin melakukannya tanpa menurunkan mesin.

Mengapa tidak memberikan mesin virtual LUN langsung dari SAN dan mengelola ruang di sana? Ini berfungsi lebih baik jika Anda ingin menggunakan fitur seperti migrasi langsung.

KVM didasarkan pada QEMU sehingga semua dukungan format gambar berasal dari proyek itu. Berikut cara mengubah ukuran yang baik dari berbagai format yang didukung Qemu / KVM. Tetapi forum Qemu akan menjadi tempat yang baik untuk mengajukan pertanyaan ini jika Anda tidak mendapatkan jawaban yang solid di sini.

Opsi lain yang mungkin tidak ideal adalah menggunakan qcow2 sangat besar atau format gambar jarang lainnya untuk drive. Jadi Anda bisa memberikan setiap mesin drive kecil untuk OS dan gambar jarang besar untuk data di bawah LVM. Setidaknya ini akan menjaga jumlah drive / gambar virtual yang harus Anda kelola. Tapi provisi tipis ini bisa menjadi masalah meskipun jika Anda melakukan ini pada 1000 mesin dan semua orang membawa Anda ke ruang kosong yang mereka lihat.

XEN Saya percaya memiliki keterbatasan yang sama saat ini.

Pengaruh 3d
sumber
Sebagai pertimbangan lebih lanjut, memasang penyimpanan SAN dari dalam tamu itu sendiri seperti yang Anda sebutkan mungkin adalah cara untuk pergi. Dan terima kasih atas info tambahannya juga.
Eil
provisi tipis bisa mahal karena fragmentasi juga.
wazoox
15

Saya tahu itu pertanyaan lama, tetapi saya sudah menemukannya saat mencari solusi di Google dan berharap itu bisa membantu orang lain.

Adapun hari ini dimungkinkan untuk mengubah ukuran hard drive pada mesin. Saya telah menemukan cara kerja di sini:

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

Langkah-langkah berikut harus dilakukan:

  1. Temukan nama file dan nama perangkat KVM dari hard drive yang ingin Anda ubah ukurannya:

    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>
    

Yang menarik bagi kami adalah disk. Anda harus mencari sourcedan aliasmemblokir. Bagi saya file name is test.imgdan alias name is virtio-disk0. Untuk nama ini, Anda perlu menambahkan drive-untuk mendapatkan nama drive qemu.

  1. Sekarang kita benar-benar mengubah ukuran drive menggunakan monitor qemu:

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

Perhatikan bahwa nama file digunakan tanpa ekstensi .img dan drive ditambahkan ke alias disk. 100G adalah ukuran yang dihasilkan dari drive yang kita inginkan

  1. Login ke mesin dan periksa apakah ukuran sebenarnya telah diubah:

    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
    

Itu dia! Sekarang Anda dapat membuat partisi baru atau mengubah ukuran partisi yang ada.

alexK
sumber
1
Terima kasih telah kembali dan menambahkan jawaban ini! Membuat segala sesuatunya lebih sederhana daripada cara lama melakukannya.
Dave Sherohman
4

AFAIK, ini tidak mungkin - Anda dapat menambahkan gambar disk baru, dan seperti yang Anda tunjukkan, Anda juga dapat menambahkan gambar baru ke volume LVM, tetapi untuk mengubah ukuran gambar disk yang aktif dan dapat di-boot, Anda harus dapat menutupnya turun dan edit partisi.

Berikut ini penjelasan yang bagus untuk memperluas gambar. Walaupun ini membutuhkan shutdown, Anda mungkin bisa pergi dengan hanya beberapa menit downtime, terutama jika Anda menghindari opsi gambar - nonsparse dan dd disk gparted ke file iso dan mount di tamu KVM Anda terlebih dahulu. Semoga ini membantu.

nedm
sumber
2
Masalahnya sebenarnya bukan terkait KVM; dari Linux Anda tidak dapat mengubah ukuran disk yang Anda boot dari. Ini berlaku untuk array RAID fisik juga.
wazoox
3

Dimungkinkan untuk memindahkan sistem Linux di antara disk saat sedang berjalan. Batasannya adalah Anda tidak dapat mengubah partisi pada disk yang memiliki partisi yang digunakan.

Untuk melakukan ini, sistem file root Anda harus menggunakan LVM, ini sering berarti bahwa Anda harus memiliki sistem file boot yang terpisah (ini bukan, bagaimanapun, penting, itu hanya membuat segalanya lebih mudah)

Setelah memasukkan disk baru, Anda menambahkannya ke LVM dengan vgextend, gunakan pvmove untuk memindahkan rootfs ke disk baru, gunakan lvextend dan resize2fs untuk masing-masing memperluas volume logis dan filesystem kemudian menggunakan vgreduce untuk menghapus disk lama dari volume. kelompok. Setelah dihapus, volume lama dapat dicabut.

Untuk kasus sederhana, Anda memiliki disk kecil untuk sistem file boot yang tidak perlu Anda sentuh. Tetapi jika itu miliknya sendiri, mudah untuk melepasnya dengan mencabutnya, pasang yang baru dan buat kembali disk boot tanpa menghentikan sistem. (Hanya saja jangan crash saat Anda melakukannya)

Catatan: resize2fs juga dapat mengecilkan sistem file.

Robert
sumber
0

Tidak mungkin atm, tapi afaik itu fitur yang sedang dikembangkan. Yang bisa Anda lakukan adalah menghubungkan ke target iSCSI dari VM dan mengelola ruang pada target itu di sisi SAN.

dyasny
sumber
Anda tidak menjawab pertanyaan dengan jawaban yang bisa dia gunakan.
Mei
@ David: dan apa yang membuat Anda berpikir demikian dan bahkan menurunkan jawaban saya? Bagaimana jawaban saya tidak memberikan solusi untuk masalah yang sedang dihadapi?
dyasny
Anda menyatakan "Tidak mungkin ..." lalu memberi tahu dia tentang fitur yang tidak mungkin saat ini. (Sekarang, hampir dua tahun kemudian, mungkin berbeda - tetapi jawaban ini tidak mengatakan itu.)
Mei
1
Jadi dua tahun lalu saya seharusnya mengatakan kepadanya "itu akan mungkin dalam dua tahun"? Apakah saya terlihat seperti seorang nabi bagi Anda? Saat itu, hotplugging sedang dikembangkan, dan itulah yang saya katakan. Kemudian saya menawarkan pendekatan yang berbeda untuk mendapatkan penyimpanan yang terpasang pada VM, yang tidak tergantung pada seluruh fitur qemu. Tidak pernah menyatakan itu adalah satu-satunya pendekatan, tapi itu adalah sebuah cara.
dyasny
Saya mengerti sekarang ... Saya mengedit jawaban Anda untuk menunjukkan maksud Anda dengan lebih baik.
Mei