Làm cách nào để thay đổi VDI kích thước cố định bằng lệnh redirecthd trong Windows?


70

Tôi đang cố gắng tìm ra cách thay đổi kích thước của tệp VDI. Tôi mới biết về VirtualBox và tôi có rất nhiều điều để tìm hiểu. Nhưng tôi nghĩ rằng tôi đã nắm bắt được những điều cơ bản. Tôi đã cài đặt Windows 7 với tư cách là khách đầu tiên của mình. Máy chủ lưu trữ cũng là Windows 7. Tôi không chắc phân bổ dung lượng ổ đĩa, vì vậy tôi đã sử dụng kích thước VDI ​​là 40 GB và kích thước cố định để tăng hiệu suất. Nhưng tôi đã thay đổi ý định và tôi muốn thêm 10 GB nữa. Tôi đã nhấp xung quanh chương trình và đọc nội dung menu Trợ giúp, nhưng không có ích. Nó giải thích các bộ điều khiển đĩa, SAS, SATA, SCSI, yada, yada, nhưng không phải là thứ tôi đang tìm kiếm.

Tôi đã tìm kiếm trên mạng trên toàn thế giới để tìm câu trả lời, diễn đàn VirtualBox nói rằng bạn nên sử dụng Gparted nếu bạn muốn phương pháp đơn giản nhất (một số mod được đăng dính). Một số người dùng thảo luận về việc sử dụng ddlệnh. Nhưng đó là tất cả những thứ Linux. Ngoài ra, có rất nhiều câu hỏi tại SU liên quan đến việc tăng và giảm kích thước tệp VDI, nhưng tất cả chúng đều là về việc sử dụng Linux làm máy chủ và Windows làm khách.

Tôi tìm thấy bài đăng blog tốt đẹp này về cách làm điều đó với modifyhdlệnh của VBoxManage. Anh chàng này cũng đang làm điều đó trên Linux với tư cách là hệ điều hành máy chủ. Anh ấy thậm chí muốn có cùng kích thước (50 GB) cho tệp VDI của mình như tôi đã làm cho tôi, thật là trùng hợp. Vì vậy, tôi nghĩ rằng dù sao tôi cũng sẽ thử, làm cho nó hoặc phá vỡ nó. Điều gì có thể xảy ra? ... eh? Vâng, đây là bất ngờ xấu xí tôi nhận được.

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe modifyhd "%userprofile%\virtua
lbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab.vdi" --resize 51200
0%...
Progress state: VBOX_E_NOT_SUPPORTED
VBoxManage.exe: error: Resize hard disk operation for this format is not impleme
nted yet!

C:\Program Files\Oracle\VirtualBox>

một

Nói gì bây giờ ?! ... không thể thay đổi kích thước đĩa cứng ảo có định dạng VDI? Bạn không nói? Không hỗ trợ định dạng của riêng bạn? Giờ thì sao ...

Có thực sự không có cách đơn giản nào để thay đổi kích thước của tệp VDI, tốt nhất là với một vài lần nhấp bên trong VirtualBox? Có gì trong tiến trình không?


4
Tôi đã loại bỏ những lời ca ngợi về chất lượng của VirtualBox, điều này không thêm bất cứ điều gì hữu ích cho câu hỏi.
sleske

1
Để tham khảo trong tương lai, modifyhdhiện được gọi là modifymediumnhưng vẫn tương thích ngược - xem virtualbox.org/manual/ch08.html#vboxmanage-modifyvdi
djule5

Câu trả lời:


121

Tóm lược:

  • VBoxManage.exe modifyhd --resize có thể tăng (nhưng không giảm) kích thước logic của hình ảnh đĩa (kích thước mà hệ điều hành khách nhìn thấy).
  • VBoxManage.exe modifyhd inputfile.vdi --compactcó thể giảm kích thước hình ảnh đĩa vật lý (kích thước của tệp hình ảnh trên đĩa mà hệ điều hành máy chủ nhìn thấy). Điều này tuy nhiên không thay đổi kích thước đĩa logic. Lưu ý rằng điều này chỉ hoạt động nếu không gian trống đã bị xóa trong hệ điều hành khách trước.
  • modifyhd chỉ hoạt động với biến thể định dạng động ("hình ảnh được phân bổ động").
  • modifyhd chỉ hoạt động với các định dạng hình ảnh VDI và VHD.
  • Nếu bạn đang sử dụng ảnh chụp nhanh, bạn sẽ phải sao chép VDI ảnh chụp nhanh mới nhất từ ​​thư mục con "Ảnh chụp nhanh".

Để biết chi tiết, xem phần 8.23. VBoxManage sửa đổihd trong hướng dẫn.


Lý do tại sao việc giảm kích thước đĩa logic của VDI vẫn chưa được triển khai là để ngăn ngừa hỏng dữ liệu có thể xảy ra và bạn sẽ có các máy ảo không thể khởi động do kết quả của nó. Do đó, khi --resizetùy chọn được sử dụng, kích thước đĩa mới phải lớn hơn kích thước hiện tại. Nó không được phép nhỏ hơn hoặc bằng kích thước hiện tại. Nói cách khác, một đĩa 40 GB chỉ có thể được thay đổi kích thước thành 41 GB hoặc lớn hơn thế, nó không thể thay đổi kích thước thành 40 GB (chỉ là câm) hoặc 39 GB hoặc ít hơn thế.

