Làm cách nào để tăng kích thước đĩa cứng của máy ảo?


257

nhập mô tả hình ảnh ở đây

Tôi đã hết dung lượng trên máy ảo WinXP của mình, cái mà tôi chỉ cho 10 GB dung lượng khi tôi tạo nó. Có cách nào dễ dàng để tăng nó lên, giả sử, 20 GB không? Tôi không thể thấy bất kỳ tùy chọn rõ ràng nào trong cài đặt VirtualBox.


Gợi ý dưới đây cho lỗi này

wim@wim-ubuntu:/media/data/winxp_vm$ VBoxManage modifyhd wim.vdi --resize 20000
VBoxManage: error: Cannot register the hard disk '/media/data/winxp_vm/wim.vdi' {46284957-2c09-4e70-8a49-bfbe0f7f681d} because a hard disk '/home/wim/VirtualBox VMs/winxp_vm/wim.vdi' with UUID {46284957-2c09-4e70-8a49-bfbe0f7f681d} already exists
VBoxManage: error: Details: code NS_ERROR_INVALID_ARG (0x80070057), component VirtualBox, interface IVirtualBox, callee nsISupports
Context: "OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, AccessMode_ReadWrite, fForceNewUuidOnOpen, pMedium.asOutParam())" at line 210 of file VBoxManageDisk.cpp

Xóa .vdi khỏi VirtualBox trước khi gọi lệnh VBoxManage, sau đó thêm lại vào, đã thành công. Nhưng bây giờ tôi không thể khởi động máy ảo, tôi nhận được màn hình đáng lo ngại này:

nhập mô tả hình ảnh ở đây

Nhân tiện, nó nói FATAL: Could not read from the boot medium! System halted.


Vdi phải được gắn lại vào VM sau lệnh VBoxManage. Hơn nữa, phân vùng sẽ cần được thay đổi kích thước từ các cửa sổ FORIN, bởi vì bạn sẽ có khoảng trống này:

nhập mô tả hình ảnh ở đây

Tôi đã có thể thay đổi kích thước phân vùng một cách dễ dàng bằng cách sử dụng một chút phần mềm miễn phí có tên EASEUS Partition Master 9.1.0 Home Edition .


3
Vấn đề của bạn là bạn đã liên kết đĩa với vị trí '/ media / data' và nó không nằm trên vị trí '/ home / wim / VirtualBox VMs ban đầu. Tôi đã trả lời với cách tôi sửa lỗi này.
stolsvik

1
tôi đã trình bày chi tiết kinh nghiệm của mình ở đây: kmonsoor.wordpress.com/2012/05/26/virtualbox-increas-disk-size câu trả lời "được chấp nhận" dưới đây là cách xa thậm chí là đúng.
kmonsoor

Có một khả năng khác là "sao chép vdi hiện tại" sang "vdi trống mới, có kích thước lớn hơn hiện tại" (tham khảo justintung.com/2011/01/06/ trên )
ký sinh vào

Ngoài ra, lưu ý rằng, chỉ thay đổi kích thước có thể không giúp ích gì, vì kích thước "vdi" sẽ tăng lên, nhưng dựa trên "vm-os-install", phân vùng chính của bạn vẫn giữ nguyên và không gian mới được phân bổ thường được hiển thị "không phân bổ" ". Do đó, bạn cần thực hiện "phân bổ lại phân vùng" (Tham khảo liên kết ở trên).
ký sinh

Câu trả lời:


325

Mở một thiết bị đầu cuối và điều hướng đến thư mục với hình ảnh đĩa VirtualBox, sau đó sử dụng lệnh sau:

VBoxManage modifyhd YOUR_HARD_DISK.vdi --resize SIZE_IN_MB

thay thế YOUR_HARD_DISKSIZE_IN_MBvới tên hình ảnh của bạn và kích thước mong muốn. sudocó thể cần thiết trong một số máy hoặc bạn có thể gặp lỗi. Câu trả lời này và một lời giải thích đầy đủ hơn có ở đây, trên webupd8 . Tín dụng cho Andrew ở đó để đăng câu trả lời này.

Sau khi thay đổi kích thước, không gian ổ cứng ảo thêm cần được phân vùng và định dạng để khách sử dụng. Điều này có thể được thực hiện với gparted bằng cách khởi động máy khách từ ISO trực tiếp. Chúng tôi cũng có thể thay đổi kích thước phân vùng hiện có bằng cách sử dụng gparted. Đối với điều này, chúng tôi có thể cần phải vô hiệu hóa /swapvà tạo một phân vùng trao đổi mới.


