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).
qemu-img resize vmdisk.img +10G
para aumentar o tamanho da imagem em 10GbMé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.
Aumente o tamanho do próprio arquivo de imagem de disco (especifique a quantidade a ser aumentada):
Obtenha o nome do dispositivo virtio, por meio do shell libvirt (
drive-virtio-disk0
neste exemplo):Sinalize o driver virtio para detectar o novo tamanho (especifique a nova capacidade total):
Em seguida, faça login na VM. A execução
dmesg
deve 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.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:
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.
execute o fdisk dentro da VM e exclua e recrie a partição LVM
Reinicialize a VM
Redimensione o volume físico do LVM
Redimensione o volume lógico do LVM
Aumente o sistema de arquivos
O exemplo acima é meu, mas eu segui os passos neste site
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
Preparação:
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):
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):
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!
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"
Resize the virtual device:
Here is an example were I expand the
vda
disk from50GB
to51GB
forundercloud
VM.Now take a look at the .qcow2 image file's details:
Now let's resize the vda block device:
And confirm:
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:
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: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:
sudo pvcreate /dev/vdb
sudo vgextend vgWWW /dev/vdb
sudo lvextend --extents +100%FREE /dev/vgWWW/root
(ou algo comosudo lvextend --size +8G /dev/vgWWW/root
, se você não quiser aumentá-lo totalmente, este exemplo adicionaria 8 Gb ao volume)resize2fs /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
vdb
nova 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ê executefsck
primeiro, 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.Dessa forma, você pode expandir a partição desejada:
Veja mais exemplos aqui .
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.
(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
Use vgextend vg_name /dev/vdb1 (ou /dev/vdb se você não criou uma partição)
Você Terminou.
Outra forma de fazer
vá em fazer uma nova varredura de disco e depois você pode fazer o redimensionamento do seu lvm.
Se você tiver LVM em sua VM, isso é muito fácil e rápido.
sudo system-config-lvm
terminal)*.Achei a GUI bastante intuitiva, mas siga os próximos passos se tiver problemas.
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
.