Redimensionnement de l'espace disque sur la boîte vagrant

je voudrais donner à ma boîte peu plus d'espace disque. J'essaie de le faire à travers le vagrantfile comme suit:

Vagrant::Config.run do |config|
    # ..
    config.vm.customize ["modifyvm", :id, "--memory", 1024]
    config.vm.customize ["modifyhd", :id, "--resize", 4096]
end

Cela me donne l'erreur:

A customization command failed:
["modifyhd", "e87d8786-88be-4805-9c2a-45e88b8e0e56", "--resize", "4096"]

The following error was experienced:

VBoxManage: error: The given path 'e87d8786-88be-4805-9c2a-45e88b8e0e56' is not fully qualified
VBoxManage: error: Details: code VBOX_E_FILE_ERROR (0x80bb0004), component Medium, interface IMedium, callee nsISupports
VBoxManage: error: Context: "OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, enmAccessMode, fForceNewUuidOnOpen, pMedium.asOutParam())" at line 178 of file VBoxManageDisk.cpp


Please fix this customization and try again.

j'essaie de rassembler l'information à partir de http://docs.vagrantup.com/v1/docs/config/vm/customize.html http://www.virtualbox.org/manual/ch08.html#vboxmanage-modifyvdi

8
demandé sur schellsan 2013-02-17 06:19:10

6 réponses

vous envoyez modifyhd l'UUID de la VM (fourni par vagrant) alors qu'il attend l'UUID de la VDI. Vous aurez besoin d'utiliser le chemin absolu vers le fichier VDI réel ou son UUID. Vous pouvez utiliser la commande suivante pour obtenir L'UUID du VDI:VBoxManage showhdinfo <filename> (voir virtualbox - comment vérifier quel est l'uuid d'une vdi?)

5
répondu Dror Bereznitsky 2017-05-23 12:25:37

j'ai créé un nouveau disque, et étendu le plus.

Mon Vagrantfile:

Vagrant.configure(2) do |config|
config.vm.box = "bseller/oracle-standard"
config.vm.define :oracle do |oracle| 
  oracle.vm.hostname = 'oraclebox'
  oracle.vm.synced_folder ".", "/vagrant", owner: "oracle", group: "oinstall" 
  oracle.vm.network :private_network, ip: '192.168.33.13'
  oracle.vm.network :forwarded_port, guest: 1521, host: 1521
  oracle.vm.provider :virtualbox do |vb|
     vb.customize ["modifyvm", :id, "--memory", "4096"]
     vb.customize ["modifyvm", :id, "--name", "oraclebox"]
     if !File.exist?("disk/oracle.vdi")
       vb.customize [
            'createhd', 
            '--filename', 'disk/oracle', 
            '--format', 'VDI', 
            '--size', 60200
            ] 
       vb.customize [
            'storageattach', :id, 
            '--storagectl', "SATA", 
            '--port', 1, '--device', 0, 
            '--type', 'hdd', '--medium', 'disk/oracle.vdi'
            ]
     end     
  end
  oracle.vm.provision "shell", path: "shell/add-oracle-disk.sh"
  oracle.vm.provision "shell", path: "shell/provision.sh"
end
end

cela créera un nouveau disque dans

disk
    |-- oracle.vdi
shell
    |-- provision.sh
Vagrantfile

et ajoutez dans votre boîte. Le nouveau disque est de 60 Go Mon shell provision.sh

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

sudo pvcreate /dev/sdb1
sudo vgextend VolGroup /dev/sdb1
sudo lvextend -L50GB /dev/VolGroup/lv_root
sudo resize2fs /dev/VolGroup/lv_root
date > /etc/disk_added_date

ce script a été adapté de SHC zone bseller / oracle-standard. Pour le code complet, voir mon projet oraclebox GitHub

3
répondu acfreitas 2017-04-13 12:22:39

j'ai regardé ça, et je n'ai trouvé aucun moyen de le faire directement. Cependant, vous pouvez obtenir l'effet en utilisant Ansible comme un provisioner. Tout d'abord, il est certainement possible avec Vagrant de créer et d'ajouter un second disque, que vous pouvez ensuite ajouter et monter de n'importe quelle façon que vous aimez utiliser Ansible.

Toutefois, Ansible a également la possibilité d'exécuter des commandes locales (sur l'hôte). C'est avec Ansible local_action fonctionnalité. Je l'ai utilisé ici pour redémarrez une VM errante après une mise à niveau du noyau et dites à l'hôte d'attendre qu'elle ait redémarré, mais vous pouvez utiliser cela avec la commande ou les actions du shell pour trouver l'identifiant HD, arrêter la VM et configurer le disque dur, puis redémarrer. Au moins en théorie.

