AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 324281
Accepted
slm
slm
Asked: 2011-10-25 06:23:06 +0800 CST2011-10-25 06:23:06 +0800 CST 2011-10-25 06:23:06 +0800 CST

Como você aumenta o espaço em disco de um convidado KVM?

  • 772

Eu configurei um convidado do Ubuntu em um host CentOS KVM com inicialmente 6 GB de espaço em disco. Como faço para aumentar o espaço em disco do convidado do Ubuntu a partir da linha de comando?

EDIT # 1: estou usando um arquivo de imagem de disco (qemu).

virtualization disk-space-utilization kvm-virtualization
  • 14 14 respostas
  • 276264 Views

14 respostas

  • Voted
  1. Best Answer
    dyasny
    2011-10-25T07:32:25+08:002011-10-25T07:32:25+08:00
    1. parar a VM
    2. execute qemu-img resize vmdisk.img +10Gpara aumentar o tamanho da imagem em 10Gb
    3. inicie a VM, redimensione as partições e a estrutura do LVM dentro dela normalmente
    • 145
  2. billyw
    2015-09-23T15:08:29+08:002015-09-23T15:08:29+08:00

    Método Online (usando qemu, libvirt e virtio-block)

    Para melhor ou pior, os comandos abaixo serão executados mesmo se o disco virtual de destino estiver montado. Isso pode ser útil em ambientes em que o disco não pode ser desmontado (como uma partição raiz), a VM deve permanecer ligada e o proprietário do sistema está disposto a assumir o risco de corrupção de dados . Para remover esse risco, você precisaria fazer login na VM e desmontar o disco de destino primeiro, algo que nem sempre é possível.

    Execute o seguinte a partir do hipervisor KVM.

    1. Aumente o tamanho do próprio arquivo de imagem de disco (especifique a quantidade a ser aumentada):

      qemu-img resize <my_vm>.img +10G
      
    2. Obtenha o nome do dispositivo virtio, por meio do shell libvirt ( drive-virtio-disk0neste exemplo):

      virsh qemu-monitor-command <my_vm> info block --hmp
        drive-virtio-disk0: removable=0 io-status=ok file=/var/lib/libvirt/images/<my_vm>.img ro=0 drv=raw encrypted=0
        drive-ide0-1-0: removable=1 locked=0 tray-open=0 io-status=ok [not inserted]
      
    3. Sinalize o driver virtio para detectar o novo tamanho (especifique a nova capacidade total):

      virsh qemu-monitor-command <my_vm> block_resize drive-virtio-disk0 20G --hmp
      

    Em seguida, faça login na VM. A execução dmesgdeve relatar que o disco virtio detectou uma alteração de capacidade. Neste ponto, vá em frente e redimensione suas partições e estrutura LVM conforme necessário.

    • 37
  3. slm
    2011-10-25T06:36:36+08:002011-10-25T06:36:36+08:00

    Essas perguntas de falha de servidor são semelhantes, mas mais específicas, redimensionamento de disco online KVM? & Centos Xen redimensionando partição DomU e grupo de volumes . O primeiro faz a pergunta de como aumentar um convidado KVM enquanto está online, enquanto o segundo é específico para XEN usando LVM. Estou perguntando como fazer isso enquanto o KVM está offline.

    NOTA: Este link foi útil para o MÉTODO #1 e mostra como aumentar o espaço em disco de um KVM (baseado em ext3), HOWTO: Resize a KVM Virtual Machine Image .

    Uma coisa para estar ciente com os convidados KVM é que as partições que eles estão usando podem afetar qual método você pode usar para aumentar o espaço em disco.

    MÉTODO #1: As partições são baseadas em ext2/ext3/ext4

    As porcas deste método são as seguintes:

    # 1. stop the VM
    # 2. move the current image
    mv mykvm.img mykvm.img.bak
    
    # 3. create a new image
    qemu-img create -f raw addon.raw 30G
    
    # 4. concatenate the 2 images
    cat mykvm.img.bak addon.raw >> mykvm.img
    

    Agora com o arquivo mykvm.img maior em mãos, inicialize o gparted e estenda a partição existente para o espaço em disco recém-adicionado. Esta última etapa basicamente estende a partição do sistema operacional para que ela possa usar o espaço extra.

    MÉTODO #2: As partições são baseadas em LVM

    Aqui estão as etapas que segui aproximadamente para redimensionar um convidado KVM que usava o LVM internamente.

    1. Desligar a VM
    2. adicione mais espaço ao "arquivo de imagem" do convidado (algo como: cat old.img 10G_addon.raw >> new.img
    3. inicie a VM (usando o new.img recém-criado)
    4. execute o fdisk dentro da VM e exclua e recrie a partição LVM

      % fdisk /dev/vda
      ...
      Device Boot      Start         End      Blocks   Id  System
      /dev/vda1   *           1          13      104391   83  Linux
      /dev/vda2              14        3263    26105625   8e  Linux LVM
      
      Command (m for help): d
      Partition number (1-4): 2
      
      Command (m for help): p
      
      Disk /dev/vda: 48.3 GB, 48318382080 bytes
      255 heads, 63 sectors/track, 5874 cylinders
      Units = cylinders of 16065 * 512 = 8225280 bytes
      
      Device Boot      Start         End      Blocks   Id  System
      /dev/vda1   *           1          13      104391   83  Linux
      
      Command (m for help): n 
      Command action
        e   extended
        p   primary partition (1-4)
      p
      Partition number (1-4): 2
      First cylinder (14-5874, default 14): 14
      Last cylinder or +size or +sizeM or +sizeK (14-5874, default 5874): 
      Using default value 5874
      
      Command (m for help): p
      
      Disk /dev/vda: 48.3 GB, 48318382080 bytes
      255 heads, 63 sectors/track, 5874 cylinders
      Units = cylinders of 16065 * 512 = 8225280 bytes
      
      Device Boot      Start         End      Blocks   Id  System
      /dev/vda1   *           1          13      104391   83  Linux
      /dev/vda2              14        5874    47078482+  83  Linux
      
      Command (m for help): t
      Partition number (1-4): 2
      Hex code (type L to list codes): 8e
      Changed system type of partition 2 to 8e (Linux LVM)
      
      Command (m for help): p
      
      Disk /dev/vda: 48.3 GB, 48318382080 bytes
      255 heads, 63 sectors/track, 5874 cylinders
      Units = cylinders of 16065 * 512 = 8225280 bytes
      
      Device Boot      Start         End      Blocks   Id  System
      /dev/vda1   *           1          13      104391   83  Linux
      /dev/vda2              14        5874    47078482+  8e  Linux LVM
      
      Command (m for help): w
      The partition table has been altered!
      
      Calling ioctl() to re-read partition table.
      
      WARNING: Re-reading the partition table failed with error 16: Device or 
      resource busy.
      The kernel still uses the old table.
      The new table will be used at the next reboot.
      Syncing disks.
      %
      
    5. Reinicialize a VM

    6. Redimensione o volume físico do LVM

      % pvdisplay 
        --- Physical volume ---
        PV Name               /dev/vda2
        VG Name               VolGroup00
        PV Size               24.90 GB / not usable 21.59 MB
        Allocatable           yes (but full)
        PE Size (KByte)       32768
        Total PE              796
        Free PE               0
        ...
      
      % pvresize /dev/vda2
      
      % pvdisplay
        --- Physical volume ---
        PV Name               /dev/vda2
        VG Name               VolGroup00
        PV Size               44.90 GB / not usable 22.89 MB
        Allocatable           yes 
        PE Size (KByte)       32768
        Total PE              1436
        Free PE               640
        ...
      
    7. Redimensione o volume lógico do LVM

        % lvresize /dev/VolGroup00/LogVol00 -l +640
        Extending logical volume LogVol00 to 43.88 GB
        Logical volume LogVol00 successfully resized
      
    8. Aumente o sistema de arquivos

        % resize2fs /dev/VolGroup00/LogVol00 
        resize2fs 1.39 (29-May-2006)
        Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing required
        Performing an on-line resize of /dev/VolGroup00/LogVol00 to 11501568 (4k) blocks.
        The filesystem on /dev/VolGroup00/LogVol00 is now 11501568 blocks long.
      

    O exemplo acima é meu, mas eu segui os passos neste site

    • 22
  4. Dave
    2016-06-14T06:02:58+08:002016-06-14T06:02:58+08:00

    Redimensione e expanda partições internas em uma etapa

    Eu tinha um host Ubuntu com uma imagem de arquivo convidado qcow2 e queria redimensionar o disco e expandir as partições apropriadas em uma única etapa. Ele requer que você configure os utilitários do sistema de arquivos convidado libvirt, mas eles são úteis de qualquer maneira.

    Inspiração daqui: http://libguestfs.org/virt-resize.1.html

    O comando chave aqui é:virt-resize

    • este é um utilitário libvirt
    • ele pode expandir um disco convidado E expandir as partições internas em uma etapa
    • copia o disco, não o expande no local
      • isso é bom porque você tem o original intocado como backup

    Preparação:

    * Install libvirt file system utilities package 
        * sudo apt-get install libguestfs-tools
    
    * Test to see if it works (it won't) -- you need to see "===== TEST FINISHED OK =====" at the bottom:
        * sudo libguestfs-test-tool
    
    * If you don't see "===== TEST FINISHED OK =====" at the bottom then repair it:
        * sudo update-guestfs-appliance
    
    * Run the test again and verify it works
        * sudo libguestfs-test-tool
    

    Agora faça o seguinte:

    1) desligue o convidado:

    2) Confira o dimensionamento atual e visualize o nome da partição que deseja expandir usando o utilitário libvirt:

    sudo virt-filesystems --long --parts --blkdevs -h -a name-of-guest-disk-file

    3) Crie o novo disco de saída (40G):

    qcow: sudo qemu-img create -f qcow2 -o preallocation=metadata outdisk 40G
    img:  sudo truncate -s 40G outdisk
    

    4) Copie o antigo para o novo enquanto expanda a partição apropriada (assumindo que sua partição de disco da etapa 2 foi /dev/sda1):

    sudo virt-resize --expand /dev/sda1 indisk outdisk
    

    5) Renomeie o arquivo indisk como backup, renomeie o outdisk como indisk (ou modifique o XML convidado)

    6) Reinicie o convidado e teste o novo arquivo de disco cuidadosamente antes de excluir o arquivo original

    7) Lucro!

    • 18
  5. Mircea Vutcovici
    2019-02-08T14:32:35+08:002019-02-08T14:32:35+08:00

    It is possible to do online resize, without stopping the VM. libvirtd supports this natively:

    Find the block device name. Should be something like "vda"

    $ virsh domblklist <libvirtd_vm_name>
    

    Resize the virtual device:

    $ virsh blockresize --domain <libvirtd_vm_name> --path <block_device_name> --size <new_size>
    

    Here is an example were I expand the vda disk from 50GB to 51GB for undercloud VM.

    [root@localhost ~]# virsh domblklist undercloud
    Target     Source
    ------------------------------------------------
    vda        /home/images/undercloud.qcow2
    

    Now take a look at the .qcow2 image file's details:

    [root@localhost ~]# qemu-img info /home/images/undercloud.qcow2
    image: /home/images/undercloud.qcow2
    file format: qcow2
    virtual size: 50G (53687091200 bytes)
    disk size: 38G
    cluster_size: 65536
    Format specific information:
        compat: 1.1
        lazy refcounts: false
        refcount bits: 16
        corrupt: false
    

    Now let's resize the vda block device:

    [root@localhost ~]# virsh blockresize undercloud vda 51G
    Block device 'vda' is resized
    

    And confirm:

    [root@localhost ~]# qemu-img info /home/images/undercloud.qcow2
    image: /home/images/undercloud.qcow2
    file format: qcow2
    virtual size: 51G (54760833024 bytes)
    disk size: 38G
    cluster_size: 65536
    Format specific information:
        compat: 1.1
        lazy refcounts: false
        refcount bits: 16
        corrupt: false
    [root@localhost ~]#
    

    Then you can use this script inside the VM to show the commands to resize the block devices and fs: https://github.com/mircea-vutcovici/scripts/blob/master/vol_resize.sh. Here is a sample output:

    mvutcovi@ubuntu1904:~$ wget -q https://raw.githubusercontent.com/mircea-vutcovici/scripts/master/vol_resize.sh
    
    mvutcovi@ubuntu1904:~$ df /
    Filesystem     1K-blocks    Used Available Use% Mounted on
    /dev/vda1       15414216 7928904   6682600  55% /
    
    mvutcovi@ubuntu1904:~$ sudo bash vol_resize.sh --block-device /dev/vda1
    sfdisk -d /dev/vda > dev_vda-partition-table-$(date +%F_%H%M%S).txt   # Backup MS-DOS partition table for /dev/vda block device.
    parted -s /dev/vda resizepart 1   # Resize MS-DOS partition /dev/vda1
    # Update kernel with new partition table from disk
    partx -u /dev/vda
    partprobe /dev/vda
    blockdev --rereadpt /dev/vda
    kpartx -u /dev/vda
    resize2fs /dev/vda1    # Resize ext3 or ext4 filesystem
    mvutcovi@ubuntu1904:~$ 
    
    • 10
  6. David Spillett
    2011-10-25T07:10:37+08:002011-10-25T07:10:37+08:00

    Se você estiver usando o LVM dentro da VM, a maneira mais simples de fazer isso seria adicionar um novo disco virtual à VM e expandir o grupo de volumes e os volumes lógicos para isso.

    Para verificar se você está usando o LVM run sudo pvs; sudo vgs; sudo lvs, você obterá algo assim:

    PV         VG     Fmt  Attr PSize  PFree
    /dev/vda1  vgWWW  lvm2 a-   30.00g    0
    
    VG     #PV #LV #SN Attr   VSize  VFree
    vgWWW    1   2   0 wz--n- 30.00g    0
    
    LV   VG    Attr   LSize 
    root vgWWW -wi-ao 28.80g
    swap vgWWW -wi-ao  1.19g
    

    se o SO da VM estiver usando LVM. No exemplo acima, a VM tem um vdisk de 30 Gbytes, configurado usando LVM com um grupo de volumes chamado vgWWW contendo dois volumes lógicos, um para swap e outro para todo o resto.

    Se o LV estiver em uso na VM:

    1. Desligue a VM
    2. No host, crie um novo arquivo de disco virtual e adicione-o à VM
    3. Reinicie a VM e faça login
    4. Marque a nova unidade como sendo um volume físico para LVM comsudo pvcreate /dev/vdb
    5. Estenda o grupo de volumes para incluir este novo bloco de disco comsudo vgextend vgWWW /dev/vdb
    6. Estenda o volume lógico para ocupar o novo espaço sudo lvextend --extents +100%FREE /dev/vgWWW/root(ou algo como sudo lvextend --size +8G /dev/vgWWW/root, se você não quiser aumentá-lo totalmente, este exemplo adicionaria 8 Gb ao volume)
    7. Redimensione o sistema de arquivos comresize2fs /dev/vgWWW/root

    Nota: o acima assume que os nomes vg/lv são os mesmos do meu exemplo, o que é improvável, mude conforme apropriado, também se a VM já tiver uma unidade virtual chamada vdbnova será outra coisa ( vdc, e assim por diante)

    Nota: resize2fs só funcionará no sistema de arquivos ext2, ext3 e ext4. Se você estiver usando outra coisa, ele dará erro e não fará nada.

    Nota: como você está redimensionando um sistema de arquivos ao vivo resize2fs, não solicitará que você execute fsckprimeiro, como faria para um sistema de arquivos desmontado, ele apenas seguirá em frente. Você pode querer executar uma verificação do sistema de arquivos somente leitura se não houver problemas antes de continuar.

    • 6
  7. Hojat Modaresi
    2016-10-02T07:50:39+08:002016-10-02T07:50:39+08:00

    Dessa forma, você pode expandir a partição desejada:

        # see what partitions you have? 
        virt-filesystems --long -h --all -a olddisk
    
        truncate -r olddisk newdisk
        truncate -s +5G newdisk
    
        # Note "/dev/sda2" is a partition inside the "olddisk" file.
        virt-resize --expand /dev/sda2 olddisk newdisk
    

    Veja mais exemplos aqui .

    • 5
  8. Bruno Mairlot
    2013-07-13T02:25:59+08:002013-07-13T02:25:59+08:00

    Existe a possibilidade de aumentar o tamanho do disco da sua VM sem reinicializar a VM se você estiver usando a unidade virtio e o LVM.

    1. Use virt-manager ou virsh para definir um novo disco vazio
    2. O kernel deve ver um novo /dev/vdb
    3. (Opcional) Crie uma partição primária com fdisk para obter /dev/vdb1 e use kpartx -a /dev/vdb para reler a tabela de partição

    4. Use vgextend vg_name /dev/vdb1 (ou /dev/vdb se você não criou uma partição)

    5. Use lvextend -l +100%FREE /dev/vg_name/lv_name
    6. Use resize2fs /dev/vg_name/lv_name para estender seu sistema de arquivos

    Você Terminou.

    • 3
  9. mandela900
    2012-04-19T09:50:34+08:002012-04-19T09:50:34+08:00

    Outra forma de fazer

    truncate -s +2G vm1.img 
    

    vá em fazer uma nova varredura de disco e depois você pode fazer o redimensionamento do seu lvm.

    • 2
  10. Nux
    2013-06-08T08:12:34+08:002013-06-08T08:12:34+08:00

    Se você tiver LVM em sua VM, isso é muito fácil e rápido.

    1. Desligue a VM (máquina convidada).
    2. Em sua máquina host, adicione um novo dispositivo de armazenamento.
    3. Ativar convidado.
    4. Abra Sistema -> Administração -> Gerenciamento de Volume Lógico (ou digite sudo system-config-lvmterminal)*.

    Achei a GUI bastante intuitiva, mas siga os próximos passos se tiver problemas.

    1. Abra "Entidades não inicializadas" e encontre sua nova unidade.
    2. Depois de selecionar a nova unidade, abaixo da imagem você deve encontrar um botão de inicialização. Pressione-o.
    3. Ele perguntará sobre o particionamento - você não precisa disso.
    4. Quando terminar, adicione sua unidade ao grupo de volumes existente.
    5. Finalmente, você precisa aumentar seu(s) volume(s) lógico(s) - isso é feito na Visualização Lógica do grupo editando as propriedades do seu volume.
    6. Salve e pronto. Não há necessidade de reiniciar a VM.

    Observação! Pelo menos no CentOS 6 LVM GUI não é instalado por padrão, mas você pode instalá-lo com yum install system-config-lvm.

    • 1

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Resolver o nome do host do endereço IP

    • 8 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve