reklam
NVME

SCSI’nin Sonu: Kurumsal Veri Merkezlerinde NVMe-oF (NVMe/FC vs. NVMe/TCP vs. RoCEv2) Mimarisi ve Geçiş Rehberi

4 dk okuma
reklam

Onlarca yıldır kurumsal depolama ağlarının (SAN) omurgasını oluşturan SCSI protokolü, dönen manyetik disklerin (HDD) mekanik gecikmeleri düşünülerek tasarlanmıştı. Bugün depolama ünitelerimizde (Storage Array) mikrosaniyeler mertebesinde yanıt veren NVMe flash modüller kullansak da, sunucu ile depolama ünitesi arasında hala FCP (SCSI over Fibre Channel) veya iSCSI konuştuğumuzda, devasa bir çok şeritli otoyolu tek gişeli bir köprüye bağlamış oluyoruz.
İşte NVMe over Fabrics (NVMe-oF), yerel PCIe veri yolundaki paralel NVMe komut setini ağ (Fabric) üzerinden uçtan uca taşıyarak bu darboğazı tamamen ortadan kaldırıyor.
1. Rakamlarla Neden NVMe-oF? (SCSI vs. NVMe Kuyruk Mimarisi)
Geleneksel SCSI ile NVMe arasındaki temel fark hız değil, paralelliktir (Parallelism):

  • Geleneksel SCSI: Tek bir I/O kuyruğuna (Queue) sahiptir ve kuyruk başına maksimum 32 ile 254 arasında komut derinliği (Queue Depth) destekler. Çok çekirdekli modern CPU’larda tüm çekirdekler aynı SCSI kilidi (lock) için bekler.
  • NVMe / NVMe-oF: Tam 64.000 (64K) adet bağımsız I/O kuyruğu ve her kuyrukta 64.000 komut derinliği destekler. Böylece hipervizörünüzdeki (ESXi veya KVM) her bir fiziksel CPU çekirdeği, hiçbir kilitlenmeye (locking contention) takılmadan depolama ünitesiyle kendi özel kuyruğu üzerinden (Multi-Queue) doğrudan konuşur.

2. Hangi Taşıma Katmanını (Transport) Seçmeli?
NVMe-oF mimarisini kurgularken önümüzde üç ana taşıma protokolü seçeneği bulunur:

Özellik / KriterNVMe/FC (Fibre Channel)NVMe/TCPNVMe/RDMA (RoCEv2)
Ağ AltyapısıMevcut 32G/64G FC SAN SwitchStandart 25G/100G EthernetKayıpsız (Lossless) Ethernet (PFC/ECN)
Donanım GereksinimiGen6/Gen7 FC HBA (Emulex/QLogic)Standart NIC (Herhangi bir Ethernet kartı)RDMA destekli RNIC (Mellanox/ConnectX)
Uçtan Uca GecikmeÇok Düşük (~100-150 µs)Düşük (~200-300 µs)Ultra Düşük (100 µs altı)
Yönetim KarmaşıklığıDüşük (Klasik Zoning mantığı aynı)Çok Düşük (Standart TCP/IP routing)Yüksek (Switch üzerinde DCBX/PFC ayarı şart)
İdeal SenaryoMevcut FC SAN yatırımı olan Tier-1 sistemleriSCSI’den yüksek performanslı yapıya geçişHPC, AI/ML ve ultra düşük gecikmeli DB’ler

