it-swarm-vi.tech

Tại sao thư mục / wonxs phát triển quá lớn và nó có thể được làm nhỏ hơn không?

Một máy ảo Vista tôi sử dụng chỉ có một ổ cứng ảo 10 GB - và tôi lo lắng về việc nó sẽ hết dung lượng theo thời gian.

Tôi đã sử dụng TreeSize để kiểm tra thủ phạm ..

enter image description here

Và thủ phạm chính là thư mục đó /winsxs hoặc "Windows Side-By-Side" .

enter image description here

Thư mục Windows Side By Side là gì? Chà, đó là giải thích khá tốt ở đây .

Tất cả các thành phần trong hệ điều hành được tìm thấy trong thư mục WinSxS - thực tế chúng tôi gọi vị trí này là cửa hàng thành phần. Mỗi thành phần có một tên duy nhất bao gồm phiên bản, ngôn ngữ và kiến ​​trúc bộ xử lý mà nó được xây dựng cho. Thư mục WinSxS là vị trí duy nhất mà thành phần được tìm thấy trên hệ thống, tất cả các phiên bản khác của các tệp mà bạn thấy trên hệ thống đều được dự kiến ​​bởi các liên kết cứng từ kho lưu trữ thành phần. Hãy để tôi nhắc lại điểm cuối cùng - chỉ có một phiên bản (hoặc bản sao dữ liệu đầy đủ) của mỗi phiên bản của mỗi tệp trong HĐH và phiên bản đó được đặt trong thư mục WinSxS. Vì vậy, nhìn từ góc độ đó, thư mục WinSxS thực sự là toàn bộ của toàn bộ HĐH, được gọi là "phẳng" trong các hệ điều hành cấp thấp. Điều này cũng giải thích tại sao bạn sẽ không còn được nhắc về phương tiện khi chạy các hoạt động như Trình kiểm tra tệp hệ thống (SFC) hoặc khi cài đặt các tính năng và vai trò bổ sung.

Điều đó giải thích tại sao thư mục bắt đầu lớn, nhưng không giải thích tại sao nó lớn hơn theo thời gian - câu trả lời cho câu hỏi đó là phục vụ. Trong các phiên bản trước của Windows, đơn vị phục vụ nguyên tử là tệp, trong Windows Vista, nó là thành phần. Khi chúng tôi cập nhật một nhị phân cụ thể, chúng tôi sẽ phát hành một phiên bản mới của toàn bộ thành phần và phiên bản mới đó được lưu trữ cùng với phiên bản gốc trong kho thành phần. Phiên bản cao hơn của thành phần được chiếu lên hệ thống, nhưng phiên bản cũ hơn trong cửa hàng không được chạm vào. Lý do cho điều đó là phần thứ ba của lý do tại sao các cửa hàng thành phần trở nên lớn như vậy.

Rất nhiều người khác cũng phàn nàn về kích thước của thư mục/wonxs :

Một đồng nghiệp gần đây đã nhận được làm mới máy tính xách tay hai năm một lần và đang trong quá trình tải máy tính xách tay mới của mình với Vista. Vì một số lý do, ổ cứng C của anh ta: được phân vùng chỉ còn 25 GB và phần còn lại dành cho ổ đĩa lớn hơn nhiều D :.

Dù sao, sau khi tải nhiều Bản cập nhật Windows, anh ta hầu như không còn dung lượng ổ đĩa trên C:, và vì một lý do nào đó, thư mục WinSxS đã tăng lên hơn 8GB.

Mặc dù tôi biết thư mục WinSxS (Windows Side-by-Side) để làm gì, tôi không chắc tại sao thư mục đó sẽ phát nổ kích thước quá nhanh với các bản cập nhật hệ điều hành bình thường.

Tôi thực sự không quan tâm đến việc có tất cả các tệp trùng lặp này để đảm bảo an toàn, nhưng tôi làm quan tâm đến việc VM phát nổ do lỗi không gian đĩa. Vậy .. can/wonxs có thể được giảm xuống một cách an toàn theo bất kỳ cách nào không? Có vẻ như không thể ..

Các quản trị viên không nên tự mình lấy nó để dọn dẹp thư mục/wonxs - làm như vậy có thể ngăn Windows Update và MSI hoạt động bình thường sau đó . Ngăn chặn việc vô tình xóa khỏi thư mục được thực hiện bằng cách đặt một mô tả bảo mật mạnh mẽ vào thư mục kế thừa cho con của nó.

