Windows 2008: WinSXS dizini kontrolsüz bir şekilde büyüyor, sunucuyu engelliyor


62

Bir istemci için Windows 2008 Server ile (uzaktan barındırılan) sanal bir Sunucu çalıştırıyorum. Başlangıçta, 10 GB boş alana sahipti. Birkaç hafta boyunca - web tabanlı bir soket sistemi kullanarak normal çalışma dışında makinede hiçbir şey yapılmadığı sırada - Windows, rezil "winsxs" dizinini o kadar doldurmaya başladı ki sonunda dolu ve biz başka 5 GB sipariş etmek zorunda kaldı. Şimdi, üç hafta sonra, bu 5 GB da winsx'ler tarafından tüketildi ve yine de makinede çalışamıyorum. Winsxs şimdi 8 GB büyük, Windows dizininin 5 GB büyüklüğünde.

Web'de aynı sorunu tanımlayan çeşitli kaynaklar buldum. Görünüşe göre, Windows 2008 normal güncelleme sürecinde indirdiği tüm DLL'ler için tüm dil sürümlerini saklar. Sadece oradaki şeylerin silinmesi, hayati öneme sahip bileşenleri içerdiği için ölümcül tehlikelidir. Artık gerekmeyen dosyaları tanımlamak ve kaldırmak için herhangi bir araç veya talimat bulamadım.

Ne yapabilirim? Bu normal davranış mı ve eğer öyleyse, eşit derecede sınırlı alana sahip diğer sunucular nasıl yönetiliyor? Kapatıp açabileceğim bir şey var mı?

Önceden tanımlanmış sunucu rollerinden yalnızca "Dosya hizmetleri" (veya ingilizceye ne denirse, bu bir İsviçre sunucusu) etkinleştirilir. Ek olarak, Apache, mySQL ve Subversion yazılımlarını yükledim. Otomatik güncellemeler etkinleştirildi.

Düzenleme: Sorun devam ediyor.

Not: WinSXS dizininin esas olarak sembolik bağlantılardan oluştuğunu ve kullanıcıların genellikle boyutlarına bakarak paniğe kapıldığını biliyorum. Yine de, 15 GB'lık alanın altında, programlar ve veriler tarafından kullanılan 1,5 MB'im var ve hiçbir şey kalmadı. Lanet makineye bile erişebildiğime sevindim. * Windows pencereleri tarafından 24 saat içinde doldurulan 1 GB veriyi zaten serbest bıraktım. Bir korku filminde olduğu gibi. Ne denedim:

  • SP2'yi (compcln.exe ile birlikte gelir) yüklemek bir seçenek değildir, çünkü disk alanı bunun için bile yeterli değildir.
  • SP1 zaten sisteme birleştirilmiş olduğundan, makinede vsp1clean.exe yok. Aslında, hiçbir yerde * cln.exe adında bir dosya yoktur.
  • Orada hiçbir gölge kopyalar. Gölge kopyalar etkin değil.
  • Söyleyebileceğim kadarıyla aktif sistem geri yükleme noktaları yok.
  • Etkinleştirilen tek sunucu rolü "dosya sunucusu" dur.
  • Standart "temizleme" işlevi (C: sürücüsüne sağ tıklayın), çöp içeriği ve geçici internet dosyalarında şaşırtıcı bir 2 MB sunuyor.
  • Çevresindeki "temizleme winsxs" komut dosyalarından birini kullanmak benim için bir seçenek değil, hepsi çok gölgeli görünüyor. Bu sorunu gideren doğrudan Microsoft'tan hiçbir şey bulamıyorum.

Sonunda bunu çözdün mü?
UpTheCreek

@UpTheCreek aslında, ne yazık ki, hayır! Sağlayıcı bize VPS'de Windows Lucky'nin doldurmadığı 5 GB ek alan verdi. Ancak, Windows dizini hala 20 GB kaplar. Sözleşme yakında bitecek ve ev sahipliği yapan şirketleri değiştireceğiz.
Pekka 웃

Yanıtlar:


24

WinSxS dizini, gerçek dosyalar yerine fiziksel dosyalara Sabit Bağlantılar kullandığından, Explorer tarafından bildirilen alanı hemen hemen kaplamaz. Explorer sadece sabit bağlantıların boyutunu bildirirken sorun yaşıyor.

