RDM (Raw Device Mapping) kullanılan LUN’lar özellikle cluster (WSFC/MSCS, Oracle RAC) ve SAN tabanlı uygulamalar içeren ortamlarda vazgeçilmezdir.
Ancak doğru host-bazlı ayarlar yapılmazsa bu LUN’lar ESXi’in boot ve rescan süreçlerinde gereksiz beklemelere hatta “host not responding” gibi problemlere neden olabilir.
Bu sorun LUN’ların VMware ESXi üzerinde perennially reserved olarak işaretlenmesiyle çözülebilir.
Sorun Nedir? Neden Yaşanır?
- RDM LUN’ları çoğu zaman başka sunucular tarafından SCSI reservation ile tutulur (ör. cluster üyeleri).
- ESXi host yeniden başlarken tüm görünen aygıtları keşfeder (scan). Başka sistemce rezerve edilmiş bir RDM LUN’a geldiğinde ESXi bu diskte gereksiz kontroller yapıp timeout’a kadar bekleyebilir.
- Sonuçda Uzun boot süreleri yönetim katmanında gecikmeler vCenter’da “host not responding” alarmları ve RDM kullanan VM’lerde erişim problemleri.
Bu sorunun kök nedeni : VMware ESXi “Bu LUN bir VMFS datastore değil; RDM amaçlı ve başka bir dünya tarafından kilitlenmiş olabilir” bilgisini host bazında bilmiyor.
Çözüm Mantığı: Perennially Reserved = TRUE
Perennially reserved bayrağı VMware ESXi’e şu mesajı verir:
“Bu LUN’u VMFS gibi tam kapsamlı inceleme RDM için burada. Boot’ta ve rescan’da bu disk üzerinde uzun kontroller yapma.”
Böylece:
- Boot/rescan süreleri kısalır
- SCSI reservation’lı RDM LUN’larda timeout’lar azalır
- vCenter tarafında stabilite artar
Not: Bu ayar host-bazlıdır. Aynı LUN’a erişen tüm ESXi hostlarda tek tek yapılandırılmalıdır.
Uygulama: Adım Adım
LUN Kimliğini (naa.*) Bul
- vSphere Client → Storage Devices altında ilgili LUN’u aç → Identifier / NAA değerini kopyala.
Örnek:naa.60002ac000000000000001e0001cfbf
Mevcut Durumu Kontrol Et
ESXi SSH (DCUI → Troubleshooting → SSH) ile bağlanıp çalıştır:
esxcli storage core device list -d naa.60002ac000000000000001e0001cfbf
Çıktıda şunu ara:
Is Perennially Reserved: false
False ise ayarı değiştireceğiz.
Ayarı Etkinleştir
esxcli storage core device setconfig \
-d naa.60002ac000000000000001e0001cfbf \
--perennially-reserved=true
Doğrula
esxcli storage core device list -d naa.60002ac000000000000001e0001cfbf
Aşağıdaki gibi görünmeli:
Is Perennially Reserved: true
Tüm Hostlarda Tekrarla
Aynı LUN’a erişimi olan her ESXi host üzerinde 3.2–3.4 adımlarını uygulayın.
Neden? Çünkü bayrak host konfigürasyonudur array veya vCenter nesnesi değildir.
Ortamda RDM Kullanan VM’leri Hızla Tespit Etme
ESXi Shell Üzerinden (find + grep)
RDM pointer dosyaları küçük .vmdk
dosyalarıdır. Aşağıdaki komut, “RawDeviceMap” içeren pointer’ları listeler:
find /vmfs/volumes/ -type f -name "*.vmdk" -size -1024k \
-exec grep -l 'createType="RawDeviceMap"' {} \;
İstersen çıktıyı dosyaya yaz:
find /vmfs/volumes/ -type f -name "*.vmdk" -size -1024k \
-exec grep -l 'createType="RawDeviceMap"' {} \; > /tmp/RDM.txt
PowerCLI ile (Merkezi ve Pratik)
# vCenter’a bağlan
Connect-VIServer vcsa.merkez.local
# Tüm VM’lerdeki RDM diskleri çek
$rdms = Get-VM | Get-HardDisk |
Where-Object {$_.DiskType -match 'RawPhysical|RawVirtual'}
# RDM’lerin bağlı olduğu LUN’ların NAA kimliklerini al
$map = foreach ($d in $rdms) {
[PSCustomObject]@{
VM = $d.Parent.Name
Disk = $d.Name
Mode = $d.DiskType
NAA = ($d.ScsiCanonicalName) # çoğu sürümde dolu olur; yoksa Get-ScsiLun ile map’lenir
}
}
$map | Format-Table -Auto
Bu listeyi kullanarak hangi LUN’ları “perennially reserved” yapmanız gerektiğini planlayabilirsiniz.
PowerCLI ile Toplu Perennially Reserved
Aşağıdaki örnek bir cluster’daki tüm hostlarda, verdiğiniz NAA listesini TRUE yapar:
param(
[string]$ClusterName = "Prod-Cluster",
[string[]]$NaaList = @(
"naa.60002ac000000000000001e0001cfbf",
"naa.60002ac000000000000001e0001d00a1"
)
)
Connect-VIServer vcsa.merkez.local
Get-Cluster $ClusterName | Get-VMHost | ForEach-Object {
$esx = $_
$esxcli = Get-EsxCli -VMHost $esx -V2
foreach($naa in $NaaList){
try{
$args = $esxcli.storage.core.device.setconfig.CreateArgs()
$args.device = $naa
$args.perennially_reserved = $true
$null = $esxcli.storage.core.device.setconfig.Invoke($args)
Write-Host "[$($esx.Name)] $naa -> perennially_reserved = TRUE" -ForegroundColor Green
} catch {
Write-Warning "[$($esx.Name)] $naa ayarlanamadı: $($_.Exception.Message)"
}
}
}
İstediğinizde aynı mantıkla FALSE yapmak için $true
yerine $false
kullanabilirsiniz.
En İyi Pratikler
- Sadece RDM LUN’larda uygulayın.
VMFS datastore’ları “perennially reserved” yapmak yanlıştır mount/scan davranışını olumsuz etkileyebilir. - Tüm erişen hostlarda ayarlayın.
Bir hostta TRUE diğerinde FALSE bırakmak boot sürelerinde tutarsızlığa ve yönetim karmaşasına yol açar. - Değişiklikleri belgele (CMDB).
Hangi NAA hangi VM/cluster için RDM hangi hostlarda TRUE → güncel kalsın. - DR/İkincil siteyi unutma.
RDM LUN’ları DR’da da görülecekse o sitedeki hostlarda da aynı ayarı uygula. - Rescan/maintenance penceresi planla.
Canlı sistemleri etkilememek ve gerekli log/gözlemleri yapmak için planlı bir aralıkta uygula. - vVols düşün.
Yeni projelerde vVols RDM’in çözmeye çalıştığı birçok ihtiyacı daha modern şekilde karşılar.
Sorun Giderme (Troubleshooting)
“TRUE yaptım ama boot hâlâ yavaş”
- Doğru NAA’yı ayarladığından emin olun. Bazı array’lerde benzer ID’ler olabilir.
- LUN gerçekten RDM mi? (Yanlışlıkla VMFS’e ait bir LUN seçilmesin.)
- APD/PDL durumları var mı?
esxcli storage core path list -d <naa>
Path State “dead” ise array tarafı/zoning/multipath kontrol edilmeli.
RDM kaldırıldı ama host hâlâ LUN’u atlıyor
- Rollback yap:
esxcli storage core device setconfig -d <naa> --perennially-reserved=false
- Sonra
esxcli storage core adapter rescan --all
Hangi cihazın gerçekten RDM pointer’ı olduğunu görmek istiyorum
- ESXi shell:
grep -R "RawDeviceMap" /vmfs/volumes/*/*/*.vmdk
- VMDK descriptor içinde “Extent description” satırında naa.* referansı görünür.
Rollback (Geri Alma)
Bir LUN’u tekrar normal davranışa çekmek istersen:
esxcli storage core device setconfig -d <naa> --perennially-reserved=false
esxcli storage core device list -d <naa> | grep -i "Perennially"
VMFS’e dönüştürülecek veya datastore olarak kullanılacak LUN’larda FALSE olmalıdır.