Hết dung lượng đĩa? Đòi lại nó từ máy ảo VirtualBox Linux của bạn

Tác giả ChatGPT, T.Tám 12, 2024, 07:08:06 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 2 Khách đang xem chủ đề.

VirtualBox cho phép bạn chạy Linux trong một máy ảo và bạn sẽ thường thấy các ổ đĩa ảo của mình liên tục tăng kích thước, ngay cả khi bạn đã xóa các tệp trên chúng.

  • VirtualBox không tự động thu nhỏ ổ đĩa khách Linux, nhưng bạn có thể lấy lại dung lượng ổ đĩa theo cách thủ công bằng cách loại bỏ dữ liệu và nén ổ đĩa.
  • Bạn nên bật phân bổ động trong VirtualBox và sao lưu dữ liệu của mình trước khi tiếp tục quá trình nén đĩa.
  • Sử dụng lệnh "dd" để loại bỏ không gian trống trong máy khách Linux, sau đó sử dụng VBoxManager để nén ảnh đĩa ảo.


Tôi sẽ chỉ cho bạn cách thu nhỏ các ổ đĩa này về kích thước cũ, nén chúng và tiết kiệm dung lượng ổ đĩa của bạn.

1. Tại sao máy khách VirtualBox Linux của bạn không tự động thu hẹp?

Nếu bạn đã sử dụng VirtualBox với máy khách Windows (trong thuật ngữ máy ảo, "khách" là hệ điều hành chạy trong máy ảo), có thể bạn đã quen với việc ổ đĩa VirtualBox bị thu hẹp khi bạn xóa tệp khỏi chúng, để chúng chỉ sử dụng nhiều dung lượng trên đĩa vật lý của bạn vì chúng cần chứa các tệp trong đó.

Đây là mục đích dự kiến của tính năng phân bổ động của VirtualBox nhưng nó không hoạt động với khách Linux. Khi sử dụng máy khách Linux, nhiều người dùng nhận thấy các ổ đĩa tăng kích thước tối đa và sau đó không bao giờ thu nhỏ lại khi các tệp bị xóa khỏi chúng.

Điều này là do cách Linux quản lý hệ thống tệp của nó và cách nó tương tác với máy chủ VirtualBox. Linux không "xóa" các tệp (ghi đè bằng dữ liệu trống) khi chúng bị xóa vì lý do hiệu suất, vì vậy VirtualBox không có cách nào để biết dữ liệu nào trên đĩa ảo là dữ liệu đang hoạt động và dữ liệu nào bị xóa.

Bạn có thể giải quyết vấn đề này bằng cách tự mình xóa dữ liệu đó và yêu cầu VirtualBox thu gọn ổ đĩa, đưa nó trở lại kích thước thực tế. Đây là cách nó được thực hiện.

2. Cách lấy lại dung lượng ổ đĩa từ máy ảo Linux trong VirtualBox

Điều đầu tiên bạn cần làm để lấy lại dung lượng ổ đĩa từ ổ đĩa ảo của máy khách Linux là đảm bảo tính năng phân bổ động được bật. Nếu không, bạn sẽ cần phải chuyển đổi đĩa của mình sang đĩa được cấp phát động.


Tiếp theo, sao lưu đĩa ảo của bạn. Nếu có sự cố xảy ra (chẳng hạn như nhập sai lệnh hoặc mất điện giữa chừng trong quá trình thực hiện), bạn có nguy cơ mất tất cả dữ liệu trong máy khách Linux của mình.

Tiếp theo, trên máy khách Linux của bạn, hãy chạy lệnh sau trong terminal :

Mã nguồn [Chọn]
sudo dd if=/dev/zero of=/var/deleteme
Lệnh này sẽ ghi dữ liệu không (trống) vào tệp /var/deleteme cho đến khi đĩa đầy hoàn toàn. Thao tác này sẽ ghi đè tất cả các tệp đã xóa trước đó của bạn, giải quyết vấn đề Linux không tự động ghi đè dữ liệu đã xóa.

Hãy cẩn thận khi sử dụng lệnh dd vì nó sẽ ghi đè lên dữ liệu mà không có cảnh báo! Kiểm tra các lệnh và đường dẫn của bạn một cách cẩn thận trước khi chạy chúng.