Disk Alanı hakkındaki bu makalenin (burada http://aspoc.net/archives/2008/11/20/winsxs-disk-space-and-windows-7/ adresinde referans alınmaktadır ) WinSxS dizini hakkında harika bir açıklaması vardır.

Gerçek disk kullanım probleminizle ilgili olarak - Oldukça biraz yardımcı olması gereken eski hizmet paketlerini ve düzeltme dosyalarını temizleyebildiğinizi görmek için COMPCLN.EXE dosyasını çalıştırmayı deneyebilirsiniz. Ayrıca başka bir şey olup olmadığını görmek için herhangi bir kayıt dizinine bakardım.


Bu kulağa hoş geliyor, ancak Windows dizini aslında> 12GB tüketiyor gibi görünüyor (15 GB'lık bir alan, programlar ve çalışan veriler 2,5 GB'lık bir alan kaplıyor ve yer kalmadı). Compcln.exe 2008'de mevcut değil, orada benzer bir komut bilen var mı?
Pekka 웃


SP2 kulağa ilginç geliyor, ancak sunucu çok dolu, hatta yükleyemiyorum. Sağlayıcıdan birkaç gün daha ek alan istemiştim, ancak geçmişte çok yardımcı olmadıkları kanıtlandı. Bu gerçekten rahatsız edici ve ciddi sorunlara neden oluyor. Bir ödül açıp bazı ekran görüntüleri ekliyorum.
Pekka 웃

Makineyi yeniden denemenin ve güncellemeleri çalıştırmanın sizin için bir seçenek olmadığını tahmin ediyorum.
blueberryfields

Sadece en son çare olarak, her şeyi ayarlamak için çok fazla yatırım yaptım ... Muhtemelen çözerdi, ama etrafta dolaşmaktan çok mutlu olurum.
Pekka 웃

18

Ben de seninle aynı gemideydim. 5 yepyeni 2008 VM'm vardı ve geçen yıl boyunca gittikçe daha fazla disk alanı gerektirdiklerini gördüm. Bana windrstat ile örnek vereyim.

İşte yepyeni bir 2008 sunucusunun ekran görüntüsü :

alt metin 3.8 GB winsxs dizini

Şimdi burada 2008 prodüksiyon sunucusunun ekran görüntüsü alındı :

alt metin 5.4GB winsxs dizini

Sonunda yepyeni bir 2008R2 sunucusunun ekran görüntüsü : alt metin 5.4GB winsxs dizini

Söyleyebileceğim, winsxs dizini kesmek için bir yolu yoktur. WinSxS Windows Yan yana anlamına gelir. Etkilerini azaltmaya çalıştıklarında DLL cehennemi (yani Bağımlılıklar) Microsoft, sisteminizde yüklü olan her DLL dosyasının her birini winsxs dizininde tutmaya karar verdi.

Bu iki şey anlamına gelir (bence):

  1. Winsx'lerde bazı sert linkler olsa da, sadece hard linkler mevcut DLL'lerde olmalıdır. Başka bir deyişle, sistemde aktif olan mevcut DLL'ler bu winsxs klasörüne geri bağlanmıştır.

  2. DLL'lerin önceki sürümlerinin tümü hala kullanılabilir durumda ve winsxs dizininde yedeklenmiştir. Tüm örneklerde görebileceğiniz gibi, winsxs dizini gerçekten "çoğunlukla sert linkler" olsaydı, mevcut disk kullanımınızın% 50'sinden daha fazlasına sahip olamazdı. Şimdi winsxs dizininin "çoğunlukla sert linkler" olduğu doğru olsa bile,% 50 kullanımın tümü C: sürücünüzün tekrar winsxs dizinine bağlandığı anlamına gelir.

Her şeyi denedim. Eski dosyaları silmek, yamaları kaldırmak, "$" düzeltme eki dizinlerini silmek. Her şey.

Sonunda tüm sunucularımdaki tüm C: bölümlerini her biri 30 GB olacak şekilde büyütdüm. Bu sadece geçici bir çözüm olacaktır, çünkü winsxs dizini büyümeye devam edecektir. Yine de, NTFS’nin en son sürümü, bölümlerinizi yeniden başlatmanıza gerek kalmadan büyütebilmenizi sağlar. Ne kadar uygun.

WinSxS sadece can sıkıcı bir dizin değil, tüm Windows geliştiricileri için yeni bir metodoloji. WinSxS yakın zamanda bir yere gitmeyecek. Geliştiriciler WinSxS kullanıyorlar ve yeni bir DLL arşivleme metodolojisi veya bağımlılık çözümlemesi mevcut olana kadar orada olmalarına bağlı olarak çalışıyorlar.

Her yeni 2008/7 / Vista kutusundaki pencerede 30GB C: neredeyse doğru. Yamalar, kayıtlar ve birkaç uygulama için yeterli alan (şimdilik).

Birisi tüm bunları anlayana ve yama öncesi DLL'leri hileli tezahürlerle yeniden etkinleştirmeye , yani saldırı / istismar vektörlerine dönüşmeye başlamadan bekleyemem .


1
Teşekkürler, WinSXS zayıflama mucizevi bir şekilde gelmezse, bu olayı yapan sadece ben olmadığımı bana bildirdiğim için bu cevabı kabul edeceğim. Çok kötü bir çözüm gibi görünmüyor. 30GB'a yükseltmek, harici ücretli barındırma olduğu için haklı gösterilmesi zor olacaktır. Belki de 2003'e indirgemeliyim - ama bu çok aptalca ...
Pekka 웃

1
Evet, bu konuda da heyecanlanmadım. Winskss, zor bağlantıların bir koleksiyonu değil gibi görünüyor. Aksine, sistemin geri kalanına sabit bağlantılar yansıtır, ancak bununla ilgili bazı anlaşmazlıklar var gibi görünüyor. winvistaclub.com/f16.html ...
Joseph Kern

Ayrıca, örnekler için kullandığım hiçbir sunucuda etkin bir sunucu rolünün olmadığını da belirtmek isterdim. Üretim sunucusu bir apache tomcat sunucusudur. Ve sürücü alanını bulmak için kullanılan bir programdır windirstat.info
Joseph Kern

5
MS, minimum disk gereksinimi olarak 32 GB belirtir
Christopher_G_Lewis

5

15 GB benim deneyimimden kesmiyor, özellikle de 64 bitlik bir makine varsa ...

VPS diskini ve ardından sistem bölümünü genişletmek, herhangi bir şeyi tekrar yüklemek zorunda kalmadan kolay olmalı, ancak pahalı. Modern bir Windows Server VPS için 60 GB'den daha az sistem diski sunmak, ilk başta ~ 30GB bir süre kesebilse bile düşünülmüş gibi görünmüyor: 7

32 bitlik bir kuruma gitmek, bir miktar ek yükü kaldıracak ve bir Sunucu Çekirdeği için bir çok şey kaldırılacaktır. Svnserve, dfs, baskı sunumu ve benzeri işlemleri yapan ve düzenli olarak güncellenen 32 bit Server 2008 Core dosya sunucum yaklaşık 5 GB'tır ... 64 bit Sunucu 2008 Standardım ise web uygulamaları (asp.net ve php kullanarak IIS) şu anda 30 GB alıyor. Bu metriklerin ikisi de elbette veri depolarını / bölümlerini hariç tutuyor, yalnızca Windows sistemi ve her ikisi de şu anda 10 ila 35 GB arasında bir şey alan 64 bit Server 2008 sistem diskleri var.

Yüklediğiniz her araç, yükseltme veya uygulama winsxs dizinini büyütür ve sistemdeki bağımlılıkların diğer araçlar tarafından kullanıldığını düşünebileceği için, malzemelerin kaldırılması her zaman winsx'ler üzerinde etkili olmaz.


5

Bu muhtemelen sizin için çok geç ve yalnızca Vista deneyimine dayanıyor, ancak:

  1. 'Çoğunlukla sert bağlantıları olduğu için klasör göründüğü kadar büyük değil' diyenlere inanmayın - bu doğru, ancak disk alanınız bittiyse, çok büyüktü.
  2. Şimdiye kadar önerilmiş olan tek “tedavi”, şişirmeyi klasöre ekleyen uygulamaları kaldırmak - suçluları bulmak için bildiğim belgelenmiş bir yol yok.
  3. Tatminkar cevaplar bulamadığımdaki 'tedavim', örneğin en büyük (ve istenmeyen) klasörleri acımasızca kaldırmaktı.

    • Her biri ~ 300kB'de 'Microsoft doğal dil araması' nın 6 sürümü
    • Asla kullanmayacağım birçok şark fontu (bazen bunlardan 6 vns, çoğunlukla aynı)
    • vs vs.

İyi bir yedekleme (resim) ile başladığınızı varsayalım, deneyin ve görün!


4

Mümkünse, WinSXS'i geçici bir çözüm olarak başka bir bölüme taşımayı deneyebilirsiniz. Bildiğim kadarıyla WinSXS'in içeriğinden kurtulmanın bir yolu yok. Bu sevimli küçük şey Vista / Win2008 operasyonunun tam kalbinde, bu yüzden ... Başka bir bölüme taşımak kadar daha iyi bir şey duymadım.

İşte bunu nasıl açıklayan bir bloga bir bağlantı: Click

Prosedürü denemeden önce tüm C: bölümünüzün tam yedeklemesini (daha iyi: bir görüntü) yapmanızı öneririm. Bunu yalnızca Vista'da denedim, Win2008 Server'da değil.


İyi fikir, ama benim durumumda (alternatif depolama alanı olmayan bir VPS) maalesef bir seçenek değil.
Pekka,

--- ve aynı resmi yapmak bir resim yapmak o kadar kolay değil - yoksa bir tane daha çekip kendi makinemde çalıştırmayı denerdim.
Pekka,

3

Ana suçlu WindowsUpdate ise, daha fazla alan satın almak veya sistem dosyası ameliyatı gerçekleştirmek için tek alternatifinizin Microsoft'un tetikleyici mutlu güncellemelerinin neden olduğu büyümeyi sınırlamak olduğunu söyleyebilirim.

Öncelikle Microsoft'a ait olmayan bir uygulama platformu kullandığınız için, muhtemelen "önemsiz" güncellemelerin% 90-95'ini aşağı itmeden yapabilirsiniz.

Bu nedenle, yapabilecekleriniz otomatik güncellemeleri devre dışı bırakmak ve ardından hangi "önemli" güncellemelerin uygulanacağı konusunda çok seçici davranmak. Yalnızca, DOĞRUDAN güvenlik planınızı tehlikeye atan güvenlik açıklarını giderenleri uygulayın. Çoğu "önemli" güncelleme muhtemelen güvenlik senaryonuz için geçerli değildir ve eğer yaparlarsa, güvenlik planınızı onlarsız yapmak için muhtemelen değiştirebilirsiniz (örn. Sunucuda IE kullanmayın, alternatif dosya servisleri kullanın, ağ güvenliğini sıkın) .


3

Eğer WinDirStat ve İşletim Sistemi'nin kendisi (sadece Bilgisayarım'ın altına bakıyor), aynı alan miktarını bildiriyorsa, boyutları sabit bağlantılar olarak yanlış sayıyorsa, bunun önemi yoktur. Eğer işletim sistemi sizin alanınız dışında olduğunu düşünüyorsa - UZAYSINIZ.

