giải phóng không gian không sử dụng trên tập tin qcow2 trên kvm / qemu


23

chúng tôi đang sử dụng kvm / qemu với hình ảnh qcow2 cho các máy ảo của chúng tôi.

qcow2 có tính năng hay này trong đó tệp hình ảnh chỉ phân bổ không gian thực sự cần thiết cho máy ảo. nhưng làm cách nào để thu nhỏ lại tệp hình ảnh, nếu không gian được phân bổ của máy ảo trở nên nhỏ hơn?

thí dụ:

1.) tôi tạo một hình ảnh mới với định dạng qcow2, kích thước 100GB

2.) tôi sử dụng hình ảnh này để cài đặt Ubuntu. cài đặt cần khoảng 10 gb, tệp hình ảnh tăng lên khoảng 10GB. Không có gì bất ngờ cho đến nay.

3.) tôi điền vào hình ảnh với khoảng 40 GB dữ liệu bổ sung. tập tin hình ảnh tăng lên tới 50GB. tôi ổn với điều đó :-)

4.) đây là nơi lạ: tôi xóa tất cả dữ liệu 40 GB trên ảnh, nhưng kích thước ảnh vẫn ngốn 50 GB.

Câu hỏi: làm cách nào để tôi giải phóng 40 GB dữ liệu đó và thu nhỏ hình ảnh xuống chỉ còn 10 GB?

cảm ơn trước, berni

Câu trả lời:


26

Hình ảnh sẽ không tự động thu nhỏ, vì khi bạn xóa các tệp, bạn không thực sự xóa dữ liệu (đây là lý do tại sao không phục hồi hoạt động). Qemu có một cơ sở để thu nhỏ hình ảnh qcow2 trở lại, nhưng những gì tiện ích thực sự là sao chép các số 0 từ đĩa, để lại tất cả các thông tin khác. Vì vậy, ý tưởng sẽ là:

  1. Không điền vào ổ đĩa ( dd if=/dev/zero of=/some/filecho đến khi bạn hết dung lượng)
  2. xóa / một số / tập tin
  3. tắt VM
  4. cd đến nơi lưu giữ hình ảnh cho VM và chạy qemu-img convert -O qcow2 original_image.qcow2 deduplicated_image.qcow2
  5. thay đổi cài đặt VM để sử dụng bản sao mới_image.qcow2 mới, kiểm tra VM đang hoạt động và xóa hình ảnh cũ

Điều này, afaik, sẽ chỉ hoạt động với hình ảnh qcow2, tôi chưa thử nghiệm các định dạng khác.


3
Nếu bạn có một cửa sổ khách, hãy chạy SDelete -z để lấy hết dung lượng trống (bước 1,2 ở trên)
ndemou

17

virt-sparsify có thể làm tất cả điều này với ít rắc rối hơn từ phía bạn: http://libguestfs.org/virt-sparsify.1.html


Không chắc chắn rằng nó đã ở đó vào năm 2011
dyasny

2
@dyasny Nếu các câu trả lời hiện có cho các câu hỏi cũ đã trở nên lỗi thời theo thời gian, thì đáng để viết một câu trả lời mới. Tuy nhiên, câu trả lời mới đặc biệt này có thể không đạt tiêu chuẩn cho trang web này.
kasperd

4
@dyasny Nếu ai đó muốn dành nỗ lực viết một câu trả lời chất lượng mới, mỗi khi câu trả lời cũ bị lỗi thời, họ nên được khuyến khích làm như vậy. Một cuộc thảo luận kỹ lưỡng hơn về cách đối phó với các câu trả lời lỗi thời là phù hợp hơn cho meta.
kasperd

1

virt-sparsify fileA fileBsẽ làm tất cả điều đó, nhưng thực tế sẽ không làm giảm kích thước của hình ảnh. Đối với điều này, bạn cần thêm --compress.

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.