스토리지 및 성능 차단
간략한 요약
블록 스토리지는 FS, LVM/ZFS 등을 구축하는 원시 장치 (LUN/볼륨) 를 제공합니다. 성능은 미디어 유형, 액세스 프로토콜, 대기열 및 깊이, 블록 크기, 코딩 체계 (RAID/EC), 캐시 및 장벽, 네트워크 패브릭 및 응용 프로그램 별 I/O 패턴 (랜덤/순차, 읽기/쓰기, 동기화) 에 의해 결정됩니다 ./async). 목표는 필요한 p95/p99 대기 시간과 IOPS/대역폭을 견고성과 예측 가능성으로 제공하는 것입니다.
차단 액세스 분류법
로컬: NVMe (PCIe), SAS/SATA SSD/HDD. 최소 대기 시간, 네트워크 병목 현상 없음.
네트워크:- iSCSI (이더넷, LUN, MFIO, ALUA).
- 섬유 채널 (FC) (16-64G, 낮은 대기 시간, 구역 지정).
- NVMe-oF: NVMe/\, NVMe/RoCE, NVMe/FC- 네트워크를 통한 "네이티브" NVMe, 오버 헤드 감소.
- HCI/분산 (Ceph RBD, vSAN): 편리한 확장 성이지만 대기 시간이 길고 네트워크/코딩이 중요합니다.
- p99 대기 시간은 1-2 ms이며 매우 높은 IOPS → 로컬 NVMe/NVMe-oF.
- 안정적인 "평균" 대기 시간 2-5 ms, 성숙한 → FC 또는 NVMe/FC 공장.
- 이더넷에 통합되어 → iSCSI 또는 NVMe/TCP를 쉽게 작동 할 수 있습니다.
프로토콜 및 해당 기능
iSCSI: 다목적 성, MFIO/ALUA, 계수 구성에 민감한 (MTU, 오프로드, qdeep).
FC: 격리, 무손실 흐름, WWPN 구역 설정, HBA 대기열 및 크레딧.
NVMe-oF: 여러 제출/완료 대기열, 낮은 CPU로드, TLS를 통한 병렬 처리가 NVMe/TCP에 가능합니다 (필요한 경우).
RAID/EC 및 미디어
RAID10-최소 대기 시간 및 예측 가능한 IOPS; 데이터베이스/지갑에 최적입니다.
RAID5/6-용량, 쓰기 페널티, IOPS가 동기화 작성을 위해 떨어집니다.
분산 배열의 지연 코딩은 용량 측면에서 유리하지만 기록은 "더 비싸다".
NVMe SSD-p99 탑; SAS SSD-타협; HDD는 순차적 대역폭이지만 나쁜 랜덤입니다.
파일 시스템 및 정렬
XFS는 큰 데이터베이스 파일/로그에 탁월한 선택입니다. 로그에 대한 사용자 정의 가능한 'agcount', 'realtime'
ext4 - RAID의 'stride/stripe _ width' 에주의해서 다목적.
ZFS - CoW, 무결성 점검, 스냅 샷/복제본, ARC/ZIL/SLOG; 동기화 하중-PLP를 사용한 NVMe의 SLOG.
정렬: 1MIB로 정렬 된 파티션, 하중에서 정확한 '레코드 크기 '/' 블록 크기'.
대기열, 깊이 및 블록 크기
대기 시간도 마찬가지입니다. 대상-QD, p95/p99 제어 중에 필요한 IOPS를 제공합니다.
블록 크기: 작은 (4-16K) -더 많은 IOPS, 더 나쁜 대역폭; 큰 (128K-1M) -더 나은 엔드 투 엔드 속도.
NVMe qpair: 코어/NUMA에 의해 할당; iSCSI/FC: qdeep HBA/initiators, MFIO 정책.
장벽 및 FUA: 쓰기 장벽은 신뢰성을 증가 시키지만 p99는 증가시킨다; SLOG/PLP 오프셋.
다중 경로 및 가용성
MFIO/DM-Multipath: 경로 집계, 내결함.
정치인: '라운드 로빈' (대차 대조표), '큐 길이' (더 똑똑한), '실패' (자산 책임).
활성 컨트롤러에 대한 ALUA "선호" 경로.
(PHP 3 = 3.0.6, PHP 4)
FC 구역 설정: "하나의 개시 영역 - 하나의 목표" (폭발 반경 감소).
NVMe-oF: ANA (비대칭 네임 스페이스 액세스) -аналоALUA.
TRIM/폐기 및 캐싱
TRIM/폐기는 SSD 블록을 해제합니다 (쓰기 앰프를 낮추고 대기 시간을 안정화시킵니다). 적절한 경우 정기적으로 (크론) 또는 온라인 폐기를 켜십시오.
미리 읽는 것은 연속적인 읽기에 유용합니다. 무작위로 유해합니다.
쓰기백 컨트롤러 캐시-BBU/PLP 만 사용; 그렇지 않으면 데이터 손실의 위험.
네트워크 스택 (iSCSI/NVMe-TCP의 경우)
SRF 공장에 대한 별도의 VLAN/VRF; 클라이언트 트래픽으로부터의 격리.
MTU 9000 엔드 투 엔드; NUMA에 RSS/RPS 및 IRQ 고정.
RoCE의 QoS/우선 순위 (손실이없는 경우), TCP의 ECN/RED 피크.
storaj까지 두 개의 독립적 인 지방 나무 (이중 TORs, 다른 파워 피더).
Linux/호스트 튜닝 (샘플)
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
다중 경로 (조각 '다중 경로. (PHP 3 = 3.0.6, PHP 4)
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
}
}
벤치마킹 및 프로파일 링
fio - 최소 프로파일 세트: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
팁:
- 별도의 가열 및 측정으로 온도/열 조절을 기록하십시오.
- FS가 아닌 LUN/볼륨에 대한 테스트 (대상이 원시 하드웨어 인 경우).
- 측정 p95/p99 대기 시간 및 99. 9% 꼬리-데이터베이스를 "죽이는" 사람들입니다.
모니터링 및 SLO
메트릭:- 대기 시간 p50/p95/p99 (읽기/쓰기), IOPS, 처리량, 대기열 깊이, 장치 바쁜%, 병합, 폐기.
- 네트워크 수준에서: 낙하, 재송신, ECN 마크, 인터페이스 오류.
- 배열 수준: 복제 지연, 재건/수정 진행 상황, 쓰기 앰프, 마모 수준 SSD.
- LUN 5ms, p99는 지정 1을 읽습니다. 0 ms, 가용성은 99 이상입니다. 95%.
- 통나무: p95 추가 5ms, 볼륨 당 400MB/s 이상의 대역폭.
- 백업: seq 작성자는 1GB/s (집계), 복구 RTO는 15 분입니다.
- p99 대기 시간> 임계 값 N 분, 동일한 QD로 IOPS의 저하, RAID5/6에서 읽기 수정 쓰기의 성장, 과열/열 스로틀 SSD, 시작/고정 리브.
Kubernetes... CSI
PVC/StorageClass: 매개 변수 'reacimPolicy', 'volumeBindingMode = WaitForFirstConsumer' (올바른 위치), 'allowmeExpansion'.
공급 업체 CSI 플러그인: 스냅 샷/클론, QoS/성능 정책, 볼륨 토폴로지.
AccessModes: 데이터베이스/상태 용 RWO, RWX-주의 깊게 (일반적으로 파일/네트워크를 통해).
토폴로지/선호도: 스토리지 옆에있는 노드에 핀 패드 (낮은 대기 시간).
중요: HPA/VPA는 나쁜 드라이브를 "치료" 하지 않습니다. SLO 볼륨을 계획하고 스테이트 네트워크에 PodDisruptionBudget을 사용하십시오.
스냅 샷, 클론, 일관성 그룹
충돌 일관된 스냅 샷은 빠르지 만 데이터베이스 불일치가 가능합니다.
일관된 앱-quiesce 스크립트를 통한 (fsfreete, pre/post hooks DB).
일관성 그룹 (CG) - 동시에 여러 LUN (트랜잭션 시스템) 의 경우.
클론은 복사하지 않고 빠른 개발/테스트 환경입니다.
안전 및 준수
iSCSI CHAP/상호 CHAP, VLAN/VRF 격리.
교차 중심/다중 임대 시나리오의 경우 TLS가있는 NVMe/TCP입니다.
"휴식 중" 암호화: LUKS/dm- 크립트, 자체 암호화 드라이브 (TCG Opal), KMS의 키.
감사: LUN, FC 구역 변경, 다중 경로 변경을 매핑 한 사람.
DR 및 운영
동기식 복제본 (RPO λ0) -대기 시간, 짧은 거리를 증가시킵니다.
비동기 (RPO = N min) -지리 거리, 로그가있는 대부분의 데이터베이스에서 허용됩니다.
런북: MPIO 경로 손실, 컨트롤러 손실, 디스크 재건, 풀 열화, 사이트 스위치.
서비스 창: "롤링" 컨트롤러, rebield 제한으로 제품을 먹지 않습니다.
FinOps (성능당 비용)
$/IOPS 및 $/ms p99는 OLTP에 더 유용한 "$/TB" 입니다.
등급: 핫 OLTP-NVMe/RAID10; 보고서/아카이브-HDD/EC.
조항 및 감가 상각: 30-50% IOPS 성장 계획; 리빌드/스크럽으로 재고를 유지하십시오.
탈출/공장: 스토리지 네트워크 및 HBA/NIC 업데이트를위한 별도의 예산.
구현 체크리스트
- 프로토콜 (NVMe-oF/FC/iSCSI) 및 분리 된 패브릭이 선택되었습니다.
- RAID/EC 및로드 유형 풀 (OLTP/로그/백업) 이 설계되었습니다.
- MFIO/ALUA/ANA 및 타임 아웃 구성; 실패/복원을 확인했습니다.
- 규정에 따라 RAID, TRIM/폐기에 대한 FS/정렬.
- 큐 튜닝/qdeep/read- 미리; fio 프로파일에 의해 검증 됨 (randreaded/write 4k, seq 1M).
- 디스크/경로/대기 시간 모니터링 p95/p99, 리빌드 및 스로틀 경고.
- 스냅 샷 (앱 일관성) 및 CG; DR/복구 테스트.
- 암호화 및 CHAP/TLS; KMS 운영 감사 키.
- 볼륨 당 Kubernetes/CSI 매개 변수, 토폴로지 및 QoS.
공통 오류
MPIO → 단일 실패 지점이없는 하나의 경로.
동기화 OLTP → 높은 p99 쓰기에서 RAID5/6.
TRIM → 쓰기 앰프 성장 및 SSD 저하가 없습니다.
QD는 데이터베이스에 너무 큰 → "아름다운" IOPS와 끔찍한 꼬리입니다.
OLTP → 대기 시간 점프로 "핫" 볼륨을 온라인으로 폐기하십시오.
시간 초과없이 'queu _ if _ no _ path' → 재난시 "동결 된" 서비스.
동일한 수영장에서 NVMe와 HDD를 혼합하면 예측할 수없는 대기 시간입니다.
iGaming/fintech 특정
지갑/트랜잭션 데이터베이스: NVMe + RAID10, 별도의 SLOG/NVMe에 대한 동기 로그, p99 쓰기 5ms, CG 스냅 샷.
결제 대기열/사기 방지: 직렬 로그 → 큰 블록, 높은 대역폭, 로그 및 데이터를위한 별도의 LUN.
피크 TPS (토너먼트/일치): 예열 데이터베이스 캐시, 헤드 룸 30% 이상, 열 스로틀 제어, 연소 속도 SLO.
규제: LUN 암호화, 매핑 감사 로그, DR 연습, RPO/RTO보고.
합계
생산 블록 스토리지는 올바른 프로토콜 + 올바르게 구성된 큐와 qdeep + 적절한 RAID/EC + 캐시/배리어 규칙 + 격리 된 패브릭입니다. 런북의 모든 것을 핀하고, p95/p99를 측정하고, fio 프로파일로 검증하고, 스냅 샷 및 DR을 자동화하고, 중요한 제품 및 현금 흐름 경로에 필요한 예측 가능한 대기 시간과 IOPS를 얻으십시오.