Các phiên bản cũ của VirtualBox đã tạo các tệp VDI dưới dạng biến cố định dạng "cố định". Cài đặt mặc định mới hiện đang tạo các biến thể định dạng "động" khi các tệp VDI (hình ảnh đĩa ảo) mới được tạo. (Tôi đoán đây là trường hợp kể từ khi giới thiệu biến thể định dạng động, bất kỳ phiên bản nào được giới thiệu.)

Vì vậy, thông báo lỗi "hoạt động cho định dạng này chưa được triển khai" có nghĩa là tệp VDI của bạn sử dụng biến thể định dạng "cố định". Để giải quyết vấn đề này, bạn sẽ phải sao chép tệp VDI của mình bằng clonehdlệnh. Để xem định dạng biến thể của tệp VDI của bạn tại thời điểm này, bạn có thể sử dụng showhdinfolệnh.

Ví dụ làm việc

Hiển thị thông tin VDI về đĩa hiện tại.

Lệnh đầu vào: vboxmanage.exe showhdinfo path\inputfile.vdi

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe showhdinfo "%userprofile%\virt
ualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab.vdi"
UUID:           132e9af1-0428-49f4-bc45-4d84680e17f5
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       C:\Users\Name\VirtualBox VMs\sg2_win7_x64_lab\sg2_win7_x64_lab.
vdi
Storage format: VDI
Format variant: fixed default
Capacity:       40960 MBytes
Size on disk:   40962 MBytes
In use by VMs:  sg2_win7_x64_lab (UUID: dcd106b3-7ed6-4f19-ad94-820ab4dc10d3)

C:\Program Files\Oracle\VirtualBox>

Xem nơi nó nói "mặc định cố định"? Đó là lý do tại sao nó phát sinh lỗi ở trên khi bạn cố gắng thay đổi kích thước.

Sao chép tệp VDI cũ sang tệp VDI mới.

Lệnh đầu vào: vboxmanage.exe clonehd path\inputfile.vdi path\outputfile.vdi

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe clonehd "%userprofile%\virtual
box vms\sg2_win7_x64_lab\sg2_win7_x64_lab.vdi" "%userprofile%\virtualbox vms\sg2
_win7_x64_lab\sg2_win7_x64_lab_clone.vdi"
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: 34dafa68-3093-4946-926a-8237ea263
e5c

C:\Program Files\Oracle\VirtualBox>

Võngà! Tập tin cũ hiện đã được sao chép vào một tập tin mới. Vì cài đặt mặc định trong các phiên bản mới của VirtualBox là sử dụng biến thể định dạng "động", nên bạn không phải xác định rõ ràng điều đó. Mặc dù, nếu bạn đang làm việc với phiên bản VirtualBox cũ hơn, thì bạn có thể muốn đặt tùy chọn thành "động" (nếu có) để đảm bảo khả năng tương thích và / hoặc linh hoạt tốt hơn với các phiên bản VirtualBox trong tương lai.

Hiển thị thông tin VDI về đĩa nhân bản.

Lệnh đầu vào: vboxmanage.exe showhdinfo path\inputfile_clone.vdi

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe showhdinfo "%userprofile%\virt
ualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_clone.vdi"
UUID:           34dafa68-3093-4946-926a-8237ea263e5c
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       C:\Users\Name\virtualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_
clone.vdi
Storage format: VDI
Format variant: dynamic default
Capacity:       40960 MBytes
Size on disk:   7806 MBytes

C:\Program Files\Oracle\VirtualBox>

Xem làm thế nào bây giờ nó nói "mặc định động"? Thật tuyệt!

(Bên cạnh --compactđó sẽ làm việc với các phiên bản cũ hơn, vì vậy tôi nghĩ rằng tôi cũng có thể thử nó. Nó không hoạt động.)

Thay đổi kích thước đĩa nhân bản.

Lệnh đầu vào: vboxmanage.exe modifyhd path\inputfile.vdi --resize 51200

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe modifyhd "%userprofile%\virtua
lbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_clone.vdi" --resize 51200
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

C:\Program Files\Oracle\VirtualBox>

Sự thành công! Không định dạng nhảm nhí không hơn. Chỉ cần nhớ thay đổi kích thước đĩa mới, nhân bản, chứ không phải đĩa gốc. Hãy nhớ rằng kích thước được thể hiện bằng MB. Tôi tin rằng bạn có thể sử dụng ví dụ 51200như 50G(hoặc có thể là "GB"). Ngoài ra còn có tùy chọn --resizebytecó thể được sử dụng để thể hiện kích thước theo byte.

Hiển thị thông tin VDI về đĩa nhân bản đã thay đổi kích thước.

Lệnh đầu vào: vboxmanage.exe showhdinfo path\inputfile_clone.vdi

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe showhdinfo "%userprofile%\virt
ualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_clone.vdi"
UUID:           34dafa68-3093-4946-926a-8237ea263e5c
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       C:\Users\Name\virtualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_
clone.vdi
Storage format: VDI
Format variant: dynamic default
Capacity:       51200 MBytes
Size on disk:   7806 MBytes

