29 Aralık 2013 Pazar

Birden fazla Serverın Snapshot Alanının Değiştirilmesi



Merhabalar,

Snapshot alanının değiştirilmesi ile ilgili yazdığım  yazıya istinaden bir soru almıştım birden fazla Server ın Snapshot alanının değiştirilmesi gibi.Yazıyı yazdığım dönemde böyle bir imkan yoktu açıkçası şu an var mı pek araştırmadım. Powershell i kurcalayıp öğrenmeye çalışmak hoşuma gittiği için  şimdi kendim bir script yazmaya karar verdim. TEST ORTAMLARINIZ için aşağıdaki çok amatör script i kullanabilirsiniz :))

Script in yaptığı şey şu;

Sizden server ip sini istiyor
Kullanıcı adı ve şifre girmenizi istiyor
Bağlantı sağlandıktan sonra sizehangi server için değişiklik yapmak istediğiniz soruyor tek bir sunucu için örn;
TESTVM yazarak geçebilirsiniz. hepsini yapmak isterseniz ALLVMS yazdığınızda esx üstündeki bütün serverlara ayarı uygulayacaktır.
Son aşama olarak yeni snapshot yerinin neresi olacağını soruyor

Bilgileri girdikten sonra zaten  vSphere Client ın taks bar ında "Reconfigure" ibaresini görüyor olacaksınız.

Not: script i çalıştırabilmek için vmware powerscli ın bilgisayarınızda yüklü olması gerekli.
Not 2 : Prod. ortamlarda çalıştırmayın  başta da belirttiğim gibi powershell bilmiyorum ara ara bakıp öğrenmeye çalışıyorum :)




$Server = Read-Host "Lütfen Server adresiniz giriniz..."
Connect-VIServer -Server $Server
    $VM = Read-Host "Lütfen işlem yapmak istediğiniz VM adını giriniz..."
    $Location = Read-Host "Lütfen yeni Snapshot alanını örnekteki gibi yazınız [datastore1] foldername/subfoldername"
 
 
    IF ($VM -eq "ALLVMS")


    {$ALLVMS = Get-VM  | Get-View

   
$vmConfigSpec = New-Object VMware.Vim.VirtualMachineConfigSpec
$vmConfigSpec.Files = New-Object VMware.Vim.VirtualMachineFileInfo
$vmConfigSpec.Files.SnapshotDirectory = "$Location"
$ALLVMS.ReconfigVM($vmConfigSpec)
}

   
    ELSE

    { ($VMinf = Get-VM -Name $VM  | Get-View)
    }



$vmConfigSpec = New-Object VMware.Vim.VirtualMachineConfigSpec
$vmConfigSpec.Files = New-Object VMware.Vim.VirtualMachineFileInfo
$vmConfigSpec.Files.SnapshotDirectory = "$Location"
$Vminf.ReconfigVM($vmConfigSpec)

16 Aralık 2012 Pazar

Bozuk veya Kayıp vmdk Dosyasının Tekrar Oluşturulması


Bozuk veya Kayıp vmdk Dosyasının Tekrar Oluşturulması


Vmware in kullandığı Vmdk için kısaca sanal bir makineye ait hard disk formatı diyebiliriz.Vmdk dosyası normal şartlarda 2 adet dosyadan oluşur.(Datastore browser dan baktığımızda sadece bir adet vmdk görebiliriz)
Bunlar “vmismi.vmdk ve vmismi-flat.vmdk” dir
Normal şartlarda datastore tarafından browse ettiğimizde sadece vmismi.vmdk dosyasını görebiliyoruz.
Putty ile bağlanarak kontrol ettiğimizde ise 2 dosyayı da ayrı ayrı görebiliriz.

 TESTVM-flat.vmdk boyutundan da anlaşılacağı gibi dataların yer aldığı bölümdür.TESTVM.vmdk ise bu flat disk e ait bilgileri veren ve onu tanımlayan vmdk dosyasıdır.Diske ait  cid,parent cid,flat dosyasının yeri ve diskle ilgili diğer bilgileri barındırır.
