J'ai eu le même problème où j'avais déplacé un disque, et remplacé l'original par un lien symbolique. Cela fonctionne bien par la suite, mais vous rencontrez des problèmes avec la commande 'modifyhd', car apparemment elle canonise le chemin d'accès au fichier vdi lorsque vous travaillez avec lui. Cela donne l'impression que vous essayez d'ajouter un nouveau disque avec le même UUID mais sur un chemin différent - ou quelque chose comme ça.
Il y avait deux problèmes :
-
Le disque devait être retiré de la VM qui l'utilisait, mais aussi "de la liste des disques durs de VirtualBox". Ce problème a été résolu avec la commande "closemedium", qui le supprime de cette liste.
-
Le disque à redimensionner était un "disque fixe" au lieu de "dynamique", et seuls les disques dynamiques peuvent être redimensionnés. Cela a été corrigé avec une commande 'clone' (le clone est dynamique), puis en redimensionnant le disque résultant.
C'est mon journal de bord pour la façon dont il a été fait. Remarquez que je suis no à tout moment en tant que root sauf lorsque j'effectue ensuite le redimensionnement de la partition et du système de fichiers.
SUPPRIMER L'ASSOCIATION AU DISQUE DU VM.
LE PROBLÈME PERSISTE :
virt_box@TestBox:~/VirtualBox VMs/TestInception 64 bit$ VBoxManage modifyhd TestInception\ 64\ bit.vdi --resize 8192
VBoxManage: error: Cannot register the hard disk '/datadisk/VirtualBox VMs/TestInception 64 bit/TestInception 64 bit.vdi' {6cd99209-e4db-4178-a6c2-53f9581b1fad} because a hard disk '/home/virt_box/VirtualBox VMs/TestInception 64 bit/TestInception 64 bit.vdi' with UUID {6cd99209-e4db-4178-a6c2-53f9581b1fad} already exists
VBoxManage: error: Details: code NS_ERROR_INVALID_ARG (0x80070057), component VirtualBox, interface IVirtualBox, callee nsISupports
VBoxManage: error: Context: "OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, enmAccessMode, fForceNewUuidOnOpen, pMedium.asOutParam())" at line 178 of file VBoxManageDisk.cpp
Ah, le disque est toujours "dans le système" :
virt_box@TestBox:~/VirtualBox VMs/TestInception 64 bit$ VBoxManage list hdds
UUID: ba58276a-bbe1-4354-8ae5-246bdac390c8
Parent UUID: base
Format: VDI
Location: /home/virt_box/VirtualBox VMs/TestInception 32 bit/TestInception.vdi
State: locked write
Type: normal
Usage: TestInception 32 bit (UUID: a693ac62-7caa-4f11-9d00-51d3a149f5f7)
UUID: 6cd99209-e4db-4178-a6c2-53f9581b1fad
Parent UUID: base
Format: VDI
Location: /home/virt_box/VirtualBox VMs/TestInception 64 bit/TestInception 64 bit.vdi
State: created
Type: normal
Retirer/supprimer le disque de la liste des disques de VirtualBox ("closemedium") :
virt_box@TestBox:~/VirtualBox VMs/TestInception 64 bit$ VBoxManage closemedium disk 6cd99209-e4db-4178-a6c2-53f9581b1fad
virt_box@TestBox:~/VirtualBox VMs/TestInception 64 bit$ VBoxManage list hdds
UUID: ba58276a-bbe1-4354-8ae5-246bdac390c8
Parent UUID: base
Format: VDI
Location: /home/virt_box/VirtualBox VMs/TestInception 32 bit/TestInception.vdi
State: locked write
Type: normal
Usage: TestInception 32 bit (UUID: a693ac62-7caa-4f11-9d00-51d3a149f5f7)
Essayez à nouveau de redimensionner :
virt_box@TestBox:~/VirtualBox VMs/TestInception 64 bit$ VBoxManage modifyhd TestInception\ 64\ bit.vdi --resize 8192
0%...
Progress state: VBOX_E_NOT_SUPPORTED
VBoxManage: error: Resize hard disk operation for this format is not implemented yet!
DAMN, "fixed-size" ne fonctionne pas ! clonehd' à la rescousse, car cela laisse un disque cloné 'dynamiquement alloué' :
virt_box@TestBox:/datadisk/VirtualBox VMs/TestInception 64 bit$ VBoxManage clonehd TestInception\ 64\ bit.vdi TestInception\ 64\ bit-cloned.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: 8e237500-173b-401a-9e63-9e64da110da9
FAITES MAINTENANT LE RESIZE (instantané) :
virt_box@TestBox:/datadisk/VirtualBox VMs/TestInception 64 bit$ VBoxManage modifyhd --resize 8192 TestInception\ 64\ bit-cloned.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
PUIS L'ATTACHER À UN VM, POUR LE REDIMENSIONNEMENT. Ceci est fait en tant que root. Supposez que vous n'ayez qu'une partition et éventuellement un swap.
# fdisk /dev/sdb # <- The extra disk, just attached to be resized
// The procedure looks like this:
// m - print help
// p - print table
// d ... - delete partition (delete both if you have root and swap)
// n - new partition (create root/first partition starting on exact same sector as before, typically 2048, but ends on last, or last minus swap)
// ... n.. (.. then add the swap partition. Calculate how many sectors using original table)
// t - change type of partition (swap partition, if any, to 82 - not 83 which is "normal Linux").
// w - write partition table (write out, with the resized partition)
# e2fsck -f /dev/sdb1
e2fsck 1.42.5 (29-Jul-2012)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdb1: 99918/122160 files (0.3% non-contiguous), 471032/487936 blocks
# resize2fs /dev/sdb1
resize2fs 1.42.5 (29-Jul-2012)
Resizing the filesystem on /dev/sdb1 to 1965824 (4k) blocks.
The filesystem on /dev/sdb1 is now 1965824 blocks long.