C:\Program Files\Oracle\VirtualBox>

Đó là nó! Từ đây, những gì bạn phải làm là thêm ổ đĩa nhân bản này làm VDI mới cho VM. Bạn làm điều đó trong VirtualBox. Tôi sẽ không đi vào đó. Nếu bạn đã có thể đọc và hiểu điều này cho đến nay thì có lẽ bạn không cần phải hướng dẫn thêm. Bạn có thể xóa tập tin "cố định" cũ hoặc để nó làm bản sao lưu. Đảm bảo bạn đã kiểm tra tệp VDI mới trước khi xóa tệp nguồn gốc.

Ghi chú! Bạn sẽ không thấy ngay kích thước mới của đĩa nhân bản. Bạn phải khởi động VM với nó, và sau đó bạn phải sử dụng công cụ quản lý phân vùng để mở rộng phân vùng của mình để lấp đầy đĩa ảo (hoặc tạo thêm phân vùng). Đối với Windows, chỉ cần chạy diskmgmt.mscvà bạn sẽ có thể mở rộng phân vùng trong đó.

Ảnh chụp màn hình

một b c Cười mở miệng e đụ g

Tài liệu tham khảo



Có mắt quan sát! Tôi đã sửa tham số Sửa đổi. Cảm ơn bạn đã mang đến sự chú ý của tôi.
Samir

2
Một câu trả lời thực sự tốt bằng văn bản! IMHO này sẽ nhận được rất nhiều phiếu bầu.
Johan Karlsson

+1: Đó là những người như bạn và kiến ​​thức mà bạn tự do chia sẻ, điều đó làm cho hệ sinh thái StackExchange trở thành một tài nguyên tuyệt vời!
Homunculus Reticulli

1
Nếu bạn gặp sự cố vì bạn đang sử dụng ảnh chụp nhanh , hãy xem virtualbox.org/ticket/9103 . Về cơ bản, bạn cần áp dụng thao tác modifymedium/ modifyhdtrên chính tệp chụp nhanh.
djule5

11

Đây là một quy trình khá đơn giản giúp tôi thay đổi kích thước đĩa cố định VirtualBox (v. 4.3.16) thành đĩa động 60 GB trên máy Mac (OS X 10.9.4) với Linux (Ubuntu 14.04) chạy dưới dạng HĐH khách:

Trong Terminal trên Mac, CD vào thư mục chứa tệp VDI và nhập như sau:

VBoxManage showhdinfo mydisk.vdi  
VBoxManage clonehd mydisk.vdi mydiskClone.vdi  
VBoxManage modifyhd mydiskClone.vdi --resize 61440  
VBoxManage showhdinfo mydiskClone.vdi

Trong phần lưu trữ ứng dụng VirtualBox, thêm mydiskClone.vdi làm HD thứ hai, sau đó khởi động VM bình thường.

Trong trình bao trên hệ điều hành khách, gõ:

sudo fdisk /dev/sdb
- delete all partitions
- create new partition on full disk

Khởi động lại khách. Khi nó trở lại, đi đến vỏ một lần nữa và gõ:

sudo resize2fs /dev/sdb1

Tắt hệ điều hành khách.

Trong phần lưu trữ ứng dụng VirtualBox một lần nữa, đặt mydiskClone.vdi làm đĩa khởi động. Sau đó khởi động hệ điều hành khách và xác minh kích thước đĩa mới bằng các thuộc tính của "Máy tính" trong trình duyệt tệp.


Câu trả lời này không có ý nghĩa. Trước tiên, bạn tạo một phân vùng lớn trên / dev / sdb, sau đó thay đổi kích thước của nó, nhưng trước tiên bạn không tạo một hệ thống tệp trên đó. Bạn có thể quên bước sao chép trên phân vùng ban đầu?
sleske

5

Nhân bản thực sự là một giải pháp tốt hơn và có một cách dễ dàng hơn để làm điều đó.

Từ menu Tệp, chọn Trình quản lý phương tiện ảo, sau đó bấm Sao chép. Nguồn sẽ là đĩa cứng vdi kích thước cố định ban đầu của bạn và đích đến của bạn sẽ là một cái gì đó mới mà bạn chọn (bao gồm tùy chọn mới).


Đây là một phần của câu trả lời từ sammyg.
Efren

4

OK, vì vậy tôi đã làm cho nó xảy ra mà không cần nhân bản .

Tôi đã có tệp VDI 100 GB (định dạng cố định) với Ubuntu trên đó. Làm việc tốt. Tôi muốn giải phóng một số không gian trong máy chủ bằng cách thu nhỏ VM.

Các bước:

  1. Dọn dẹp

Đã xóa các tập tin không mong muốn. 45 GB miễn phí. Tôi chỉ cần 30 GB để được giải phóng.

  1. Sửa hệ điều hành khách

Tôi chỉ có một phân vùng, vì vậy không thể làm bất cứ điều gì từ bên trong Ubuntu khách. Đã gắn Ubuntu Live trong VM và khởi động từ nó.