20
+1. Chỉ cần sử dụng điều này để tăng kích thước ổ đĩa Windows 7 của tôi từ 20 lên 30 GB và nó hoạt động rất trơn tru (không cần đăng ký, v.v.). $ VBoxManage modifyhd Windows7.vdi --resize 30720 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Lúc đầu, Windows không phát hiện ra dung lượng tăng, nhưng sau khi tắt nguồn, sau đó tôi có thể sử dụng công cụ Quản lý đĩa tích hợp để tăng kích thước phân vùng C: của mình.
Jonik

3
+1, Đây chắc chắn là cách sạch nhất để làm điều đó.
Starx

20
@asd Thay đổi kích thước đĩa là không đủ, bạn cũng cần thay đổi kích thước phân vùng.
Bruno

5
Tôi nghĩ rằng trong các phiên bản gần đây của VirtualBox .\VBoxManage.exe modifymedium disk 4d30d154-f8c2-4a3b-bd8b-ddcfbfe64aaf --resize 30720. modifyhdmặc dù cũng hoạt động - có khả năng tương thích ngược với các lệnh cũ hơn.
translucentCloud

2
Tôi chỉ thay đổi kích thước kích thước tệp vdi từ 25G thành 120G, nhưng trình quản lý đĩa của hệ thống Windows7 vẫn không thể thấy không gian chưa được phân bổ. Nguyên nhân là do một tệp ảnh chụp nhanh (tôi có một ảnh chụp nhanh trước đó), nhưng khi tôi cố gắng xóa ảnh chụp nhanh, báo cáo hộp ảo bị hỏng, vì vậy tôi không thể xóa ảnh chụp nhanh. Có ý kiến ​​gì không? Khách của tôi win7 vẫn thấy 25G. cảm ơn.
ollydbg23

25

Sau đây làm việc cho tôi:

VBoxManage modifyhd YOUR_HARD_DISK.vdi --resize SIZE_IN_MB

Tuy nhiên, tôi hiểu cách số dặm có thể thay đổi :-) Theo như thay đổi kích thước phân vùng, trong Windows 7, tôi có thể thay đổi kích thước màn hình mà bạn hiển thị bằng cách nhấp chuột phải vào ổ C: trong bảng điều khiển dưới cùng và chọn âm lượng mở rộng.

Màn hình quản lý máy tính


12
sudokhông cần thiết Nó có thể làm hỏng quyền trong thư mục chính của bạn, yêu cầu bạn sử dụng sudocho hộp ảo là một ý tưởng tồi .
Lekensteyn

1
@Lekensteyn: Thật tốt khi biết rằng điều đó là không cần thiết. Tôi đã sử dụng nó bởi vì những người khác đã nói rằng nó không hoạt động mà không được root. Theo như sự cho phép của tham nhũng, chmod hoạt động tốt để sửa chữa những lỗi đó.
Richard Povinelli

@Lekensteyn: chown sẽ sửa lỗi sở hữu. Tôi đề cập đến chmod và chown, bởi vì tôi đã phải khắc phục vấn đề mà bạn đang tham khảo nhiều lần :-)
Richard Povinelli

2
Điều này rất tốt cho Windows, nhưng nếu bạn có HĐH Linux, liên kết này có thể giúp định cỡ lại các phân vùng: forum.virtualbox.org/viewtopic.php?f=35&t=50661
Jon

Nếu bạn đang chạy windows trong linux, bạn cần phải làm theo các tùy chọn này và mở rộng đĩa, nếu không, windows sẽ không thêm không gian bổ sung mà chúng tôi đã thêm
Ajith R Nair

18

Wim, tôi nghĩ bạn sẽ cần hủy đăng ký nó khỏi Vbox trước. Tệp, Trình quản lý phương tiện, Nhấp vào hdd của bạn và hủy đăng ký nó. Sau đó thử lại.


2
Không bắt buộc trên Linux trong VirtualBox. Chỉ cần tắt hệ điều hành khách hoàn toàn trước.
Đánh bại

15

Bạn cũng có thể làm điều đó bằng menu VirtualBox:

Chọn File->Virtual Media Manager ...

Một cửa sổ sẽ mở ra: nhập mô tả hình ảnh ở đây

Chọn đĩa của bạn và chọn Properties. Bây giờ chỉ cần di chuyển thanh trượt ở phía dưới.

Sau khi bạn khởi động máy ảo, các cửa sổ sẽ không nhận ra không gian mới.

