Главная | Работаю | Пишу музыку | Пишу стихи | Скачать | RSS | Vkontakte | Twitter | SoundCloud

Поиск по этому блогу

воскресенье, 12 сентября 2010 г.

Уменьшение размеров папки winsxs

Многие обладатели Windows Vista и 7 наверняка сталкивались с тем, что папка Windows c ходом времени разрастается как на дрожжах. Я мирился с этим до тех пор, пока сегодня на работе 40-гиговый раздел с системой не начал периодически выдавать мне сообщения о том, что свободное место на нем заканчивается. Пошли лаги и тормоза, что вполне естественно.
Я нашел один чудесный инструмент, магия которого позволяет уменьшить размер папки winsxs без потери производительности/стабильности/данных. Сначала я проделал все описанное под катом на своем домашнем буке, а сейчас для чистоты эксперимента повторю на рабочем сервере.

Немножко теории

Вообще о том, как Windows использует пространство системного диска, сказано немало, поэтому здесь буду краток.
pagefile.sys — файл подкачки. Можно отключить при большом размере оперативки, можно отрегулировать размер вручную.
hiberfil.sys — файл, в который сохраняется снимок(снэпшот) оперативной памяти при «засыпании» компьютера. В меню «Очистка диска» кроме всего прочего есть пунктик «Очистка файлов режима гибернации». Если вы этим режимом не пользуетесь, можете очищать. Если же вы регулярно «засыпаете» свой комп/ноут, то, очистив этот файл, вам придется воспользоваться вот этим советом, или попросту ввести в командной строке:

powercfg -h on && shutdown -r
Система создает точки восстановления по требованию и автоматически при установке драйверов, важных обновлений, по расписанию или по требованию. Восстановление использует до 15% пространства на каждом из дисков, на котором оно задействовано. Его можно отключить, можно через «Очистку диска» на вкладке «Дополнительно» оставить только последнюю точку восстановления для экономии места.

Про папку winsxs разработчиками была написана целая статья о том, что мол, это основное хранилище ОС, а все остальные системные файлы — это типа хардлинки, бла-бла-бла..., и да, примите как божий дар то, что со временем размер папки будет только увеличиваться.

Winsxslite

Это даже не программа — это .bat файл, уменьшающий размер папки winsxs. Он написан неким Christian Bering Boegh и распространяется «as is», что лично у меня вызвало некоторые подозрения, развеять которые мог лишь успешно отработавший скрипт. По ссылке можно найти последнюю версию скрипта (1.86) с комментариями автора.

Работа скрипта включает две фазы:

1. Поиск в папках Program Files и Windows файлов, идентичных файлам в winsxs.

2. Замена старых версий файла в winsxs жесткими ссылками на более новые версии файла.

Работать можно как с онлайн-системой (то есть с работающей ОС) так и с образом ОС.

Работа с онлайн-системой выглядит так:

— Phase 1 scan;
— Phase 1 apply;
— Перезагрузка;
— Phase 2 scan;
— Phase 2 apply;
— Перезагрузка.

Перезагрузка нужна потому, что к некоторым файлам нет доступа на изменение и скрипт создает TODOlist, данные из которого берутся после перезагрузки.
Для работы скрипта используется также конфигурационный файл config.txt, в котором указаны исключения для первой фазы (логи, temp, cache и т.п.), и языковые приоритеты для второй фазы (неиспользуемые файлы локализации заменяются на хардлинки соответствующих файлов других языков), в конфигу по умолчанию прописывается «da-dk=KEEP», что меняется на нужную строку ru-ru=KEEP, uk-ua=KEEP или другую необходимую.

Winsxslite будет работать только при наличии следующего ПО:

— SubInACL v5.2.3790.1180;
— PendMoves v1.1 and MoveFile v1.0;
— Ln — Command Line Hardlinks;
— Fcmp v1.6 — автор рекомендует пользоваться именно 1.6;
— MD5File;
— StringConverter v1.2.

Все установленные файлы я сложил в папку с winsxslite. Если кому скучно выполнять все процедуры самому, вот ссылка. Там собственно winsxslite, всё необходимое ПО плюс конфиг с исправленным da-dk. Конфиг можно удалить. При первом запуске winsxslite будет создан дефолтный конфиг и help-файл.

Результаты

Взглянув на результаты, я понял, что совершил стратегическую ошибку — я взял для теста ноутбук, который почти не использовался в работе. То есть, возраст ОС составлял от силы пару дней, за ноутбуком фактически никто не работал. На рабочем серваке результаты были более ощутимыми. Там папка winsxs похудела гигов на 8, но до тех же самых 14,8.

Автор пишет, что эксплорер не выдает реального размера этой папки, и в его утилите можно узнать истинный размер.

Как бы то ни было, оба пациента не пострадали, а winsxslite оказался отличным подспорьем в деле уменьшения объема ненасытной винды.

В заключение хотелось бы отметить, что обе фазы скрипта могут занять от одного до двух часов работы компьютера.

P.S. Статья про использование дискового пространство в Win7. Никакие сторонние программы для кастрации системы (типа vLite) не использовались.

1 комментарий:

Обсудим это, товарищи?