Được sử dụng gpartedđể thu nhỏ phân vùng đến 70GB. Tạo một phân vùng mới trong không gian chưa sử dụng trong ext4.

  1. Lau sạch không gian trống

Dung lượng trống trong phân vùng mới (30 GB).

Thực hiện theo hướng dẫn này: Thu nhỏ ổ cứng ảo trên Ubuntu với tư cách là Hệ điều hành khách và máy chủ bằng zerofree

Phân vùng mới của tôi là /dev/sda3.

$ sudo apt-get install zerofree
$ sudo init 1

...

# mkdir /tmp3
# mount -o ro -t ext4 /dev/sda3 /tmp3
# zerofree -v /dev/sda3
  1. Nén VDI

    VBoxManage sửa đổi "ub Ubuntu.vdi" compact

Phải mất một lúc, nhưng nó đã làm việc!


1
Bạn có chắc chắn điều này làm việc? Theo hướng dẫn VirtualBox, --compactchỉ hoạt động đối với hình ảnh được phân bổ động, không dành cho hình ảnh có kích thước cố định.
sleske

1
@ ATOzTOA: Nếu tệp hình ảnh đĩa phát triển, thì đó không phải là hình ảnh "định dạng cố định", mà là hình ảnh "được phân bổ động", đó là những gì bạn đã viết trong câu trả lời của mình.
sleske

3
Không, đó là một hình ảnh được phân bổ động . Để trích dẫn hướng dẫn: "Nếu bạn tạo một hình ảnh có kích thước cố định, một tệp hình ảnh sẽ được tạo trên hệ thống máy chủ của bạn có kích thước tương đương với dung lượng của đĩa ảo." Virtualbox.org/manual/ch05.html#vdidetails
sleske

1
"Một hình ảnh có kích thước cố định có nghĩa là nó không thể phát triển vượt quá kích thước được chỉ định." KHÔNG. "Kích thước cố định" có nghĩa là kích thước được cố định, vì vậy luôn luôn giống nhau. Đọc tài liệu.
sleske

1
Nếu bất cứ ai đang đọc điều này và không chắc ai đúng. @sleske đúng. Hình ảnh kích thước cố định là chính xác như họ nói. Đã sửa với kích thước được chỉ định khi tạo hình ảnh. Trong các điểm chuẩn, điều này cung cấp hiệu suất cao hơn nhiều so với các hình ảnh được phân bổ động, vì vậy bất kỳ ai sử dụng VBox cho các tác vụ chuyên sâu HD có lẽ nên xem xét định dạng này mặc dù có những hạn chế.
Jack

2

Loại muộn của bữa tiệc ở đây nhưng tôi sẽ thêm 2 xu của tôi. Đầu tiên tôi sẽ nói rằng đây là một quá trình phức tạp sẽ khiến hầu hết những người dùng bình thường cố gắng tìm ra. Tại sao Oracle không bao gồm điều này trong GUI VBox là một bí ẩn.

Bước 1: Sử dụng dòng lệnh windows (VBoxmanage) để tăng kích thước ổ đĩa. Một mẹo ở đây là sử dụng ID của ổ đĩa vdi thay vì cố gắng nhập vị trí tệp và nhận thông báo lỗi.

Bước 2: Sau đó, bạn cần mở rộng phân vùng chính của mình để sử dụng không gian mới. Tải xuống iso gparted và tạo một máy ảo mới trong VBox bằng cách sử dụng nó làm nguồn IDE. Sau đó sử dụng ổ đĩa VDI hiện có làm đĩa sata. Không tạo ổ đĩa ảo cho máy này. Khởi động máy mới và bạn sẽ có Gui gparted đang chạy. Điều này có thể mất một vài lần khởi động lại để tự sắp xếp.

Khi gparted đang chạy, bạn sẽ thấy các phân vùng của ổ đĩa vdi mà bạn muốn thay đổi kích thước. QUAN TRỌNG: Bạn sẽ phải xóa phân vùng mở rộng và trao đổi không gian tệp để có thể tăng kích thước của phân vùng chính để không phân bổ tất cả không gian mới cho PP. Khi bạn thực hiện việc này, bạn sẽ phải chỉ định không gian còn lại cho phân vùng mở rộng mới và tạo một không gian tệp hoán đổi mới trong đó. Tôi thấy điều này trở nên dễ dàng hơn rất nhiều sau đó thực hiện xung quanh với dòng lệnh.

Không phải là một miếng bánh nhưng có thể làm được ... tôi mất khoảng nửa ngày để nghiên cứu trang web để tìm ra điều này. Chạy win8.1 / Ubuntu trên VBox

Willie


2