Vmdk dosyası bir şekilde silindiğinde veya zarar gördüğünde elinizdeki vmismi-flat.vmdk dosyasını direkt olarak esx ekleme şansız bulunmamaktadır.Bu diski flat dosyasını tanımlayacak bir vmdk dosyasına ihtiyaç bulunmaktadır.

Vmdk dosyası bolzulduktan sonra datastore üzerinden browse ettiğinide vmdk dosyasının simgesinin alışmış olduğunuz vmdk simgesi gibi olmadığını görebilirsiniz
Görüldüğü gibi TESTVM.vmdk dosyası yok ve artık flat dosyasını görebiliyoruz. Flat dosyası bir descripter vmdk dosyasına sahip olmadığı için görülebilmektedir.

Sanal makineyi power on yapmaya çalıştığımızda ise aşağıdaki hata ile karşılaşacağız.
“Cannot open the disk 'TESTVM.vmdk' or one of the snapshot disks it depends on.
The system cannot find the file specified
VMware ESX cannot find the virtual disk "TESTVM.vmdk". Verify the path is valid and try again.”



Bu aşamada yapılması gereken  işlem;
Yenibir sanal disk oluşturmak (sanal disk oluştuğunda 2 adet dosya oluşacak yenidisk.vmdk ve yenidisk-flat.vmdk)
Yeni disk i oluşturduktan sonra yeni disk in vmdk dosyasını (flat olanı değil) yenidisk.vmk dosyasını TESTVM-flat.vmdk dosyamızı tanımlayacak şekilde tekrar düzenlemek.
Putty ile server a bağandıktan sonra ilgili vm in olduğu directory e gidin
Ls –l komutu ile gerçekten vmdk dosyasının olmadığını ve  flat dosyasının yani datayı barındıran diskin olduğunu doğrulayın
Bu işlem için kullanılacak yeni diski oluştururken dikkat edilmesi gereken nokta ilgili vm in config dosyası yani vmx dosyasının içerisine bakılarak. Description dosyası bozuk olan diskin tam boyutu ve sanal makinede kullanılan SCSI Controler adapter ın aynı olmasıdır

Öncelikle flat dosyasının size ını kontrol edelim
Komut: ls -l





Görüldüğü gibi flat disk in size ı 10737418240
Şimdi sanal makinenin kullandığı controller type ına bakalım
Komut: vi sanalmakineismi.vmx  veya less *.vmx | grep virtualDev yazarak gelen satırlardaki  yazıyı görebilirsiniz
scsi0.virtualDev = "lsilogic"

ihtiyacımız olan bilgileri aldıktan sonra aynı özelliklerde sanal disk oluşturacağız. Oluşturacağımız disk in boyutu flat disk ile aynı olacak fakat thin disk oluşturduğumuz içn boyutu çok daha küçük olacak.

Yeni diski aşağıdaki komut ile oluşturabiliriz
Komut :vmkfstools -c 10737418240 -a lsilogic -d thin yenidisk.vmdk
-c create etmek için
Sonraki rakam sizin disk size ınız
-a adepter type
Lsilogic olan kısım sizin adepter type ınız
-d disk in yapısını belirtmek için (thin disk oluşturacağız)
Yenidisk.vmdk  vermek istediğiniz isim

Yeni disk oluştuktan sonra yeni disk in vmdk dosyasını kaypveya bozuk olan vmdk dosyamın adı ile değiştiriyorum
Benim kayıp olan diskmi TESTVM.vmdk bu nedenle yeni disk in vmdk dosyasını bu isimle değiştiriyorum