Saha Deneyimi: Mevcut Brocade 32Gbit SAN Altyapısında NVMe/FC
Eğer veri merkezinizde halihazırda 32Gbit FC SAN anahtarlar ve sunucularınızda Gen6/Gen7 FC HBA’lar varsa, hiçbir kablo veya switch değiştirmeden aynı fiber portlar üzerinden hem klasik SCSI (FCP) hem de NVMe/FC trafiğini aynı anda akıtabilirsiniz. Tek yapmanız gereken depolama ünitenizde (Pure Storage FlashArray veya NetApp ONTAP) NVMe-oF hedefini (Subsystem) aktif etmek ve mevcut FC Zone yapınıza NVMe NQN (NVMe Qualified Name) tanımlamalarını eklemektir.
3. Linux’ta NVMe-oF İstemci (Host) Yapılandırması ve Native Multipath
Linux çekirdeğinde NVMe-oF kullanırken yapılan en yaygın hata, alışkanlık gereği geleneksel device-mapper-multipath (multipathd) servisini NVMe diskler için de kullanmaya çalışmaktır.
Kritik Kural: NVMe için çekirdek içi Native NVMe Multipathing (nvme_core.multipath=Y) kullanılmalıdır! Geleneksel dm-multipath, NVMe’nin çoklu kuyruk (blk-mq) mimarisinde ekstra katman yaratarak performansı düşürür.
Adım 1: Native Multipath’i Kontrol Edin ve Araçları Kurun

reklam
# Native NVMe Multipath'in çekirdekte aktif olduğunu doğrulayın (Çıktı 'Y' olmalı)
cat /sys/module/nvme_core/parameters/multipath

# nvme-cli yönetim paketini kurun ve Host NQN kimliğinizi görüntüleyin
sudo apt install nvme-cli -y
sudo cat /etc/nvme/hostnqn
# Örnek Çıktı: nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0056-4d10-805a-b8c04f383433

Adım 2: NVMe/TCP veya NVMe/FC Hedefini Keşfetmek ve Bağlamak
Yukarıdaki hostnqn bilgisini Storage Array üzerinde ilgili Namespace’e yetkilendirdikten sonra (tıpkı iSCSI IQN veya FC WWPN yetkilendirir gibi), sunucu üzerinden bağlantıyı başlatabilirsiniz:

# NVMe/TCP üzerinden Discovery (Keşif) yapma:
sudo nvme discover -t tcp -a 10.100.50.10 -s 4420

# Hedef Subsystem'e tüm yedekli yollarla bağlanma (--ctrl-loss-tmo ile kopma toleransı ayarı):
sudo nvme connect-all -t tcp -a 10.100.50.10 -s 4420 --ctrl-loss-tmo=1800

Adım 3: Çoklu Yol (Multipath) ve Gecikme Durumunu Doğrulama

# Bağlanan NVMe Namespace'lerini ve aktif/optimize (ANA - Asymmetric Namespace Access) yolları listele
sudo nvme list-subsys

Bu komutu çalıştırdığınızda /dev/nvme1n1 gibi tekil bir blok cihaz altında tüm yedekli FC veya TCP yollarının (live ve optimized durumunda) listelendiğini göreceksiniz.
4. VMware ESXi Üzerinde NVMe-oF Geçiş İpuçları
VMware vSphere 7.0 U3 ve 8.0 sürümleriyle birlikte NVMe/FC ve NVMe/TCP tam olgunluğa ulaştı. ESXi tarafında geçiş yaparken dikkat etmeniz gereken 3 kritik nokta:

  1. VMFS Desteği: NVMe-oF üzerinden sunduğunuz Namespace’leri tıpkı klasik bir LUN gibi doğrudan VMFS-6 ile formatlayabilirsiniz.
  2. HPP (High Performance Plug-in): ESXi, klasik SCSI LUN’lar için kullandığı NMP (Native Multipathing Plugin) yerine NVMe-oF hedefleri için otomatik olarak HPP modülünü devreye alır. Yük dengeleme politikası olarak LB-Latency (en düşük gecikmeli yolu seç) varsayılan ve en verimli ayardır.
  3. LUN Sınırı vs. Namespace: Klasik SCSI mimarisindeki “HBA kuyruk derinliği dolmasın diye tek büyük LUN yerine 4-5 orta boy LUN açalım” kuralı NVMe-oF’te geçerliliğini yitirmiştir. Tek bir NVMe Namespace zaten binlerce paralel kuyruk desteklediği için yönetimi zorlaştıran gereksiz LUN bölme işlemlerinden kurtulabilirsiniz.
reklam