26 Ağustos 2010 Perşembe

Terminal Server SSO (Single Sign On) Kullanımında Windows XP Sp3 Kullanıcı Parolasının Tekrar Sorulma Hatası

Merhabalar;

Geçenlerde başımıza gelen ilginç bir sorun (ki aslında bu bir bug) ile karşılaştık. Ortamda iki adet Windows Server 2008 Sp2 Enterprise Edition Terminal Server ve bir adet de Windows Server 2008 Sp2 Terminal Server Session Broker ve Terminal Server Licence Server rollerini üstllenen sunucularımız var ve bunların içerisinde bulunduğu farm yapısı mevcuttu. Windows XP Sp3 işletim sistemi olan kullanıcılar farm adını kullanarak ortamda ki terminal server lar üzerinde oturum açmak istediklerinde parolaları iki kez soruluyordu. Microsoft ile yapılan çalışma sonucunda bunun Windows XP Sp3 den kaynaklanan bir bug olduğu ortaya çıktı. Sebebi ise kimlik doğrulaması sırasında ilk olarak Kerberos tabanlı kimlik doğrulama yöntemi kullanılıp bu yöntemin başarısız olmasından sonra Windows XP makinenin NTLM tabanlı kimlik doğrulama yöntemine geçmemesinden kaynaklanmaktadır. Çözüm yöntemini aşağıda bulabilirsiniz.
    
NOT: Yöntem hotfix yüklenmesini gerektirdiğinden sorununuzun kaynağının kesinlikle bu konu olduğundan emin olmanızı ve belirlediğiniz bir iki makinede öncelikle test etmenizi tavsiye ederim.
Öncelikle http://support.microsoft.com/kb/953760 adresinden sisteminize uygun hotfix i indirelim ve uygulayalım. Ardından aşağıda ki registry key lerini sistemimize ekleyelim ve bilgisayarı yeniden başlatalım.

•    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa altında ki Security Packages kayıtını kontrol edelim ve yok ise tspkg değerini en alta ekleyelim.


•    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\ altında ki Security Providers kayıtını kontrol edelim ve yok ise credssp.dll değerini ekleyelim.

 
Sistemimizi yeniden başlattıktan sonra kullanıcımız ile terminal server üzerinde tekrar oturum açmayı deneyelim. Sorun giderilmiş olacaktır.

Faydalı olması dileğimle…

M. Hakan CAN

4 Ağustos 2010 Çarşamba

Hyper-V Üzerinde ki Sanal Makinenin Disk Boyutunun Küçültülmesi (Shrink Volume)

Sanal makinelerimizin disklerini ihtiyaç durumunda rahatlıkla büyütebiliyoruz. Peki baştan ayarladığımız boyutun aslında o makine için gereksiz büyük bir disk boyutu olduğunu farkettiğimizde ne yapabiliriz. Bu makalemde sizlere sanal makinelerimizin disk boyutunu nasıl küçültebileceğimizi anlatmaya çalışacağım. Öncelikle sanal makinelerde kullanılabilinen disk tiplerinden bahsetmek istiyorum. Sanal makinelerin diskleri fixed disk, dynamic disk ve differencing disk olmak üzere üç tip diskten oluşur. Disk tiplerine aşağıda kısaca değinmek istiyorum.
  • Fixed Disk: Sanal makinemizi diski daha sonra ekle diyerek oluşturduktan sonra özelliklerinden yeni disk ekle seçeneği ile sanal makinemize ekleyebiliriz. Bu disk tipinde başta belirlediğimiz disk boyutunun tamamı oluşturulur. Bu tip diskler dinamik disklere oranla çok daha performanslıdırlar. Eğer başta atanan boyut büyük gelirse Dynamic Disk e çevrilip çeşitli araçlar kullanılarak diskin ilk boyutu küçültülebilir.
  • Dynamic Disk: Sanal makinemizi oluştururken disk de oluşturduysak otomatik olarak Dynamic Disc formatında olacaktır. Sanal makinenin diski için kullanılmak istenen alandan çok daha az bir alan kaplar ve belirlenen boyuta ulaşana kadar büyür. Dilenirse daha sonra fixed disk şekline çevrilebilir. Performansı fixed disk türüne göre daha düşüktür. Ayrıca disk dosyası veri yazıldıkça büyüyeceğinden fiziksel diskin fragmante olmasına sebep olur ve bu da performansı olumsuz etkiler. Dinamik disk kullanımında ki başka bir problem de yetersiz disk alanı sorunudur. Bu tarz bir sorun ile karşılaşmamak için sanal makinelerin disklerinin barındırıldığı bölüm üzerinde boş disk alanı mutlaka kontrol edilmelidir. Aslında Microsoft bunu da düşünmüş ve belli aralıklarla disk üzerinde ki boş alan taranır. Eğer boş alan 2 Gb ın altına düşmüş ise Event Log a Warning mesajları düşmeye başlar. Eğer boş alan 200 Mb nin altına düştüyse o disk alanını kullanan sanal makineleriniz veri kaybı yaşamamanız için sistem tarafından otomatik olarak durdurulur ve “Paused Critical” olarak etiketlenirler. Dinamik diskler dilendiğinde fixed disk e çevrilebilir.
  • Differencing Disk: Bu disk tipini örnek ile açıklamak en doğrusu olacak. Örneğin kendinize içerisinde işletim sistemi ve uygulamaların hazır olduğu bir sanal disk oluşturdunuz. Ardından bu sanal disk üzerinden yeni makineler oluşturmak istiyorsunuz. Burada devreye Differencing Disk giriyor. Yeni sanal makinenizi oluşturuyorsunuz ve disk olarak Differencing Disk ekliyorsunuz ve bu diskin sahibi olarak da önceden hazırlamış olduğumuz diski gösteriyoruz (Bu işlemden önce esas diskimizin başına bir aksilik gelmemesi için diskimizi Read-Only konumuna getirmemiz faydalı olacaktır). İstediğimiz kurulumları yaptıktan sonra dilersek Differencing diski sahibi olan disk ile birşelştirebileceğimiz gibi (Merge) bu diskten yeni bir vhd dosyası da üretebiliriz. Differencing diskler de dynamic diskler gibi diskte az alan kaplarlar ve veri yazıldıkça büyürler ki bu depolama alanında ki boş yer miktarının kontrol edilmesini gerektirmektedir.
