Trước khi nói về dọn dẹp an toàn thư mục WinSXS trong Windows Server 2012, hãy thử hiểu thư mục WinSXS là gì, lưu gì trong thư mục này, và tại sao kích thước của nó liên tục tăng theo thời gian.
Nếu bạn nhớ trong quá trình cài đặt tính năng bổ sung trong Windows Server 2003, wizard cài đặt yêu cầu cho đĩa cài đặt vào CD-Rom hoặc chỉ đường dẫn đến thư mục chứa gói cài đặt Windows Server 2003. Microsoft quyết định thay đổi chính sách cho các role và feature bổ sung của Windows trong Windows Server 2008. Bây giờ tất cả file binary cần thiết cho việc triển khai bất kỳ role nào được lưu trong thư mục %windir%\WinSxS (WinSxS – Windows Side By Side). Điều này có nghĩa là trong trường hợp cài đặt role bổ sung, không cần tìm và kết nối đĩa với gói cài đặt đến server. Tất nhiên với thái độ này thì cần nhiều dung lượng hơn cho OS. Cần hiểu rằng các thành phần hệ thống then chốt nằm trong thư mục WinSXS và không được phép xóa bất cứ thứ gì từ nó thủ công. Tại sao nó liên tục tăng kích thước? Câu trả lời đơn giản – update. Trong quá trình cài đặt update cho các feature khác nhau trong thư mục WinSXS, cả phiên bản cũ và mới của feature được cập nhật đều được lưu. Nhờ kiến trúc này, chúng ta có thể an toàn gỡ cài đặt bất kỳ update đã cài đặt nào bất kỳ lúc nào và quay lại phiên bản cũ của feature.
Mẹo. Windows 7 SP 1 có thể giảm kích thước thư mục WinSxS bằng cách xóa update không sử dụng.
Vậy phải làm sao nếu hệ thống đã chạy và hoạt động tốt, không cần triển khai role bổ sung nhưng vẫn không đủ dung lượng ổ đĩa? Có vẻ phi logic rằng vài GB trên ổ hệ thống bị chiếm cho gói cài đặt sẽ không bao giờ cần! Thật không may, việc xóa các file này mà không làm hỏng hệ thống trong Windows Server 2008 khá khó khăn. Tuy nhiên Microsoft trong OS server mới (Windows Server 2012) quyết định cải thiện nhược điểm này bằng cách triển khai chức năng mới gọi là Features on Demand.
Features on Demand trong Windows Server 2012
Chức năng Features on Demand cho phép giảm dung lượng ổ đĩa dành cho file hệ thống nhờ khả năng xóa file binary của role không sử dụng từ thư mục WinSxS. Trong trường hợp sau này cần thiết phải trả lại role đã xóa, tất cả file cần thiết có thể tìm thấy trong file image gói cài đặt Windows Server 2012, dịch vụ Windows Update hoặc tài nguyên mạng với nội dung gốc.
Với sự giúp đỡ của lệnh PowerShell sau, bạn có thể lấy thông tin về tất cả role và feature hệ thống:
Get-WindowsFeature
Như bạn thấy trạng thái của mỗi role hiển thị ở cột Install State. Các trạng thái sau có thể có:
- Installed: role hoặc feature đã được cài đặt và đang được hệ thống sử dụng
- Available: role chưa được cài đặt trên server, tuy nhiên tất cả file cần thiết có sẵn trên đĩa, cho phép cài đặt/kích hoạt role này bất kỳ lúc nào.
- Removed: role hoặc feature không được cài đặt trên server, tất cả file cần thiết cho cài đặt nó đã bị xóa khỏi đĩa
Tương ứng, trong trường hợp cài đặt role bất kỳ qua GUI hoặc PowerShell (lệnh Install-WindowsFeature) trạng thái sẽ thay đổi từ Available sang Installed hoặc trong trường hợp xóa (lệnh Uninstall-WindowsFeature) và ngược lại.
Xóa role không sử dụng khỏi Windows Server 2012
Xóa role khỏi đĩa (từ thư mục WinSxS) chỉ có thể qua PowerShell. Đối số đặc biệt Uninstall-WindowsFeature –Remove nên được dùng cho mục đích này.
Nếu bạn cần xóa file binary của role DHCP server ví dụ, lệnh sau nên được dùng:
Uninstall-WindowsFeature –Name DHCP –Remove
Lệnh sau sẽ xóa file dịch vụ thư mục Active Directory Domain Services:
Uninstall-WindowsFeature AD-Domain-Services -Remove
Với sự giúp đỡ của PowerShell, có thể viết lệnh phức tạp hơn sẽ xóa tất cả file cài đặt role và feature Windows Server không sử dụng:
Get-WindowsFeature | Where-Object {$_.InstallState -Eq "Available"} | Uninstall-WindowsFeature -Remove
Trong ví dụ của chúng ta, với điều kiện chỉ role file-server được cài đặt, kích thước thư mục WinSxS sẽ giảm từ 8 xuống 5 GB. Kết quả không tệ, phải không? Hơn nữa, chúng ta chỉ dùng một lệnh để dọn dẹp thư mục WinSxS.
Cách cài đặt role và feature đã xóa trong Windows Server 2012
Ví dụ khác, giả sử bạn cần cài đặt một số role Windows Server 2012, nhưng gói cài đặt của nó đã bị xóa khỏi thư mục WinSxS. Có thể khôi phục role này theo vài cách: dùng GUI Server Manager hoặc PowerShell.
Trước khi bắt đầu khôi phục file role, cần xác định index của phiên bản Windows Server 2012 đã cài đặt. Chúng ta cần đĩa với gói cài đặt Windows Server 2012 (chính xác là file image install.wim nằm trong thư mục sources). Thực hiện lệnh PowerShell sau:
Get-windowsimage –imagepath \sources\install.wim
Tìm phiên bản Windows Server cài đặt trên PC của bạn và nhớ index của nó (giá trị trong dòng Index). Trong ví dụ của chúng ta là Windows Server 2012 Datacenter với index 4.
Cùng thao tác có thể thực hiện với tiện ích Dism:
dism.exe /get-imageinfo /imagefile:d:\sources\install.wim
Cài đặt role đã xóa bằng Server Manager
Mở console Server Manager và bật trình quản lý cài đặt role (Add Roles and Features). Chọn role hoặc feature cần cài đặt. Trình quản lý sẽ cảnh báo rằng một số file cần cho cài đặt role này bị thiếu và bạn phải chỉ định đường dẫn nguồn thay thế cho vị trí gói cài đặt. Nhấn nút Specify an alternate source path.
Trong trường Path chỉ định đường dẫn đầy đủ đến file install.wim và index của phiên bản OS đã cài đặt theo định dạng sau:
WIM:D:\Sources\Install.wim:4
Sau khi nhấn OK, tất cả file cần cho role cài đặt sẽ được copy vào thư mục WinSxS.
Nếu cần, đường dẫn đến thư mục chứa file WIM hoặc đường dẫn mạng đến thư mục WinSxS có thể được chỉ định ở dòng này. Ngoài ra, có thể chỉ định đường dẫn đến thư mục này cho nhóm server bằng group policy (Computer Configuration / Administrative Templates / System / Specify settings for optional component installation and component repair). Lựa chọn cuối rất tiện nếu cần thực hiện nhiều cài đặt server với Windows Server 2012 vì tổng hiệu quả dọn dẹp có thể lên tới hàng trăm GB.
Khôi phục role đã xóa Windows Server 2012 bằng PowerShell
Cùng thao tác có thể thực hiện với chỉ một lệnh PowerShell. Giả sử chúng ta cần khôi phục file remote của role ADDS. Hãy thực hiện lệnh sau:
Install-WindowsFeature AD-Domain-Services -Source WIM:WIM:D:\Sources\Install.wim:4
Vậy trong bài viết này chúng ta đã học một chức năng mới của Windows Server 2012 gọi là Features on Demand, cho phép xóa file binary gói cài đặt role server khỏi thư mục WinSxS. Role đã xóa có thể khôi phục nếu cần: tất cả những gì bạn cần là gói cài đặt Windows Server 2012.
Feature on Demand trong Windows 8 hoạt động hơi khác, vì lệnh PowerShell dùng trong các trường hợp trước đơn giản không tồn tại ở đây. Lệnh DISM với tham số /Disable-Feature được coi là analogue của nó (không tiện lắm). Nội dung thư mục WinSxS cũng có thể nén thêm, đọc thêm trong bài: How to Clean Up and Compress WinSxS Folder.
Mẹo. Thêm về giảm kích thước thư mục WinSxS trong Windows 8.1 tại đây