- pare a VM
- execute
qemu-img resize vmdisk.img +10G
para aumentar o tamanho da imagem em 10Gb - inicie a VM, redimensione as partições e a estrutura do LVM dentro dela normalmente
Eu configurei um convidado 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 na linha de comando?
EDIT # 1: Estou usando um arquivo de imagem de disco (qemu).
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 no hypervisor KVM.
Aumente o tamanho do próprio arquivo de imagem de disco (especifique a quantidade a aumentar):
qemu-img resize <my_vm>.img +10G
Obtenha o nome do dispositivo virtio, através do shell libvirt ( drive-virtio-disk0
neste 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]
Sinalize o driver do virtio para detectar o novo tamanho (especifique o total da nova capacidade):
virsh qemu-monitor-command <my_vm> block_resize drive-virtio-disk0 20G --hmp
Faça login na VM. A execução de dmesg
deve relatar que o disco do virtio detectou uma alteração de capacidade. Neste ponto, vá em frente e redimensione suas partições e a estrutura do LVM conforme necessário.
Essas perguntas de falha do servidor são semelhantes, mas mais específicas, redimensionamento de disco on-line do KVM? & Centos Xen que redimensiona a partição Domú e o grupo de volumes . O primeiro faz a pergunta de como aumentar um convidado KVM enquanto ele está online, enquanto o segundo é específico do XEN usando o LVM. Eu estou perguntando como conseguir isso enquanto o KVM está offline.
NOTA: Este link foi útil para o METHOD # 1 e mostra como aumentar o espaço em disco de um KVM (baseado em ext3), COMO: Redimensionar uma imagem de máquina virtual KVM .
Uma coisa a ter em conta com os convidados do KVM é que as partições que estão a utilizar podem afetar o método que pode utilizar 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 gparted e estenda a partição existente para o disco recém-adicionado espaço. Esta última etapa basicamente estende a partição do sistema operacional para que possa usar o espaço extra.
MÉTODO # 2: As partições são baseadas em LVM
Aqui estão os passos que eu segui para redimensionar um convidado KVM que usava o LVM internamente.
execute o fdisk dentro da VM e exclua & recriar 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.
%
Reinicialize a VM
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
...
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
Cresça 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 é o meu, mas eu segui os passos deste site
Redimensione e expanda partições internas em uma etapa
Eu tinha um host Ubuntu com uma imagem de arquivo guest qcow2 e queria redimensionar o disco e expandir as partições apropriadas em uma única etapa. Isso requer que você configure os utilitários do sistema de arquivos guest libvirt, mas eles são úteis para se ter acesso de qualquer maneira.
Inspiração daqui: link
O comando aqui é: virt-resize
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 veja o nome da partição que você 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 expande a partição apropriada (supondo que sua partição de disco do passo 2 seja / 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!
Se você estiver usando o LVM na VM, a maneira mais simples de fazer isso é 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 em execução sudo pvs; sudo vgs; sudo lvs
, você verá 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 sistema operacional da VM estiver usando o LVM. No exemplo acima, a VM tem um vdisk de 30Gbyte, configurado usando o LVM com um grupo de volumes chamado vgWWW contendo dois volumes lógicos, um para swap e um 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 parecido com sudo lvextend --size +8G /dev/vgWWW/root
, se você não quiser expandi-lo completamente, esse exemplo adicionará 8 GB ao volume) resize2fs /dev/vgWWW/root
Nota: 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 um drive virtual chamado vdb
o novo será outra coisa ( vdc
e assim por diante)
Nota: resize2fs
só funcionará no sistema de arquivos ext2, ext3 e ext4. Se você estiver usando alguma outra coisa, irá errar e não fazer nada.
Observação: enquanto você está redimensionando um sistema de arquivos ao vivo resize2fs
não solicitará que você execute fsck
primeiro como faria para um sistema de arquivos desmontado, ele simplesmente irá em frente. Você pode querer executar uma verificação de sistema de arquivos somente leitura, não há problemas antes de continuar.
Existe a possibilidade de aumentar o tamanho do disco da sua VM sem reinicializar a VM se você estiver usando o virtio drive 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ções
Use vgextend vg_name / dev / vdb1 (ou / dev / vdb se você não criou uma partição)
Você terminou.
Outra maneira de fazer isso
truncate -s +2G vm1.img
ir no fazer uma nova verificação de disco e depois você pode fazer o seu redimensionamento lvm.
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 .
Se você tem o LVM em sua VM, isso é uma loucura fácil e rápida.
sudo system-config-lvm
no terminal) *. Eu achei a GUI bastante intuitiva, mas siga os próximos passos se você tiver problemas.
Nota! Pelo menos no CentOS 6, o LVM GUI não é instalado por padrão, mas você pode instalá-lo com yum install system-config-lvm
.
Redimensionar imagem:
qemu-img resize vmdisk.img +16G
aumenta o tamanho da imagem em 16 GB.
Se a sua imagem tiver o GPT (Tabela de Partição GUID), o tamanho do drive usado no GPT será diferente do tamanho novo, você precisará corrigi-lo com gdisk
:
MY_DRIVE=/dev/vda
gdisk $MY_DRIVE <<EOF
w
Y
Y
EOF
ou com parted
:
parted $MY_DRIVE print Fix
Por alguma razão, parted
fix não está funcionando quando nenhum tty é apresentado (por exemplo, quando provisionando com o Vagrant), então eu uso gdisk
.
Aumentar o tamanho da partição para preencher todo o espaço disponível:
MY_PARTITION_GUID=$(
gdisk $MY_DRIVE <<EOF | sed -n -e 's/^Partition unique GUID: //p'
i
EOF
)
MY_PARTITION_FIRST_SECTOR=$(
gdisk $MY_DRIVE <<EOF | sed -n -e 's/^First sector: \([0-9]\+\).*//p'
i
EOF
)
gdisk $MY_DRIVE <<EOF
d
n
$MY_PARTITION_FIRST_SECTOR
x
a
2
c
$MY_PARTITION_GUID
w
Y
EOF
A parte x a 2 <Enter>
é opcional e necessária se você estiver usando o BIOS legado.
MY_PARTITION_GUID=...
e c $MY_PARTITION_GUID
parts também são opcionais e necessários apenas se você usar o UUID da partição em /etc/fstab
ou em outro lugar.
Reinicie ou releia as partições com partx -u $MY_DRIVE
ou partprobe
.
Estender partição, exemplo para ext2
, ext3
ou ext4
:
MY_PARTITION="${MY_DRIVE}1"
resize2fs $MY_PARTITION
Você pode usar o solus vm com o gparted montado. Uma vez usado com o gparted, você pode facilmente inicializar o sistema e ajustar o espaço. Certifique-se de ter o conjunto correto de prioridades de inicialização. Como referência, consulte o URL abaixo que pode ser útil. link