ذخیره سازی بلوک و عملکرد
خلاصه ای کوتاه
ذخیره سازی بلوک می دهد دستگاه های خام (LUN/حجم) که در بالای آن شما ساخت FS، LVM/ZFS، و غیره عملکرد توسط نوع رسانه، پروتکل دسترسی، صف و عمق، اندازه بلوک، طرح برنامه نویسی (RAID/EC)، کش ها و موانع، پارچه شبکه و الگوی I/O خاص برنامه (تصادفی/متوالی، خواندن/نوشتن، همگام سازی/async) تعیین می شود. هدف این است که تاخیر مورد نیاز 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/distributed (Ceph RBD, vSAN): مقیاس پذیری مناسب، اما تأخیر بالاتر است، شبکه/کدگذاری بسیار مهم است.
- تاخیر P99 ≤ 1-2 میلی ثانیه، IOPS بسیار بالا → NVMe/NVMe-oF محلی.
- پایدار «متوسط» تاخیر 2-5 میلی ثانیه، بالغ → FC یا NVMe/FC کارخانه.
- یکپارچه در اترنت، آسان تر به کار → iSCSI یا NVMe/TCP.
پروتکل ها و ویژگی های آنها
iSCSI: تطبیق پذیری، MPIO/ALUA، حساس به پیکربندی TCP (MTU، بارگیری، qdepth).
FC: جداسازی، جریان بدون تلفات، منطقه بندی WWPN، صف HBA و اعتبارات.
NVMe-oF: موازی از طریق چندین صف ارسال/تکمیل، بار کم CPU، TLS برای NVMe/TCP (در صورت لزوم) امکان پذیر است.
RAID10 - حداقل تاخیر و IOPS قابل پیش بینی ؛ مناسب برای پایگاه های داده/کیف پول.
RAID5/6 - ظرفیت بهتر، مجازات نوشتن، قطره IOPS برای همگام سازی نوشتن.
پاک کردن کدگذاری در آرایه های توزیع شده از نظر ظرفیت سودمند است، اما ضبط «گران تر» است.
NVMe SSD - P99 بالا ؛ SAS SSD - سازش ؛ HDD یک پهنای باند متوالی است، اما تصادفی بد است.
سیستم های فایل و تراز
XFS یک انتخاب عالی برای فایل های بزرگ پایگاه داده/سیاهههای مربوط است ؛ «agcount» قابل تنظیم، «زمان واقعی» برای سیاهههای مربوط.
ext4 - همه کاره، با دقت به «stride/stripe _ width» برای RAID.
ZFS - CoW، بررسی یکپارچگی، عکس های فوری/ماکت، ARC/ZIL/SLOG ؛ برای بارهای همگام سازی - SLOG در NVMe با PLP.
تراز کردن: پارتیشن های 1MiB-aligned، درست «اندازه ثبت »/« اندازه بلوک» تحت بار.
صف، عمق و اندازه بلوک
IOPS با عمق صف افزایش می یابد، اما تاخیر است ؛ هدف - QD، که IOPS مورد نیاز در طول کنترل p95/p99 می دهد.
اندازه بلوک: کوچک (4-16K) - IOPS بیشتر، پهنای باند بدتر ؛ بزرگ (128K-1M) - بهتر پایان به پایان سرعت.
NVMe qpairs: تخصیص توسط هسته/NUMA ؛ iSCSI/FC: qdepth HBA/initiators، سیاست های MPIO.
موانع و FUA: شامل نوشتن موانع افزایش قابلیت اطمینان اما افزایش p99 ؛ SLOG/PLP افست.
چند مسیر و در دسترس بودن
MPIO/DM-Multipath: تجمع مسیر، تحمل خطا.
سیاستمداران: «round-robin» (ترازنامه)، «queue-length» (دقیق تر)، «failover» (دارایی-بدهی).
ALUA «ترجیح» مسیر به کنترل فعال است.
مهم: 'no _ path _ retry', 'queue _ if _ no _ path' - با دقت به طوری که برای «مسدود کردن» I/O برای دقایق طولانی.
منطقه بندی FC: «یک منطقه آغازگر - یک هدف» (شعاع انفجار را کاهش می دهد).
NVMe-oF: ANA (دسترسی نامتقارن فضای نام) - аналог ALUA.
TRIM/دور انداختن و ذخیره سازی
TRIM/Discard بلوک های SSD را آزاد می کند (نوشتن آمپر را کاهش می دهد، تاخیر را تثبیت می کند). روشن به طور منظم (CRON) و یا آنلاین دور انداختن که در آن مناسب است.
خواندن پیش رو برای خواندن متوالی مفید است ؛ در رندوم مضر است.
حافظه های کنترل کننده Write-back - فقط با BBU/PLP ؛ در غیر این صورت، خطر از دست دادن اطلاعات وجود دارد.
پشته شبکه (برای iSCSI/NVMe-TCP)
VLAN/VRF جداگانه برای کارخانه SRF ؛ جداسازی از ترافیک مشتری.
MTU 9000 پایان به پایان ؛ RSS/RPS و IRQ به NUMA متصل می شوند.
QoS/اولویت برای RoCE (اگر بدون تلفات)، ECN/RED برای قله TCP.
دو درخت چربی مستقل تا storaj (TORs دوگانه، فیدر قدرت های مختلف).
لینوکس/تنظیم میزبان (نمونه)
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
نکات:
- گرمایش و اندازه گیری جداگانه، درجه حرارت/حرارتی را ثبت کنید.
- تست بر روی LUN/حجم، نه FS (اگر هدف سخت افزار خام است).
- اندازه گیری تاخیر p95/p99 و 99. 9٪ دم - آنها کسانی هستند که «کشتن» پایگاه داده.
- تاخیر p50/p95/p99 (خواندن/نوشتن)، IOPS، توان، صف عمق، دستگاه مشغول٪، ادغام، دور انداختن.
- در سطح شبکه: قطره، انتقال مجدد، علائم ECN، خطاهای رابط.
- در سطح آرایه: تاخیر تکرار، پیشرفت بازسازی/حل کننده، نوشتن آمپر، SSD در سطح سایش.
- БД LUN (OLTP): p99 نوشتن ≤ 1. 5ms، p99 ≤ 1 را بخوانید. 0 میلی ثانیه، در دسترس بودن ≥ 99. 95%.
- سیاهههای مربوط: p95 ضمیمه ≤ 2. 5 میلی ثانیه، پهنای باند ≥ 400 مگابایت بر ثانیه در هر حجم.
- پشتیبان گیری: seq نوشتن ≥ 1 GB/s (جمع شده)، بازیابی RTO ≤ 15 دقیقه.
- p99 تاخیر> آستانه N دقیقه، تخریب IOPS با همان QD، رشد خواندن اصلاح نوشتن در RAID5/6، بیش از حد/thermal throttle SSD، دنده شروع/گیر کرده است.
کوبرنتیز и CSI
PVC/StorageClass: پارامترهای 'reclaimPolicy', 'volumeBindingMode = WaitForFirstConsumer' (مکان صحیح), 'allowVolumeExpansion'.
فروشنده پلاگین CSI: عکس های فوری/کلون, QoS/سیاست های عملکرد, حجم توپولوژی.
AccessModes: RWO برای پایگاه داده/دولت، RWX - با دقت (معمولا از طریق فایل/شبکه).
توپولوژی/Affinity: پین پد به گره های کنار ذخیره سازی (تاخیر کم).
مهم: HPA/VPA یک درایو بد را «درمان» نمی کند ؛ برنامه SLO حجم، استفاده از PodDisruptionBudget برای شبکه های stateful.
عکس های فوری، کلون ها، گروه های سازگاری
عکس های فوری crash-consistent سریع هستند، اما ناسازگاری پایگاه داده امکان پذیر است.
برنامه سازگار - از طریق اسکریپت quiesce (fsfreeze, قبل/ارسال قلاب DB).
گروه سازگاری (CG) - برای چندین LUN (سیستم های معاملاتی) در همان زمان.
کلون ها محیط های سریع dev/test بدون کپی کردن هستند.
ایمنی و انطباق
iSCSI CHAP/CHAP متقابل، جداسازی VLAN/VRF.
NVMe/TCP با TLS - برای سناریوهای متقابل مرکز/چند اجاره.
رمزگذاری «در حالت استراحت»: LUKS/dm-crypt، درایوهای خود رمزگذاری (TCG Opal)، کلیدها در KMS.
حسابرسی: چه کسی نقشه LUN، تغییر منطقه FC، تغییرات چند مسیری را ترسیم کرد.
DR و عملیات
replica synchronous (RPO≈0) - تاخیر، فاصله های کوتاه را افزایش می دهد.
ناهمزمان (RPO = N min) - فاصله جغرافیایی، قابل قبول برای اکثر پایگاه های داده با سیاهههای مربوط.
Runbooks: از دست دادن مسیر MPIO، از دست دادن کنترل، بازسازی دیسک، تخریب استخر، سوئیچ سایت.
پنجره های سرویس: کنترل کننده های «نورد»، محدودیت های rebield به طوری که برای خوردن prod.
FinOps (هزینه در هر عملکرد)
$/IOPS و $/ms p99 برای OLTP «$/TB» مفیدتر هستند.
Tiering: OLTP داغ - NVMe/RAID10 ؛ گزارش/آرشیو - HDD/EC.
مقررات و استهلاک: برنامه ریزی برای رشد 30-50٪ IOPS ؛ نگه داشتن سهام تحت rebilds/اسکراب.
خروج/کارخانه: بودجه جداگانه برای شبکه ذخیره سازی و به روز رسانی HBA/NIC.
چک لیست پیاده سازی
- پروتکل (NVMe-oF/FC/iSCSI) و پارچه جدا شده انتخاب شده است.
- RAID/EC و نوع بار استخر (OLTP/ورود/پشتیبان گیری) طراحی شده اند.
- MPIO/ALUA/ANA و زمان بندی پیکربندی شده ؛ بررسی شکست/بازگرداندن.
- FS/تراز برای RAID، TRIM/Discard طبق مقررات فعال شده است.
- تنظیم صف/qdepth/خواندن پیش رو ؛ اعتبار توسط پروفایل های فیو (randread/write 4k, seq 1M).
- دیسک/مسیر/تاخیر نظارت p95/p99، هشدار به rebilds و دریچه گاز.
- عکس های فوری (برنامه سازگار) و CG ؛ تست DR/recovery
- رمزگذاری و CHAP/TLS ؛ کلید در حسابرسی KMS از عملیات.
- پارامترهای Kubernetes/CSI، توپولوژی و QoS در هر حجم.
خطاهای رایج
یک مسیر بدون MPIO → تنها نقطه شکست.
RAID5/6 زیر sync-write OLTP → high p99 write.
بدون TRIM → رشد نوشتن آمپر و تخریب SSD.
QD بیش از حد بزرگ → IOPS «زیبا» و دم وحشتناک برای پایگاه داده است.
آنلاین دور انداختن در «داغ» حجم با OLTP → جهش تاخیر.
'queue _ if _ no _ path' without timeout → خدمات «منجمد» در یک فاجعه.
مخلوط کردن NVMe و HDD در همان استخر → تاخیر غیر قابل پیش بینی
iGaming/fintech خاص
پایگاه داده های کیف پول/معاملات: NVMe + RAID10، ورود همزمان به سیستم در SLOG/NVMe جداگانه، p99 نوشتن ≤ 1. 5 میلی ثانیه، عکس های CG.
صف های پرداخت/ضد تقلب: سیاهههای مربوط سریال → بلوک های بزرگ، پهنای باند بالا، LUN های جداگانه برای ورود و داده ها.
TPS قله (مسابقات/مسابقات): مخازن پایگاه داده قبل از گرم، ≥ سردرد 30٪، کنترل دریچه گاز حرارتی، SLO نرخ سوختگی.
تنظیم کننده: رمزگذاری LUN، گزارش حسابرسی نقشه برداری، تمرینات DR، گزارش RPO/RTO.
مجموع
ذخیره سازی بلوک تولیدی پروتکل صحیح + صف به درستی پیکربندی شده و qdepth + RAID/EC مناسب + کش/مانع نظم و انضباط + پارچه جدا شده است. پین همه چیز را در runbooks، اندازه گیری p95/p99، اعتبار با پروفایل های fio، خودکار عکس های فوری و DR - و دریافت تاخیر قابل پیش بینی و IOPS مورد نیاز برای محصول بحرانی و مسیرهای جریان نقدی.