vSphere RDM Disk ve Kullanımı
Merhaba,
VMware vSphere ortamında sıkça karşılaştığımız bir konfigürasyon hatasından ve bu durumun ESXi host için yarattığı dezavantajlarından bahsedeceğim.
Bildiğiniz üzere RDM (Raw Device Mapping) disk yapısı günümüzde özellikle Oracle RAC ve Microsoft failover cluster gibi yapılarda sıkça karşılaştığımız bir çözüm. Öncelikle;
RDM nedir?
RDM, sanal makine disk erişimi için kullanılan iki methoddan birisidir. Diğer method hepimizin aşina olduğu Virtual Machine File System (VMFS) yapısıdır.
VMFS VMware tarafından birçok data center uygulaması için kullanılması önerilen yapı iken, RDM sanal makineler arası clustering, fiziksel-sanal clustering veya Sanal makine içerisinde koşan SAN-aware uygulamalar için kullanılabilecek yapıdır. RDM, fiziksel diske bir proxy görevi üstlenerek, sanal makinenin fiziksel storage aygıtını direkt olarak kullanabilmesini ve içerisinde tuttuğu metadata ile diskin yönetilebilmesini ve erişimin fiziksel cihaza yönlenebilmesini sağlar.
Örnek bir microsoft failover cluster yapısı :
RDM Konfigürasyonu:
RDM bazı uygulamalar için çok kullanışlı iken ESXi host seviyesinde düzgün konfigüre edilmezse bir eziyet haline dönüşebilir. Öyle ki, ESXi hostun boot olması RDM sayısına göre 45dk-90dk arasında sürebilir. Bu durum clustering yapısında ki kalıcı SCSi rezervasyon durumundan kaynaklanmakta olup, ESXi host yeniden başlatıldığında boot aşamasında kendisine present edilmiş tüm LUN’ları sorgulamak/keşfetmek istemektedir. RDM’e başka bir node tarafından koyulmuş olan SCSi rezervasyonu ESXi hostun timeout olana kadar discover(keşfetme) işlemini sürdürmesini, ve sonuç olarak boot işleminin çok uzun sürmesine yol açmakta. Boot sonrası ise ESXi host yine RDM’e SCSi rezervasyonu yapmak istemekte bu da binlerce (bazen milyonlarca) “scsi reservation conflict”e sebep olmaktadır. Çok sayıda reservation conflict oluşması, host servislerini crash edebilmekte ve hostun vCenter’da not-responding duruma düşmesine sebep olabilmektedir.
Bu durumu aşmak için RDM’leri “perennially reserved” olarak işaretlemek gerekmektedir. Kullanmamız gereken advance parametre VMware tarafından şurada sağlanmış durumda. Yine de burada tekrar anlatmak isterim öncelikle bilmiyorsak ESXi hosta present edilmiş ve kullanılan RDM’leri tespit edelim ;
ESXi hosta SSH ile bağlanarak şu iki komutu çalıştıralım 2.komut bize RDM diskleri belirtecektir:
#find /vmfs/volumes/ -type f -name '*.vmdk' -size -1024k -exec grep -l '^createType=.*RawDeviceMap' {} \; > /tmp/rdmsluns.txt#for i in `cat /tmp/rdmsluns.txt`; do vmkfstools -q $i; doneÖrnek çıktı:
Disk /vmfs/volumes/…/virtualrdm.vmdk is a Non-passthrough Raw Device Mapping
Maps to: vml.02000000006006048000019030091953303030313253594d4d4554PowerCLI için aynı işlem :
Get-Datastore | Get-HardDisk -DiskType "RawPhysical","RawVirtual" | Select "Filename","CapacityKB" | flÖrnek çıktı:
Filename : [DatastoreName] DirectoryName/virtualrdm.vmdk
CapacityKB : 5760İlgili RDM diskleri tespit ettikten sonra bu disklerin naa. ID’sini bulmamız gerekmekte bunun için bize sağlanmış olan vml ID’yi kullanıyoruz.
esxcli storage core device list komutunu çalıştırarak içerisinde daha önceden bulmuş olduğumuz vml ID’yi aratarak ilgili diskin naa sına ulaşabiliriz. Sonrasında bu RDM’i “perennially reserved” olarak işaretleyerek hem hostun standart bir sürede boot olmasını hem de scsi reservation conflict oluşmasını engellemiş oluyoruz.
#esxcli storage core device setconfig -d naa.id --perennially-reserved=trueTekrar kontrol ettiğimizde çıtkıda Is perennially reserved: true olmalıdır :
#esxcli storage core device list |lessnaa.60060160ef0236001868469314b2e511:
Display Name:
Has Settable Display Name: false
Size: 0
Device Type: No device type
Multipath Plugin:
Devfs Path:
Vendor:
Model:
Revision:
SCSI Level: 0
Is Pseudo: true
Status: unknown
Is RDM Capable: false
Is Local: false
Is Removable: false
Is SSD: false
Is VVOL PE: true
Is Offline: true
Is Perennially Reserved: trueBugünlük bu kadar 🙂
Eline sağlık Tolga. Oldukça açıklayıcı olmuş.
RDM ile ilgili bilindik klasik dökümanların bir benzeri… Bu tarz yazılar artık birbirine yakın olmadan, farklılaştırarak paylaşmak gerekiyor. Diğer yönden Kalemine ve emeğine sağlık Tolga.
Erkal.
Merhaba Erkal teşekkür ederim yorumun için.
Aslında “perennially reserved” konusuna dikkat çekmek amacıyla yazdım makaleyi. Yazarkende bir giriş yapmadan olmazdı 🙂
Genel geçer bir konu olmasına rağmen çok sık yapılan hatalardan birisi ne yazık ki..