Spis treści:

Kategoria:Windows


Zmniejszenie rozmiaru katalogu Windows

Co jest w katalogach WinSXS i Installer

Ikona do artykułu przedstawiającego tworzenie miękkich dowiązań

Rozważania mogłyby dotyczyć dowolnych katalogów, ale skupię się tylko na tych dwóch. Przede wszystkim dlatego, że są największe i najwięcej można zyskać. Od razu muszę jednak przestrzec przed zwykłym usuwaniem ich. O ile usunięcie katalogu Installer system jakoś zniesie, o tyle usunięcie WinSXS spowoduje, że systemu operacyjnego najprawdopodobniej już nie uruchomimy. Co zawierają te katalogi?

Katalog WinSXS

Katalog WinSXS jest magazynem komponentów systemu Windows. Umieszczane są tam wszystkie pliki, które są niezbędne w procesie instalacji różnych składników systemu operacyjnego. Podczas instalowania aktualizacji, krytycznych poprawek i nowych funkcji systemu wrzuca pliki w różne miejsca, ale tworzy w tym katalogu twarde dowiązania. Twarde dowiązania można sobie wyobrazić jako trwałe skróty do struktur plików. Pliki wyglądają na zwyczajne, a system zlicza miejsce zajmowane przez te elementy pomimo tego, że są w rzeczywistości gdzie indziej. Katalog istnieje w celu umożliwienia zarządzania zainstalowanymi komponentami i funkcjami systemu operacyjnego, a także przywracania systemu po zainstalowaniu aktualizacji powodujących błędy.

Katalog Installer

Katalog Installer jest ukryty, ale również z czasem staje się bardzo duży. Jego istnienie również związane jest z procesem instalacji. Zainstalowane programy, korzystające z komponentu Windows Installer, przechowują tu dane niezbędne do poprawnej obsługi całego procesu instalacji. Cały proces obejmuje również naprawę komponentów oraz ich odinstalowanie. Rozmiar tego katalogu rośnie więc proporcjonalnie do rozmiaru i ilości instalowanych komponentów. W przeciwieństwie do katalogu WinSXS, dane w tym katalogu są rzeczywiste (domyślnie nie są tworzone żadne dowiązania).

Czy można z tych katalogów usuwać dane?

Zasadniczo nie, ale istnieją pewne techniki pozwalające na przeniesienie ich w inne miejsce, na przykład inną partycję lub drugi dysk twardy podłączony do komputera. Odradzam jednak przenoszenie katalogu WinSXS, bo może się to okazać daremne. Wszystko przez twarde dowiązania. To tak, jakbyśmy zamiast dużego filmu przenosili skrót do tego filmu. Jest dużo różnych katalogów, które znacznie łatwiej przenieść. Pokażę to wszystko na przykładzie drugiego z omawianych katalogów.

Twarde dowiązania i miękkie dowiązania

Kluczem do ograniczenia rozmiaru katalogu Windows są pewnie mało znane mechanizmy - twardych i miękkich dowiązań (złączeń). Te pierwsze w specyfikacji systemu plików nazywane są hard links, te drugie soft links lub junctions. W dużym uproszczeniu - pierwsze pozwalają na utworzenie skrótów do plików, drugie stosuje się do katalogów. Te symboliczne dowiązania realizowane są na poziomie systemu plików, w przeciwieństwie do zwykłych skrótów, które analizowane są przez graficzny interfejs użytkownika systemu Windows i są niedostępne w oknach konsolowych. Staram się ograniczyć teorię, bo podejrzewam, że celem większości jest zwolnienie miejsca na dysku systemowym, a nie jakieś poboczne rozważania. Minimalna wiedza jest jednak niezbędna. Operacja miękkiego dowiązania jest wprawdzie odwracalna, ale są inne pułapki. Przejdźmy zatem do treści właściwej.

Przykład miękkiego dowiązania

Miękkie dowiązania można wykonywać na wiele różnych sposobów: poprzez WinAPI, poprzez narzędzie mklink lub, co pokażę poniżej, przy pomocy narzędzia junction. Narzędzie to można pobrać wprost ze strony Microsoftu: [aplikacja junction]. Plik można zachować w dowolnym miejscu, ale wygodniej jest go skopiować do katalogu C:\Windows\system32 lub innego, jeżeli system zainstalowany jest gdzie indziej. Samo wywołanie programu jest dziecinnie proste:

junction.exe D:\Filmy C:\Files\Movies

Katalog będący miękkim dowiązaniem ma nieco inną ikonę w systemie plików niż zwykły katalog więc można go bez problemu rozpoznać.

