GNU/Linux >> Linux Esercitazione >  >> Linux

È possibile ridimensionare il disco online con KVM?

Soluzione 1:

So che è una vecchia domanda, ma l'ho trovata mentre cercavo la soluzione su Google e spero che possa aiutare qualcun altro.

Per quanto riguarda oggi lo è possibile ridimensionare il disco rigido sulla macchina. Ho trovato un modo di lavorare qui:

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

È necessario eseguire i seguenti passaggi:

  1. Trova il nome del file e il nome del dispositivo KVM del disco rigido che desideri ridimensionare:

    [email protected]:/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>
    

Quello interessante per noi è il disco. Dovresti cercare source e alias blocchi. Per me il nome del file è test.img e il nome alias è virtio-disk0 . A questo nome, devi anteporre drive- per ottenere il nome dell'unità qemu.

  1. Ora ridimensioniamo effettivamente l'unità utilizzando qemu monitor:

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

Si noti che il nome del file è stato utilizzato senza l'estensione .img e l'unità- è stata aggiunta all'alias del disco. Il 100G è la dimensione risultante dell'unità che vogliamo avere

  1. Accedi alla macchina e verifica che le dimensioni effettive siano state modificate:

    [email protected]:~# 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
    

Questo è tutto! Ora puoi creare nuove partizioni o ridimensionare quelle esistenti.

Soluzione 2:

AFAIK, questo non è possibile:puoi aggiungere nuove immagini disco e, come fai notare, potresti anche aggiungere nuove immagini a un volume LVM, ma per ridimensionare un'immagine disco attiva e avviabile devi essere in grado di chiuderla verso il basso e modifica le partizioni.

Ecco una buona spiegazione per espandere un'immagine. Sebbene richieda l'arresto, probabilmente potresti farla franca con solo un paio di minuti di inattività, soprattutto se eviti l'opzione --nonsparse image e aggiungi il disco gparted a un file iso e monti in anticipo nel tuo guest KVM. Spero che questo aiuti.

Soluzione 3:

Penso che tu sia bloccato a fare ciò che hai menzionato se vuoi farlo senza smontare la macchina.

Perché non fornire semplicemente i LUN delle macchine virtuali direttamente dalla SAN e gestire lo spazio lì? Funziona meglio se si desidera comunque utilizzare funzionalità come la migrazione in tempo reale.

KVM è basato su QEMU, quindi tutto il supporto del formato immagine proviene da quel progetto. Ecco una buona guida per ridimensionare i vari formati supportati da Qemu/KVM. Ma il forum Qemu sarebbe un buon posto per porre questa domanda se non ottieni risposte solide qui.

Un'altra opzione che potrebbe non essere l'ideale è utilizzare qcow2 molto grande o un altro formato di immagine sparso per le unità. Quindi potresti dare a ogni macchina una piccola unità per il sistema operativo e una grande immagine sparsa per i dati sotto LVM. Ciò manterrebbe almeno il numero di unità/immagini virtuali che devi gestire. Ma questo thin provisioning potrebbe essere un problema se lo fai su 1000 macchine e tutti ti prendono in considerazione lo spazio libero che vedono.

XEN credo abbia attualmente le stesse limitazioni.

Soluzione 4:

È possibile spostare un sistema Linux tra i dischi mentre è in esecuzione. La limitazione è che non puoi modificare le partizioni su un disco che ha partizioni in uso.

Per fare ciò il tuo filesystem di root deve essere su un LVM, questo spesso significa che devi avere un filesystem di avvio separato (questo non è, tuttavia, essenziale, rende solo le cose più facili)

Dopo aver collegato il nuovo disco, lo aggiungi a LVM con vgextend, usa pvmove per spostare rootfs sul nuovo disco, usa lvextend e resize2fs per espandere rispettivamente il volume logico e il filesystem, quindi usa vgreduce per rimuovere il vecchio disco dal volume gruppo. Una volta rimosso, il vecchio volume può essere scollegato.

Per il caso semplice hai un minuscolo disco per il filesystem di avvio che non devi mai toccare. Ma se è da solo è facile per smontarlo, scollegalo, inseriscine uno nuovo e ricostruisci il disco di avvio senza arrestare il sistema. (basta non andare in crash mentre lo fai)

Nota:resize2fs può anche ridurre i filesystem.


Linux
  1. Controlla lo spazio su disco utilizzato su Linux con du

  2. Comando Linux DD - 15 esempi con tutte le opzioni

  3. È possibile selezionare le schede come schede con il mouse in Urxvt?

  4. Gestisci i dischi con DiskPart

  5. Ottieni spazio libero su disco con df per visualizzare solo lo spazio libero in kb?

Controlla lo spazio libero su disco in Linux con ncdu

Come installare vyOS RouterOS con KVM

Come clonare un'immagine del disco crittografata con Clonezilla

Come gestire macchine virtuali KVM con Virt-Manager

È possibile eseguire LINQPad con Mono (Mac)

È possibile modificare un collegamento simbolico con un editor di testo?