Bugün danışmanlığını yaptığımız bir müşteride, bakım çalışmaları sırasında ESXi sunucularının firmware ve ESXi güncellemeleri yapılırken bazı sanal makinelerin ESXi hostları arasında taşınamadığını ve migrate butonunun pasif olduğunu gözlemledik. Kısıtlı bir zamanımız olduğu ve ilgili sanal makineleri kapatmamız mümkün olmadığı için, aşağıda sunacağım çözüm önerisi işimize yaradı.
Bu sorun genellikle bir sanal makine yedeği alındıktan sonra yedekleme yazılımının vCenter veritabanında gerekli etiketi kaldırmamasından kaynaklanmakta.
Sorun çözümü için vCenter’a giriş yapın ve ardından ilgili sanal makineye tıklayın.
Yukarıdaki adresi kendi vcenter adresinize göre düzenleyin ve administrator@vsphere.local kullanıcısı ile oturum açın.
Karşınıza yukarıdaki ekran gelecektir.
İlk bölümde entity alanında MOID yazan kısmı not aldığımız vm-xxx olarak değiştirin.
İkinci dolduracağımız alana geçelim. Method ksımına “<method>RelocateVM_Task</method>” olacak şekilde dolduralım.
Invoke Method ile işlemi onaylayın.
Artık sanal sunucu üzerinde migrate butonu aktif olacak ve istediğiniz gibi vmotion yapabiliyor durumda olacaksınız. Bu makaleye rağmen migrate seçeneği düzelmedi ise, vCenter sunucusunun servislerini restart edebilirsiniz.
*Bu gibi durumlarda çoğu zaman ilgili makine kapatılmak süratiyle envanterden çıkarılıp, tekrar #VMware sunucuya ekleniyor. Çoğu zaman çözüm oluyor fakat envanterden remove edilmesi durumunda ilgili sanal sunucunun geçmiş task ve performans geçmişi silinmekte. Mümkün olduğunca bu tarz durumlarda sanal makineleri envanterden çıkarmadan çözüm yoluna gitmek daha sağlıklı olacaktır.
vCenter cluster’ımda sanal makine başına EVC modunu etkinleştirmeye çalışırken, EVC modunun olmadığını gördüm.
Eğer sizde yukarıdaki gibi configure sekmesinin altında EVC seçeneğini göremiyor durumda iseniz, ilgili sanal makinenin hardware seviyesini 14 veya daha üstüne yükselmeniz gerekir.
İlgili sanal sunucuya sağ tıklayın ve ardından Compatibilty menüsü altından Upgrade VM Compatibility seçeneği ile hardware level yükseltme işlemini yapın.
Bütün işlem bu kadar. Artık sanal makinenizde EVC modunu ayarlayabilirsiniz.
Vmware ESXi kurulumlarında veya upgrade çalışmalarında bizler en çok driver ve firmware uyumluluğuna dikkat etmekteyiz.
Driver ve Firmware uyumluluklarını kontrol ederken VMware Compatibility sitesi üzerinden en doğru driver’ı görmekteyiz. Fakat Qlogic HBA kartını örnek verecek olursak, birden fazla modeli bulunmakta bu kartın. Bu modeller arasında driver’lar değişebilmekte.
Doğru driverı bulmak için ilgili PCI kartın PCI ID bilgileri ile VMware üzerinde arama yapmalıyız.
PCI kartların ID’leri ESXi clie ile rahatça bulunmakta. Fakat bu makalede Dell SupportAssist çıktısı üzerinde nasıl PCI ID bulabileceğimizi göstereceğim.
Hemen sol menüden PCI Devices sekmesine geliyorum ve ilgili PCI kartımı seçiyorum. Alt kısımda görüleceği üzere PCI ID mevcut. Bu PCI ID “VID:DID:SVID:MAXSSID” den oluşmakta.
Bu değerler üzerinden VMware Compatibility IO Devices kısmında arama gerçekleştiriyorum.
Update and View Results ile doğru kart driverını buluyorum.
Görüldüğü üzere PCI kartımızı ve uyumlu sürümleri nokta atışı tespit ettik.
VMware vCenter 7.x sürümünde uğgrade sırasında “Error in method invocation Exception occurred while unzipping patch script, please retry after sometime” hatasına denk gelebilirsiniz.
Bu hata mesajı genellikle vCenter’a ip adresi ile login olunduğunu oluşmakta. Tarayıcınız üzerinde vCenter’ı FQDN ile oturum açtığınızda çözülecektir. Örnek. vCenter01.sirket.local
Aslında ilk başta bir sorun olarak görünüyor olsa bile bu bir sorun değil.
Storage bağlantısı için kullandığımız HBA adaptörlerin NVMe desteğinin gelmesiyle kartlarımızı çift görür olduk. NVMe ve SCSI protokolünü aynı WWNN, WWPN adresini kullandığı için böyle kozmetik bir durum oluşuyor.
Eğer yapınızda NVMe protokolünü kullanmıyor ve ben HBA kartlarımı çift görmek istemiyorum diyorsanız, bu kartların NVMe desteğini kapatabilirsiniz.
Bu makalede yanlışlıkla silinen bir ESXi datastore’da veri kaybı olmadan nasıl geri getirebileceğimizi göreceğiz.
Uyarı: Datastore işlemleri uzmanlık gerektiren işlemlerdir. Bir hata durumunda tüm veri okunamaz duruma gelebilir. Dikkatli olunmalıdır.
İlk olarak ortamı daha iyi anlayabilmek için, ESXi üzerinden R1-SSD-01 isimli datastore’u sileceğim. Öncelikle datastore içerisindeki dosyalara bakalım.
Görüldüğü üzere datastore içerisinde bir adet sanal sunucu ve iso klasörü bulunmakta.
R1-SSD-01 datastore’unu siliyorum.
vCenter üzerinden sunucumu seçtikten sonra Configure sekmesinden Storage Devices’a geliyorum. Burada silmiş olduğum datastore’u buluyorum ve Location kısmını bir yere not ediyorum.
VMware ortamlarındaki bir çok bilgiye tek bir ekrandan bakmak için çoğu zaman RVTolls kullanmaktayız. VMware yöneten çoğu danışman RVTools mutlaka kullanıyordur. O yüzden bugün RVTools’un ne olduğunu anlatmayacağım. Bugün RVTools sürecinin nasıl otomatikleştirilip, nasıl her sabah mail alacağınızdan bahsedeceğim.
Öncelikle RVTools otomatikleştirme sürecinde powershell scripti kullanacağız. Aslında bu powershell script’i RVTools içerisinde geliyor.
C:\Program Files (x86)\Robware\RVTools dizini altında “RVToolsBatchMultipleVCs.ps1” adında bir script var.
Bu script birden fazla vCenter’dan bilgileri çekip mail olarak almanızı sağlıyor.
Bu scripti tek vCenter için beraber düzenleyip, gerekli bilgileri gireceğiz. Ardından Windows Task Schedular ile günlük olarak çalıştıracağız.
İlk olarak C:\Program Files (x86)\Robware\RVTools dizini altında bulunan RVToolsPasswordEncryption.exe yi çalıştırıyoruz.
Burada vCenter şifremizi encrypt hale getireceğiz. (Buraya vCenter administrator şifresi yerine yeni bir kullanıcı açtıktan sonra sadece read-only yetki vermenizi şiddetle tavsiye ederim.)
vCenter read-only user şifremizi girdikten sonra verilen encrypt edilmiş şifreyi not alalım.
Daha sonrasında C:\ dizini içerisinde RVTools adında bir klasör açalım.
Aşağıdaki verdiğim powershell dosyasını inceleyelim.
# =============================================================================================================
# Script: RVToolsBatchMultipleVCs.ps1
# Version: 1.2
# Date: November, 2019
# By: Rob de Veij
# =============================================================================================================
<#
.SYNOPSIS
With this example script you can start the the RVTools export all to xlsx function for multiple vCenter servers.
The output xlsx files will be merged to one xlsx file which will be mailed
.DESCRIPTION
With this example script you can start the the RVTools export all to xlsx function for multiple vCenter servers.
The output xlsx files will be merged to one xlsx file which will be mailed
.EXAMPLE
.\RVToolsBatchMultipleVCs.ps1
#>
# Save current directory
$SaveCurrentDir = (get-location).Path
# Set RVTools path
[string] $RVToolsPath = "C:\Program Files (x86)\Robware\RVTools"
# cd to RVTools directory
set-location $RVToolsPath
# -----------------------------------------------------
# Set parameters for vCenter 1 and start RVTools export
# -----------------------------------------------------
[string] $VCServer = "10.10.10.10" # vCenter server ip adresi
[string] $User = "rvtools@vsphere.local" # read-only vCenter kullanici adi
[string] $EncryptedPassword = "_RVToolsPfsafasfas4353453fdgd=" #RVToolsPasswordEncryption.exe ile urettigimiz encrypt sifremiz
[string] $XlsxDir1 = "C:\RVTools"
[string] $XlsxFile1 = "vCenter1.xlsx"
# Start cli of RVTools
Write-Host "Start export for vCenter $VCServer" -ForegroundColor DarkYellow
$Arguments = "-u $User -p $EncryptedPassword -s $VCServer -c ExportAll2xlsx -d $XlsxDir1 -f $XlsxFile1 -DBColumnNames -ExcludeCustomAnnotations"
Write-Host $Arguments
$Process = Start-Process -FilePath ".\RVTools.exe" -ArgumentList $Arguments -NoNewWindow -Wait -PassThru
if($Process.ExitCode -eq -1)
{
Write-Host "Error: Export failed! RVTools returned exitcode -1, probably a connection error! Script is stopped" -ForegroundColor Red
exit 1
}
$OutputFile = "C:\RVTools\vCenter1.xlsx"
# ---------------------
# Mail output xlsx file
# ---------------------
[string] $SMTPserver = "10.10.10.12" # SMTP server ip adresi
[string] $SMTPport = "25" # SMTP server port bilgisi
[string] $Mailto = "support@ornek.com.tr" # SMTP server kime mail atacagimiz
[string] $MailFrom = "support@ornek.com.tr" # SMTP server maili kim atacak
[string] $MailSubject = "FirmaRVtolls"
Write-Host "Send output file by mail" -ForegroundColor DarkYellow
$Arguments = "/SMTPserver $SMTPserver /smtpport $SMTPport /mailto $Mailto /mailfrom $Mailfrom /mailsubject $Mailsubject /attachment $OutputFile"
Write-Host $Arguments
Start-Process -FilePath ".\RVToolsSendmail.exe" -ArgumentList $Arguments -NoNewWindow -Wait
# Back to starting dir
Set-Location $SaveCurrentDir
((Get-Date).ToString('yyyy-MM-dd'))
Burada değişkenleri kendi yapınıza göre düzenlemeniz gerekmekte.
$VCServer = “10.10.10.10” # vCenter server ip adresi $User = “rvtools@vsphere.local” # read-only vCenter kullanıcı adı $EncryptedPassword = “_RVToolsPfsafasfas4353453fdgd=” #RVToolsPasswordEncryption.exe ile ürettiğimiz encrypt şifremiz
$SMTPserver = “10.10.10.12” # SMTP server ip adresi $SMTPport = “25” # SMTP server port bilgisi $Mailto = “support@ornek.com.tr” # Kime mail atacağımız $MailFrom = “support@ornek.com.tr” # Mail hangi adresten gelecek $MailSubject = “FirmaRVtolls” # Mail başlığı
Bu powershell dosyasını ps1 uzantısı ile kaydettikten sonra çalıştırıp deneyelim. Eğer powershell dosyasını çalıştırırken hata alıyorsanız,
Set-ExecutionPolicy -ExecutionPolicy Bypass komutu ile doğrulanmamış scriptlere izin verelim.
Artık bu scripti Windows’un zamanlanmış görevleri ile otomatikleştirebilirsiniz. Zamanlanmış göreve eklemek için Hakan Uzuner’in yazmış olduğu makaleden yararlanabilirsiniz.
VMware esxi ortamında eğer bir datastore’u sunuculardan çıkarmak istiyorsanız, güvenli bir şekilde üzerinde çalışan bir vm vs. olmadan unmount etmelisiniz. Eğer güvenli bir şekilde datastore’lar unmount edilmeden, storage üzerinden sunucuya map’i kaldırırsa bir dizi problemler yaşamanız kaçınılmaz olacaktır. Bunlardan biride o datastore artık inactive durumda görmeniz olacaktır.
Fakat o datastore’u, storage üzerinden tekrar aynı sunucuya mapleseniz bile artık sunucu üzerinde tekrar sağlıklı mount duruma gelmeyebilir. Bunun sebebi ise o datastore’u çıkarırken üzerinde sanal sunucularınızın çalışıyor olmasıdır.
Özetle eğer VMware ortamınızda çalışan sanal sunucualrınız var ise datastore kesinlikle ilgili sunucudan ayrılmamalıdır.
Konumuza dönecek olursak, üzerinde çalışan sunucular olan datastore’un mapini storage katmanından kopardık ve datastore inactive duruma düştü.
İlk olarak aynı datastore’u sunucuya tanıtmak için, askıda kalan sanal sunucularının işlemlerini kill etmemiz gerekmekte.
Storage üzerinden disk id’sini bulun. Örnek “naa.6485cfc000000040160c5180d714aee4”
Şimdi bu datastore id üzerinde askıda kalmış sanal makineleri listeleyelim.
[root@esxi:~] esxcli storage core device world list -d naa.6485cfc000000040160c5180d714aee4
Çoğu zaman olası bir problemi çözmek için log dosyalarını okumaktayız. Özellikle ESXi sunucunuzda bir problem olduğu zaman destek aldığınız üretici sizden log dosyasını istemekte.
Bu yazımızda ESXi sunucu üzerinden nasıl log toplandığını göreceğiz.
Öncelikle ESXi sunucuma SSH ile Putty üzerinden bağlanıyorum.
Aşağıdaki komutu konsol ekranıma yazıyorum.
vm-support
Bu işlem biraz sürüyor. Dokunmadan bitmesini bekliyorum.
ESXi log toplama işlemi bitti ve logları bulabileceğimiz dizini bize gösterdi.
Filezilla ile ESXi sunucuma bağlanıyorum.
Bize göstermiş olduğu /vmfs/volumes/datastore1/ dizinine gidiyorum.
Toplamış olduğum ESXi log dosyam paketlenmiş bir şekilde indirilmeye hazır. Bu log dosyasını bilgisayarınıza indirip inceleyebilir veya destek aldığınız yer ile paylaşabilirsiniz.