Trong cửa sổ, mở Computer Management(tìm kiếm trong menu bắt đầu), chọn Storage-> Disk Managementtrong menu bên trái. Chọn phân vùng của bạn (có thể là C :), nhấp chuột phải vào nó và chọn Extend Volume .... Bây giờ chỉ cần nhấp qua trình hướng dẫn và bạn đã hoàn tất.


Bạn có cần phải làm Releasetrước đó không? Như hiện tại thanh trượt có màu xám. Hay bạn đã chọn phân vùng động?
Royi

Royi: khi bạn tạo đĩa ảo, hãy chắc chắn rằng nó có kích thước động.
lenooh

10

Sau khi thay đổi kích thước và không thể xem thay đổi kích thước trên máy khách Windows XP của tôi, tôi đã phải

  1. nhân bản nó
  2. thay đổi kích thước của nó bằng "VBoxManage Sửa đổi winxppro \ Clone.vdi - thay đổi kích thước 30720" và mọi thứ đã hoạt động

Tôi thấy trong các diễn đàn khác rằng các ảnh chụp nhanh có thể can thiệp vào việc thay đổi kích thước và không thể xóa tất cả các ảnh chụp nhanh cho các lỗi khác nhau mà tôi gặp phải, giải pháp tìm thấy duy nhất cho tôi là sao chép nó để xóa các ảnh chụp nhanh và sau đó thay đổi kích thước, và mọi thứ đều hoạt động. Để thay đổi kích thước bên ngoài các cửa sổ, một đĩa CD khởi động có thể tìm thấy ở đây có thể giúp


6

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 đề:

  1. Đĩ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 đó.

  2. Đĩ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.

Điều này làm việc cho tôi, làm theo hướng dẫn ở đây: yinfor.com/2015/05/ Hãy
marijnz0r

4

Điều này hoạt động với tôi với Virtualbox 5.2.6 được cài đặt trên Ubuntu 16.04 Host Machine và Windows 10 Guest: mở Virtualbox Manager, nhấp vào Global Tools (góc trên bên phải) và chọn Virtual Media Manager. Nhấp vào Tab Đĩa cứng và chọn Hệ điều hành khách của bạn. Ở dưới cùng của hộp bấm vào tab Thuộc tính. Ở phía dưới, bạn có thể thấy kích thước của Đĩa ảo và với thanh trượt, bạn có thể tăng kích thước theo ý thích của mình. (Bạn chỉ có thể tăng, không giảm kích thước bằng phương pháp này). Nhấp vào Áp dụng. Khởi động hệ điều hành Windows Guest của bạn, mở Quản lý máy tính, nhấp chuột phải vào C: Drive và chọn Mở rộng âm lượng để mở rộng hệ thống tệp với phần chưa được phân bổ.

Đó là tất cả những gì tôi phải làm, hoạt động hoàn hảo cho tôi.


Làm việc tuyệt vời. Đây không phải là câu trả lời được chấp nhận, ít nhất là cho các phiên bản gần đây của VirtualBox?
Luôn luôn học tập

2

Một cách chắc chắn là làm điều đó giống như chuyển sang ổ cứng lớn hơn không chạy trong VM. Trước tiên, sử dụng ccleaner hoặc chương trình tương tự trong XP để dọn sạch tất cả các tệp rác mà nó có thể. Sau đó tạo một ổ cứng ảo thứ cấp có kích thước bạn muốn. Khởi động với clonezilla ISO trong ổ đĩa ODD ảo của bạn và sao chép cùng với tùy chọn 'thay đổi kích thước thành kích thước phân vùng mới' được chọn. Sau đó đặt ổ cứng ảo mới làm chính và không xóa ổ đĩa cũ cho đến khi bạn biết nó hoạt động.


2

Tôi đã nhận được lỗi tương tự cho đến khi tôi sử dụng sudo để chạy lệnh, sau đó hoạt động hoàn hảo, vẫn cần có phân vùng được phát triển từ bên trong khách để sử dụng thêm không gian.


Một số người đã báo cáo điều này khiến thư mục nhà có quyền xấu
Jonathan

2

Đảm bảo rằng bạn đã đăng nhập với tư cách người dùng có quyền ghi vào tệp ảnh đĩa. Sau đó chạy

VBoxManage modifyhd YOUR_HARD_DISK.vdi --resize SIZE_IN_MB  

Làm việc cho tôi lần đầu tiên hỏi


1
Bạn đã phải cài đặt lại / định dạng lại / phân vùng lại? hoặc nó chỉ khởi động lại sao lưu?
Jonathan

