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
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?)
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
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.
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.
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
Vous pouvez ajouter un nouveau disque à la place. Première utilisation boîte virtuelle GUI pour ajouter un autre disque virtuel
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