Vấn đề ở đây là mặc dù bạn đã xóa các tệp trong hình ảnh VM của CentOS, nhưng VMware không cố gắng đòi lại không gian đó cho đến khi bạn yêu cầu nó một cách rõ ràng. Ngay cả sau đó, nếu các khối đĩa được sử dụng bởi các tập tin đã không được zeroed, họ sẽ tiếp tục chiếm không gian trong các tập tin vmdk (s). Nếu bạn đang sử dụng để thu hẹp Windows VM thì điều này có thể không quen thuộc với bạn.
Thủ tục cơ bản để trả lại không gian là:
- Hủy bỏ bất kỳ tập tin không cần thiết
- Zero, tất cả không gian miễn phí (không cần thiết cho Windows máy ảo)
- Sử dụng VMware Player hoặc Workstation để thu nhỏ ổ đĩa ảo.
Thủ tục cụ thể tôi đã sử dụng để giảm ảnh CentOS của tôi là phải làm như sau:
df -h
su
yum clean all
cd/; cat /dev/zero > zero.fill ; sync ; sleep 1 ; sync ; rm -f zero.fill
exit
sau đó tôi tắt CentOS VM của tôi và sử dụng các tiện ích nhỏ gọn trên Phần cứng trang cho Đĩa cứng thiết bị trong Cài đặt máy ảo.
Sau khi thu hẹp, vmdk cho hệ thống tệp gốc có cùng kích thước với kích thước của hệ thống tệp gốc đang được sử dụng và vmdk bắt đầu mở rộng lại khi cần từ đây. Lưu ý rằng VM của tôi chỉ có một phân vùng gốc duy nhất, nếu tôi có bất kỳ phân vùng hoặc đĩa nào khác, tôi đã thay thế phần cd /
của đường kẻ điền với điểm gắn kết của các phân vùng khác và sau đó chạy tiện ích thu nhỏ trên mỗi đĩa ảo.
Để có thêm tùy chọn, hãy xem Shrinking VM Disk Images.
Nếu bạn cần hướng dẫn thực hiện tương tự với Debian dựa trên Linux hoặc muốn sử dụng tiện ích dòng lệnh vmware-vdiskmanager
thay vì VMware GUI để thu nhỏ đĩa, hãy xem bài viết How To Shrink VMware Virtual Disk Files (.vmdk).
Nếu bạn đã sử dụng VM một thời gian, bạn cũng có thể hưởng lợi từ việc không trao đổi tệp. Trên hệ thống CentOS của tôi, tôi đã làm như sau:
$ su
Password:
# cat /proc/swaps
Filename Type Size Used Priority
/dev/sda3 partition 2064376 0 -1
# swapoff -a
# cat /proc/swaps
Filename Type Size Used Priority
# dd if=/dev/zero of=/dev/sda3 bs=1M
dd: writing `/dev/sda3': No space left on device
2017+0 records in
2016+0 records out
2113929216 bytes (2.1 GB) copied, 24.6894 s, 85.6 MB/s
- Lưu ý: Vì chúng ta đang lau một phân vùng nguyên ở đây, hãy chắc chắn rằng thiết bị bạn chỉ định cho lệnh
dd
là cùng một thể hiện bởi lệnh cat /proc/swaps
. Để an toàn, hãy sao lưu máy ảo của bạn trước khi thực hiện việc này.
Sau khi thu hẹp đĩa ảo, bạn sẽ cần phải bật lại tệp hoán đổi. Ví dụ:
$ su
Password:
# free -o
total used free shared buffers cached
Mem: 1030684 344552 686132 0 20956 175912
Swap: 0 0 0
# mkswap /dev/sda3
Setting up swapspace version 1, size = 2064380 KiB
no label, UUID=80276a48-3581-4f7a-8b05-1f2a97169e22
# gedit /etc/fstab
# swapon -a
# free -o
total used free shared buffers cached
Mem: 1030684 346132 684552 0 20968 175912
Swap: 2064376 0 2064376
Các gedit/etc/fstab
là để thay thế cho UUID swap cũ bằng cái mới được tạo ra bởi mkswap
.
Lưu ý rằng câu hỏi này thực sự phù hợp hơn trên Superuser hoặc Serverfault hơn ở đây trên Stack Overflow, được dự định là dành cho các câu hỏi lập trình.
Cảm ơn sự giúp đỡ. Sẽ có một cái nhìn tại hộp ảo cũng – Thomas