Bir Storage Server 2008 ve bir DC'de bu sorunu yaşıyorum (Server 2008). Başka program yok, ancak Windows güncellemeleri DC'ye yüklenmiş, her iki sunucu da WinSXS altında 15GB alan tüketiyor. Depolama Sunucusu C: 40GB ile HP tarafından önceden kurulmuştu, bu yüzden de bu sorundan muzdaripim. 5GB'a kadar boş alan.

Bu, değiştirilen güncellemeleri temizlemek için DISM kullanılarak Windows 8 / Server 2013'te giderildi (dism.exe / çevrimiçi / temizleme-resmi / startcomponentcleanup), bu nedenle açıkça kabul ettikleri bir sorun bu 2008.


3

Windows Server 2008 R2'de, WinSxS'i temizlemek için DISM kullanabilirsiniz, elbette bunu yaptıktan sonra güncellemeleri geri alamazsınız. İşte bir açıklama: http://www.sqlskills.com/blogs/glenn/how-to-reclaim-disk-space-in-your-windowswinsxs-directory-on-windows-server-2008-r2-sp1/

Özet olarak, aşağıdaki komutu yönetici olarak çalıştırmanız gerekir:

DISM.exe /online /Cleanup-Image /spsuperseded

Windows Server 2008'e sahip olduğunuzdan (görünüşe göre R2 değil) bunun sizin için uygun bir çözüm olmadığını biliyorum, ancak R2 için bir çözüm ararken bu soruyu buldum, bu nedenle bazı insanlar için yararlı olabilir.