Nếu thư mục/wonxs này lớn hơn nữa, tôi sẽ phải hình ảnh lại máy ảo này .. điều mà tôi thực sự không muốn làm!

174
Jeff Atwood

Hình như cuối cùng cũng có cách để làm điều này trong Gói dịch vụ Windows 8.1 1 và Windows Server 2012 R2 .

Công cụ phân tích cửa hàng thành phần:

Dism.exe /Online /Cleanup-image /AnalyzeComponentStore

Khi kết thúc quá trình quét, người dùng nhận được báo cáo về kết quả (kích thước thực tế của thư mục winxs) như sau:

analyzecomponentstore results

Dọn dẹp cửa hàng linh kiện:

Ngày nay, Dọn dẹp kho thành phần phải được kích hoạt thủ công bởi người dùng cuối, bằng cách chạy DISM hoặc bằng cách sử dụng Trình hướng dẫn dọn dẹp đĩa. Để làm cho Thành phần lưu trữ thành phần hữu ích hơn cho người dùng cuối trung bình, nó sẽ được thêm vào một nhiệm vụ bảo trì, tự động tiết kiệm dung lượng đĩa cho người dùng cuối. Để kích hoạt tính năng này, một thay đổi sẽ được thực hiện để cho phép gỡ cài đặt trình điều khiển hộp thư đến thay thế mà không yêu cầu khởi động lại (ngày nay, tất cả các cài đặt/gỡ cài đặt trình điều khiển được thực hiện bởi CBS đều yêu cầu khởi động lại).

  1. Dism.exe /online /Cleanup-Image /StartComponentCleanup

  2. Công cụ dọn đĩa, làm sạch nút tập tin hệ thống.

    disk cleanup tool

  3. schtasks.exe /Run /TN "\Microsoft\Windows\Servicing\StartComponentCleanup"

6
Jeff Atwood

Có một lệnh Nice giúp dọn sạch sau khi cài đặt Windows 7 SP1 (nó tiết kiệm cho tôi khoảng 3 GB):

DISM /online /cleanup-Image /spsuperseded

Phải được thực hiện từ một lệnh nâng cao Nhắc

101
GvS

TL; DR

winxs thực sự chứa liên kết cứng . Nó không chiếm quá nhiều dữ liệu bổ sung như bạn nghĩ.

Một liên kết cứng giống như một 'phím tắt' hoặc 'con trỏ' đến một tệp thực tế nằm ở đâu đó trên đĩa của bạn. Một liên kết cứng không tự chiếm bất kỳ dung lượng ổ cứng nào: nó chỉ đóng vai trò là một chuyển hướng.

Bởi vì winx bao gồm các liên kết cứng, việc xóa các liên kết này sẽ không giải phóng bất kỳ không gian nào. Các tập tin thực tế sẽ tiếp tục ở lại các vị trí khác nhau trên đĩa của bạn.


winxs không phải là vấn đề

... đó là một giải pháp! (Chà, chủ yếu là .)

Tóm tắt, "Được đánh dấu là câu trả lời của Ronnie Vernon, MVP, Người điều hành", nói ở đây :

Wow, thảo luận dài về liên kết cứng và winxs. Dù sao ở đây là một số điểm tóm tắt về những gì tôi hiểu về cách thức hoạt động của tất cả.

Để bắt đầu bằng cách trả lời câu hỏi của OP với câu trả lời hoàn hảo được đăng bởi Andre.Ziegler, bạn không chạm vào winxs. Có thể một số tệp có thể được cắt bớt như mp3, avi's, v.v. nhưng phần còn lại của các tệp hệ thống nên được để yên . Tôi cũng đang sử dụng Link Shell Extension như được đăng ở trên bởi Ronnie Vernon, cách dễ dàng để xem cái nào được liên kết cứng (mũi tên màu đỏ) và tệp nào đơn giản.

Trước khi đến đây tôi đã thấy ở rất nhiều nơi mọi người yêu cầu công cụ dọn dẹp sau khi cài đặt SP1 cho Windows 7 như vsp1cln. Không có công cụ chuyên dụng, tất cả đều được tích hợp vào dịch vụ Disk Cleanup. Một lưu ý mà tôi sẽ đưa ra ở đây là ngay cả khi tùy chọn nói rằng nó sẽ xóa vài trăm MB sau khi tôi dọn sạch ổ đĩa, dịch vụ đã loại bỏ khoảng 3 GB tệp dư thừa, do đó, nó thay đổi tùy theo hệ thống. Thật buồn cười, bây giờ tôi thậm chí còn có nhiều không gian hơn trước khi cài đặt SP1. Đẹp một, MS.

