NVMe-oF

Hızlıca nedir bu NVMe-oF , terimler ne, neden kullanılıyor , hayatımızda ne değişeceğini geleneksel yapılar üzerinde inceledim ve VMware kullanıcıları için hpp ve birkaç sorun gidermek için komut örnekleride ekledim …

NVMe sunucularımızdaki SSD’leri PCIe yoluna bağlayabilmek için kullanılan bir arabirim ve protokolden ibaret.

NVMe’nin adreslemek istediği iki şey var, biri hız diğer ise düşük tepki süresi. Bunu adresleyebilmek için artık hem SATA, SAS gibi interface’lerden kurtulmak hemde SCSI gibi eski ve paralel çalışmaya uygun olmayan bir komut işleme ve kuyruk yapısından kurtulmak gerekiyordu. NVMe’i çok kollu bir robot’a , SCSI’i ise tek kolu robota benzeten yazılar var, ki aslında bunun biz firewall, load balancer, sanal makinelerin network kuyrukları gibi envayi çeşit örnek ile açıklayabiliriz, olay elimizde hızlı bir medya var , bu medya yapabileceği çok iş var bunun için ona çok daha fazla iş yüklemek gerekiyor SCSI bunu yapamadığından NVMe çıka geliyor ve paralel çalışabilecek bir kuyruk yapısı ve aynı anda çalıştırabileceği disk komut setleri sayesinde aynı zamanda yapısı gereği daha az katmandan geçerek direkt erişim sağlaması nedeniyle olayı hızlandırıyor.

NVMe etki alanı bulunduğu fiziksel sunucu üzerindeki maksimum disk sayısı, disk boyutu ve erişirliğin ancak yerel olaması ile sınırlı.

Daha fazla toplam kapasite, daha iyi doluluk oranları, paylaşımlı erişim ve storage dünyasından aşina olduğumuz snapshot, dedup gibi servisler için farklı bir yaklaşım gerekti buda NVMe ‘i bir fabric üzerinden taşıma ve geleneksel dediğimiz storage’lar için uyarlanmasını gerektirdi.

NVMe taşıma için iki tip fabric mevcut, bir RDMA diğeri ise Fiber Channel.

RDAM fabric diyince önünüze ROCE ve iWRAP gib ethernet tabanlı bağlantı tipleri gelecek.

FC fabric deyince ise NVMe-oF gelecek bildiğimiz SAN.

FC kayıpsız host-to-storage yüksek hızlı bir veri transfer protokolü olduğundan ve yapısı uygun olduğunda, ekstra bir yatırım gerektirmeden var olan yapı üzerinde kullanılabileceğinden belli bir oranda avantaj yaratıyor.

SAN Gen5 fiber channel’dan bu yana NVMe-oF destek mevcut, şimdi Gen6 ve Gen7 ile hızlar 64Gbit ve QSFP ile 256 Gbit destekleri ile olası darboğazlar için çözümler mevcut.

Burada önemli konulardan biri SAN network’lerin analizi ki bunun için FOS 8.2 ‘de yeni analitik eklentileri mevcut. Bir diğer önemli konu SAN network’lerindeki yavaş cihaz problemi ki belkide NVMe connectivity’leri SCSI ve/veya daha. düşük hızlı bağlantıları olan host ve storage’lardan ayırmak izole etmek en rahat opsiyonlardan biri. Bunun için Slow Drain Device Quarantine (SDDQ) denen mekanizmalar mevcut , ISL link’lerizi kontrol etmek , olası durumlarda otomatik olara düşük seviyeli virtual channel’lar ilgili host’ları koymak farklı bir koruma yönetemi oluşturabilir ama yinede farkı SAN Fabric’leri oluşturmak direkt en kolay çözüm olacaktır eğer mümkün ise.

NVMe-oF ile çalışmaya başladığımızda iletişim aşağıdaki gibi olmaya başlıyor.

NVMe 2011 yılında geliştirilmeye başlanmış ve hala geliştirilmeye devam eden özellikle fabric gereksinimleri için üzerine eklenti üzerine eklenti almaya devam ediyor.

VMware için NVMe-oF desteği vSphere 7 ile beraber geliyor, VMware NMP yerine sadece HPP denile “High-Performance Plug-in” kullanmaya başladığını anons etmiş ve tüm tanımlayabildiği NVMe-oF hedefler varsayılı olarak set ediyor. Bu şekilde set edebilmesi için bir kural tablosu var ve buna bakarak hareket ediyor.

esxcli storage core claimrule list

Mesela hep SLUA ve ALUA gibi multipathing seçenekleri NVMe 1.4 şartname mi diyelim 😀 ancak gelmiş, tabi bunun gelmesi yetmiyor aynı zamanda ilgili kullanılan işletim sistemlerinde desteklerin gelmesi gerekiyor. Burada haliyle bir terminoloji değişikliğide var yeni adı ANA (Asymmetric Namespace Access)