Artık elimizde TESTVM.vmdk adında bir dosyamız var fakat bu dosyanın içerisinde tanımı olan diski bizim TESVM-flat.vmdk  i işaret edecek şekilde değiştirmeliyiz.Bunun için Vi komutu ile TESTVM.vmdk dosyasının içerisine giriyoruz ve

# Extent description
RW 20971520 VMFS "TESTVM-flat.vmdk"
Kısmındaki vmdk in ihtiyacımız olan flat disk i gösterecek şekilde değiştiriyoruz



Son olarak;
Eğer problem yaşayan disk thin provision olarak yapılandırılmadı ise aşağıdaki satırı silebilriz


 Değişiklikleri yapıp kaydettikten sonra vm i poweron yapabilriz.

Aşağıda diskin düzeldikten sonraki halini görebiliriz



Biraz sakat bir konu olduğu için elimden geldiğince detaylı yazmak istedim. Gerçi bu blog a benden başka giren varmı emin değilim J
Eğer snapshot almışşsanız yapılması gerken işlemler biraz daha değişik olacaktır bunu da ayrı bir yazıda belirteceğim




31 Ekim 2012 Çarşamba

Vmware Snapshot Yeri Nasıl Değiştirilir


Yukarıdaki gibi bir hata ile karşılaştıysanız muhtemelen snapshot aldığınız sunucunun homefolder ı (vmx dosyasının tutulduğu yer) olması gerekenden küçük boyuttaydı veya aldığınız snapshot ı çok uzun süre silmeden kullanmaya devam ettiniz J
Bu gibi durumlarla karşılaştığınızda vm in durduğu datastore u extend etmeniz veya snapshot ı silmeniz gerekecektir.
Bunun gibi durumların sebebi genellikle sanal makine için disk oluşturulurken LUN size ının tamamına yakınının kullanılmasından kaynaklanmaktadır.
Snapshot aldığınızda alınan snapshot default olarak snapshot ını aldığınız makine nin vmx dosyasının yanında oluşacaktır.
Örn;
200 gb lık bir datastore içerisinde bir vm oluştururken 199 gb lık disk verildiğinde geriye 1gb tan daha az kullanılabilir bir alan kalacaktır.Oluşturduğunuz snapshot ta bu alanda yer alacak ve vm üzerinde değişiklikler yapıldıkça bu alan şişmeye başlayacak ve yukarıdaki hata ile karşılaşacaksınız.
Bu durumun önüne geçmek için snapshot alınan yeri farklı bir datastore olarak belirleyebilirsiniz.
Default snapshot alanını değiştirmek;
  1. Esx host a putty ile bağlanın
  2. İlgili sanal makinenin vmx dosyasını bulun
    Sanal makine nin vmx dosyasının nerede olduğunu bilmiyorsanız putty ile bağlandıktan sonra vmware-cmd –l komutunu çalıştırın size host üzerinde kayıtlı olan sanal makinelerin listesini gösterecektir (esxi için vim-cmd vmsvc/getallvms )
  3. Bulduğunuz vmx dosyasının yerini not edin ve sanal makine yi shutdown edin
  4. Makineyi shutdown ettikten sonra "remove from inventory" ile makineyi envanter den kaldırın
  5. Makineyi envanterden kaldırdıktan sonra vmx dosyasını edit lememiz gerekecek bunun için putty de "vi /vmx dosyasının yolu/sanalmakineadı.vmx" şeklinde yazarak vmx dosyasının içerisine girin(az önce not ettiğimiz editleyecek olduğumuz vmx dosyasının tam yolu)
  6. Vmx dosyasınına birşeyler ekleyebilmek için "insert" tuşuna basın ve en alt satıra aşağıdaki şekilde snapshot ların duracağı yeni yeri ekleyin
  7. workingDir = "/vmfs/volumes/4f916cd9-01dd579c-e567-e41f13bfac1c/snap"
  8. yukarıdaki örnekte
    "/vmfs/volumes/4f916cd9-01dd579c-e567-e41f13bfac1c/snap" kırmızı directory deki mavi snap dosyasının içerisine snapshot dosyalarını oluşturması için gereken eklemeyi yaptık.
  9. Değişiklikleri kaydetmek için "esc" tuşuna basıyoruz hemen sonrasında
    :wq
    Yazarak değişiklikleri kaydediyoruz.
  10. Yanlış birşey yazıdığınızda yada satırları kaydırıp yanlışlıkla vmx dosyasını bozarsanız kaydetmeden çıkmak için :q! Yapmanız yeterlidir.
  11. İşlem bittikten sonra sanal makinenin vmx dosyasının bulunduğu datastore a sağ tıklayarak "Browse datastore" dedikten sonra içersinde bulunan vmx dosyasına sağ tıklıyor ve "Add to inventory" diyerek tekrar envantere ekliyoruz
  12.  

  13. Envanter ekleme sihirbazını tamamladıktan sonra sanal makinemizi power on diyerek tekrar kullanmaya başlayabiliriz.
  14. Yeni alınacak snapshotlar artık belirtmiş olduğunuz datastore içerisinde belirtilen folder içerisine alınacaktır.

     

     Not: vmdk dosyalarınızın büyüklüklerine bağlı olarak snapshot için ayırdığınız alan (datastore) büyük size a sahip disklerin yer gereksinimlerini karşılamayabilir.Snapshot için oluşturulan datastore snapshot ı alınacak olan vm in bulunduğu datastore dan block size olarak küçük ve disk size ı olarak da vmware in belirttiği alandan ufak ise snapshot alamayabilirsiniz.Ve aşağıdaki hatayı alabilirsiniz
  • "Create virtual machine snapshot VIRTUALMACHINE File <unspecified filename> is larger than the maximum size supported by datastore '<unspecified datastore>'
  • File is larger than the maximum size supported by datastore

 

 

 

 

 