Ilustracja pokazuje ikonę miękkiego dowiązania katalogu Installer w Windows
Przykład miękkiego dowiązania katalogu Installer w Windows.

Przejdźmy teraz do przykładu praktycznego.

Proces przenoszenia katalogu Installer na inny dysk

Dotarliśmy do najważniejszego podpunktu. Nie zamierzam już dłużej zwlekać z przedstawieniem prostego algorytmu:

  1. przenieś katalog Installer z katalogu Windows w inne miejsce,
  2. utwórz symboliczne dowiązanie w katalogu Windows do skopiowanego katalogu Installer

Załóżmy, że katalog Installer znajduje się w C:\Windows\Installer. Ponadto, mamy drugą partycję (lub dysk) D:\. Tworzymy tam katalog Windows (swoją drogą to dobra nazwa, wiemy przecież, że w katalogu Windows niczego nie ruszamy). Przenosimy katalog Installer do D:\Windows. Wykonujemy następujące polecenie:

junction.exe C:\Windows\Installer D:\Windows\Installer

W systemowym katalogu Windows powstanie miękkie dowiązanie do niesystemowego katalogu Windows na obcej partycji lub obcym dysku. Miękkie dowiązanie zachowuje się dokładnie tak samo jak zwykły katalog. Do katalogu symbolicznego C:\Windows\Installer można wejść, a ścieżka będzie pokazywała - a jakże - i>C:\Windows\Installer. Można również wejść do katalogu D:\Windows\Installer. Najważniejsze w tym wszystkim jest to, że fizyczne dane są na dysku D:\.

Zachowanie bezpieczeństwa

Podczas przenoszenia katalogów zachęcam do zachowania szczególnej uwagi. Jest to szczególnie istotne w przypadku katalogów systemowych. Jeżeli nie mamy pewności, można zastosować nieco bezpieczniejszą wersję:

  1. przygotuj miejsce na przenoszony katalog,
  2. skopiuj przenoszony katalog w pożądane miejsce,
  3. zmień nazwę źródłowego katalogu,
  4. utwórz symboliczne dowiązanie,
  5. po zweryfikowaniu poprawności działania usuń katalog początkowy ze zmienioną nazwą.

Algorytm jest nieco dłuższy, ale pozwala w łatwy sposób przywrócić zmiany powodujące błędy.

Wspomniałem wcześniej, że tworzenie miękkich dowiązań może zostać cofnięte. Nie zagłębiając się w szczegóły, jeżeli zajdzie potrzeba usunięcia takiego katalogu, wystarczy wywołać następujące polecenie:

junction.exe -d [Dowiązanie do usunięcia]

W praktyce mogłoby to wyglądać na przykład tak:

junction.exe -d c:\Windows\Installer

Podsumowanie

Zdarza się, że po jakimś czasie dysk z systemem operacyjnym staje się zbyt mały. Katalogi aplikacji oraz sam system operacyjny puchną do niebotycznych wręcz rozmiarów. Podobnej sytuacji można doświadczyć korzystając z dysków SSD. Większość tego rodzaju dysków ma zbyt mały rozmiar. Chcemy jednocześnie korzystać z nich w sposób najbardziej optymalny. Z pewnością umieścimy na nim system operacyjny i często używane aplikacje. A gdy miejsca braknie? Wtedy można zastosować pokazaną powyżej metodę i przenieść część katalogów na wolniejszy dysk. Nawiązując do treści artykułu: warto przenieść na wolny dysk katalog Installer, bo korzystamy z niego raczej jednorazowo, podczas instalacji. Nie warto przenosić na przykład danych aplikacji i często używanych komponentów.

Kategoria:Windows

, 2015-03-19

Komentarze:

Malenki (2016-01-15 19:03:46)
Bardzo rzadko zdarzają się artykuły, które przedstawiają zagadnienia podobne do opisanego j/w. w sposób tak maksymalnie przejrzysty i wyczerpujący, a zarazem bez zbędnego "przegadania". Doceniam Pański wysiłek włożony w powstanie tego artykułu i dziękuję bardzo za tak jasny opis zastosowania jednej z mniej znanych poleceń systemu Windows.
Dodaj komentarz
Wyślij
Ostatnie komentarze
Dzieki za rozjasnienie zagadnienia upsert. wlasnie sie ucze programowania :).
Co się stanie gdy spróbuję wyszukać:
SELECT * FROM NV_Airport WHERE Code='SVO'
SELECT * FROM V_Airport WHERE Code=N'SVO'
(odwrotnie są te N-ki)
Będzie konwersja czy nie znajdzie żadnego rekordu?