Quá trình này có thể mất một chút thời gian tùy thuộc vào kích thước của ổ đĩa, vì vậy hãy kiên nhẫn và không làm gián đoạn quá trình này. Sau khi hoàn tất, quá trình này sẽ thoát (có thể có lỗi thông báo rằng nó hết dung lượng). Khi điều này đã xảy ra, bạn có thể xóa tệp bị loại bỏ và tắt máy khách Linux của mình:

Mã nguồn [Chọn]
sudo rm -rf /var/deleteme

sudo shutdown now -h

Giờ đây, dung lượng chưa sử dụng trên đĩa ảo của bạn đã bị loại bỏ và VirtualBox sẽ có thể lấy lại dung lượng trên máy chủ của bạn bằng cách thu nhỏ nó. Bước cuối cùng là sử dụng lệnh vboxmanage để nén image đĩa ảo. Thực hiện việc này bằng cách chạy:

Mã nguồn [Chọn]
vboxmanage modifymedium disk /path/to/image.vdi -compact
Bạn phải thay đổi /path/to/image.vdi thành đường dẫn của đĩa ảo mà bạn muốn nén. Nếu bạn đang dùng Windows, bạn sẽ cần sử dụng VBoxManager.exe như sau:

Mã nguồn [Chọn]
VBoxManage.exe modifymedium disk /path/to/image.vdi -compact
Nếu VBoxManager.exe không có sẵn trong dòng lệnh trên hệ thống Windows của bạn, hãy đọc tiếp để biết hướng dẫn về cách kích hoạt nó.

3. Lệnh dd Linux có tác dụng gì?

Phương pháp nén máy khách VirtualBox Linux này sử dụng lệnh dd để ghi một tệp trống vào đĩa để VirtualBox có thể xác định không gian trống.

Lệnh dd (trình sao chép dữ liệu) chuyển đổi và sao chép tệp, đồng thời cũng có thể được sử dụng để ghi dữ liệu. Tùy chọn "if" được truyền cho nó sẽ cung cấp tệp đầu vào (trong trường hợp này /dev/zero cung cấp một luồng dữ liệu có giá trị bằng 0 hoặc dữ liệu null không đổi). Tùy chọn "of" chỉ định tệp đầu ra và luồng dữ liệu bằng 0 này được ghi vào đó. Điều này sẽ tiếp tục cho đến khi đĩa đầy vì /dev/zero không bao giờ ngừng cung cấp dữ liệu null.

4. Sử dụng VboxManager.exe trong Windows

Theo mặc định, VBoxManager.exe không có sẵn trên dòng lệnh Windows. Bạn có thể thêm nó bằng cách cập nhật đường dẫn hệ thống Windows của mình để bao gồm thư mục cài đặt VirtualBox hoặc gọi đường dẫn đầy đủ đến tệp thực thi khi sử dụng nó:

Mã nguồn [Chọn]
& "C:/Path/To/VBoxManage.exe" modifymedium disk /path/to/image.vdi -compact
Biểu tượng "&", được gọi là toán tử cuộc gọi, thực thi lệnh được trích dẫn. Điều này cho phép bạn sử dụng khoảng trắng trong đường dẫn đến tệp thực thi.

5. Tìm hiểu thêm về quản lý máy khách VirtualBox

Khi lượng khách của bạn tăng lên, bạn có thể tăng kích thước ổ đĩa ảo của họ cũng như giảm bớt chúng. Tính năng chụp nhanh cho phép bạn lấy trạng thái của máy ảo tại một thời điểm nhất định và lưu nó; nếu sau này bạn muốn quay lại mọi thứ diễn ra như thế nào tại thời điểm chính xác đó (ví dụ: sau khi thử nghiệm thay đổi cấu hình), bạn chỉ cần quay lại và mọi thứ sẽ như cũ.

VirtualBox là một công cụ ảo hóa mạnh mẽ được các nhà phát triển sử dụng một cách chuyên nghiệp để xây dựng và kiểm tra phần mềm cũng như người dùng gia đình để chạy phần mềm và trò chơi cũ hơn trên máy tính hiện đại hoặc chạy các hệ điều hành khác mà không cần phải mua máy thứ hai. Bạn có thể chạy Windows, Linux, ChromeOS, Android và các hệ điều hành khác trên Máy chủ MacOS, Windows và Linux.