2012-03-16 48 views
8

Tôi có một máy Windows và tôi đang chạy Trình phát VMWare. Tôi có hình ảnh 1 Centos. Tại một thời điểm, VM có khoảng 12GB.Thu gọn đĩa vmware

Tôi đã xóa nhiều tệp không cần thiết, giảm kích thước xuống 4GB

Tuy nhiên, mức giảm này không được phản ánh trong vmdk.

Windows báo cáo kích thước khoảng 10 GB, trong khi Centos chỉ sử dụng 4GB

Có cách nào để lấy lại không gian này không?

Trả lời

6

Có, bạn có thể thu nhỏ bằng cách sử dụng "vmware-vdiskmanager". Thanh toán số này article để biết chi tiết.

Ngoài ra hãy tự hỏi - bạn có cần không gian này sau không? Nếu đây là môi trường không sản xuất và bạn sử dụng nó cho mục đích "nhà", tôi mạnh mẽ khuyên bạn nên chuyển sang nền tảng ảo hóa khác (VirtualBox chẳng hạn) vì nó thân thiện hơn, cập nhật và hỗ trợ nhiều nhất định dạng của các tệp VMDK (vì vậy việc di chuyển sẽ dễ dàng).

+0

Cảm ơn sự giúp đỡ. Sẽ có một cái nhìn tại hộp ảo cũng – Thomas

12

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.

+0

tại sao bạn cần đồng bộ hóa? sau khi tắt máy cũng sẽ dẫn đến 'sync', đúng không? – 0xC0000022L

+0

Đai, niềng răng và một đoạn dây tôi đoán @ 0xC0000022L. Hãy thử nó mà không có và xem nếu nó hoạt động. Tôi cho rằng lý thuyết là nếu không có 'sync; sleep 1; sync' thì Centos có thể loại bỏ bất kỳ bộ nhớ đệm chưa ghi nào được ghi vào' zero.fill' ngay khi nó nhận lệnh 'rm zero.fill', để chúng un -ổn. –

+0

Xin lỗi @EricGuo, nhận xét của bạn chưa rõ ràng. Bạn có nghĩa là bạn thích câu trả lời của tôi ở đây, hoặc bạn thích câu trả lời khác mà bạn đang cố gắng liên kết? Nếu sau này, sau đó liên kết của bạn chỉ vào một câu hỏi chứ không phải là một câu trả lời, vì vậy tôi không có ý tưởng mà bạn đang nói về câu trả lời. Sử dụng liên kết "Chia sẻ" ở dưới cùng của câu trả lời thay vì sao chép liên kết không được phép từ thanh địa chỉ. –

3

gì bạn đang tìm kiếm là (trong phiên bản 5 của Player):

  1. điện xuống VM (sau khi vệ sinh cần thiết của đĩa của nó)
  2. Edit Virtual Machine Cài đặt
  3. Bấm vào Hard Disk (ở khung bên trái)
  4. Bấm vào Utilities
  5. Chọn Nhỏ gọn
+0

Cũng hoạt động trong VMWare Player – rboy

+0

Chỉ hoạt động Tôi VMWare Player có một số gợi ý mà các bộ phận của đĩa ảo của bạn có thể được thu nhỏ lại. Bạn có thể sử dụng các công cụ như 'zerofree' (Linux) hoặc' sdelete' (Windows) để "zero/invalidate" không gian không sử dụng. Sau đó, tùy chọn Compact có thể hoạt động. – AnDus

11

Bump vào câu hỏi này khi tôi có điều này với VMware Player 5 và các công cụ GUI được gỡ bỏ ngay cả trong bảng điều khiển và làm nó từ máy chủ không hoạt động nữa. Dù sao để có được những VM co lại dòng lệnh mở trong Windows Khách và điều hướng đến

C: \ Program Files \ VMware \ VMware Tools \ VMwareToolboxCmd.exe

và loại trợ giúp cho tất cả các tùy chọn vì vậy tôi sử dụng

C: \ Program Files \ VMware \ VMware Tools \ VMwareToolboxCmd.exe đĩa teo c: \

nó chạy trong khi thứ e máy đang bật, hãy kiểm tra và tận hưởng

+0

Vào ổ đĩa nào thì 'c: \' ở cuối sẽ tham khảo? –

+1

Điều này áp dụng cho khách của Windows đề cập đến ổ đĩa gốc của hệ điều hành, tôi chưa thử nó trên máy khách Unix và sẽ cho rằng tệp trợ giúp sẽ lặp lại những gì '/' hỗ trợ –

0

Rất tiếc, không có câu trả lời nào được cung cấp cho tôi (tôi sử dụng Windows 8.1 làm hệ thống lưu trữ của mình, CentOS 7 là hệ thống khách đang chạy bên trong Trình phát VMWare).

Với các công cụ VMWare được cài đặt trong hệ thống khách của tôi, tôi có thể gọi các lệnh sau đã thực hiện thủ thuật cho tôi.

vmware-toolbox-cmd disk list cho thấy tất cả các phân vùng gắn có thể được co:

/ 
/boot 
/home 

Sử dụng ví dụ vmware-toolbox-cmd disk /home để thu nhỏ phân vùng đã cho.

Các vấn đề liên quan