Bloco de armazenamento e desempenho
Resumo curto
O armazenamento em bloco fornece dispositivos crus (LUN/volume) sobre os quais você constrói FS, LVM/ZFF, etc. O desempenho é definido pelo tipo de mídia, protocolo de acesso, filas e profundidade, tamanho de bloco, esquema de codificação (FLASH/EC), caixas e barreiras, fábrica de rede e pattern I/O de uma aplicação específica (rand/série, leitura/gravação, sync/async). O objetivo é fornecer os p95/p99 devidos de atraso e IOPS/banda com sustentabilidade e previsibilidade.
Taxonomia de acesso em bloco
Local: NVMe (PCIe), SAS/SATA SSD/HDD. Latidão mínima, falta de estreitos de rede.
Rede:- iSCSI (Ethernet, LUN, MPIO, ALUA).
- Fibra Channel (FC) (16-64G, atrasos baixos, sonding).
- NVMe-oF: NVMe/TCP, NVMe/RoCE, NVMe/FC - «nativo» NVMe na rede, menos falsificações.
- HCI/distribuídos (Ceph RBD, vSAN): escalabilidade fácil, mas latência superior, rede crítica/codificação.
- p99 latency ≤ 1-2 ms, muito alto IOPS → NVMe/NVMe-oF local.
- Latência «média» estável de 2-5 ms, fábrica madura → FC ou NVMe/FC.
- Unificação em Ethernet, operação mais fácil → iSCSI ou NVMe/TCP.
Protocolos e suas características
iSCSI: versatilidade, MPIO/ALUA, sensível à configuração TCP (MTU, offload, qdepth).
FC: isolamento, fluxo sem perdas, zoneamento por WWPN, filas HBA e empréstimos.
NVMe-oF: Paralelidade através de vários Submission/Complition Queues, baixa carga CPU, TLS é possível para NVMe/TCP (se necessário).
LED/EC e mídia
RAID10 - Latidão mínima e IOPS previsíveis; ideal para o banco de dados/carteiras.
RAID5/6 - melhor em capacidade, multa de gravação (write penalty), cai iOPS para sync-write.
O Erasure Coding em matrizes distribuídas é benéfico em capacidade, mas a gravação é mais cara.
NVMe SSD - p99 topo; SAS SSD - compromisso; O HDD é um rand consistente, mas ruim.
Sistemas de arquivo e alinhamento
XFS é uma escolha excelente para grandes arquivos/registros de banco de dados; personalizável 'agcount', 'realtime' para os logs.
ext4 - versátil, atento a 'stride/stripe _ width' sob o FLASH.
ZFF - CoW, verificação de integridade, snapshots/réplica, ARC/ZIL/SLOG; para cargas sync - SLOG em NVMe com PLP.
Alinhamento: 1MiB-aligned seções, corretas 'recordsize '/' blackkse' sob carga.
Filas, profundidade e tamanho do bloco
IOPS crescem com Queue Depth, mas também cresce a latência; O alvo é o QD que fornece o IOPS desejado no controle p95/p99.
Tamanho do bloco: pequeno (4-16K) - maior do que o IOPS, pior do que a banda de banda; maiores (128K-1M) - melhor velocidade de passagem.
NVMe qpairs: Destaque pelos núcleos/NUMA; iSCSI/FC: qdepth NVA/iniciadores, políticas MPIO.
Barreiras e FUA: os write-briers incluídos aumentam a confiabilidade, mas aumentam o p99; O SLOG/PLP é compensado.
Multipath e disponibilidade
MPIO/DM-Multipath: agregação de caminhos, resistência a falhas.
Políticas: 'round-robin' (balanço), 'queue-length' (mais inteligente), 'failover' (ativo passivo).
ALUA: caminhos «preferenciais» para o controlador ativo.
Importante: 'no _ path _ retry', 'queue _ if _ no _ path' - com cuidado para não «congelar» I/O por longos minutos.
Zoneamento FC: «Uma área iniciadora é um alvo» (reduces blast radius).
NVMe-oF: ANA (Asymmetric Namespace Access) — аналог ALUA.
TRIM/Discard e armazenamento em dinheiro
O TRIM/Discard libera blocos SSD (reduz write-amp, estabiliza a latência). Ative regularmente (cron) ou online discard onde for permitido.
O read-ahead é útil para leituras em sequência; Não é bom para a randa.
Os cachês do controlador Write-back são apenas com BBU/PLP; caso contrário, risco de perda de dados.
Pilha de rede (para iSCSI/NVMe-TCP)
VLAN/VRF individuais para fábrica de estojos; isolamento do tráfego de clientes.
MTU 9000 end-to-end; RSS/RPS e pinning IRQ para NUMA.
QoS/priority para RoCE (se lossless), ECN/RED para picos TCP.
Duas árvores de fat independentes até o estoque (TOR duplo, fiders de energia diferentes).
Sintonizar Linux/host (amostra)
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 (fatia '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 e perfilação
fio - conjunto mínimo de perfis: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
Dicas:
- Separe o aquecimento e a medição, fixe a temperatura/thermal throttling.
- Teste em LUN/volume em vez de FS (se o alvo for ferro «cru»).
- Mede p95/p99 latency e 99. 9% de tail são eles que matam o BD.
Monitoramento e SLO
Métricas:- Latitude p50/p95/p99 (read/write), IOPS, throughput, queue-depth, device busy%, murges, discard.
- Nível de rede: drops, retransmits, marcadores ECN, erros de interface.
- Ao nível da matriz: liga de replicação, rebuild/resilver progresso, write-amp, wear-level SSD.
- LUN БД (OLTP): p99 write ≤ 1. 5 mc, p99 read ≤ 1. 0 mc, disponibilidade ≥ 99. 95%.
- Logi/revistas: p95 append ≤ 2. 5 mc, ≥ de 400 MB/s no volume.
- Backaps: seq write ≥ 1 GB/s (adicionado), RTO de recuperação ≤ 15 min
- p99 latency> limiar N minutos, degradação do IOPS com o mesmo QD, crescimento do read-modify-write em RAID5/6, superaquecimento/throttle SSD, rebildos iniciados/presos.
Kubernetes и CSI
PVC/StorageClass: parâmetros 'reclaimPolicy', 'volumeBindingMode=WaitForFirstConsumer' (posição correta), 'allowVolumeExpansion'.
Plugins CSI vendedores: snapshots/clones, QoS/políticas de desempenho, volume-topology.
AccessModes: VWO para BB/estação, RWX - cuidado (normalmente por meio de arquivos/rede).
Topology/Affinity: pin para nodes perto do estojo (baixa latência).
Importante: HPA/VPA não «curará» um disco ruim; planeje volumes SLO, use PodDisruptionBudget para redes stateful.
Snapshots, clones, Consistency Groups
Crash-consistent é rápido, mas pode haver incoerências de BD.
App-consistent - através de script quiesce (fsfreeze, pré/post hooks BD).
Consistency Group (CG) - simultaneamente para vários LUN (sistemas de transação).
Clones - Ambientes uv/teste rápidos sem cópia.
Segurança e Complacência
iSCSI CHAP/Mutual CHAP, isolamento VLAN/VRF.
O NVMe/TCP com TLS é para cenários interatacenciais/multitarizados.
Criptografia em paz: LUKS/dm-crypt, self-encrypting drives (TCG Opal), chaves no KMS.
Auditoria: Quem é o Mappil LUN, Alteração de Zonas FC, Alterações Multipath.
DR. e operações
Réplica sincronizada (RPO≈0) - Aumenta a latência, as distâncias curtas.
Asincrona (RPO = N min) - Georágrafo, aceitável para a maioria dos BD com revistas.
Runbooks: perda do caminho MPIO, perda do controlador, rebuild disco, degradação do pool, alteração do site.
As janelas de serviço são «rolling» controladores, os limites do rebil, para não comer a prosa.
FinOps (custo de desempenho)
$/IOPS e $/ms p99 - mais útil que «$/TB» para OLTP.
Tiering: OLTP quente - NVMe/RAID10; repique/arquivo - HDD/EC.
Reservas e amortização: planeje um crescimento entre 30% e 50% do IOPS; mantenha o estoque debaixo das rebildas/escavadeiras.
Egress/fábrica: orçamento separado para rede de estojos e atualizações HBA/NIC.
Folha de cheque de implementação
- O protocolo (NVMe-oF/FC/iSCSI) e a fábrica isolada foram selecionados.
- Foram projetados o FLASH/EC e os poóis por tipo de carga (OLTP/logs/bacap).
- Configurados MPIO/ALUA/ANA e temporizadores; verificados failover/restore.
- O FS/alinhamento para o FLASH está ativado pelo TRIM/Discard de acordo com o regulamento.
- Sintonizar filas/qdepth/read-ahead; validado por perfis fio (randread/write 4k, seq 1M).
- Monitoramento de disco/caminho/latência p95/p99, alertas em rebildos e throttle.
- Snapshots (app-consulent) e CG; teste de DR./recuperação.
- Criptografia e CHAP/TLS; chaves no KMS; Auditoria de operações.
- Kubernetes/CSI parâmetros, topologia e QoS por volume.
Erros típicos
Um caminho sem MPIO → single point of failure.
RAID5/6 sob sync-write OLTP → p99 write alto.
Não há TRIM → crescimento write-amp e degradação SSD.
QD é muito grande → «bonitos» iOPS e terrível tail para BD.
Discard online em volumes «quentes» com OLTP → saltos de latência.
'queue _ if _ no _ path' → os serviços «dependentes» do acidente.
A mistura de NVMe e HDD em uma única bala → uma latência imprevisível.
Especificidades para iGaming/Fintech
BB/transacção: NVMe + RAID10, registro sincronizado em SLOG/NVMe, p99 write ≤ 1. 5 mc, CG-Snapshots.
Filas de pagamento/antifrode: logs sequenciais → blocos grandes, alta largura de banda, LEN individuais para registro e dados.
TPS de pico (torneios/jogos): BD pré-warm, headroom ≥ 30%, controle thermal throttle, burn-rate SLO.
Regulação: criptografia de LUN, logos de auditoria de muppings, ensinamentos de DR., relatórios RPO/RTO.
Resultado
Armazenamento em bloco produtivo é o protocolo correto + filas configuradas corretamente e qdepth + idôneo de AID/EC + disciplina em dinheiro/barreiras + fábrica isolada. Fixe tudo em runbook-s, mede p95/p99, valide os perfis fio, automatize os snapshots e DR. - e obtenha a letalidade previsível e o IOPS necessários para os caminhos críticos do produto e fluxo de dinheiro.