web-dev-qa-db-fra.com

Comment puis-je augmenter la taille du disque sur une machine virtuelle vagabonde?

J'ai un VM géré par Vagrant à l'aide de VirtualBox sur un serveur hôte Ubuntu. La boîte My Vagrant utilise Puppetlabs Debian 6.0.7 basebox , qui utilise LVM pour sa partition racine.

Par défaut, le disque est de 8 Go, ce qui est trop petit pour mes besoins. J'aimerais:

  1. Augmentez la taille du disque existant et du système de fichiers qu'il contient sans détruire ni recréer ma machine virtuelle.
  2. Configurez Vagrant de manière à créer à l’avenir un disque plus volumineux pour ce projet.

Quelqu'un peut-il expliquer comment faire cela?

57
David Edwards

Personnellement, je pense qu'il sera plus facile de connecter un disque dur virtuel supplémentaire et de le monter sur un point de montage approprié, par exemple /opt et de déplacer vos données à l'aide de rsync pour résoudre ce problème. Après tout, les boîtes de marionnettes vagabondes servent à des fins de test.

Raison pour laquelle : VBoxManage modifyhd fonctionne uniquement avec une image VDI native. Toutefois, les boîtes de base vagabondes sont essentiellement exportées OVF/OVA au format VMDK.

Voir Docs VirtualBox

L'option --resize x (où x est le nouvel espace total souhaité en mégaoctets) vous permet de modifier la capacité d'une image existante. cela ajuste la taille logique d'un disque virtuel sans trop affecter la taille physique. [37] Cela ne fonctionne actuellement que pour les formats VDI et VHD, et uniquement pour les variantes allouées dynamiquement, et ne peut être utilisé que pour augmenter (et non pour réduire) la capacité.

Pour augmenter la capacité du disque pour Vagrant Base Box

Les étapes sont

  1. Pour pouvoir redimensionner le disque dur, vous devez d’abord le convertir au format VDI, par exemple. VBoxManage clonehd in.vmdk out.vdi --format VDI et ensuite re-attaché (utiliser l'interface graphique est plus facile).

  2. Redimensionnez-le avec VBoxManage modifyhd box.vdi --resize 15360, ce qui augmente la capacité de stockage de 15 Go.

  3. Cependant, cela ne change que la capacité du lecteur, vous devrez ensuite développer le système de fichiers pour l'invité. Par exemple, utilisez resize2fs -p -F DEVICE pour ext {3,4}.

24
Terry Wang

J'ai trouvé ce moyen le plus simple de résoudre ce problème:

  • Installez ce plugin: vagrant plugin install vagrant-disksize

  • Editez le Vagrantfile:

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

  • vagrant halt
  • vagrant up
21
thucnguyen

J'ai automatisé l'ajout du disque dans mon 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

Où le script shell add_new_disk.sh ressemble à ceci:

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

Ce script est pour une boîte centos 6.4 , mais pourrait facilement être adapté à Ubuntu.

Au lieu d’ajouter un disque, les autres options sont les suivantes:

  • en utilisant une boîte avec un disque plus gros tel que opscode bento qui ont des disques de 40 Go
  • construisez votre propre boîte en utilisant packer . Vous pouvez utiliser les définitions du packer de boîtes opscode comme point de départ
14
Chris Snow

Vous pouvez utiliser le plugin, qui vous permettra de spécifier la taille du disque https://github.com/sprotheroe/vagrant-disksize

6
shashi ranjan

disclaimer: la réponse ne s'applique probablement qu'aux distributions utilisant une gestion de volume logique comme rhel pour laquelle le cas d'utilisation suivant s'applique:

J'utilise officiellement la boîte vagabonde officielle Red Hat Enterpise 7.2 fournie par Red Hat .

(vous aurez besoin d'un compte développeur rhel que vous pourrez créer gratuitement)

Lors de l'installation, j'ai été troublé par le fait que seuls 8 Go étaient également disponibles:

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

Et comme vous pouvez le constater, la majeure partie de l’espace avait déjà été utilisée par l’installation de rhel.

Cependant, j'ai découvert que le groupe de volumes correspondant au système de fichiers /dev/mapper/VolGroup00-root disposait d'un espace supplémentaire (qui, je suppose, en termes de boîte virtuelle, était alloué dynamiquement).

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

Il ne restait donc que les tâches suivantes:

a ) Augmentez la taille de notre volume logique de 10G

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

et

b ) Mettez à jour votre système de fichiers racine afin qu'il prenne conscience de ce changement.

Sudo xfs_growfs /dev/mapper/VolGroup00-root

(Veuillez noter qu'au moins pour rhel 7.2, resize2fs ne fonctionnera pas à cette fin).

Après cela, mon système de fichiers disposait d'un espace supplémentaire:

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

... pas d'intervention au niveau de la virtualbox

0
pkaramol