14 Ocak 2011 Cuma

Esx Server Root Kullanıcısına Ssh Erişim Hakkı Verilmesi

Merhaba,
Bu makalede Esx üzerindeki  bazı  management ve troubleshoot  işlemleri için kullanmamız gereken service console a ssh erişiminin nasıl sağlanacağını anlatacağım.
Default olarak esx kurulduğunda ssh erişimi root kullanıcısına kapalı olarak gelir.Öncelikle Host un ekranında yapılacak ufak birkaç işlemle root a ssh erişim hakkı vererek remote bağlantıyı sağlayabiliriz.
Öncelikle yapmamız gereken host un ekranında  Alt-F1 tuşlarına basmak,Username ve password bilgisini girdikten sonra  aşağıdaki komut u girerek ssh servisinin config dosyasında değişikliği yapmak
nano /etc/ssh/sshd_config
Komutu girdikten sonra karşımıza config dosyasının içeriği gelecektir.
PermitRootLogin bölümünün karşısını yes olarak değiştiriyoruz.Bu değişikliği yaptıktan sonra çıkmak için Ctrl-X e basıyoruz ve ardından kaydetmek için Y  ye
basıyoruz.Kaydedeceğimiz yeri seçmek için enter a basıyoruz ve
gerekli değişikliği yapmış oluyoruz.

Değişikliğin Sağlanması için ssh servisini restart ediyoruz.Bunun için aşağıdaki komutu çalıştırıyoruz.
Service sshd restart
Komutu çalıştırdıktan sonra artık putty yada winscp ile ssh bağlantısı sağlayabilirsiniz.
Not:Bu işlem sadece root un ssh bağlantısını sağlamak için yapılır.Root yerine başka bir kullancı ile ssh bağlantısı yapabilirsiniz.Bunun için; vSphere client ile host a bağlantıktan sonra Users&Groups bölümünde mevcut yada oluşturacağınız kullanıcının özelliklerindeki  Grant shell access to this user ı işaretlemeniz yeterlidir.