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.

rdmdisk
Örnek bir microsoft failover cluster yapısı :
raw-lun

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.02000000006006048000019030091953303030313253594d4d4554

PowerCLI 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=true

Tekrar kontrol ettiğimizde çıtkıda Is perennially reserved: true olmalıdır :

#esxcli storage core device list |less

naa.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: true

Bugünlük bu kadar 🙂

Tolgahan Yılmaz

👋 Hi, I’m @tylmz. A virtualization and Software Defined Networking Expert interested in Cloud Computing, virtualization, performance tuning of distributed systems and Process Automation 🌱 Currently learning python and shell 💞️ Looking to collaborate on DevOps and process automation 📫 How to reach me; tolgahan_y [at] yahoo.com.tr.

You may also like...

3 Responses

  1. Akin Akalan dedi ki:

    Eline sağlık Tolga. Oldukça açıklayıcı olmuş.

  2. Erkal dedi ki:

    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.

    • Tolgahan Yilmaz dedi ki:

      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..

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.