Đây là cách tôi thay đổi kích thước / phóng to / mở rộng hình ảnh VDI cố định (quy trình của tôi để thu nhỏ chúng là trong một câu trả lời khác):

  1. Sử dụng VirtualBox để tạo một đĩa mới có kích thước mong muốn (kích thước PHẢI ít nhất giống với bản gốc). Thực hiện việc này bằng cách mở Cài đặt VirtualBox cho máy khách VM, điều hướng đến Bộ lưu trữ, nhấp vào Bộ điều khiển ổ cứng (ví dụ: "SATA"), sau đó nhấp vào "+" để thêm đĩa cứng. Sau đó cấu hình đĩa mới như mong muốn.
  2. Tải xuống ISO trực tiếp gparted và định cấu hình VM khách để khởi động từ nó (một lần nữa, cài đặt lưu trữ).
  3. Sao lưu bộ nhớ hiện tại của máy khách VM của bạn.
  4. Khởi động máy khách VM (nên khởi động vào môi trường trực tiếp gparted). Từ bên trong môi trường gparted:
    1. Sử dụng ứng dụng gparted để xác minh rằng đĩa hiện tại của bạn là "/ dev / sda" và đĩa mới (lớn hơn) của bạn là "/ dev / sdb" (thả xuống từ trên bên phải).
    2. Đóng ứng dụng gparted.
    3. Mở một thiết bị đầu cuối với quyền riêng tư gốc (nhấp chuột phải trên màn hình -> Thiết bị đầu cuối -> thiết bị đầu cuối có quyền root).
    4. Gõ lệnh sau: dd if=/dev/sda of=/dev/sdb status=progress bs=128Mvà đợi cho nó hoàn thành. Điều này sẽ sao chép đĩa gốc sang byte-byte-đĩa mới, bao gồm MBR, v.v. (Lưu ý: Việc này có thể mất một lúc để hoàn thành tùy thuộc vào kích thước của đĩa gốc, tốc độ của đĩa trên máy chủ, v.v.). (Lưu ý: nếu VM khách của bạn có> 1GB RAM được phân bổ cho nó, bạn có thể thay đổi thông số 'bs' thành "bs = 256M" có thể tăng tốc độ sao chép một chút).
    5. Mở lại ứng dụng gparted
    6. Chọn ổ đĩa mới (lớn hơn) (nên là / dev / sdb) từ trình đơn thả xuống trên cùng bên phải.
    7. Mở rộng (các) phân vùng như mong muốn. Để mở rộng phân vùng không ở cuối, bạn có thể phải di chuyển các phân vùng nằm sau (các) bạn muốn mở rộng. Tùy thuộc vào chi tiết cụ thể của sơ đồ phân vùng của bạn, bạn có thể cần thực hiện việc này theo nhiều bước như phát triển phân vùng cuối cùng đến cuối và sau đó thu nhỏ nó bằng cách di chuyển mọi thứ đến cuối. Trong trường hợp của tôi, phân vùng cuối cùng của tôi là linux-exchange vì vậy tôi chỉ cần xóa nó, mở rộng phân vùng chính của mình theo ý muốn và sau đó tạo lại phân vùng trao đổi ở cuối (cẩn thận sao chép sơ đồ phân vùng ban đầu của nó).
    8. Áp dụng các thay đổi.
    9. Tại thời điểm này, bạn nên có một đĩa có kích thước cố định mới với tất cả nội dung gốc và nhiều không gian hơn bản gốc. Bạn có thể gắn đĩa mới vào env trực tiếp gparted và xác minh.
    10. Tắt máy khách VM (gparted live) và xóa ISO khỏi ổ VM.
  5. Chuyển đến Cài đặt VBox cho VM khách, điều hướng đến Bộ lưu trữ và xóa đĩa gốc khỏi danh sách (nhấp chuột phải và chọn "Xóa tệp đính kèm"). Điều này sẽ để lại đĩa mới tạo của bạn cho VM. Lưu ý: Bước này chỉ đơn giản là xóa đĩa khỏi cấu hình của máy khách VM - đĩa VM khách gốc của bạn (tức là đĩa nhỏ) vẫn có sẵn trên máy chủ.
  6. Khởi động VM và tận hưởng!
  7. (Khi mọi thứ được xác nhận hoạt động như mong đợi, bạn có thể xóa đĩa VM gốc.)

