На днях случайно обнаружил, что на одном и из серверов под управлением ОС Microsoft Windows Server 2008 R2, на котором не установлено ничего тяжеловесного, стало подозрительно мало свободного места на системном разделе. Методом «тыка» был обнаружен виновник — подкаталог winsxs в системном каталоге Windows. По каким-то неведомым причинам он решил, что может занять 8 из 20 Гб системного раздела!
Прошерстив данный вопрос в интернете удалось выяснить, что в последних версиях ОС Microsoft Windows (начиная с Vista и Server 2008 по сей день) заботливые разработчики придумали для нас одну интересную штуку. Оказывается, теперь при каждом обновлении все старые копии обновленных системных файлов сохраняются. Как не трудно догадаться, как раз в злополучной папке winsxs. Говорят, для совместимости. Сильно не углублялся, могу приврать, но сути это не меняет — нам предлагается смириться с тем, что:
- Папка winsxs будет расти со временем
- Размер папки по всей видимости ничем не ограничен
(что произойдет, когда закончится свободное место на системном разделе, можно только гадать) - Нет никакой возможности контролировать данный процесс и, тем более, влиять на него
С объяснением данного финомена из первых уст можно ознакомиться тут.
Кое какие попытки предпринимались пользователем koshak статье «Уменьшение размеров папки winsxs»
Предполагается, что все мы взрослые и ответственные люди и в состоянии самостоятельно оценить целесообразность применения данного приема на production-серверах 😉
Теория
Сводится к следующему:
- Останавливаем службы «Установщик Windows» (msiserver) и «Установщик модулей Windows» (TrustedInstaller), которые могут блокировать
- Овладеваем папкой и предоставляем себе полный доступ
- Сжимаем папку
- Возвращаем права доступа и службы в первоначальное состояние
Можете попробовать проделать это самостоятельно в режиме. Но, чтобы ничего не упустить
Практика
Все манипуляции проводим из командной строки под администратором непосредственно в папке Windows.
- Запускаем (предполагаем что ОС у нас установлена в корень C:
C: cd \Windows
- Остановим и отключим (временно) службы «Установщик Windows» (msiserver) и «Установщик модулей Windows» (TrustedInstaller).
sc stop msiserver sc stop TrustedInstaller sc config msiserver start= disabled sc config TrustedInstaller start= disabled
- Обратите внимание на пробелы после «start=» — они оставлены не случайно, без них команды работать не будут!
- Не пугайтесь, это нормально.
- Сохраним списки контроля доступа (ACLs), чтобы восстановить позже
icacls "winsxs" /save "C:\winsxs.acl" /t
- Завладеем папкой winsxs
takeown /f "winsxs" /r
- Предоставим себе полный доступ к папке
icacls "winsxs" /grant "%USERDOMAIN%\%USERNAME%":(F) /t
- Сожмем папку
compact /s:"winsxs" /c /a /i *
- Восстановим владельца папки
icacls "winsxs" /setowner "NT SERVICE\TrustedInstaller" /t
- Восстановим права доступа к папке на основании данных, сохраненных в п. 4
icacls . /restore "C:\winsxs.acl"
- Восстановим режим запуска для служб
sc config msiserver start= demand sc config TrustedInstaller start= demand
Не забываем про пробелы после «start=»
Источник: http://habrahabr.ru/sandbox/63457/