NOT: Yapılan işlemler sanalmakinenizin diski üzerinde işlem yapılmasını gerektirdiğinden ve oluşabilecek bir sorun sonucu sanal makineniz geri döndürülemez duruma gelebilir. Bu nedenle herhangi bir işlem yapmadan önce sanal makinenizin yedeğini almanızı şiddetle tavsiye ederim.
NOT: İşlemlerin yapılabilmesi için disk üzerinde snapshot bulunmamalıdır.

Küçültme işlemini yapacağımız sistem Windows Server 2008 R2 işletim sistemi çalıştıran ve sistem diski boyutu 15 Gb olan sanal makine kullanacağız. Windows Server 2008 R2 disk büyütme yanında disk shrink özelliğini de sistem içerisinden desteklemektedir (Bu destek ilk olarak Windows Vista lar ile sunulmaya başlandı). Ancak bu işlemi desteklemeyen işletim sistemlerinde (Windows Server 2003 gibi) aynı işlemin nasıl yapılacağını makalemin ilerleyen bölümlerinde anlatmaya çalışacağım. Burada unutulmaması gerek ise sanal makinemizin disk boyutunu küçültebilmemiz için kullanacağımız Vhd Resizer programına disk üzerinde silebileceği fazla alanı sağlayabilir durumda olmamızdır. Shrink işlemini de bu nedenle yapıyoruz. İşletim sistemi ihtiyacı olan alan dışında ki alanı Unallocated olarak sınıflandıracağız ve böylece biz de bu alanı silerek diskimizin boyutunu küçültmüş olacağız.
 
Windows Server 2008 R2 işletim sistemini 15 Gb lık C sürücüsüne kurdum. Ardından bu sunucuya başka rol eklemeyeceğim için disk boyutunu küçültmeye karar verdim. Sanal makinemizin disk durumunun ekran görüntüsü aşağıda ki gibidir.


Makalemin başında belirttiğim gibi Windows Server 2008 R2 işletim sistemi shrink volume özelliğini desteklemektedir. Bunu da hehangi başka bir araca ihtiyaç duymadan Disk Management konsolu üzerinde yapılmasına olanak tanır. Ancak bu işlemde Windows’ un belirlediği en düşük değerin altında bir küçültme işlemi yapamamaktayız. İşlemi gerçekleştirmek için diskimize sağ tıkladıktan sonra Shrink Volume seçeneğine tıklayalım. Ekran görüntüsü aşağıda ki gibidir.