bu sadece sp1 dosyalarını kaldırır, daha sonra gelen düzeltmeleri değil.
Hubert Kario

1

Birkaç öneri:

  • Takas dosyanız nerede?

  • Sorunu tekrar edip edemeyeceğinizi görmek için aynı yazılımla bir test makinesi kurun. Bu kesinlikle normal değil ve aklıma gelen tek şey, bu kutudaki bir şeyin sürekli olarak bir DLL dosyasını (ya da onun gibi bir şeyi) değiştirmesi ve bu yüzden Windows sürekli olarak onun yedeğini alıyor.

Windows 2008 yüklemesi için 15GB çok düşük bir seviyede - standart C: Windows 2008 için oluşturduğum sürücü 60 GB'tır.


15GB, sanal barındırma sağlayıcısının paketinin boyutudur ve her uzantı (10 GB’da başladık) çok pahalıdır. Bu yüzden takas dosyasını başka bir yere taşıyamıyorum.
Pekka,

Ah unuttum: Aynı sebepten, makineyi çoğaltmak o kadar kolay değil. Başka bir şey çalışmadıkça son çare olacak.
Pekka,

Yani sağlayıcıyı değiştirin.
TomTom


1

Microsoft, Server 2008 için verilen Sistem Gereksinimleri "Disk alanı: Minimum 32 Gb veya daha büyük" dir.