Mặc dù ở trên đã làm việc rất tốt cho tôi nhiều lần, nhưng có vẻ như cần thêm một vài bước nữa nếu LVM được sử dụng. (LƯU Ý: Nếu LVM được sử dụng, bạn chỉ cần thêm một đĩa mới có kích thước mong muốn và sau đó thêm đĩa đó vào nhóm âm lượng.) Với CentOS 6.6 nơi LVM được sử dụng, tôi cũng phải tăng dung lượng trong LVM. Vì vậy, sau khi khởi động đĩa mới được tạo ở trên, tôi đã làm một số thứ dọc theo các dòng này (các phần khác nhau này sẽ thay đổi dựa trên tên của thiết lập của bạn):

  1. Nhận thông tin về thiết lập LVM:

    # pvs
      PV         VG          Fmt  Attr PSize  PFree
      /dev/sda2  vg_rhel6bm1 lvm2 a--  31.51g    0 
    # vgs
      VG          #PV #LV #SN Attr   VSize  VFree
      vg_rhel6bm1   1   2   0 wz--n- 31.51g    0 
    # lvs
      LV      VG          Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      lv_root vg_rhel6bm1 -wi-ao---- 28.31g
      lv_swap vg_rhel6bm1 -wi-ao----  3.20g
    
  2. Mở rộng âm lượng vật lý (PV) (nhóm âm lượng (VG) sẽ tự động phản ánh mức tăng tương tự):

    # pvresize /dev/sda2
      Physical volume "/dev/sda2" changed
      1 physical volume(s) resized / 0 physical volume(s) not resized
    # pvs
      PV         VG          Fmt  Attr PSize  PFree
      /dev/sda2  vg_rhel6bm1 lvm2 a--  39.51g 8.00g
    # vgs
      VG          #PV #LV #SN Attr   VSize  VFree
      vg_rhel6bm1   1   2   0 wz--n- 39.51g 8.00g
    
  3. Mở rộng âm lượng logic (LV):

    # lvextend /dev/vg_rhel6bm1/lv_root /dev/sda2
      Size of logical volume vg_rhel6bm1/lv_root changed from 28.31 GiB (7247 extents) to 36.31 GiB (9295 extents).
      Logical volume lv_root successfully resized
    # lvs
      LV      VG          Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      lv_root vg_rhel6bm1 -wi-ao---- 36.31g
      lv_swap vg_rhel6bm1 -wi-ao----  3.20g
    
  4. Mở rộng hệ thống tập tin:

    Trước:

    # df -h
      Filesystem            Size  Used Avail Use% Mounted on
      /dev/mapper/vg_rhel6bm1-lv_root
                             28G   24G  3.1G  89% /
      tmpfs                 939M  232K  939M   1% /dev/shm
      /dev/sda1             477M   85M  368M  19% /boot
    

    Chỉ huy:

    # resize2fs /dev/mapper/vg_rhel6bm1-lv_root
      resize2fs 1.41.12 (17-May-2010)
      Filesystem at /dev/mapper/vg_rhel6bm1-lv_root is mounted on /; on-line resizing required
      old desc_blocks = 2, new_desc_blocks = 3
      Performing an on-line resize of /dev/mapper/vg_rhel6bm1-lv_root to 9518080 (4k) blocks.
      The filesystem on /dev/mapper/vg_rhel6bm1-lv_root is now 9518080 blocks long.
    

    Sau:

    # df -h
      Filesystem            Size  Used Avail Use% Mounted on
      /dev/mapper/vg_rhel6bm1-lv_root
                             36G   24G   11G  69% /
      tmpfs                 939M  232K  939M   1% /dev/shm
      /dev/sda1             477M   85M  368M  19% /boot
    

Câu trả lời tốt đẹp! Chào mừng đến với trang web!
djsmiley2k - CoW

1

Đây là cách tôi thay đổi kích thước / thu nhỏ / giảm hình ảnh VDI cố định (quá trình của tôi để mở rộng nó nằm trong một câu trả lời khác trong cùng chủ đề này):

Trước tiên, một nền tảng ngắn về lý do tại sao tôi cần điều này (vì có nhiều kịch bản để thu nhỏ VDI, một số trong đó có thể không khả thi với phương pháp này): Cách đây nhiều năm tôi đã tạo một VDI cố định cho một khách Windows Server và có kích thước 600GB. Tôi không nhớ tại sao tôi chọn kích thước này nhưng cho đến hôm nay tôi chỉ tiêu thụ 100GB cho khách đó và tôi muốn lấy lại hầu hết dung lượng còn lại. Vì vậy, trong trường hợp của tôi, tôi muốn lưu giữ tất cả dữ liệu trong khách và tôi chỉ đơn giản muốn giải phóng không gian chưa sử dụng trong khách.