Bu seçenek bize disk üzerinde en fazla ne kadarlık bir alanı boşa çıkarabileceğimizi gösterecektir. Bu değerden daha az bir alanı ayırabiliriz ancak daha fazla alanı ayırmamız mümkün değildir. Ekran görüntüsü aşağıda ki gibidir.
Burada ki boyuta dokunmadan Shrink komutunu verdiğimizde işlem başlatılacaktır. İşlemin sonucunda Disk Management konsolunda ki görüntü aşağıda ki gibi olacaktır.
 
 
Disk üzerinde kullanılmayan boş bir alan oluşturduğumuza göre artık Vhd Resizer yazılımı ile sanal makinemizin disk boyutunu küçültebiliriz. Vhd Resizer programını http://vmtoolkit.com/files/default.aspx adresinden indirip kurmamız yeterli olacaktır. Kurulumun ardından Start-->All Programs--> vmToolkit yolunu takip ederek Vhd Resizer programını çalıştıralım. Programı çalıştırdığımızda karşımıza program arabiriminden önce bizden üzerinde işlem yapacağımız vhd diskin yerini soran bir iletişim kutusu çıkacaktır. Ekran görüntüsü aşağıda ki gibidir.
İletişim kutusunda VFORCEADDC sanal makinemizin sistem diski olan VFORCEADDC.vhd disk dosyasını seçip Open butonuna tıklayalım. Karşımıza aşağıda ki ekran görüntüsü gelecektir.
 
 
Yukarıda ki ekran görüntüsü üzerinde konuşmak gerekirse, Source Vhd to Resize bölümünde disk boyutunu küçültmek istediğimiz sanal makinemizin diskini görüyoruz. Hemen altında da Type bölümünde diskin türü olarak Fixed görülmekte. Dilersek işlem sırasında disk tipinide değiştirebiliriz. Size(mb) bölümünde ise seçtiğimiz diskin şu anki boyutunu görmekteyiz. Destination Vhd bölümüne de aynı diskin boyutu küçültüldüğünde hangi isimle ve nereye kayıt edileceğini belirleyeceğiz. Diski aynı sunucu da kullanacağımız için yeni diskin yerini de aynı klasör olarak seçiyoruz. Ancak orijinal diskten farklı isimli olması amacıyla disk dosyasının adını VFORCEADDC_C.vhd şeklinde belirleyelim. Yeni diskimizin tipini de Fixed seçtikten sonra New Size bölümünde diskin boyutunu Min:8 gb değerinden büyük olarak 9 gb olarak belirleyelim. İşlemi başlatmadan önceki son durumun ekran görüntüsü aşağıda ki gibi olacaktır.
 
Resize butonuna tıkladığımızda program sector sector işlemi gerçekleştirecek ve işlem tamamlandığında yeni diskimizin boyutu 9 Gb olarak belirlenecektir. Ekran görüntüsü aşağıda ki gibi olacaktır.

Diskimizin boyutunu küçülttüğümüze göre bunu sanal makinemiz de eski diskin yerine eklememiz gerekiyor. Bunun için sanal makinemizi kapatık Settings bölümünden özelliklerini açıyoruz. Karşımıza aşağıda ki gibi bir görüntü gelecektir.


Burada Remove diyerek eski diski sanal makinemizden ayırıyoruz. Ardından karşımıza gelen ekranda Add diyerek disk ekleme işlemine başlayalım. Disk eklemek için Browse butonuna tıklayıp VFORCEADDC_C.vhd diskimizi gösterelim ve OK diyerek işlemi tamamlayalım. Ardından Start butonu ile sanal makinemizi çalıştıralım. Sanal makinemiz açıldığında Disk Management konsolunda aşağıda ki ekran görüntüsü ile karşılaşacağız.


Burada sistem diskimizin 8.08 gb olduğunu ve boş alan olarak da 841 Mb bulunduğunu görüyoruz. Hatırlarsak Vhd Resizer programında diskimizin boyutunun en az 8 Gb olabileceği belirtiliyordu ve biz de 9 Gb olacak şekilde işlemi gerçekleştirmiştik. Boş alan bundan kaynaklanmaktadır. Yine Disk Management konsolumuzu kullanarak ilgili boş alanı sistem diskimize katabiliriz. Bunun için C diskimize sağ tıkladıktan sonra Extend Volume seçeneğine tıklamamız yeterli olacaktır. Ekran görüntüsü aşağıda ki gibidir.