Về các liên kết cứng, tôi đã thấy buồn cười bởi sự nhầm lẫn được tạo ra xung quanh chúng. Tôi không phải là một người đam mê linux và tôi thường chỉ sử dụng các liên kết mềm ... chúng là đủ cho tôi, nhưng mọi người không hiểu làm thế nào những cái cứng hoạt động và cách tính kích thước.

Một nhóm các tệp được chọn, liên kết hoặc không, sẽ luôn được tính là một tổng. Điều này có nghĩa là nếu tôi lấy một tệp 10 MB và tạo 2 liên kết cứng, lựa chọn của cả ba liên kết sẽ có 30 MB và đây là kích thước chính xác, vì không giống như các liên kết mềm có liên quan đến mục nhập Bảng tệp chính gốc của tệp và có 0 byte, liên kết cứng có liên quan đến chính dữ liệu , có mục nhập riêng trong MFT nhưng trỏ đến cùng một địa chỉ dữ liệu, rõ ràng có kích thước bằng kích thước của dữ liệu thực tế, cùng thời gian, thuộc tính và như vậy. Tại sao, dưới đây.

Bao nhiêu còn lại trên ổ đĩa? Đơn giản: chính xác như báo cáo thuộc tính của ổ đĩa . Đừng chọn tất cả các tệp, ẩn và không ẩn trên C và thực hiện so sánh hoặc bằng các công cụ tự động làm điều đó vì nó sẽ không hiển thị việc sử dụng ổ cứng thực tế. Tại sao? Bởi vì:

  1. hoạt động đó tạo một danh sách tất cả các tệp đã chọn bao gồm các liên kết cứng dưới dạng các tệp riêng biệt, lấy từng tệp đó và thêm kích thước lên, các thuộc tính ổ đĩa đếm dữ liệu được lưu trữ thực tế
  2. không phải tất cả các tệp sẽ được tính, các thư mục được bảo vệ khỏi di chuyển ngang và các tệp không đọc sẽ không được tính và Thông tin Khối lượng Hệ thống thường có các tệp rất lớn được bảo vệ theo cách này
  3. con số đó chỉ hữu ích trong các trường hợp truyền tệp, nếu các tệp, liên kết, v.v ... cần được sao chép sang DVD hoặc NAS, đó là số lượng chúng sẽ chiếm giữ và các liên kết sẽ không được bảo tồn vì chúng là các tính năng cụ thể của NTFS, không khả dụng hoặc có sẵn ở các dạng khác nhau theo ISO, UDF, NFS và các hệ thống tệp khác, nhưng chúng sẽ được sao chép.

Thực hiện kiểm tra ... sao chép tệp 10MB, a.exe, từ một ổ đĩa khác và chú ý cách dung lượng trống giảm 10 MB. Tạo một liên kết cứng (mklink/H b.exe a.exe). Bây giờ hai tệp được chọn sẽ "sử dụng" 20MB trong thuộc tính lựa chọn , nhưng thực tế chỉ được xác minh 10 MB tại ổ đĩa thuộc tính , sẽ có cùng dung lượng trống như đã làm/thực hiện sau khi sao chép tệp. Xóa một, một trong hai, không gian trống sẽ giữ nguyên. Bây giờ xóa cái cuối cùng và dung lượng sẽ tăng thêm 10MB. Có bất kỳ tác hại nào được thực hiện? KHÔNG.

Winxs là gì? Một dllcache tốt hơn nhiều. Trong đó với dllcache trong XP chúng tôi đã có các bản sao của các tệp thực sự được thêm vào sử dụng kích thước kể từ khi chúng được sao chép, điều này thực sự cải thiện việc sử dụng nhưng không hoàn toàn bảo vệ (chống lại virus). Nếu một trình gỡ cài đặt giả mạo nghĩ rằng nó phải xóa một số lib thời gian chạy khỏi System32, nó sẽ chỉ xóa các liên kết chứ không xóa dữ liệu, sau đó các liên kết sẽ được tạo lại trong khi giữ mức sử dụng không gian dữ liệu ở mức thấp nhất có thể, tốt hơn là lưu trữ winx trong taxi các xe taxi dọc theo các tập tin gốc. Ngoài ra winxs mang đến sự tuần tự hóa, ngăn xếp các tệp có cùng tên nhưng phiên bản khác, vì lợi ích của nhà phát triển, đó là một điều tốt/xấu, điều đó khiến họ lười viết mã đúng cách nhưng nó giúp ích khi họ không muốn viết mã nữa.