2
répondu Stuart Watt 2014-08-28 14:19:26

bien que la question soit ancienne mais je n'ai vu aucune réponse acceptée.

The given path 'e87d8786-88be-4805-9c2a-45e88b8e0e56' is not fully qualified apparaît parce que L'UUID e87d8... est VirtualBox vm UUID, pas votre stockage SATA disk device UUID. Vous pouvez trouver le périphérique de stockage UUID par VBoxManage showvminfo e87d8786-88be-4805-9c2a-45e88b8e0e56|grep vdi. Le remplacer :id avec L'UUID de stockage SATA dans la ligne Vagrantfile modifyhd.

Il a résolu mon problème.

2
répondu seanlook 2015-04-01 18:36:52

OK... Résoudre...

VBoxManage.exe wan pas dans mon chemin donc ce que j'ai fait était d'aller à (vous devez aller pour que le chemin d'accès):

C:\Program Fichiers\Oracle\VirtualBox

ensuite utilisé la commande:

VBoxManage.exe modifyhd "C:\Users\MyUser\VirtualBox VMs\MachineName\HDName.VDI " -- redimensionner 20480

Pour 20 GO de la taille d'un HD

cela ne fonctionne pas: "C:\Program Fichiers\Oracle\VirtualBox\VBoxManage.exe " modifyhd "C:\Users\MyUser\VirtualBox VMs\MachineName\HDName.VDI " -- redimensionner 20480

vous devez être sur le chemin: C:\Program fichiers\Oracle\VirtualBox

0
répondu Juan Uribe 2015-07-13 14:46:04

Vous pouvez ajouter un nouveau disque à la place. Première utilisation boîte virtuelle GUI pour ajouter un autre disque virtuel

enter image description here

alors utilisez fdisk pour créer une partion de disque primaire

root@linux-dev:/# fdisk -l

Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sda: 9.9 GiB, 10632560640 bytes, 20766720 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x83312a2b

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sda1  *        2048 19816447 19814400  9.5G 83 Linux
/dev/sda2       19818494 20764671   946178  462M  5 Extended
/dev/sda5       19818496 20764671   946176  462M 82 Linux swap / Solaris

root@linux-dev:/# fdisk /dev/sdb

Welcome to fdisk (util-linux 2.25.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x5eb328b9.

Command (m for help): m

Help:

  DOS (MBR)
   a   toggle a bootable flag
   b   edit nested BSD disklabel
   c   toggle the dos compatibility flag

  Generic
   d   delete a partition
   l   list known partition types
   n   add a new partition
   p   print the partition table
   t   change a partition type
   v   verify the partition table

  Misc
   m   print this menu
   u   change display/entry units
   x   extra functionality (experts only)

  Save & Exit
   w   write table to disk and exit
   q   quit without saving changes

  Create a new label
   g   create a new empty GPT partition table
   G   create a new empty SGI (IRIX) partition table
   o   create a new empty DOS partition table
   s   create a new empty Sun partition table

Command (m for help): p

Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x5eb328b9


Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-41943039, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-41943039, default 41943039):

Created a new partition 1 of type 'Linux' and of size 20 GiB.

Command (m for help): p
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x5eb328b9

Device     Boot Start      End  Sectors Size Id Type
/dev/sdb1        2048 41943039 41940992  20G 83 Linux

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Faire nouvellement créé de partition de disque d'un système de fichiers ext4

root@linux-dev:/# mkfs.ext4 /dev/sdb1 
mke2fs 1.42.12 (29-Aug-2014)
Creating filesystem with 5242624 4k blocks and 1310720 inodes
Filesystem UUID: 0301b56a-1d80-42de-9334-cc49e4eaf7b2
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
    4096000

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done   

Monter la partition du disque dans un répertoire

root@linux-dev:/# mount -t ext4 /dev/sdb1 /home/chenchun
root@linux-dev:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       9.2G  3.3G  5.5G  38% /
udev             10M     0   10M   0% /dev
tmpfs            74M  4.4M   70M   6% /run
tmpfs           185M     0  185M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           185M     0  185M   0% /sys/fs/cgroup
none            372G  240G  133G  65% /vagrant
/dev/sdb1        20G   44M   19G   1% /home/chenchun
0
répondu chenchun 2015-11-06 06:23:30