Block Storage va unumdorlik
Qisqacha xulosa
Blokli ombor siz FS, LVM/ZFS va boshqalarni quradigan xom qurilmalarni (LUN/tom) beradi. Unumdorlik: tashuvchi turi, kirish protokoli, navbatlar va chuqurlik, blok o’lchami, kodlash sxemasi (RAID/EC), keshlar va to’siqlar, tarmoq fabrikasi, shuningdek aniq ilovaning I/O patteri (rand/ketma-ket, o’qish/yozish, sync/async) bilan belgilanadi. Maqsad - kerakli kechikishlar p95/p99 va barqaror va oldindan aytib bo’ladigan IOPS/ruxsatnoma bilan ta’minlash.
Blokdan foydalanish taksonomiyasi
Lokal: NVMe (PCIe), SAS/SATA SSD/HDD. Minimal latentlik, tarmoq tor joylari yo’qligi.
Tarmoq:- iSCSI (Ethernet, LUN, MPIO, ALUA).
- Fibre Channel (FC) (16-64G, past kechikishlar, zonning).
- NVMe-oF: NVMe/TCP, NVMe/RoCE, NVMe/FC - tarmoq bo’yicha «mahalliy» NVMe, yukxatlar kamroq.
- HCI/taqsimlangan (Ceph RBD, vSAN): maqbulligi qulay, lekin latentligi yuqori, tarmoq/kodlash juda muhim.
- p99 latency ≤ 1-2 ms, juda yuqori IOPS → lokal NVMe/NVMe-oF.
- Barqaror «o’rtacha» latentlik 2-5 ms, etuk fabrika → FC yoki NVMe/FC.
- Ethernetda birxillashtirish, foydalanish osonroq → iSCSI yoki NVMe/TCP.
Protokollar va ularning xususiyatlari
iSCSI: universallik, MPIO/ALUA, TCP (MTU, offload, qdepth) ni sozlashga sezgir.
FC: izolyatsiya, yo’qotishsiz oqimlar, WWPN, HBA-navbatlar va kreditlar bo’yicha zonalash.
NVMe-oF: Submission/Completion Queues toʻplami orqali parallellik, past CPU yuklamasi, TLS NVMe/TCP uchun mumkin (zarurat boʻlganda).
RAID/EC va tashuvchilar
RAID10 - minimal latentlik va bashorat qilinadigan IOPS; DB/hamyonlar uchun maqbuldir.
RAID5/6 - sig’imi bo’yicha yaxshiroq, yozuv uchun jarima (write penalty), sync-write uchun IOPS tushadi.
Taqsimlangan massivlarda Erasure Coding - sig’imi bo’yicha foydali, ammo yozuv «qimmatroq».
NVMe SSD - p99 yuqori; SAS SSD - murosa; HDD - ketma-ket oʻtkazish, lekin yomon uchrashuv.
Fayl tizimlari va tekislash
XFS - katta DM fayllari/jurnallari uchun ajoyib tanlov; ’agcount’,’realtime’uchun moslanuvchidir.
ext4 - universal, RAID ostida’stride/stripe _ width’ga diqqat bilan.
ZFS - CoW, yaxlitligini tekshirish, snapshotlar/replika, ARC/ZIL/SLOG; sync-yuklamalar uchun - PLP bilan NVMe-dagi SLOG.
Tekislash: 1MiB-aligned’recordsize ’/’ blocksize’uchun toʻgʻri bo’limlar.
Navbatlar, blokning chuqurligi va o’lchami
IOPS Queue Depth bilan o’sadi, lekin yashirin ham o’sadi; maqsad - p95/p99 ni nazorat qilishda kerakli IOPS beruvchi QD.
Blok o’lchami: kichik (4-16K) - IOPSdan katta, o’tkazish o’lchovi yomonroq; katta (128K-1M) - eng yaxshi tezlik.
NVMe qpairs: yadro/NUMA tanlang; iSCSI/FC: qdepth NVA/tashabbuskorlari, MPIO siyosati.
To’siqlar va FUA: kiritilgan write-barriers ishonchlilikni oshiradi, lekin p99 ni oshiradi; SLOG/PLP kompensatsiya qilinadi.
Multipath va foydalanish
MPIO/DM-Multipath: yoʻllarning agregatsiyasi, ishlamay qolishi.
Siyosatlar:’round-robin’(balans),’queue-length’(aqlli),’failover’(aktiv-passiv).
ALUA: Faol boshqaruvchiga «afzal» yo’llar.
Muhimi:’no _ path _ retry’,’queue _ if _ no _ path’- I/O ni uzoq daqiqalarga «muzlatmaslik» uchun ehtiyotkorlik bilan.
FC zonalash: «bitta tashabbuskor zona - bitta target» (reduces blast radius).
NVMe-oF: ANA (Asymmetric Namespace Access) — аналог ALUA.
TRIM/Discard va keshlash
TRIM/Discard SSD bloklarini boʻshatadi (write-amp ni kamaytiradi, latentlikni barqarorlashtiradi). Ruxsat etilgan joyda muntazam ravishda (cron) yoki onlayn discard-ni yoqing.
Read-ahead ketma-ket o’qish uchun foydalidir; random paytida zararli.
Write-back nazoratchi keshlari - faqat BBU/PLP bilan; aks holda ma’lumotlarni yo’qotish xavfi.
Tarmoq steki (iSCSI/NVMe-TCP uchun)
Storaj fabrikasi uchun alohida VLAN/VRF; mijozlar trafigidan izolyatsiya qilish.
MTU 9000 end-to-end; RSS/RPS va pinning IRQ to NUMA.
QoS/priority RoCE uchun (agar lossless), ECN/RED TCP choʻqqilari uchun.
Storajgacha ikkita mustaqil fet-daraxt (ikki marta TOR, turli xil elektr ta’minoti fiderlari).
Linux/Xost tyuningi (tanlash)
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
Multipath (parcha’multipath. 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
}
}
Benchmarking va profillash
fio - minimal profil toʻplami: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
Maslahatlar:
- Isitish va o’lchashni ajrating, haroratni/thermal throttling.
- FSda emas, LUN/jildda sinab ko’ring (agar maqsad «xom» temir bo’lsa).
- O’lchang p95/p99 latency va 99. 9% tail - aynan ular «o’ldiradi» DB.
Monitoring va SLO
Metriklar:- Latentlik p50/p95/p99 (read/write), IOPS, throughput, queue-depth, device busy%, merges, discard.
- Tarmoq darajasida: drops, retransmits, ECN-markirovkalar, interfeys xatolari.
- Massiv darajasida: lag replikatsiya, rebuild/resilver progress, write-amp, wear-level SSD.
- LUN БД (OLTP): p99 write ≤ 1. 5 ms, p99 read ≤ 1. 0 ms, foydalanish imkoniyati ≥ 99. 95%.
- Logi/jurnallar: p95 append ≤ 2. 5 ms, o’tkazish ≥ 400 MB/s
- Bekaplar: seq write ≥ 1 GB/s (agregatsiyalangan), tiklash RTO ≤ 15 daqiqa.
- p99 latency> N daqiqa chegarasi, bir xil QDda IOPS degradatsiyasi, RAID5/6 read-modify-write o’sishi, ortiqcha isish/thermal throttle SSD, boshlangan/tiqilib qolgan rebildlar.
Kubernetes и CSI
PVC/StorageClass:’reclaimPolicy’,’volumeBindingMode = WaitForFirstConsumer’(toʻgʻri joylashtirilgan),’allowVolumeExpansion’parametrlari.
Vendor CSI plaginlari: snapshotlar/klonlar, QoS/unumdorlik siyosati, volume-topologiya.
AccessModes: DB/state uchun RWO, RWX - ehtiyotkorlik bilan (odatda fayl/tarmoq orqali).
Topology/Affinity: storaj yonidagi nodlarga pin podov (past latentlik).
Muhim: HPA/VPA yomon diskni «davolamaydi»; SLO jildlarini rejalashtiring, stateful tarmoqlari uchun PodDisruptionBudget’dan foydalaning.
Snapshotlar, klonlar, Consistency Groups
Crash-consistent snapshotlar - tez, ammo mos kelmaslik mumkin.
App-consistent - quiesce (fsfreeze, pre/post hooks DB) skriptlari orqali.
Consistency Group (CG) - bir vaqtning o’zida bir nechta LUN (tranzaksiya tizimlari) uchun.
Klonlar - tezkor dev/test muhiti.
Xavfsizlik va komplayens
iSCSI CHAP/Mutual CHAP, VLAN/VRF izolyatsiyasi.
TLS bilan NVMe/TCP - markazlararo/ko’p ijarali ssenariylar uchun.
«Tinch» shifrlash: LUKS/dm-crypt, self-encrypting drives (TCG Opal), KMS kalitlari.
Audit: kim LUN mappil, FC zonalarini o’zgartirish, multipath o’zgarishi.
DR va operatsiyalar
Sinxron nusxa (RPO ≈ 0) - latentlik, qisqa masofalarni oshiradi.
Asinxron (RPO = N min) - geologik joylashuv, ko’pchilik DB va jurnallar uchun maqbul.
Runbooks: MPIO yo’lini yo’qotish, boshqaruvchini yo’qotish, diskni qayta tiklash, pulni buzish, saytni o’zgartirish.
Xizmat ko’rsatish oynalari: «rolling» nazoratchilar, rebild limitlari.
FinOps (ish haqi)
$/IOPS va $/ms p99 - OLTP uchun «$/TB» dan foydaliroq.
Tiering: issiq OLTP - NVMe/RAID10; reportlar/arxiv - HDD/EC.
Zaxiralar va amortizatsiya: 30-50% IOPS o’sishini rejalashtiring; zaxirani rebild/skrab qilib saqlang.
Egress/zavod: HBA/NIC storaj tarmog’i va yangilanishlari uchun alohida budjet.
Joriy etish chek-varaqasi
- Protokol (NVMe-oF/FC/iSCSI) va izolyatsiyalangan zavod tanlandi.
- RAID/EC va pullar yuk turlari bo’yicha loyihalashtirilgan (OLTP/log/backap).
- MPIO/ALUA/ANA va taymautlar moslashtirilgan; tekshirildi failover/restore.
- FS/RAID ostida tekislash, reglament boʻyicha TRIM/Discard yoqilgan.
- Navbatlar/qdepth/read-ahead; fio-profillar (randread/write 4k, seq 1M) tomonidan tasdiqlangan.
- Disk/yo’l/latentlik monitoringi p95/p99, rebild va throttle uchun alertlar.
- Snapshotlar (app-consistent) va CG; DR/tiklanish testi.
- Shifrlash va CHAP/TLS; KMS kalitlari; operatsiyalar auditi.
- Kubernetes/CSI parametrlari, topologiya va QoS birligi.
Tipik xatolar
MPIO → single point of failure.
RAID5/6-write OLTP → yuqori p99 write ostida.
TRIM → write-amp va SSD degradatsiyasi yoʻq.
QD juda katta → «chiroyli» IOPS va BD uchun dahshatli tail.
OLTP → latentlik poygalari bilan «issiq» jildlarda onlayn discard.
’queue _ if _ no _ path’ taymautsiz → avariya paytida «osilgan» xizmatlar.
NVMe va HDDni bitta pulda aralashtirish → oldindan aytib bo’lmaydigan latentlik.
iGaming/fintech uchun o’ziga xos
Hamyon/tranzaksion DB: NVMe + RAID10, alohida SLOG/NVMe sinxron jurnali, p99 write ≤ 1. 5 ms, CG-snapshotlar.
To’lov navbatlari/antifrod: ketma-ket loglar → katta bloklar, yuqori o’tkazish, alohida LUN jurnal va ma’lumotlar ostida.
Eng yuqori TPS (turnirlar/o’yinlar): DB keshining pre-warm, headroom ≥ 30%, thermal throttle nazorati, burn-rate SLO.
Regulyator: LUN shifrlash, mapping auditi jurnali, DR-mashqlar, RPO/RTO bo’yicha hisobot.
Jami
Samarali blokli ombor - bu to’g’ri protokol + to’g’ri sozlangan navbatlar va qdepth + tegishli RAID/EC + kesh/to’siqlar intizomi + izolyatsiya qilingan fabrika. Hamma narsani runbook’larda o’rnating, p95/p99 o’lchang, fio-profillar bilan tasdiqlang, snapshotlar va DRlarni avtomatlashtiring - va mahsulot va pul oqimining tanqidiy yo’llari uchun zarur bo’lgan oldindan aytib bo’ladigan latentlik va IOPS oling.