Terminoloji değişikliği derken ek söyleyebileceğimiz şeyler var, mesela ;

NVMe Subsystem : Bildiğimiz storage.

NVMe Controller : Host ile namespace arasındaki yola verilen isim, haliyle her bir port üzerinden storage’a yapılan bağlantı.

NVMe Queue : Komut kuyruğu.

Namespace ; Bunun bir partition gibi düşünebilsiniz , bir SSD drive’ı sanki birden fazla tekil ve kendi kuyruğu olan işletim sistemine bir disk drive gibi tanıtabilirsiniz. Bu eski SCSI dünyasındaki LU (Logical Unit) veya volume.

Namespace ID : Buda NVMe controller tarafından namespace’e atanan bir identifier , bir numara SCSI dünyasındaki LUN.

NQN : NVMe Qualified Name, iscsi dünyasındaki IQN gibi , FC deki gibi artık host oluştururken port bilgini değil NQN bilgisini vermemiz gerekiyor, SAN zonklama hariç, SAN zonlama yine eskisi gibi.

Burada dikkat, hem storage hemde OS tarafında HBA’lar NPIV denilen bir sanalaşma ile fiziksel port’larını hem SCSI hemde NVMe bazında farklı WWID ‘le kendilerini anons ediyorlar, zone’lama yaparken dikkat.

IBM Flashsystem 7200
VMware

Storage satıcılarında farklı bir takım limitasyonlarda mevcut, mesela bir storage’a bağlanabilecek NVMe protokolü ile konuşabilen host sayısı gibi. IBM kendi limitasyonları ile ilgili sayfalarda açıklamış 1, 2

VMware tartında henüz RDM, Shared VMDK , vVOL desteği yok , bunla beraber bir takım VAAI özellikleri ama bunlarda NVMe tarafındaki geliştirmelerle ileride muhtemelendir ki desteklenmeye başlayacaktır.

Yine belli bir sayıda namespace destekliyor, belli sayıda bir multipath desteği mevcut, buradan karşılaştırabilirsiniz.

Çeşitli NVMe Troubleshooting komutları ve kullanımları ;

LPe35000 serisi dışındaki adaptör’lerde (32000 ve 31000) NVMe/FC desteği gelmeyebiliyor bu durumda aşağıdaki komutu çalıştırarak ilgili değerleri görebilir ve set edebilirsiniz.

Değeri almak İçin

esxcli system module parameters list -m lpfc | grep lpfc_enable_fc4_type

lpfc_enable_fc4_type              int            Defines what FC4 types are supported

Set etmek için

esxcli system module parameters set -m lpfc -p lpfc_enable_fc4_type=3

Firmware seviyeleri her zaman önemli , aşağıdaki ilgili komut ile ilgili firmware ve driver’ları görebilirsiniz

esxcli storage san fc list

Şimdi birazdan NVMe komutlarını görüp doğrulama yapalım …

esxcli nvme adapter list

GUI yerine CLI’dan NVMe destekli adaptörlerinizi görmek için

esxcli nvme namespace list

CLI’dan atanmış NVMe volume’leri görün

esxcli nvme controller list

esxcli nvme info get

Host NQN: nqn.2014-08.com.vmware:nvme:pi1

esxcfg-mpath -b

To check multipaths, from which target you connected ….

esxcli storage hpp path list

Tüm optimized ve unoptimized port’ları görün …

Diğer bir konu multipathing ile iligili olarak hangi metodun kullanıldığı ve hangi değerlerde switch edebileceğinide aşağıdaki komut ile görebilirsiniz

esxcli storage hpp device list

LB-RR , 1000 IOPS veya xxx byte sonra switch to diğer port 😀

Değiştirmek istediğiniz ayarlar için aşağıdaki komutu kullanabilirsiniz ;

esxcli storage hpp device set -d <device> -P <schema IO veya Byte> -T <aralik> -S <iops>

vSphere node’unuza disk atadıktan sonra, tarama yaptıktan sonra hala disk’i görmüyor ise FC port’a reset atabilirsiniz.

esxcli storage san fc reset -A vmhba65

true

NVMe bile olsa pek IOPS ve Multipathing değerlerini değiştirerek test yapmadım, Duncan Epping’in yazısı mantıklı geldi, birde EMC’nin yaptığı, daha önce bir zorlama yapmıştım yarım milyon IOPS yazımda bunun için pek bir değişiklik yaparak test yapmadım.

Posted on 13/04/2021, in NVMe and tagged , , , , , , . Bookmark the permalink. Leave a comment.

Leave a comment