Blochează stocarea şi performanţa
Scurt rezumat
Stocarea în bloc oferă dispozitive brute (LUN/volum) pe care construiți FS, LVM/ZFS etc. Performanța este determinată de tipul media, protocolul de acces, cozile și adâncimea, dimensiunea blocului, schema de codificare (RAID/CE), cache-urile și barierele, țesătura de rețea și modelul I/O specific aplicației (aleatoriu/secvențial, citit/scris, sincronizat/async). Scopul este de a oferi latența necesară p95/p99 și IOPS/lățime de bandă cu robustețe și predictibilitate.
Taxonomia accesului la blocuri
Local: NVMe (PCIe), SAS/SATA SSD/HDD. Latență minimă, fără blocaje de rețea.
Reţea:- iSCSI (Ethernet, LUN, MPIO, ALUA).
- Fibre Channel (FC) (16-64G, latenţă redusă, zonare).
- NVMe-oF: NVMe/TCP, NVMe/RoCE, NVMe/FC - „nativ” NVMe prin rețea, mai puțin aeriene.
- HCI/distribuit (Ceph RBD, vSAN): scalabilitate convenabilă, dar latența este mai mare, rețeaua/codificarea este esențială.
- p99 latență ≤ 1-2 ms, IOPS foarte mare → NVMe/NVMe-oF locale.
- Stabil „medie” latenta 2-5 ms, matur → FC sau NVMe/FC fabrica.
- Unificat pe Ethernet, mai uşor de utilizat → iSCSI sau NVMe/TCP.
Protocoale și caracteristicile lor
iSCSI: versatilitate, MPIO/ALUA, sensibilitate la configurare TCP (MTU, descărcare, qdepth).
FC: izolare, fluxuri fără pierderi, zonare WWPN, cozi HBA și credite.
NVMe-oF: paralelism prin mai multe cozi de depunere/finalizare, sarcină CPU scăzută, TLS este posibil pentru NVMe/TCP (dacă este necesar).
RAID/CE și Media
RAID10 - latență minimă și IOPS previzibil; optim pentru baze de date/portofele.
RAID5/6 - mai bine în capacitate, scrie penalty, IOPS picături pentru sincronizare-scrie.
Codificarea ștergerii în matrice distribuite este avantajoasă din punct de vedere al capacității, dar înregistrarea este „mai scumpă”.
NVMe SSD - top p99; SSD SAS - compromis; HDD este o lățime de bandă secvențială, dar un rău aleatoriu.
Sisteme de fișiere și aliniere
XFS este o alegere excelentă pentru fișierele/jurnalele de baze de date mari; personalizabil "agcount'," timp real "pentru jurnale.
ext4 - versatil, atent la „stride/stripe _ width” pentru RAID.
ZFS - CoW, verificare integritate, instantanee/replica, ARC/ZIL/SLOG; pentru sarcini de sincronizare - SLOG pe NVMe cu PLP.
Aliniere: 1MiB-aligned partiții, corectați 'recordsize '/' blocksize' sub sarcină.
Cozi, adâncime și mărimea blocului
IOPS cresc cu adâncimea de coadă, dar la fel este și latența; țintă - QD, care oferă IOPS-ul necesar în timpul controlului p95/p99.
Dimensiune bloc: mic (4-16K) - mai mult IOPS, mai rău lățime de bandă; mare (128K-1M) - mai bine viteza end-to-end.
NVMe qpairs: alocați prin nuclee/NUMA; iSCSI/FC: HBA/iniţiatori qdepth, politici MPIO.
Bariere și FUA: barierele de scriere incluse sporesc fiabilitatea, dar cresc p99; Decalaj SLOG/PLP.
Multipath și disponibilitate
MPIO/DM-Multipath: agregarea căilor, toleranța la erori.
Politicieni: „rotund” (bilanț), „coadă de așteptare” (mai inteligent), „eșec” (pasiv).
Căile „preferate” ale ALUA față de controlerul activ.
Important: 'no _ path _ retry', 'queue _ if _ no _ path' - cu atenție pentru a nu „îngheța” I/O timp de minute lungi.
FC zonare: „o zonă inițiator - o țintă” (reduce raza de explozie).
NVMe-oF: ANA (Asymmetric Namespace Access) - аналог ALUA.
TRIM/Aruncați și caching
TRIM/Discard eliberează blocuri SSD (reduce scrierea-amp, stabilizează latența). Activați în mod regulat (cron) sau aruncați online, după caz.
Citiți mai departe este util pentru citiri consecutive; este dăunătoare în mod aleatoriu.
Scrieți cache-uri de controler - numai cu BBU/PLP; în caz contrar, riscul pierderii datelor.
Stiva de rețea (pentru iSCSI/NVMe-TCP)
Separat VLAN/VRF pentru fabrica SRF; izolarea de traficul clientului.
MTU 9000 end-to-end; RSS/RPS și fixarea IRQ la NUMA.
QoS/prioritate pentru RoCE (dacă nu se pierde), ECN/RED pentru vârfurile TCP.
Doi arbori de grăsime independenți până la storaj (TOR-uri duale, alimentatoare de putere diferite).
Linux/Tuning gazdă (Exemplu)
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 (fragment "multipath. inf "):
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 și profilare
fio - set minim de profiluri: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
Sfaturi:
- Încălzire și măsurare separată, înregistrați temperatura/throttling termic.
- Testați pe LUN/volum, nu pe FS (dacă ținta este hardware brut).
- Măsurați latența p95/p99 și 99. 9% coada - ei sunt cei care „ucid” baza de date.
Monitorizare și SLO
Măsurători:- Latență p50/p95/p99 (citire/scriere), IOPS, debit, adâncime de coadă, dispozitiv ocupat%, fuziuni, aruncare.
- La nivel de rețea: picături, retransmiteri, marcaje ECN, erori de interfață.
- La nivel de matrice: lag replicare, reconstrui/progresul resolver, scrie-amp, uzura nivel SSD.
- LUN БД (OLTP): p99 scrie ≤ 1. 5ms, p99 citeşte ≤ 1. 0 ms, disponibilitate ≥ 99. 95%.
- Jurnale: p95 se adaugă ≤ 2. 5 ms, lăţime de bandă ≥ 400 MB/s per volum.
- Backup-uri: seq scrie ≥ 1 GB/s (agregat), recuperare RTO ≤ 15 minute.
- p99 latență> prag N minute, degradarea IOPS cu același QD, creșterea de citire-modificare-scriere în RAID5/6, supraîncălzire/accelerație termică SSD, a început/blocat coaste.
Kubernetes и CSI
PVC/StorageClass: parametrii 'revendicaPolicy', 'volumeBindingMode = WaitForFirstConsumer' (locație corectă), 'allowVolumeExpansion'.
Furnizor CSI plugin-uri: instantanee/clone, QoS/politici de performanță, volum-topologie.
AccessModes: RWO pentru baza de date/stat, RWX - cu atenție (de obicei, prin fișier/rețea).
Topologie/Afinitate: pin tampoane la noduri de lângă stocare (latență scăzută).
Important: HPA/VPA nu va „vindeca” o unitate de rău; planificați volumele SLO, utilizați PodDisruptionBudget pentru rețele statale.
Instantanee, clone, grupuri de consistență
Instantanee Crash-consistente sunt rapide, dar inconsecvențele bazei de date sunt posibile.
App-consistent - prin scripturi quiesce (fsfreeze, pre/post cârlige DB).
Consistency Group (CG) - pentru mai multe LUN-uri (sisteme tranzactionale) in acelasi timp.
Clonele sunt medii rapide dev/test fără copiere.
Siguranță și conformitate
iSCSI CHAP/CHAP reciproc, izolare VLAN/VRF.
NVMe/TCP cu TLS - pentru scenarii cross-center/multi-lease.
Criptare „în repaus”: LUKS/dm-criptă, unități de auto-criptare (TCG Opal), chei în KMS.
Audit: cine a cartografiat schimbarea zonei LUN, FC, modificări multiple.
DR și operații
Replica sincronă (RPO≈0) - crește latența, distanțe scurte.
Asincron (RPO = N min) - geo-distanță, acceptabil pentru majoritatea bazelor de date cu jurnale.
Runbooks: pierderea căii MPIO, pierderea controlerului, reconstruirea discului, degradarea piscinei, comutatorul site-ului.
ferestre de serviciu: „rulare” controlere, limite rebield, astfel încât să nu mănânce prod.
FinOps (cost per performanță)
$/IOPS și $/ms p99 sunt mai utile „$/TB” pentru OLTP.
Niveluri: hot OLTP - NVMe/RAID10; rapoarte/arhivă - HDD/CE.
Dispoziții și amortizare: Plan pentru 30-50% creștere IOPS; păstrați stocul sub rebilds/scrubs.
Ieșire/fabrică: buget separat pentru rețeaua de stocare și actualizări HBA/NIC.
Lista de verificare a implementării
- Protocol (NVMe-oF/FC/iSCSI) și material izolat selectat.
- Sunt proiectate RAID/EC și bazine de tip sarcină (OLTP/log/backup).
- MPIO/ALUA/ANA și timeout configurate; verificat failover/restore.
- FS/aliniere pentru RAID, TRIM/Eliminare activată conform regulamentului.
- Tuning de coadă/qdepth/read-away; validat de profile fio (randread/write 4k, seq 1M).
- Disc/cale/latență de monitorizare p95/p99, alerte la rebilds și accelerație.
- Instantanee (app-consistent) și CG; DR/test de recuperare.
- Criptare și CHAP/TLS; Cheile în KMS audit de operațiuni.
- Parametrii kuberneți/CSI, topologia și QoS per volum.
Erori comune
O cale fără MPIO → un singur punct de eșec.
RAID5/6 sub sync-write OLTP → mare p99 scrie.
Nu TRIM → scrie-amp creștere și degradarea SSD.
QD este prea mare → „frumos” IOPS și coada teribil pentru baza de date.
Aruncați online volumele „fierbinți” cu salturi de latență OLTP →.
'queue _ if _ no _ path' fără timeout → servicii „înghețate” într-un dezastru.
Amestecarea NVMe și HDD în aceeași piscină → latență imprevizibilă.
iGaming/fintech specific
Portofel/baze de date tranzactionale: NVMe + RAID10, jurnal sincron pe un SLOG/NVMe separat, p99 scrie ≤ 1. 5 ms, instantanee CG.
Cozi de plată/anti-fraudă: jurnale seriale → blocuri mari, lățime de bandă mare, LUN-uri separate pentru jurnal și date.
Vârf TPS (turnee/meciuri): cache-uri de baze de date pre-cald, sală de picioare ≥ 30%, controlul accelerației termice, SLO burn-rate.
Reglementare: criptare LUN, maparea jurnalului de audit, exerciții DR, raportare RPO/RTO.
Total
Stocarea în bloc productivă este protocolul corect + cozile configurate corect și qdepth + disciplina RAID/CE + cache/barieră adecvată + țesătură izolată. Fixați totul în runbooks, măsurați p95/p99, validați cu profile fio, automatizați instantanee și DR - și obțineți latența previzibilă și IOPS necesare pentru produsele critice și căile de flux de numerar.