Karşımıza Extend Volume işlemini gerçekleştireceğimiz sihirbaz gelecektir. Hazırgelen değerlerde herhangi bir değişiklik yapmadan Next diyerek ilerlediğimizde işlemimiz gerçekleştirilecek ve boş alan C sürücümüze katılacaktır. Disklerimizin son durumunun ekran görüntüsü aşağıda ki gibi olacaktır.


Shrink Volume destekleyen bir işletim sistemi ile yukarıda ki adımları takip ederek sanal makinemizin sistem diskinin boyutunu küçültebildik. Peki işletim sistemimiz Shrink Volume özelliğini desteklemiyorsa bu işlemi yapabilir miyiz? Yapabilirsek nasıl? Sorularının cevabını makalemin bundan sonraki bölümünde cevaplamaya çalışacağım.
Bu sefer kullandığımız işletim sistemi Windows Server 2003 R2 ve kendisi Exchange Server olarak çalışıyor. Sistem diski Dynamic disk olarak yapılandırılmış durumda ve şu an ki boyutu da 3 Gb ancak diskin orijinal boyutu 10 Gb. Aşağıda ki ekran görüntüsünde durumu görebiliriz.
 

Windows Server 2003 Volume Shrink özelliğini desteklemiyor. Ancak bu yapacağımız iş için engel teşkil etmiyor. WinPE içerisinde bulunan diskpart uygulaması disk shrink özelliğini destekliyor. Eğer elinizde WinPE cd si yok ise hazırlamak için http://www.cozumpark.com/blogs/windows_server/archive/2010/01/17/windows-preboot-pe-environment-cd-si-haz-rlamak.aspx adresinde ki makaleden faydalanabilirsiniz.
Düzenleme yapılmadan önce Disk Management konsolunda diskin görünümü aşağıda ki gibidir.


Sanal makinemize WinPE cd imajını bağlayalım ve sistemimizi cd den açalım. Sistem açıldığında karşımıza gelen ekranda diskpart komutunu vererek diskpart uygulamasını başlatalım. Ekran görüntüsü aşağıda ki gibi olacaktır.


Komut satırında list volume komutunu vererek sanal makinemizde ki diskleri listeleyelim. Ardından boyutunu küçülteceğimiz C diskini select volume 1 komutunu vererek seçelim. Ekran görüntüsü aşağıda ki gibidir.

Ardından diskimizde en fazla ne kadarlık bir küçültme yapabileceğimizi bulabilmek için shrink querymax komutunu kullanalım. Çıktısı aşağıda ki gibi olacaktır.
 
 
Diskimizin boyutu 10 Gb idi ve yaklaşık 5 Gb i boş durumda bulunuyordu. Buradan itibaren eğer direk shrink komutunu kullanırsak diskimiz en fazla 4396 Mb kadar küçülecektir. Ancak istersek shrink desired= komutu ile diskimizi (N değeri 4396 Mb dan küçük olmak kaydı ile) belirlediğimiz bir boyut kadar da küçültebiliriz.
 
Bu işlemlerin ardından shrink komutunu verdiğimizde “DiskPart encountered an error: The parameter is incorrect.” hatasını alıyorsanız bu işlemi yapmadan önce diskinizi defragmante etmeniz gerekecektir. Çünkü diskpart diskinizin boyutunu küçültürken sadece boş alanı küçültebilir. Eğer o alan üzerinde bir veri var ise ve taşınamıyorsa yukarıda ki hatayı alabilirsiniz. Peki defragmantasyonu nasıl giderebiliriz. Maalesef Windows ile birlikte gelen disk defragmenter çok başarılı değil ve boş alanın tamamını düzenleyemiyor. Bunun sebeplerinden birisi o an kullanımda olan dosyalar ve pagefile bölümünün defragmantason sırasında taşınamadığından göz aradı edilmesi. Windows Disk Defragmenter ile disk aşağıda ki gibi gözüküyor.
 

Yukarıda ki alanları düzenlemek için iki uygulama kullanacağız. Bunlardan ilki System File alanının (Yeşil alan) defragmantasyonu için Sysinternals ın ücretsiz ürünü olan System File Defragmenter uygulaması olacak. İlgili uygulamayı http://technet.microsoft.com/en-us/sysinternals/bb897426.aspx adresinden indirebilirsiniz. Uygulamayı sanal makinemizde çalıştırdığımızda ekran görüntüsü aşağıda ki gibi olacaktır.


Burada Defragment at next boot seçeneğini seçtikten sonra sistemimizi yeniden başlatalım. Sistemimiz açılırken defragmantasyon işlemi yapılacaktır. Ekran görüntüsü aşağıda ki gibi olacaktır


