Dla klienta uruchamiam (hostowany zdalnie) serwer wirtualny z systemem Windows 2008 Server. Początkowo miał 10 GB miejsca. W ciągu kilku tygodni - podczas których nic nie zostało zrobione na maszynie oprócz normalnej pracy przy użyciu internetowego systemu icket - system Windows zaczął zapełniać swój niesławny katalog „winsxs” tak bardzo, że ostatecznie dysk twardy był pełny i musieliśmy zamówić kolejne 5 GB. Teraz, trzy tygodnie później, te 5 GB zostały również zużyte przez winsxs i znowu nie mogę pracować na komputerze. Winsxs ma teraz 8 GB, reszta katalogu Windows 5 GB.
Znalazłem w Internecie różne źródła opisujące ten sam problem. Najwyraźniej system Windows 2008 przechowuje wszystkie wersje językowe wszystkich pobranych bibliotek DLL podczas normalnego procesu aktualizacji. Samo usuwanie rzeczy jest opisywane jako śmiertelnie niebezpieczne, ponieważ zawiera istotne składniki. Nie znalazłem żadnego narzędzia ani instrukcji do identyfikowania i usuwania tych plików, które nie są już potrzebne.
Co mogę zrobić? Czy to normalne zachowanie, a jeśli tak, to w jaki sposób zarządzają inne serwery o równie ograniczonej przestrzeni? Czy jest coś, co mogę wyłączyć lub włączyć?
Ze wstępnie zdefiniowanych ról serwera aktywowane są tylko „Usługi plików” (lub jakkolwiek to się nazywa po angielsku, jest to serwer szwajcarski). Ponadto zainstalowałem Apache, mySQL i Subversion. Automatyczne aktualizacje są aktywowane.
Edycja: problem występuje nadal.
Uwaga: Zdaję sobie sprawę, że katalog WinSXS składa się głównie z dowiązań symbolicznych i że użytkownicy często wpadają w panikę patrząc na jego rozmiar. Jednak z 15 GB miejsca mam 1,5 MB używanych przez programy i dane i nic nie zostało. Cieszę się, że mogę nawet uzyskać dostęp do tej cholernej maszyny. * Uwolniłem już 1 GB danych, które zostały wypełnione przez system Windows w ciągu 24 godzin. To jest jak w horrorze. Co próbowałem:
- Instalowanie dodatku SP2 (dostarczanego z plikiem compcln.exe) nie jest opcją, ponieważ miejsce na dysku nie wystarcza nawet na to.
- Na komputerze nie ma pliku vsp1clean.exe, prawdopodobnie dlatego, że dodatek SP1 został już scalony z systemem. W rzeczywistości nigdzie nie ma pliku o nazwie * cln.exe.
- Nie ma kopii w tle. Kopie w tle nie są aktywne.
- O ile mi wiadomo, nie ma aktywnych punktów przywracania systemu.
- Jedyną aktywowaną rolą serwera jest „serwer plików”.
- Standardowa funkcja „czyszczenia” (prawy przycisk myszy na dysku C:) oferuje zaskakująco 2 MB zawartości śmieci i tymczasowych plików internetowych.
- Używanie jednego ze skryptów „cleanup winsxs” nie jest dla mnie opcją, wszystkie wyglądają na zbyt podejrzane. Nie mogę znaleźć niczego bezpośrednio od firmy Microsoft rozwiązującego ten problem.
Odpowiedzi:
Katalog WinSxS nie zajmuje prawie miejsca zgłaszanego przez Eksploratora, ponieważ wykorzystuje twarde łącza do plików fizycznych, a nie rzeczywistych plików. Explorer ma problemy z raportowaniem wielkości twardych linków.
Ten artykuł na temat miejsca na dysku (wymieniony tutaj http://aspoc.net/archives/2008/11/20/winsxs-disk-space-and-windows-7/ ) zawiera doskonałe wyjaśnienie katalogu WinSxS.
Jeśli chodzi o problem z faktycznym użyciem dysku - możesz spróbować uruchomić COMPCLN.EXE, aby sprawdzić, czy możesz usunąć stary pakiet serwisowy i pliki poprawki, co powinno trochę pomóc. Spojrzałbym również na wszystkie katalogi logowania, aby sprawdzić, czy dzieje się coś innego.
źródło
Byłem na tej samej łodzi co ty. Miałem 5 zupełnie nowych maszyn wirtualnych z 2008 roku i obserwowałem, jak stale wymagają coraz więcej miejsca na dysku w ciągu ostatniego roku. Pozwól mi zilustrować za pomocą windrstat.
Oto zrzut ekranu nowego serwera z 2008 roku :
3,8 GB katalogu winsxs
Oto zrzut ekranu z produkcyjnego serwera 2008 :
5,4 GB katalogu winsxs
Wreszcie zrzut ekranu nowego serwera 2008R2 : 5,4 GB katalogu winsxs
Z tego, co mogę powiedzieć, nie ma możliwości obcięcia katalogu winsxs. WinSxS oznacza Windows Side-by-Side. Próbując ograniczyć efekty piekła DLL (tj. Zależności) Microsoft postanowił przechowywać każdą wersję każdej biblioteki DLL kiedykolwiek zainstalowanej w systemie w katalogu winsxs.
To oznacza dwie rzeczy (tak myślę):
Chociaż w winsxs są pewne twarde linki, to jedynymi twardymi linkami powinny być bieżące biblioteki DLL. Innymi słowy, bieżące biblioteki DLL, które są aktywne w systemie, są linkowane z powrotem do tego folderu winsxs.
Wszystkie poprzednie wersje bibliotek DLL są nadal dostępne i których kopia zapasowa znajduje się w katalogu winsxs. Jak widać we wszystkich przykładach, jeśli katalog winsxs naprawdę byłby „głównie twardymi linkami”, nie byłoby mowy, aby zajął ponad 50% twojego bieżącego użycia dysku. Teraz, nawet jeśli prawdą jest, że katalog winsxs to „głównie hardlinks”, 50% użycia oznaczałoby, że cały dysk C: został ponownie podłączony do katalogu winsxs.
Próbowałem wszystkiego Usuwanie starych plików, odinstalowywanie poprawek, usuwanie katalogów poprawek „$”. Wszystko.
W końcu powiększyłem wszystkie partycje C: na wszystkich moich serwerach do 30 GB każdy. Będzie to tylko tymczasowa poprawka, ponieważ katalog winsxs będzie się nadal powiększał. Dobra wiadomość, ponieważ najnowsza wersja NTFS pozwala na powiększanie partycji bez ponownego uruchamiania. Jak wygodnie.
WinSxS to nie tylko irytujący katalog, to nowa metodologia dla wszystkich programistów Windows. WinSxS nie zniknie w najbliższym czasie. Deweloperzy używają WinSxS i zależnie od tego, czy będą tam, aż do udostępnienia nowej metodologii archiwizacji DLL lub rozwiązywania zależności.
W każdym nowym pudełku Windows 2008/7 / Vista czuję, że 30 GB C: jest prawie w porządku. Wystarczająco dużo miejsca (na razie) na łatki, dzienniki i kilka aplikacji.
Nie mogę się doczekać, aż ktoś to wszystko rozwiąże i zacznie ponownie aktywować biblioteki DLL przed łatkami z fałszywymi manifestami , które stają się wektorami ataku / wykorzystania.
źródło
15 GB nie zmniejszy tego z mojego doświadczenia, szczególnie jeśli jest to 64-bitowa maszyna z pewną aktywnością ...
Rozszerzenie dysku VPS, a następnie partycji systemowej powinno być łatwe bez konieczności ponownej instalacji czegokolwiek, jakkolwiek jest to drogie. Oferowanie mniej niż 60 GB dysku systemowego dla nowoczesnego systemu Windows Server VPS nie wydaje się przemyślane, nawet jeśli ~ 30 GB może go przeciąć na chwilę: 7
Przejście na instalację 32-bitową usunie trochę narzutu, a przejście na Server Core usunie wiele. Mój 32-bitowy serwer plików Server 2008 Core, który obsługuje svnserve, dfs, print print itd. I jest regularnie aktualizowany, ma około 5 GB ... podczas gdy mój 64-bitowy Server 2008 Standard obsługuje aplikacje sieciowe (asp.net i php przy użyciu IIS) zajmuje teraz 30 GB. Oba te wskaźniki oczywiście wykluczają magazyny danych / partycje, tylko system Windows i oba są tylko przykładami Mam 64-bitowe dyski systemowe Server 2008, które obecnie zajmują od 10 do 35 GB.
Każde zainstalowane narzędzie, aktualizacja lub aplikacja powiększy katalog winsxs, a odinstalowanie rzeczy nie zawsze będzie miało wpływ na winsxs, ponieważ system może myśleć, że te zależności są używane przez inne narzędzia.
źródło
Jest to prawdopodobnie dla ciebie za późno i opiera się tylko na doświadczeniu Vista, ale:
Moim „lekarstwem” po nie znalezieniu satysfakcjonujących odpowiedzi było brutalne usunięcie największych (i niechcianych) folderów, np .:
Zakładając, że zaczynasz od dobrej kopii zapasowej (obrazu), spróbuj i przekonaj się!
źródło
Jeśli to możliwe, możesz spróbować przenieść WinSXS na inną partycję jako obejście. Według mojej wiedzy nie ma sposobu na pozbycie się zawartości WinSXS. Ta urocza rzecz jest w samym sercu systemu Vista / Win2008, więc ... Nie słyszałem nic lepszego niż przeniesienie jej na inną partycję.
Oto link do bloga opisujący, jak to zrobić: Kliknij
Sugeruję wykonanie pełnej kopii zapasowej (jeszcze lepiej: obrazu) całej partycji C: przed wykonaniem procedury. Pamiętaj, że próbowałem tego tylko na Vista, a nie na Win2008 Server.
źródło
Jeśli głównym winowajcą jest WindowsUpdate, powiedziałbym, że jedyną alternatywą dla kupowania większej ilości miejsca lub przeprowadzania operacji na plikach systemowych jest ograniczenie wzrostu spowodowanego przez aktualizacje firmy Microsoft, które powodują problemy.
Ponieważ korzystasz głównie z platformy aplikacji innej niż Microsoft, prawdopodobnie nie będziesz w stanie zepchnąć 90–95% aktualizacji „ważnych”.
Dlatego możesz wyłączyć automatyczne aktualizacje, a następnie BARDZO wybiórczo wybierać, które „ważne” aktualizacje zastosować. Stosuj tylko te, które usuwają luki, które BEZPOŚREDNIO naruszają Twój plan bezpieczeństwa. Większość „ważnych” aktualizacji prawdopodobnie nie dotyczy twojego scenariusza bezpieczeństwa, a jeśli tak, prawdopodobnie możesz zmodyfikować swój plan bezpieczeństwa, aby się bez nich obejść (np. Nie używaj IE na serwerze, używaj alternatywnych usług plików, zwiększaj bezpieczeństwo sieci) .
źródło
Jeśli WinDirStat i sam system operacyjny (po prostu zajrzał do Mojego komputera) zgłaszają taką samą ilość wykorzystanego miejsca, to nie ma znaczenia, jeśli błędnie zlicza rozmiary jako twarde łącza. Jeśli system operacyjny myśli, że brakuje Ci miejsca - BRAK MIEJSCA.
Mam ten problem na Storage Server 2008 i DC (Server 2008). Na DC nie zainstalowano żadnych innych programów, ale aktualizacje systemu Windows, oba serwery zajmują 15 GB miejsca w WinSXS. Serwer pamięci został wstępnie zainstalowany przez HP z 40 GB na C :, więc też mam ten problem. Do 5 GB wolnego miejsca.
Zostało to naprawione w systemie Windows 8 / Server 2013 za pomocą DISM do czyszczenia zastąpionych aktualizacji (DISD.exe / online / cleanup-image / startcomponentcleanup), więc najwyraźniej jest to problem, który zauważono, niestety bez żadnej innej naprawy niż aktualizacja dla tych, którzy utknęli z 2008.
źródło
W Windows Server 2008 R2 możesz użyć DISM do wyczyszczenia WinSxS, oczywiście po tym nie będziesz w stanie przywrócić aktualizacji. Oto wyjaśnienie: http://www.sqlskills.com/blogs/glenn/how-to-reclaim-disk-space-in-your-windowswinsxs-directory-on-windows-server-2008-r2-sp1/
Podsumowując, musisz uruchomić następujące polecenie jako administrator:
Wiem, że to może nie być odpowiednie rozwiązanie, ponieważ masz system Windows Server 2008 (najwyraźniej nie R2), ale znalazłem to pytanie, szukając rozwiązania dla R2, więc może być przydatne dla niektórych osób.
źródło
Kilka sugestii:
Gdzie jest twój plik wymiany?
Skonfiguruj maszynę testową z tym samym oprogramowaniem, aby sprawdzić, czy możesz odtworzyć problem. To zdecydowanie nie jest normalne, a jedyne, co mogę wymyślić, to to, że coś w tym pudełku stale modyfikuje bibliotekę DLL (lub coś w tym rodzaju), a więc system Windows stale tworzy jej kopie zapasowe.
15 GB jest bardzo mało w przypadku instalacji systemu Windows 2008 - mój standardowy dysk C: dla wersji Windows 2008 to 60 GB.
źródło
http://tech.xlab.si/2009/07/move-winsxs-folder/
Znaleziono ten artykuł, ale nigdy go nie wypróbowałem. Wygląda na to, że istnieje sposób na przejście do folderu winsxs. jeśli ktokolwiek może tego spróbować, proszę udać się i dać mi znać
źródło
Microsoft podał Wymagania systemowe dla Server 2008: „Miejsce na dysku: minimum 32 Gb lub więcej”.
http://www.microsoft.com/windowsserver2008/en/us/system-requirements.aspx
Jak myślisz, dlaczego może swobodnie pracować w połowie tej przestrzeni?
źródło
Jedną z opcji - jeśli to tylko tani stary VPS, którego używasz do prostych rzeczy, warto włączyć kompresję NTFS na dysku lub określonych folderach:
Może to wycisnąć trochę miejsca z napędu. Artykuły mówią, że dotyczy XP, ale w Win7 / 2008 to te same kroki:
Jak korzystać z kompresji plików
źródło
Natrafiłem na ten sam problem. Na pewno WinSxs jest częściowo winny ... Ale myślę, że problem częściowo wynika z narzędzi takich jak WinDirStat, które w ten sam sposób liczą rozmiary plików i połączenia z plikami. Łączenie jest tylko wskaźnikiem do pliku, a nie duplikatem wszystkich bloków tworzących plik.
Odkryłem, że VSS jest większym winowajcą tego problemu. Użyj następujących poleceń, aby sprawdzić, czy VSS zużywa zbyt dużo miejsca na dysku, odzyskaj to miejsce lub ustaw mniejszy limit:
vssadmin lista shadowstorage
vssadmin Usuń ShadowStorage / For = C: / On = C:
vssadmin Resize ShadowStorage / For = C: / On = C: / MaxSize = 20%
źródło