Tôi đã làm điều này để giúp bất cứ ai hạ cánh ở đây vì những lý do tương tự mà tôi đã ... sử dụng quá mức "không gian" của winxs sau SP1. Và tôi hy vọng nó hữu ích.

44
Mateen Ulhaq

Những bản sao và bản sao lưu này cực kỳ khó chịu khi có không gian đĩa hạn chế.

Ở nơi đó, cách duy nhất tôi thấy sẽ không gây nguy hiểm cho sự ổn định của HĐH là sử dụng rộng rãi "Nén nội dung để tiết kiệm dung lượng ổ đĩa" cài đặt.

Bằng cách nén tất cả các thư mục sao lưu trong thư mục Windows, tôi có thể giảm kích thước thư mục từ 6,5 GB xuống còn 5 GB, không có tác dụng phụ có thể nhận ra. Sử dụng nó trên một số nội dung của bạn bên ngoài thư mục Window sẽ giúp bạn tăng thêm 10 GB.

33
eran

Nếu bạn đã cài đặt Vista và SP2, bạn có thể dọn sạch các tệp hệ thống cũ bằng Công cụ dọn dẹp gói dịch vụ.

  1. Nhấp vào Bắt đầu> Tất cả chương trình> Phụ kiện> Dấu nhắc lệnh hoặc bấm Bắt đầu> Chạy và nhập cmd để mở Dấu nhắc lệnh Windows
  2. Thực hiện lệnh Cấm Compcln.exe. Đường dẫn là Tiếng c:\Windows\System32\compcln.exe.
  3. Người dùng sẽ được nhắc một câu hỏi có nên giữ Vista SP2 vĩnh viễn trong hệ thống không.
  4. Gõ kiểu Y Y và nhấn enter, hệ thống sẽ bắt đầu thực hiện các thành phần windows sạch sẽ.
27
Tomas Andrle

Trong Windows 8 bạn có thể giảm kích thước thư mục WinSxS bằng cách xóa các tính năng của Windows :

DISM.exe /Online /Disable-Feature /Featurename:<name> /Remove

Điều quan trọng là tham số /Xóa mới đối với Windows 8 .

Hầu hết không gian trong WinSxS được sử dụng WindowsUpdates mà bạn cài đặt theo thời gian. Trong Windows 8/Windows 10 bạn có thể phát hiện và xóa Cập nhật được thay thế bằng các bản cập nhật mới hơn (như tích lũy mới hơn IE Updates) đang chạy lệnh này:

dism.exe /online /cleanup-image /startcomponentcleanup

hoặc chạy trình hướng dẫn dọn đĩa và chọn "Windows Update Cleanup"

enter image description here

enter image description here

enter image description here

Ngoài ra, hãy đảm bảo bạn đã cài đặt bản cập nhật ngăn xếp dịch vụ http://support.Microsoft.com/kb/2821895 .

Bản cập nhật này chạy dọn dẹp sâu WinSxS và nén tất cả các tệp DLL/exe, từ WinSxS hiện không được sử dụng, thành tệp delta nhỏ hơn:

enter image description here

Nhìn vào các kích cỡ tập tin khác nhau.

Windows 8.1 thêm các lệnh DISM mới . /startcomponentcleanup nhận được một tham số mới /ResetBase giúp cập nhật lần cuối của bạn vĩnh viễn và xóa tất cả các tệp cũ hơn để tiết kiệm thêm dung lượng.

Bạn cũng có thể chạy lệnh mới dism /online /cleanup-image /analyzecomponentstore để phân tích thư mục WinSxS:

enter image description here

Nó cho bạn biết bây giờ khi nào bạn nên chạy dọn dẹp để tiết kiệm không gian.

21
magicandre1981

Bạn có thể sử dụng VSP1CLN.EXE để làm cho SP1 vĩnh viễn, theo trang này sẽ giải phóng các thành phần thay thế bởi SP1.

20
Ben Lings