http://www.microsoft.com/windowsserver2008/en/us/system-requirements.aspx

Sence o alanın yarısında rahatça çalışabilir mi?


Başlangıçta 2008 Server önceden yüklenmiş bir 10GB'lık paket olan büyük bir barındırma sağlayıcısından VPS çözümü kiralıyorum. Bir şekilde bunu sağlamaları gerektiğini düşünüyorum. Büyük sağlayıcılar 10 GB veya 20 GB Windows paketlerine sahiptir: Bkz. Örneğin bit.ly/h0AZsP . Sağlayıcı tarafından benim
kiranın

Benim hatam, Server 2008 R2 SP1 gereksinimlerine bağlıyım. Server 2008 minimum 8 Gb gerektirir - microsoft.com/latam/windowsserver2008/sysreqs.mspx - ancak yine de 40 Gb'yi önerir.
TessellatingHeckler

bağlantı için teşekkürler. Ancak, işletim sistemi arasında yükseltilmiş olabilir - Ben araştıracağım
Pekka 웃

0

Kullanmak için bir seçenek - basit şeyler için kullandığınız ucuz bir VPS ise, diskte veya belirli klasörlerde NTFS sıkıştırmasını etkinleştirmeye değer:

Bu, sürücüden biraz boşluk sıkabilir. Makaleler XP için olduğunu söylüyor ancak Win7 / 2008'de aynı adımlar var:


0

Aynı problemle karşılaştım. Elbette WinSxs kısmen suçlanacak ... Ancak sorunun kısmen WinDirStat gibi dosyaların boyutlarını ve dosyalara bağlantılarını aynı şekilde sayan araçlardan kaynaklandığını düşünüyorum. Bir kavşak sadece dosya için bir işaretçidir, dosyayı oluşturan tüm blokların bir kopyası değildir.

VSS'nin bu problemde daha büyük bir suçlu olduğunu buldum. VSS'nin çok fazla disk alanı kullanıp kullanmadığını, bu alanı geri aldığını veya daha küçük bir sınır ayarladığını görmek için aşağıdaki komutları kullanın:

vssadmin listesi shadowstorage

vssadmin ShadowStorage Sil / For = C: / Açık = C:

vssadmin Yeniden Boyutlandır ShadowStorage / For = C: / Açık = C: / MaxSize =% 20

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.