Tôi gặp vấn đề tương tự khi tôi đã di chuyển một đĩa và thay thế bản gốc bằng một liên kết tượng trưng. Điều này hoạt động tốt sau đó, nhưng bạn gặp vấn đề với lệnh 'Sửa đổi', vì điều đó rõ ràng hợp quy hóa đường dẫn đến tệp vdi khi làm việc với nó. Điều này làm cho có vẻ như bạn đang cố gắng thêm một đĩa mới có cùng UUID nhưng trên một đường dẫn khác - hoặc một cái gì đó tương tự.
Có hai vấn đề:
Đĩa phải được xóa khỏi VM đã sử dụng nó, nhưng sau đó cũng "từ danh sách hdds VirtualBox". Điều này đã được sửa với lệnh 'closemedium', loại bỏ nó khỏi danh sách đó.
Đĩa được thay đổi kích thước là "đĩa cố định" thay vì "động" và chỉ có thể thay đổi kích thước đĩa động. Điều đó đã được sửa bằng lệnh 'clone' (bản sao là động), sau đó thay đổi kích thước đĩa kết quả.
Đây là nhật ký của tôi về cách nó đã được thực hiện. Hãy lưu ý rằng tôi không phải lúc nào cũng chạy bằng root , ngoại trừ khi sau đó tôi thay đổi kích thước của phân vùng và hệ thống tập tin.
BỎ L ASS HIỆP HỘI ĐẾN DISK TỪ VM.
VẤN ĐỀ VẪN PERSISTS:
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
À, đĩa vẫn "trong hệ thống":
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
Xóa / xóa đĩa khỏi danh sách đĩa 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)
Hãy thử thay đổi kích thước một lần nữa:
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, "kích thước cố định" KHÔNG LÀM VIỆC! 'clonehd' để giải cứu, vì điều đó để lại một đĩa nhân bản 'được phân bổ động':
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
BÂY GIỜ LÀM KẾT QUẢ (tức thì):
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%
SAU ĐẾN MỘT SỐ VM, ĐỂ GIẢI QUYẾT. Điều này được thực hiện như root. Giả sử rằng bạn chỉ có một phân vùng và có thể trao đổi.
# 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.