(Các bước sau đây chủ yếu là từ trí nhớ của tôi về việc đã làm điều này trong hơn 2 giờ qua, vì vậy xin lỗi nếu tôi bỏ lỡ điều gì đó ở đây.)

  1. Xác định mức độ lớn mà bạn muốn kích thước mới. Đương nhiên, bạn có thể muốn để lại cho khách một số không gian thừa ngoài những gì nó hiện đang tiêu thụ. Kích thước tối thiểu phải giống với dữ liệu trong đĩa nguồn / đĩa gốc, được làm tròn đến GB gần nhất.
  2. Sử dụng VirtualBox để tạo một đĩa có kích thước cố định mới với kích thước như được xác định trong bước trước. Thực hiện việc này bằng cách mở Cài đặt VirtualBox cho máy khách VM, điều hướng đến Bộ lưu trữ, nhấp vào Bộ điều khiển ổ cứng (ví dụ: "SATA"), sau đó nhấp vào "+" để thêm đĩa cứng. Sau đó cấu hình đĩa mới như mong muốn.
  3. Tải xuống ISO trực tiếp gparted và định cấu hình VM khách để khởi động từ nó (một lần nữa, cài đặt lưu trữ).
  4. Sao lưu bộ nhớ hiện tại của máy khách VM của bạn.
  5. Khởi động máy khách VM (nên khởi động vào môi trường trực tiếp gparted). Từ bên trong môi trường gparted:

    1. Sử dụng ứng dụng gparted để xác định đĩa nào là "bản gốc" và đĩa nào là "mới". Bản gốc sẽ có ít nhất một phân vùng, trong khi bản mới sẽ hoàn toàn trống. (Thông thường "bản gốc" là đĩa đầu tiên được gán / dev / sda và đĩa "mới" là đĩa thứ hai được gán / dev / sdb.)
    2. Sử dụng ứng dụng gparted để thu nhỏ (các) phân vùng gốc / kích thước theo kích thước mong muốn của bạn. Hãy nhớ nhấp vào nút "Áp dụng" sau khi bạn dự kiến ​​tất cả các thao tác. (Điều này có thể mất một chút để hoàn thành tùy thuộc vào (các) kích thước phân vùng và tốc độ đĩa của bạn.)
    3. Sử dụng ứng dụng gparted để tạo bảng phân vùng trên đĩa mới (Thiết bị -> Tạo Bảng phân vùng ..., để lại loại là MSDOS).
    4. Sử dụng ứng dụng gparted để tạo các phân vùng giống hệt nhau trên đĩa mới. (Để giúp đảm bảo chúng giống nhau, tôi đã lấy thông tin chi tiết cho từng phân vùng trên đĩa gốc bằng cách sử dụng tùy chọn menu Phân vùng-> Thông tin ... và lưu ảnh chụp màn hình của nó để sử dụng khi tôi tạo cùng phân vùng ( s) trên đĩa mới / đích.) Hãy chắc chắn:
      • Tạo mỗi phân vùng đích có cùng kích thước với bản gốc (mới được điều chỉnh).
      • Đặt bất kỳ cờ nào trên các phân vùng phù hợp (có thể cần phải được thực hiện sau khi phân vùng được tạo).
      • Đặt bất kỳ nhãn trên các phân vùng để phù hợp.
      • (LƯU Ý: UUID sẽ được đặt tự động khi dữ liệu được sao chép qua.)
    5. Nhấp vào nút "Áp dụng" để cam kết tất cả các thay đổi.
    6. Lưu ý đĩa nào là "bản gốc" và "mới" và ghi lại số lượng của các phân vùng tương ứng (ví dụ: dev / sda1 -> / dev / sdb1, / dev / sda2 -> / dev / sdb2, ...)
    7. Đóng ứng dụng gparted.
    8. Mở một thiết bị đầu cuối với quyền riêng tư gốc (nhấp chuột phải trên màn hình -> Thiết bị đầu cuối -> thiết bị đầu cuối có quyền root).
    9. Giả sử đĩa "gốc" của bạn là / dev / sda và "new" là / dev / sdb (nếu không, hãy điều chỉnh lệnh sau một cách thích hợp), sau đó chúng tôi sẽ sao chép từng phân vùng, từng phân vùng một. Đối với mỗi phân vùng được ghi chú từ bước trên, hãy nhập lệnh sau trong thiết bị đầu cuối:

      # dd if=/dev/sda1 of=/dev/sdb1 status=progress bs=128M
      

      và chờ đợi nó hoàn thành. Điều này sẽ sao chép phân vùng 1 từ đĩa gốc sang phân vùng 1 trên byte mới cho byte.
      Lặp lại lệnh cho từng phân vùng còn lại:

      # dd if=/dev/sda2 of=/dev/sdb2 status=progress bs=128M
      # dd if=/dev/sda3 of=/dev/sdb3 status=progress bs=128M
      # ...
      

      Ghi chú:

      • Điều này có thể mất một lúc để hoàn thành tùy thuộc vào kích thước của phân vùng, tốc độ của đĩa trên máy chủ, v.v.).
      • Nếu VM khách của bạn có> 1GB RAM được phân bổ cho nó, bạn có thể thay đổi thông số 'bs' thành "bs = 256M" có thể tăng tốc độ sao chép một chút.
    10. Tại thời điểm này, bạn nên có một đĩa có kích thước cố định mới với tất cả nội dung gốc và tệp VDI nhỏ hơn tệp gốc. Bạn có thể gắn đĩa mới vào env trực tiếp gparted và xác minh dữ liệu là tất cả ở đó.
    11. Tắt máy khách VM (gparted live) và xóa ISO gparted khỏi ổ VM.
  6. Chuyển đến Cài đặt VBox cho VM khách, điều hướng đến Bộ lưu trữ và xóa đĩa gốc khỏi danh sách (nhấp chuột phải và chọn "Xóa tệp đính kèm"). Điều này sẽ để lại đĩa mới tạo của bạn cho VM. Lưu ý: Bước này chỉ đơn giản là xóa đĩa khỏi cấu hình của máy khách VM - đĩa VM khách gốc của bạn (tức là VDI lớn) vẫn có sẵn trên máy chủ.
  7. Bước cuối cùng tôi phải làm cho khách Windows của mình là đặt / sửa MBR và / hoặc BCD. . t chụp ảnh màn hình trước khi tôi khắc phục sự cố):

    windows failed to start
    status 0xc000000e
    information A required device isn't connected or can't be accessed.
    
  8. Lấy ISO của bản cài đặt hoặc sửa chữa Windows (lý tưởng là phù hợp với phiên bản HĐH của bạn) và định cấu hình VM khách để khởi động từ nó (một lần nữa, cài đặt Lưu trữ).

  9. Khởi động VM khách và chọn khởi động từ CD / DVD.

    1. Vì mỗi phiên bản cài đặt / sửa chữa Windows là khác nhau, tôi không thể đưa ra các bước chính xác ở đây cho mọi người. Nhưng ý tưởng là chọn tùy chọn "Sửa chữa" và tìm đường đến dấu nhắc lệnh. Trong trường hợp Windows Server 2012, tôi đã phải: (a) Chọn ngôn ngữ / ngôn ngữ của tôi; (b) Chọn "Sửa chữa máy tính của bạn" ở góc dưới bên trái; (c) Chọn "Khắc phục sự cố"; (d) Chọn "Dấu nhắc lệnh".
    2. Khi bạn đang ở trong dấu nhắc lệnh, hãy chạy các lệnh sau (cảm ơn http://loverofcode.blogspot.com/2013/11/fixed-0xc000000e-boot-error.html để biết thông tin!):

      > bootrec /fixmbr
      > bootrec /fixboot
      > bootrec /rebuildBcd
      

      Lệnh cuối cùng này sẽ xác định vị trí cài đặt Windows của bạn và nhắc nhở để thêm nó vào BCD. Trả lời 'Y'.

    3. Thoát khỏi dấu nhắc lệnh và sau đó tắt VM khách.
  10. Chuyển đến Cài đặt VBox cho VM khách, điều hướng đến Bộ lưu trữ và xóa ISO Install / Repair ISO khỏi ổ đĩa CD / DVD.
  11. Khởi động VM và tận hưởng!
  12. (Khi mọi thứ được xác nhận hoạt động như mong đợi, bạn có thể xóa đĩa VM gốc.)

0

Tôi cung cấp một câu trả lời mở rộng cho bất kỳ hệ điều hành được lưu trữ nào đang chạy trên bất kỳ hệ điều hành máy chủ nào. Câu trả lời này giả định rằng bạn muốn tăng kích thước (để mở rộng).

Lưu ý: Như được chỉ ra bởi djule5 (xem bình luận ngay sau câu hỏi), modifyhdhiện được gọi là modifymedium(nhưng vẫn tương thích ngược). Ở đây tôi sử dụng modifymedium.

1. Thoát khỏi VM đang chạy của bạn

Có, câu trả lời này dành cho tệp VDI đã được VirtualBox VM sử dụng.

2. Mở một thiết bị đầu cuối trên máy chủ của bạn để thay đổi kích thước hình ảnh đĩa

Dòng lệnh VBoxManage không muốn thay đổi kích thước hình ảnh đĩa bằng tên tệp VDI.

$ ls -s1 *.vdi
10260316160 my_disk_image.vdi

$ vboxmanage modifymedium my_disk_image.vdi --resizebyte 16260316160                                                                      VBoxManage: error: Cannot register the hard disk '/home/user/vm/my_disk_image.vdi' {181540c7-b791-4b2f-8e01-5feaff04a6eb} because a hard disk '/home/user/vm/my_disk_image.vdi' with UUID {181540c7-b791-4b2f-8e01-5feaff04a6eb} already exists
VBoxManage: error: Details: code NS_ERROR_INVALID_ARG (0x80070057), component VirtualBoxWrap, interface IVirtualBox, callee nsISupports
VBoxManage: error: Context: "OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, enmAccessMode, fForceNewUuidOnOpen, pMedium.asOutParam())" at line 179 of file VBoxManageDisk.cpp

Do đó, xác định UUID của hình ảnh đĩa của bạn.

$ ls -s1 *.vdi
10260316160 my_disk_image.vdi

$ vboxmanage list hdds
UUID:           181540c7-b791-4b2f-8e01-5feaff04a6eb
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       /home/user/vm/my_disk_image.vdi
Storage format: VDI
Capacity:       10240 MBytes
Encryption:     disabled

Mở rộng kích thước hình ảnh đĩa.

$ vboxmanage modifymedium 181540c7-b791-4b2f-8e01-5feaff04a6eb --resizebyte 16260316160
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

3. Sử dụng công cụ phân vùng để mở rộng phân vùng hợp lý

Chạy VM được lưu trữ của bạn. Sau đó sử dụng một công cụ phân vùng .

Một số công cụ cho GNU / Linux được lưu trữ:

Nếu hệ thống được lưu trữ sử dụng Windows:

4. Kiểm tra không gian trống của phân vùng

Kích thước của tệp VDI của bạn (trên hệ thống máy chủ của bạn) có thể không thay đổi do VM của bạn chưa sử dụng thêm dung lượng. Chúc vui vẻ.


-1

Điều này sẽ làm việc cho tôi và sẽ chỉ định tổng dung lượng của Dung lượng đĩa cứng. Không phải không gian những gì chúng ta cần tăng ...

C: \ Tệp chương trình \ Oracle \ VirtualBox> VBoxManage.exe sửa đổi "D: \ Máy ảo \ VirtualBox VMs Windows 7 (Máy chủ FileZilla) \ Windows 7 (Máy chủ FileZilla) .vdi" - kích thước 15360

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.