Blok Depolama ve Performans
Kısa Özet
Blok depolama, üzerine FS, LVM/ZFS vb. Oluşturduğunuz ham aygıtlar (LUN/hacim) verir. Performans, medya türü, erişim protokolü, kuyruklar ve derinlik, blok boyutu, kodlama şeması (RAID/EC), önbellekler ve engeller, ağ yapısı ve uygulamaya özgü I/O deseni (rastgele/sıralı, okuma/yazma, senkronizasyon/async) ile belirlenir. Amaç, gerekli p95/p99 gecikmesini ve IOPS/bant genişliğini sağlamlık ve öngörülebilirlik ile sağlamaktır.
Erişim taksonomisini engelle
Yerel: NVMe (PCIe), SAS/SATA SSD/HDD. Minimum gecikme, ağ darboğazı yok.
Ağ:- ISCSI (Ethernet, LUN, MPIO, ALUA).
- Fiber Kanal (FC) (16-64G, düşük gecikme süresi, zonlama).
- NVMe-oF: NVMe/TCP, NVMe/RoCE, NVMe/FC - ağ üzerinden'yerli "NVMe, daha az yük.
- HCI/dağıtılmış (Ceph RBD, vSAN): uygun ölçeklenebilirlik, ancak gecikme daha yüksektir, ağ/kodlama önemlidir.
- P99 gecikme süresi ≤ 1-2 ms, çok yüksek IOPS - yerel NVMe/NVMe-oF.
- Kararlı "ortalama" gecikme süresi 2-5 ms, olgun FC veya NVMe/FC fabrikası.
- Ethernet üzerinde birleştirilmiş, kullanımı daha kolay - iSCSI veya NVMe/TCP.
Protokoller ve özellikleri
ISCSI: çok yönlülük, MPIO/ALUA, TCP yapılandırmasına duyarlı (MTU, aktarım, qdepth).
FC: izolasyon, kayıpsız akışlar, WWPN imar, HBA kuyrukları ve krediler.
NVMe-oF: Çoklu Gönderme/Tamamlama Kuyrukları boyunca paralellik, düşük CPU yükü, NVMe/TCP için TLS mümkündür (gerekirse).
RAID/EC ve Medya
RAID10 - minimum gecikme ve öngörülebilir IOPS; veritabanları/cüzdanlar için optimal.
RAID5/6 - kapasitede daha iyi, yazma cezası, senkronizasyon-yazma için IOPS düşer.
Dağıtılmış dizilerde silme kodlaması kapasite açısından avantajlıdır, ancak kayıt'daha pahalıdır ".
NVMe SSD - p99 üst; SAS SSD - uzlaşma; HDD sıralı bir bant genişliğidir, ancak kötü bir rastgeledir.
Dosya Sistemleri ve Hizalama
XFS, büyük veritabanı dosyaları/günlükleri için mükemmel bir seçimdir; Günlükler için özelleştirilebilir 'agcount', 'realtime'.
ext4 - çok yönlü, RAID için 'stride/stripe _ width' dikkatle.
ZFS - CoW, bütünlük kontrolü, anlık görüntüler/çoğaltma, ARC/ZIL/SLOG; Yükleri senkronize etmek için - PLP ile NVMe'de SLOG.
Hizalama: Bölümleri 1MiB-aligned, yük altında doğru 'kayıt'/' blok'.
Kuyruklar, derinlik ve blok boyutu
IOPS Kuyruk Derinliği ile yükseliyor, ancak gecikme süresi de öyle; Hedef - p95/p99 kontrolü sırasında gerekli IOPS'yi veren QD.
Blok boyutu: küçük (4-16K) - daha fazla IOPS, daha kötü bant genişliği; büyük (128K-1M) - daha iyi uçtan uca hız.
NVMe qpairs: çekirdekler/NUMA ile tahsis; ISCSI/FC: qdepth HBA/başlatıcılar, MPIO ilkeleri.
Bariyerler ve FUA: Dahil olan yazma bariyerleri güvenilirliği arttırır, ancak p99'u artırır; SLOG/PLP ofset.
Çok yollu ve kullanılabilirlik
MPIO/DM-Multipath: yol toplama, hata toleransı.
Politikacılar: "Round-robin" (bilanço), "queue-length" (daha akıllı), "failover" (varlık-borç).
ALUA aktif denetleyiciye "tercih edilen" yollar.
Önemli: 'No _ path _ retry', 'queue _ if _ no _ path' - I/O'yu uzun dakikalar boyunca "dondurmamak" için dikkatli olun.
FC bölgeleme:'bir başlatıcı bölge - bir hedef "(patlama yarıçapını azaltır).
NVMe-oF: ANA (Asimetrik Ad Alanı Erişimi) - аналог ALUA.
TRIM/Atma ve Önbelleğe Alma
TRIM/Atma SSD bloklarını serbest bırakır (yazma-amp düşürür, gecikmeyi stabilize eder). Düzenli olarak açın (cron) veya uygun olduğunda çevrimiçi atın.
Read-ahead ardışık okumalar için yararlıdır; Rastgele zararlı.
Geri yazma denetleyicisi önbellekleri - yalnızca BBU/PLP ile; Aksi takdirde, veri kaybı riski.
Ağ Yığını (iSCSI/NVMe-TCP için)
SRF fabrikası için ayrı VLAN/VRF; Müşteri trafiğinden izolasyon.
MTU 9000 uçtan uca; RSS/RPS ve IRQ NUMA'ya sabitlenir.
QoS/RoCE için öncelik (kayıpsız ise), TCP zirveleri için ECN/RED.
Storaj'a kadar iki bağımsız yağ ağacı (çift TOR, farklı güç besleyicileri).
Linux/Host Tuning (Örnek)
bash
Scheduler for NVMe echo none sudo tee /sys/block/nvme0n1/queue/scheduler echo 1024 sudo tee /sys/block/nvme0n1/queue/nr_requests echo 0 sudo tee /sys/block/nvme0n1/queue/add_random echo 0 sudo tee /sys/block/nvme0n1/queue/iostats
Read-ahead (sequential loads)
blockdev --setra 4096 /dev/nvme0n1
iSCSI: example of aggressive timeouts and retries iscsiadm -m node --op update -n node. session. timeo. replacement_timeout -v 10 iscsiadm -m node --op update -n node. conn[0].timeo. noop_out_interval -v 5 iscsiadm -m node --op update -n node. conn[0].timeo. noop_out_timeout -v 5
Çok yollu (parça'çok yollu. conf '):
conf defaults {
find_multipaths yes polling_interval 5 no_path_retry 12
}
devices {
device {
vendor "PURE DELL NETAPP HITACHI"
path_checker tur features "1 queue_if_no_path"
path_grouping_policy group_by_prio prio alua
}
}
Kıyaslama ve profil oluşturma
fio - minimum profil kümesi:bash
Random read 4K, queue 32, 4 threads fio --name = randread --filename =/dev/nvme0n1 --direct = 1 --rw = randread\
--bs=4k --iodepth=32 --numjobs=4 --time_based --runtime=60
Random 4K entry (sync), log loads fio --name = randwrite --rw = randwrite --bs = 4k --iodepth = 16 --numjobs = 4\
--fsync=1 --direct=1 --runtime=60
Large block sequential recording (backups/dumps)
fio --name=seqwrite --rw=write --bs=1M --iodepth=64 --numjobs=2 --runtime=60
Konseyler:
- Ayrı ısıtma ve ölçüm, sıcaklık/termal kısma kaydedin.
- FS değil, LUN/birim üzerinde test edin (hedef ham donanım ise).
- P95/p99 gecikme ve 99'u ölçün. %9 kuyruk - veritabanını "öldürenler" onlar.
İzleme ve SLO
Metrikler:- Gecikme p50/p95/p99 (okuma/yazma), IOPS, işlem hacmi, kuyruk derinliği, aygıt meşgul %, birleştirme, atma.
- Ağ düzeyinde: damlalar, yeniden iletimler, ECN işaretleri, arayüz hataları.
- Dizi düzeyinde: replication lag, rebuild/resolver progress, write-amp, wear-level SSD.
- LUN БД (OLTP): p99 yazma ≤ 1. 5ms, p99 okuma ≤ 1. 0 ms, kullanılabilirlik ≥ 99. 95%.
- Günlükleri: p95 ≤ 2 ekleyin. 5 ms, bant genişliği ≥ hacim başına 400 MB/s.
- Yedeklemeler: Seq yazma ≥ 1 GB/s (toplu), kurtarma RTO ≤ 15 dakika.
- P99 gecikme> eşik N dakika, aynı QD ile IOPS'nin bozulması, RAID5/6 okuma-değiştirme-yazma büyümesi, aşırı ısınma/termal gaz kelebeği SSD, başlamış/sıkışmış kaburgalar.
Kubernetes и CSI
PVC/StorageClass: parametreler 'reclaimPolicy', 'volumeBindingMode = WaitForFirstConsumer' (doğru konum), 'allowVolumeExpansion'.
Satıcı CSI eklentileri: anlık görüntüler/klonlar, QoS/performans politikaları, hacim topolojisi.
AccessModes: Veritabanı/devlet için RWO, RWX - dikkatli (genellikle dosya/ağ üzerinden).
Topoloji/Yakınlık: Depolamanın yanındaki düğümlere pin pedleri (düşük gecikme süresi).
Önemli: HPA/VPA kötü bir sürücüyü "iyileştirmez"; SLO hacimlerini planlayın, durum bilgisi olan ağlar için PodDisruptionBudget kullanın.
Anlık görüntüler, klonlar, Tutarlılık Grupları
Çökme tutarlı anlık görüntüler hızlıdır, ancak veritabanı tutarsızlıkları mümkündür.
Uygulama tutarlı - sessiz komut dosyaları aracılığıyla (fsfreeze, ön/post kancaları DB).
Tutarlılık Grubu (CG) - aynı anda birkaç LUN (işlem sistemi) için.
Klonlar kopyalamadan hızlı dev/test ortamlarıdır.
Güvenlik ve uyumluluk
ISCSI CHAP/Karşılıklı CHAP, VLAN/VRF yalıtımı.
TLS ile NVMe/TCP - çapraz merkez/çoklu kiralama senaryoları için.
"Dinlenmede" şifreleme: LUKS/dm-crypt, kendi kendini şifreleyen sürücüler (TCG Opal), KMS'deki anahtarlar.
Denetim: LUN, FC bölge değişikliği, çok yollu değişiklikleri kimin haritaladığı.
DR ve operasyonlar
Senkron çoğaltma (RPO≈0) - gecikmeyi, kısa mesafeleri artırır.
Asenkron (RPO = N min) - coğrafi mesafe, günlüklü çoğu veritabanı için kabul edilebilir.
Runbook'lar: MPIO yol kaybı, denetleyici kaybı, disk yeniden oluşturma, havuz bozulması, site anahtarı.
Servis pencereleri: "haddeleme" kontrolörleri, prod yememek için rebield sınırları.
FinOps (performans başına maliyet)
$/IOPS ve $/ms p99, OLTP için daha kullanışlı "$/TB'dir.
Katmanlama: sıcak OLTP - NVMe/RAID10; Raporlar/arşiv - HDD/EC.
Hükümler ve amortisman: %30-50 IOPS büyümesi için plan; Stokları rebilds/scrubs altında tutun.
Çıkış/fabrika: depolama ağı ve HBA/NIC güncellemeleri için ayrı bütçe.
Uygulama kontrol listesi
- Protokol (NVMe-oF/FC/iSCSI) ve yalıtılmış yapı seçildi.
- RAID/EC ve yük tipi havuzları (OLTP/log/backup) tasarlanmıştır.
- MPIO/ALUA/ANA ve zaman aşımları yapılandırıldı; Yük devretme/geri yükleme kontrol edildi.
- RAID için FS/hizalama, düzenlemeye göre TRIM/Atma etkinleştirildi.
- Kuyruk ayarı/qdepth/read-ahead; fio profilleri tarafından doğrulanmıştır (randread/write 4k, seq 1M).
- Disk/yol/gecikme izleme p95/p99, yeniden doldurma ve gaz verme uyarıları.
- Anlık görüntüler (uygulama tutarlı) ve CG; DR/kurtarma testi.
- Şifreleme ve CHAP/TLS; İşlemlerin KMS denetimindeki anahtarlar.
- Birim başına Kubernetes/CSI parametreleri, topoloji ve QoS.
Yaygın hatalar
MPIO'suz bir yol - tek başarısızlık noktası.
RAID5/6 altında senkronize yazma OLTP - yüksek p99 yazma.
TRIM yok - yazma amfi büyümesi ve SSD bozulması.
QD çok büyük - veritabanı için "güzel" IOPS ve korkunç kuyruk.
Online OLTP ile "sıcak" hacimler üzerinde atmak - gecikme atlar.
'eue _ if _ no _ path' zaman aşımına uğramadan - bir felakette "dondurulmuş" hizmetler.
NVMe ve HDD'yi aynı havuzda karıştırma - öngörülemeyen gecikme.
iGaming/fintech'e özel
Cüzdan/işlem veritabanları: NVMe + RAID10, ayrı bir SLOG/NVMe'de senkron log, p99 yazma ≤ 1. 5 ms, CG anlık görüntüleri.
Ödeme kuyrukları/sahteciliği önleme: seri günlükler - büyük bloklar, yüksek bant genişliği, günlük ve veriler için ayrı LUN'lar.
En yüksek TPS (turnuvalar/maçlar): önceden ısınmış veritabanı önbellekleri, baş ağrısı ≥ %30, termal gaz kontrolü, yanma oranı SLO.
Düzenleyici: LUN şifreleme, denetim günlüğünü haritalama, DR alıştırmaları, RPO/RTO raporlaması.
Toplam
Üretken blok depolama, doğru protokol + doğru yapılandırılmış kuyruklar ve qdepth + yeterli RAID/EC + önbellek/bariyer disiplini + yalıtılmış yapıdır. Her şeyi runbook'lara sabitleyin, p95/p99 ölçün, fio profilleri ile doğrulayın, anlık görüntüleri ve DR'yi otomatikleştirin ve kritik ürün ve nakit akışı yolları için gereken öngörülebilir gecikmeyi ve IOPS'yi elde edin.