ブロックストレージとパフォーマンス
概要
ブロックストレージは、FS、 LVM/ZFSなどをビルドするrawデバイス(LUN/ボリューム)を提供します。パフォーマンスは、メディアタイプ、アクセスプロトコル、キューと深さ、ブロックサイズ、コーディングスキーム(RAID/EC)、キャッシュと障壁、ネットワークファブリック、およびアプリケーション固有のI/Oパターン(ランダム/シーケンシャル、読み取り/書き込み、同期/非同期)によって決定されます。目標は、必要なp95/p99レイテンシとIOPS/帯域幅を堅牢性と予測可能性を提供することです。
ブロックアクセスタクソノミ
ローカル:NVMe (PCIe)、 SAS/SATA SSD/HDD。最小限のレイテンシ、ネットワークボトルネックなし。
ネットワーク:- iSCSI(イーサネット、LUN、 MPIO、 ALUA)
- ファイバ・チャネル(FC) (16-64G、低遅延、ゾーニング)
- NVMe-oF: NVMe/TCP、 NVMe/RoCE、 NVMe/FC-ネットワーク上の「ネイティブ」NVMeのオーバーヘッドが少なくなります。
- HCI/分散 (Ceph RBD、 vSAN):便利なスケーラビリティですが、レイテンシが高く、ネットワーク/コーディングが重要です。
- p99レイテンシー≤ 1-2ミリ秒、非常に高いIOPS→ローカルNVMe/NVMe-oF。
- 安定した「平均」レイテンシ2-5ミリ秒、成熟した→FCまたはNVMe/FC工場。
- Ethernet上で統合され、操作が簡単→iSCSIまたはNVMe/TCP。
プロトコルとその機能
iSCSI:汎用性、MPIO/ALUA、 TCP構成に敏感(MTU、オフロード、qdepth)。
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;SLOG on NVMe with PLP。
アライメント:パーティションを1MiB-alignedし、ロード中の'recordsize'/'blocksize'を修正します。
キュー、深さ、ブロックサイズ
IOPSはQueue Depthで上昇していますが、レイテンシも同様です。target-p95/p99制御時に必要なIOPSを与えるQD。
ブロックサイズ:小さい(4-16K)-より多くのIOPS、より悪い帯域幅;大きい(128K-1M)-より良いエンド・ツー・エンドの速度。
NVMe qpairs: コア/NUMAによる割り当て;iSCSI/FC: qdepth HBA/イニシエータ、 MPIOポリシー。
障壁およびFUA:含まれた書き込み障壁は信頼性を高めますが、p99を高めます;SLOG/PLPオフセット。
マルチパスと可用性
MPIO/DM-Multipath:パス集約、フォールトトレランス。
政治家:'round-robin'(バランスシート)、'queue-length'(スマート)、'failover'(資産責任)。
ALUAアクティブコントローラへの「優先」パス。
重要:'no_path_retry'、 'queue_if_no_path'-長い分間I/Oを「フリーズ」しないように注意してください。
FCゾーニング:「1イニシエータゾーン-1ターゲット」(ブラスト半径を削減)。
NVMe-oF: ANA(非対称の名前空間アクセス)-ALUA。
トリム/破棄とキャッシュ
TRIM/DiscardはSSDブロックを解放します(書き込みアンプを下げ、レイテンシーを安定させます)。適切な場合は、定期的に(cron)またはオンラインで破棄をオンにします。
読み取り先読みは連続読み取りに便利です。ランダムに有害です。
ライトバックコントローラキャッシュ-BBU/PLPのみ。そうでなければ、データ損失のリスク。
ネットワークスタック(iSCSI/NVMe-TCP用)
SRFの工場のための別のVLAN/VRF;顧客の交通からの分離。
MTU 9000エンドツーエンド;RSS/RPSおよびIRQのNUMAへのピン留め。
RoCEのQoS/priority(ロスレスの場合)、TCPピークのECN/RED。
storaj(デュアルTOR、異なるパワーフィーダー)までの2つの独立した脂肪木。
Linux/Hostチューニング(サンプル)
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(フラグメント'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
}
}
ベンチマークとプロファイリング
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/ボリュームでテストします(ターゲットがrawハードウェアの場合)。
- p95/p99レイテンシと99を測定します。9%の尾-彼らはデータベースを「殺す」人です。
モニタリングとSLO
メトリクス:- レイテンシp50/p95/p99(読み取り/書き込み)、IOPS、スループット、キュー深度、デバイスのビジー%、マージ、破棄。
- ネットワークレベルで:ドロップ、再送信、ECNマーク、インターフェイスエラー。
- アレイ・レベル:レプリケーション・ラグ、再構築/リゾルバの進行状況、書き込みアンプ、摩耗レベルのSSD。
- LUN: p99 write ≤ 1。5ms、 p99読む≤ 1。0 ms、可用性≥ 99。95%.
- ログ:p95追加≤ 2。5 ms、帯域幅≥ボリュームあたり400 MB/秒。
- バックアップ:seq write ≥ 1 GB/秒(集計)、回復RTO ≤ 15分。
- p99 latency> threshold N分、同じQDでのIOPSの劣化、RAID5/6での読み取り変更書き込みの増加、過熱/サーマルスロットルSSD、開始/スタックリブ。
Kubernetes CSI
PVC/StorageClass:パラメータ'ReclaimPolicy'、 'volumeBindingMode=WaitForFirstConsumer'(正しい場所)、'allowVolumeExpansion'。
ベンダーCSIプラグイン:スナップショット/クローン、QoS/パフォーマンスポリシー、ボリュームトポロジ。
AccessModes:データベース/ステート用のRWO、 RWX-慎重に(通常はファイル/ネットワーク経由で)。
トポロジ/アフィニティ:ストレージの横にあるノードへのピンパッド(低遅延)。
重要:HPA/VPAは、悪いドライブを「治す」ことはありません。SLOボリュームを計画し、ステートフルネットワークにPodDisruptionBudgetを使用します。
スナップショット、クローン、コンシステンシ・グループ
クラッシュ一貫性のあるスナップショットは高速ですが、データベースの矛盾は可能です。
App-consistent-quiesceスクリプト(fsfreeze、 pre/post hooks DB)を介して。
Consistency Group (CG)-複数のLUN(トランザクションシステム)を同時に使用できます。
クローンは、コピーせずに迅速な開発/テスト環境です。
安全性とコンプライアンス
iSCSI CHAP/相互 CHAP、 VLAN/VRF絶縁。
NVMe/TCP with TLS-クロスセンター/マルチリースシナリオ。
「安静時」の暗号化:LUKS/dm-crypt、自己暗号化ドライブ(TCG Opal)、 KMSのキー。
監査:LUN、 FCゾーンの変更、マルチパスの変更をマッピングしたユーザー。
DRとオペレーション
同期レプリカ(RPO≈0)-遅延、短距離を増加させます。
非同期(RPO=N min)-地理距離、ログ付きのほとんどのデータベースで許容。
ランブック:MPIOパスの損失、コントローラの損失、ディスクの再構築、プールの劣化、サイトスイッチ。
サービスウィンドウ:「圧延」コントローラー、prodを食べないようにリビールドリミット。
FinOps(パフォーマンスあたりのコスト)
$/IOPSおよび$/ms p99はOLTPのためにより有用な「$/TB」です。
階層化:ホットOLTP-NVMe/RAID10;レポート/アーカイブ-HDD/EC。
規定と減価償却:30-50% IOPS成長のための計画;rebilds/scrubsの下で在庫を保って下さい。
Egress/factory:ストレージ・ネットワークとHBA/NICの更新のための個別の予算。
実装チェックリスト
- プロトコル(NVMe-oF/FC/iSCSI)と絶縁ファブリックを選択。
- RAID/ECおよび負荷タイププール(OLTP/log/backup)が設計されています。
- 設定されたMPIO/ALUA/ANAとタイムアウト;チェックされたフェイルオーバー/リストア。
- RAID、 TRIM/DiscardのFS/alignmentは規則に従って有効になります。
- キューのチューニング/qdepth/read-ahead;フィオプロファイルによって検証(randread/write 4k、 seq 1M)。
- ディスク/パス/レイテンシ監視p95/p99、リビルドおよびスロットルへのアラート。
- スナップショット(app-consistent)およびCG;DR/リカバリテスト。
- 暗号化とCHAP/TLS;操作のKMS監査のキー。
- ボリュームあたりのKubernetes/CSIパラメータ、トポロジーおよびQoS。
よくあるエラー
MPIOのない1つのパス→失敗の単一のポイント。
sync-write OLTP→high p99 writeの下でRAID5/6します。
TRIM→書き込みアンプの増大とSSDの劣化はありません。
QDは大きすぎる→「美しい」IOPSとデータベースの恐ろしい尾です。
OLTP→レイテンシージャンプで「ホット」ボリュームをオンラインで破棄します。
'queue_if_no_path'災害時のタイムアウト→「凍結」サービス。
同じプールでNVMeとHDDを混在させる→予測不可能なレイテンシー。
iGaming/fintech固有の
ウォレット/トランザクションデータベース:NVMe+RAID10、別のSLOG/NVMe上の同期ログ、p99書き込み≤ 1。5 ms、 CGスナップショット。
支払いキュー/不正防止:シリアルログ→大きなブロック、高帯域幅、ログとデータ用の独立したLUN。
ピークTPS(トーナメント/マッチ):予熱データベースキャッシュ、ヘッドルーム≥ 30%、サーマルスロットル制御、バーンレートSLO。
規制:LUN暗号化、マッピング監査ログ、DR演習、RPO/RTOレポート。
合計
生産的なブロックストレージは、正しいプロトコル+正しく構成されたキューとqdepth+適切なRAID/EC+キャッシュ/バリア規律+分離ファブリックです。すべてをランブックにピン留めし、p95/p99を測定し、フィオプロファイルで検証し、スナップショットとDRを自動化し、重要な製品とキャッシュフローのパスに必要な予測可能なレイテンシとIOPSを取得します。