2

Nếu máy chủ của bạn là windows, thì bạn có thể chạy lệnh sau để tăng hoặc giảm kích thước đĩa vdi trong hộp ảo:

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyhd "C:\Users\your_user_name\VirtualBox VMs\Ubuntu18LTS\Ubuntu18LTS.vdi" --resize 20000

Trong lệnh trên, thay thế your_user_name bằng người dùng windows thực và 20000 là kích thước MB của đĩa.


1

Thực tế, có vẻ như modifyhdmột mình bạn không làm được gì trong một số trường hợp. Tôi thực sự đã mở rộng WinXP vdi của mình bằng cách nhân bản hình ảnh sau khi mở rộng.

Đây là hướng dẫn từng bước hoàn chỉnh đã hoạt động cho tôi vài tuần trước: http://libtronics.com/2011/07/resize-virtualbox-disk-for-winxp-guest/


Bạn có thể vui lòng giải thích các bước ở đây? Câu trả lời có ít hơn một liên kết đến một trang web khác thường được tán thành ở đây và có thể bị xóa .
Tom Brossman

1
Chà, bạn cần phải hiểu những gì modhd làm, không nhiều hơn là mở rộng đĩa ảo cơ bản, chỉ vậy thôi. Bạn vẫn cần mở rộng hệ thống tập tin trên đó.
Marcin Kaminski

1

Đây là một cách để thay đổi kích thước đĩa VirtualBox của bạn, bất kể đó là đĩa định dạng cố định hay đĩa định dạng động. Cụ thể, nó ngăn chặn lỗi này:

Progress state: VBOX_E_NOT_SUPPORTED
VBoxManage: error: Resize hard disk operation for this format is not implemented yet!

Sao lưu đĩa ảo. Bạn không bao giờ biết những gì có thể đi sai.

Trên máy chủ của bạn:

  1. Mở một cửa sổ đầu cuối.

    Trên Windows: Mở dấu nhắc lệnh cmd.

  2. Chuyển đến thư mục với đĩa ảo bạn muốn thay đổi kích thước. Ví dụ:

    cd "My VMs"
  3. Tạo đĩa VirtualBox mới với tên tệp, kích thước (tính bằng megabyte) và định dạng Standard(động) hoặc Fixed). Ví dụ: để tạo một đĩa định dạng cố định 50 GB được gọi là MyNewDisk.vdi:

    VBoxManage createmedium --filename "MyNewDisk.vdi" --size 50000 --variant Fixed

    Nếu VBoxManagekhông được công nhận là một lệnh, chỉ định đường dẫn đầy đủ đến nó. Nó có thể được tìm thấy trong thư mục cài đặt VirtualBox. Trên Windows, lệnh trên sẽ trở thành:

    "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" createmedium
        --filename "MyNewDisk.vdi" --size 50000 --variant Fixed
  4. Sao chép đĩa gốc vào đĩa mới.

    VBoxManage clonemedium "MyOriginalDisk.vdi" "MyNewDisk.vdi" --existing
  5. Thay đổi kích thước được thực hiện! Bạn có thể kiểm tra các thuộc tính của đĩa mới nếu bạn muốn:

    VBoxManage showmediuminfo "MyNewDisk.vdi"
  6. Thay đổi máy ảo để sử dụng đĩa mới thay thế.

Tiếp theo, trên hệ điều hành khách của bạn, bạn cần thay đổi kích thước các phân vùng để sử dụng không gian mới có sẵn.


1

Đối với những người có Windows trên VHD, như tôi đã làm, trước tiên hãy chuyển đổi sang VDI bằng cách nhân bản bằng lệnh Linux sau. (Lưu ý, Windows VM tắt.)

VBoxManage clonehd Windows10.vhd Windows10.vdi --format vdi

Điều này sẽ nhân đôi vhd.

Sau đó, VDI có thể được thay đổi kích thước với những điều sau đây. Lưu ý rằng VDI sẽ không thực sự phát triển cho đến khi nó được sử dụng.

VBoxManage modifyhd Windows10.vdi --resize 80000

Sau khi sửa lỗi gắn bộ lưu trữ trong phần mềm máy chủ VM và bật nguồn VM, Windows khởi động, nhưng phân vùng vẫn sẽ có cùng kích thước. Google cho một công cụ Windows có thể thay đổi kích thước phân vùng ổ C. Tôi đã sử dụng EasUs Partition Master để phát triển phân vùng ổ C lên kích thước mới.

Cuối cùng, VHD có thể bị xóa.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.