Tin tốt! Hiện tại đã có phương thức bị xử phạt chính thức , từ Microsoft, cho Windows 7 SP1, đến xóa thư mục WinSXS của bạn .

  1. Cài đặt HotFix 2852386 - bạn có thể tải xuống theo cách thủ công hoặc đợi nó đi qua Windows Update của bạn
  2. Điều này thêm một tùy chọn mới vào Dọn ổ đĩa Wizard (Trong mục Dọn sạch tệp hệ thống) mà bạn có thể kích hoạt cho "Windows Update Cleanup". Đánh dấu vào tùy chọn này.
  3. Nhấn vào OK

Hãy cẩn thận: Bạn không thể hủy cài đặt một số Cập nhật Windows nhất định sau khi chạy dọn dẹp thư mục WinSxS của bạn.

9
Mark Henderson

Dism ++ là thứ bạn đang tìm kiếm ( https://www.chuyu.me/en/index.html ) .

Bạn sẽ tiết kiệm được hàng gigabyte dung lượng ...

Bạn sẽ cần chọn "Các hội đồng WinSxS thay thế". Nếu bạn làm điều này - nó sẽ đưa ra một cảnh báo rằng các bản cập nhật đã cài đặt này không thể được gỡ cài đặt. Nhấp vào ok, sau đó quét

enter image description here

Nó sẽ cho bạn ý tưởng về việc bạn sẽ tiết kiệm được bao nhiêu dung lượng. Nhấn dọn dẹp, và nó sẽ dọn sạch không gian đó.

2
user425154

Hy vọng sẽ có ích khi có một oneliner đơn giản vì nếu không câu trả lời tuyệt vời của Jeff Atwood sẽ bỏ lỡ /ResetBase.

Thận trọng: Công tắc này giúp giảm đáng kể kích thước thư mục WinSxS, nhưng xóa hoàn toàn các phiên bản thành phần trước đó, do đó bạn sẽ không thể khôi phục mọi bản cập nhật đã cài đặt trước đó. Nhưng nếu hệ thống của bạn hoạt động tốt, bạn nên an toàn (đặc biệt nếu bạn không ở trong môi trường sản xuất)

dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase

Điều này hoạt động trong Windows 8.1 trở lên

1
maoizm

Bên cạnh các giải pháp đã nói ở trên, một cách để có được không gian đáng kể là nén toàn bộ nội dung thư mục. Tuy nhiên, điều này không thể được thực hiện bằng Explorer (cần có quyền thích hợp), ít nhất là bắt đầu từ Windows 7.

Những hướng dẫn này chỉ ra cách đạt được điều này:

sc query msiserver 
sc query TrustedInstaller

sc stop msiserver
sc stop TrustedInstaller

sc config msiserver start= disabled
sc config TrustedInstaller start= disabled

icacls "%WINDIR%\WinSxS" /save "%WINDIR%\WinSxS.acl" /t

takeown /f "%WINDIR%\WinSxS" /r

icacls "%WINDIR%\WinSxS" /grant "%USERDOMAIN%\%USERNAME%":(F) /t

compact /s:"%WINDIR%\WinSxS" /c /a /i *

icacls "%WINDIR%\WinSxS" /setowner "NT SERVICE\TrustedInstaller" /t

icacls "%WINDIR%" /restore "%WINDIR%\WinSxS.acl"
del "%WINDIR%\WinSxS.acl"

sc config msiserver start= demand
sc config TrustedInstaller start= demand

sc start msiserver
sc start TrustedInstaller

Ghi chú/mẹo:

  1. Nhóm đánh dấu cách được khuyến nghị để chạy các lệnh này, nếu được thực hiện thủ công. Thông thường, không có vấn đề gì (ngoại trừ một số tệp bị bỏ qua, vì chúng đang được sử dụng), nhưng phải kiểm tra kết quả cho từng nhóm

  2. Tôi đã thực hiện các bước này trên các cài đặt hệ điều hành khác nhau ở nhà và tại nơi làm việc: Win7x64, Win10x64, Windows Server 2008R2 và Windows Server 2012 và cho đến nay tôi không thấy có vấn đề gì.

  3. Một số bước mất khá nhiều thời gian, đặc biệt là thời gian nén. Hầu hết các bước sẽ lặp lại và hiển thị các tập tin được xử lý. Lệnh tối thiểu hóa Cửa sổ nhắc nhở có thể đạt được một số tốc độ.

0
Alexei