System File alanının defragmantasyonu bittiğinde dosyalarımızın defragmantasyonuna geçebiliriz. Bunun için kullanacağımız Ultradefrag uygulamasının taşınabilir versiyonunu http://sourceforge.net/projects/ultradefrag/files/ adresinden indirebilirsiniz. Uygulamamız komut satırından çalışmakta. İlk önce udefrag –a c: komutu ile disk üzerinde fragmantasyon analizi yapalım. Ardından udefrag –o c: komutu ile disk üzerinde ki boş alanı optimize edelim. Bu işlemin ve sonrasında Windows Disk Defragmenter da ki görüntüleri aşağıda ki gibidir.


Görüldüğü gibi diskimiz neredeyse düzgün hale gelmiş olsada işimiz henüz bitmedi. Diskimiz oldukça düzenlendi ancak swap file in yeri diskin sonuna doğru olduğundan bu disk boyutunu küçültmemizi engelleyecektir. Bunun için geçici olarak swap file seçeneğini kapatmalıyız. Bunun için My Computer--> Properties seçeneği ile açılan pencerede Advanced sekmesine gelelim. Ardından Performance bölümünde ki Settings butonuna tıklayalım. Açılan yeni pencerede ise tekrar Advanced sekmesine geçelim. Aşağıya doğru bulunan Virtual Memory bölümünde bulunan Change butonuna tıklayalım. Açılan Virtual Memory penceresinde No Paging File seçeneğini seçip Set butonuna tıklayalım. Değişikliklerin geçerli olması için açık olan tüm pencereleri OK butonuna tıklayarak kapatalım ve sistemimizi yeniden başlatalım. Sistemimiz yeniden başladıktan sonra komut satırında udefrag c: komutunu kullanarak diskimizi defragmante edelim. Swap file seçeneği kapandıktan ve komut satırında işlem uygulandıktan sonra diskin ekran görüntüleri aşağıda ki gibi olacaktır.


Yukarıda ki görüntülerde diskimizin oldukça düzgün ve bitişik nizama geldiğini görebiliriz :o). Artık diskimizin boyutunu küçültmek için WinPe ile açıp diskpart uygulamasını kullanabiliriz. Uygulamanın ekran görüntüsü aşağıda ki gibi olacaktır.


İşlemimiz başarıyla tamamlandığına göre sistemimizi normal olarak açabiliriz. Sistemimiz açıldığında sistem ayarlarının değiştiğini belirterek makinenin yeniden başlatılmasını isteyecektir. Sanal makinemizi yeniden başlattığımızda diskimizin ekran görüntüsü aşağıda ki gibi olacaktır.


Diskimiz üzerinde boş alanı oluşturduğumuza göre VhdResizer ile bu alanı silebiliriz. VhdResizer uygulamasını http://vmtoolkit.com/files/default.aspx adresinden indirebilirsiniz. Uygulamayı sistemimize kurduktan sonra Start-->All Programs-->vmToolkit yolunu takip ederek çalıştıralım ve açılan iletişim penceresinde sanal makinemizin diskini seçelim. Açılan pencerede yeni diskimiz için bir ad belirleyelim (bunu daha sonra değitirebiliriz). Diskimizin yeni boyutunu belirledikten sonra resize butonuna basarak işlemi başlatalım. Ekran görüntüleri aşağıda ki gibi olacaktır.


İşlem tamalandıktan sonra oluşturulan yeni diski sanal makinemizin ayarlarında eski diskin yerine ekleyerek sanal makinemizi açalım. Amacımıza ulaştığımızı görebileceğimiz Disk Management bölümüne baktığımızda ekran görüntüsü aşağıda ki gibi olacaktır.


Windows Server 2008 R2 de çok kolay olan işlem Windows Server 2003 üzerinde de bir miktar çabanın ardından başarılı bir şekilde gerçekleştirilebiliniyor. Bu makalemde sizlere sanal makinelerimizin disk boyutunu nasıl küçültebileceğimizi anlatmaya çalıştım. Faydalı olması dileğimle…
 
NOT: Yapılan işlemler sanalmakinenizin diski üzerinde işlem yapılmasını gerektirdiğinden oluşabilecek bir sorun sonucu sanal makineniz geri döndürülemez duruma gelebilir. Bu nedenle herhangi bir işlem yapmadan önce sanal makinenizin tam bir yedeğini almanızı şiddetle tavsiye ederim.
 
M. Hakan CAN