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:
Quelqu'un peut-il expliquer comment faire cela?
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é.
Les étapes sont
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).
Redimensionnez-le avec VBoxManage modifyhd box.vdi --resize 15360
, ce qui augmente la capacité de stockage de 15 Go.
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}.
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
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:
Vous pouvez utiliser le plugin, qui vous permettra de spécifier la taille du disque https://github.com/sprotheroe/vagrant-disksize
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