Como posso aumentar o tamanho do disco em uma VM do Vagrant?

44

Eu tenho uma VM gerenciada pelo Vagrant usando VirtualBox em um servidor host Ubuntu. Minha caixa Vagrant usa o Puppetlabs Debian 6.0.7 basebox , que usa o LVM para sua partição raiz.

Por padrão, o disco tem 8 GB, o que é muito pequeno para os meus propósitos. Eu gostaria de:

  1. Aumente o tamanho do disco existente e do sistema de arquivos sem destruir e recriar minha VM.
  2. Configure o Vagrant para que, no futuro, ele crie um disco maior para este projeto.

Alguém pode explicar como fazer isso?

    
por David Edwards 07.07.2013 / 09:57

5 respostas

22

Pessoalmente, acho que será mais fácil anexar um HDD extra virtual e montá-lo em um ponto de montagem adequado, por exemplo, /opt e mover suas coisas usando rsync para contornar esse problema, afinal, fantoche caixas vagantes são para testes.

Razão pela qual : VBoxManage modifyhd só funciona com a imagem VDI nativa. No entanto, as caixas básicas vagrant são basicamente OVF / OVA exportadas usando o formato VMDK .

Veja Documentos do VirtualBox

  

A opção --resize x (em que x é o novo espaço total desejado em megabytes) permite alterar a capacidade de uma imagem existente; isso ajusta o tamanho lógico de um disco virtual sem afetar muito o tamanho físico. [37] Atualmente, isso funciona apenas para os formatos VDI e VHD, e somente para as variantes alocadas dinamicamente, e só pode ser usado para expandir (não encolher) a capacidade.

Para aumentar a capacidade de disco da Caixa Base do Vagrant

As etapas são

  1. Para redimensionar o disco rígido, você precisará convertê-lo para VDI primeiro, por exemplo, VBoxManage clonehd in.vmdk out.vdi --format VDI e, em seguida, anexou novamente (usando a GUI é mais fácil).

  2. Redimensione-o usando VBoxManage modifyhd box.vdi --resize 15360 , o que aumenta a capacidade para 15 GB.

  3. No entanto, isso só altera a capacidade da unidade; depois disso, você terá que expandir o sistema de arquivos para o convidado. Por exemplo, use resize2fs -p -F DEVICE para ext {3,4}.

por Terry Wang 11.07.2013 / 02:02
14

Eu automatizei a adição do disco no meu Vagrantfile:

Vagrant.configure("2") do |config|
    ...
    file_to_disk = File.realpath( "." ).to_s + "/disk.vdi"

    if ARGV[0] == "up" && ! File.exist?(file_to_disk) 
       puts "Creating 5GB disk #{file_to_disk}."
       vb.customize [
            'createhd', 
            '--filename', file_to_disk, 
            '--format', 'VDI', 
            '--size', 5000 * 1024 # 5 GB
            ] 
       vb.customize [
            'storageattach', :id, 
            '--storagectl', 'SATA Controller', 
            '--port', 1, '--device', 0, 
            '--type', 'hdd', '--medium', 
            file_to_disk
            ]
   ...
   config.vm.provision "shell", path: "scripts/add_new_disk.sh"
   ...
end

Onde o script de shell add_new_disk.sh é assim:

set -e
set -x

if [ -f /etc/disk_added_date ]
then
   echo "disk already added so exiting."
   exit 0
fi


sudo fdisk -u /dev/sdb <<EOF
n
p
1


t
8e
w
EOF

pvcreate /dev/sdb1
vgextend VolGroup /dev/sdb1
lvextend /dev/VolGroup/lv_root
resize2fs /dev/VolGroup/lv_root

date > /etc/disk_added_date

Este script é para uma caixa centos 6.4 , mas pode ser facilmente adaptado para o Ubuntu.

Em vez de adicionar um disco, outras opções incluem:

  • usando uma caixa com um disco maior, como opscode bento , que tem discos de 40Gb
  • crie sua própria caixa usando o packer . Você pode usar as definições de empacotador de caixas opscode como ponto de partida
por Chris Snow 12.01.2014 / 20:56
3

Você pode usar o plug-in, que permitirá especificar o tamanho do disco link

    
por shashi ranjan 17.10.2017 / 06:47
1

Encontrei esta maneira mais simples de resolver este problema:

  • Instale este plug-in: vagrant plugin install vagrant-disksize

  • Edite o Vagrantfile :

Vagrant.configure('2') do |config| ... config.vm.box = 'ubuntu/xenial64' config.disksize.size = '50GB' ... end

  • vagrant halt
  • vagrant up
por thucnguyen 15.03.2018 / 08:05
0

aviso de isenção: responda mais provavelmente aplicável somente para distros usando o gerenciamento de volume lógico como rhel para o qual o seguinte caso de uso se aplica:

Eu tenho usado oficialmente a caixa oficial do Red Hat Enterpise 7.2 provisionada pelo Red Hat .

(você precisará de uma conta de desenvolvedor rhel que você pode criar de graça)

Após a instalação, fiquei preocupado com o fato de que apenas 8 GB também estavam disponíveis:

sudo df -h
[vagrant@rhel-cdk ~]$ sudo df -h
Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-root   8G  2,5G   6,5G  28% /
devtmpfs                     234M     0  234M   0% /dev
tmpfs                        245M     0  245M   0% /dev/shm
tmpfs                        245M  4,3M  241M   2% /run
tmpfs                        245M     0  245M   0% /sys/fs/cgroup
/dev/sda2                    297M  134M  164M  45% /boot
tmpfs                         49M     0   49M   0% /run/user/1000

E como você pode ver, a maior parte do espaço já foi consumida pela instalação do rhel.

No entanto, descobri que o grupo de volumes correspondente ao sistema de arquivos /dev/mapper/VolGroup00-root tinha espaço extra (o que suponho que em termos de caixa virtual foi alocado dinamicamente)

sudo vgdisplay VolGroup00
  --- Volume group ---
  VG Name               VolGroup00
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  11
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               39,70 GiB
  PE Size               4,00 MiB
  Total PE              10164
  Alloc PE / Size       7872 / 30,75 GiB
  Free  PE / Size       2292 / 8,95 GiB
  VG UUID               JBVwpl-13KX-HbQw-FqUa-CA9w-swpF-dF6glm

Portanto, as únicas coisas que faltam a fazer são:

a ) Aumente o tamanho do nosso volume lógico, digamos 10G

sudo lvextend -L+10G /dev/VolGroup00/root

e

b ) Atualize seu sistema de arquivos raiz para que ele fique ciente dessa mudança

sudo xfs_growfs /dev/mapper/VolGroup00-root

(pls note que pelo menos para rhel 7.2 resize2fs não funcionará para o efeito)

Depois disso, espaço adicional estava disponível para o meu sistema de arquivos:

sudo df -h
Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-root   18G  2,5G   16G  14% /
devtmpfs                     234M     0  234M   0% /dev
tmpfs                        245M     0  245M   0% /dev/shm
tmpfs                        245M  4,3M  241M   2% /run
tmpfs                        245M     0  245M   0% /sys/fs/cgroup
/dev/sda2                    297M  134M  164M  45% /boot
tmpfs                         49M     0   49M   0% /run/user/1000

... nenhuma intervenção no nível da caixa virtual

    
por pkaramol 09.01.2017 / 16:01