Системы хранения данных и NAS
Краткое резюме
Хранилище — это сочетание медиа (SSD/NVMe/HDD), сетей (Ethernet/IB/FC), протоколов (NFS/SMB/iSCSI/S3) и ПО (ZFS, Ceph, NetApp, TrueNAS и т. п.), которое обеспечивает производительность, надежность, безопасность и экономику. Правильный выбор зависит от профиля I/O (рандом/последовательный, блок/файл/объект), требований к RPO/RTO и SLO по латентности/пропускной способности.
Таксономия хранилищ
DAS (Direct Attached Storage) — диски «рядом с сервером». Минимальная латентность, нет сетевых бутылочных горлышек, но сложнее делиться ресурсами.
SAN (Storage Area Network) — блочное хранилище по FC/iSCSI/NVMe-oF. Высокая производительность, общие LUN-ы, централизованное управление.
NAS (Network Attached Storage) — файловые шары по NFS/SMB. Удобно для общих директорий, логов, артефактов, медиаконтента.
Объектное хранилище — S3-совместимые API (Ceph RGW/MinIO/облака). Для бэкапов, логов, архивов, медиа, модельных артефактов.
Гиперконвергентные решения (HCI) — объединяют вычисление и хранение (Ceph, vSAN, StarWind и др.) для горизонтального масштаба.
Протоколы доступа
Файловые:- NFSv3/v4 — Unix/Posix среда, стейтфул-блокировки, Kerberos/KRB5i/KRB5p.
- SMB 3.x — Windows/домены AD, шифрование/подписи, multichannel, DFS.
- iSCSI — поверх Ethernet, LUN, много путей (MPIO), удобно для виртуализации/БД.
- FC/NVMe-oF — низкая латентность, специализированные фабрики/карты.
- S3 API — версии объектов, lifecycle, WORM/Compliance mode, multipart upload.
- БД/виртуалки → блок (iSCSI/NVMe-oF).
- Совместные папки/CI артефакты → NFS/SMB.
- Логи/бэкапы/медиа/модели → S3-совместимая объектка.
Данные и кодирование: RAID, ZFS, Erasure Coding
RAID
RAID1/10 — низкая латентность и высокая IOPS/рандом-чтение/запись.
RAID5/6 — экономия емкости, но штраф на запись (write penalty).
ZFS — копия-на-запись (CoW), пулы и vdev, ARC/L2ARC кэш, ZIL/SLOG для sync-операций, снапшоты/реплика и встроенная целостность (checksums).
Erasure Coding (EC) в распределенных системах (Ceph/MinIO): код Рида-Соломона `k+m` — экономия по сравнению с трехкратной репликацией при приемлемой деградации производительности на запись.
- Горячие случайные нагрузки (метаданные, малые файлы) → RAID10/ZFS-мирроры на NVMe.
- Холодные/архивные → EC, большие HDD, агрессивные кэши.
- Для sync-записей (NFS export) — выделенный SLOG на надежных низколатентных NVMe (PLP).
Производительность: IOPS, пропускная, латентность
IOPS важны для мелких случайных операций (DB/метаданные).
Пропускная способность — для больших файлов (видео, бэкапы).
Латентность p95/p99 — критична для БД, очередей, API кэшей.
Очереди и параллелизм: многопоточность на клиенте, `rsize/wsize` для NFS, `rw,queue_depth` для iSCSI.
Сеть: 25/40/100 GbE (или IB) + RSS/RPS, jumbo MTU внутри ЦОДа.
Кэширование и тировка
ARC/L2ARC (ZFS) — RAM и NVMe-кэш чтения; SLOG — журнал sync-записей.
Write-back/Write-through кэши контроллеров — осторожно, только с батарейкой/суперконденсатором (BBU/PLP).
Tiering: NVMe (горячее) → SSD (теплое) → HDD (холодное) → объектка (архив). Политики миграции и lifecycle.
Снапшоты, клоны, репликация, DR
Снапшоты (CoW): мгновенные точки для отката/бэкапа; хранить каталоги «внутри» хранилища, а не только в гипервизоре.
Репликация: синхронная (RPO≈0, выше latency), асинхронная (RPO=N мин).
Клоны: экономные dev/test окружения.
DR-схемы: 3-2-1 (три копии, два типа носителей, одна — вне площадки), регулярные DR-учения; цели RPO/RTO.
Безопасность, комплаенс и многоарендность
Аутентификация/авторизация: LDAP/AD, Kerberos/NTLMv2 для SMB, AUTH_SYS/KRB для NFSv4.
Изоляция: VLAN/VRF, export-политики, tenant-квоты/quotas.
Шифрование: в покое (LUKS/ZFS native/SED) и в полете (NFS-krb5p/SMB encryption/TLS для S3).
WORM/Compliance для юридически значимых данных (S3 Object Lock, SnapLock аналоги).
Аудит: неизменяемые логи доступа, интеграция с SIEM.
Мониторинг и SLO
Метрики:- По пулам/томам: использование, `p95/p99 latency`, IOPS, throughput, queue depth, cache hit, write amplification.
- По сети: drops, retransmits, PPS, MTU mismatch.
- По носителям: media errors, wear-level, температура, SMART.
- По репликации/снапшотам: лаг/возраст, успех задач, длительность.
- NFS шар для CI: p95 latency ≤ 3 мс, доступность ≥ 99.95%.
- LUN для БД: p99 write ≤ 1.5 мс, синхронная реплика в пределах региона; RPO 0, RTO ≤ 5 мин.
- Объектка: p95 PUT ≤ 50 мс, p95 GET ≤ 30 мс, 11×9 долговечности (через EC/репликации).
- Заполнение пула > 80/90/95%, падение cache hit, рост write-amp, деградация диска, просадка по сети, лаг репликации > порога.
Резервное копирование и архив
Снимки + удаленная реплика + отдельный бэкап в объектку/ленты.
Политики retention: дневные/недельные/месячные.
Иммутабельность: S3 Object Lock (Governance/Compliance), «air-gap» (лента/отключенные аккаунты).
Тесты восстановления — регулярно.
Практические шаблоны (минимальные)
Экспорт NFS (пример)
/pool/projects 10. 0. 0. 0/16(rw,async,no_root_squash,sec=krb5p)
SMB share (фрагмент smb.conf)
[media]
path = /pool/media read only = no vfs objects = acl_xattr, recycle ea support = yes kernel oplocks = no smb encrypt = required
ZFS: создание пула и dataset
bash zpool create tank mirror nvme0n1 nvme1n1 zfs set atime=off compression=lz4 tank zfs create tank/projects zfs set recordsize=1M tank/projects # большие файлы zfs set recordsize=16K tank/db # БД/мелкие I/O
iSCSI (идеи)
Включить ALUA/MPIO, корректные таймауты и queue depth на клиентах.
Разнести сети iSCSI и клиентский трафик, задействовать Jumbo MTU внутри сторадж-фабрики.
Планирование емкости и производительности
Модель working set (горячий объем) и growth rate (месячный прирост).
Запас по IOPS и пропускной способности 30–50% под пики и ребаланс.
Учитывайте write amplification (RAID/EC/CoW) и метаданные.
Для объектки — стоимость запросов и исходящего трафика, классы хранения (standard/IA/glacier-подобные).
Операции и обновления
Rolling-обновления контроллеров/ОС/прошивок.
Scrubs/Resilver окна и приоритеты.
Балансировка ребилдов: ограничение I/O при восстановлении, чтобы не «убить» прод.
Runbooks на деградации/утрату узлов/сетей.
Чек-лист внедрения
- Выбран профиль доступа: файл/блок/объект + RPO/RTO/SLO.
- Схема кодирования (RAID/ZFS/EC) под нагрузку и цену.
- Сети: отдельные VLAN/VRF, MTU 9000 внутри фабрики, MPIO/ALUA.
- Кэш/тировка: ARC/L2ARC/SLOG либо аналогичные механизмы.
- Снапшоты/реплика/бэкап: расписания, иммутабельность, DR-учения.
- Мониторинг: пулы/носители/сетевые/репликационные метрики, алерты.
- Доступ/безопасность: ACL, Kerberos/AD, шифрование, аудит.
- Квоты/лимиты для тенантов и каталоги SLA/SLO.
- Документация и runbooks, тест-восстановления.
Типичные ошибки
Переполнение пула > 80% в ZFS/EC-системах → резкий рост латентности.
Один контроллер/одна сеть без MPIO/резервирования.
Смешивают горячие и холодные рабочие наборы в одном классе носителей.
Нет SLOG для sync-нагрузок на NFS → непредсказуемые задержки.
Бэкапы только «внутри» того же массива/аккаунта → потеря при аварии/компрометации.
Отсутствие регулярных scrub и SMART-мониторинга.
Игнор малых I/O-паттернов: большой `recordsize` для БД.
Специфика для iGaming/финтех
Транзакционные БД и кошельки: отдельные пулы NVMe, RAID10/ZFS-мирроры, синхронная реплика в зону B, независимые запиты.
Логи/сырые события и антифрод-фичи: объектка + lifecycle + дешевые классы, индексы/витрины — на SSD.
Контент и медиа (провайдеры): NAS + CDN, агрессивный кэш, дедупликация.
Отчетность и PII: WORM/immutability, шифрование, аудит доступа, гео-локализация данных.
Пиковые события: warm-up кэшей, лимиты ввода/вывода, контроль p99 latency на пулах.
Итог
Надежная система хранения — это правильное разбиение на классы (файл/блок/объект), адекватная схема кодирования (RAID/ZFS/EC), быстрая сеть, кэш/тировка, снапшоты+реплика+бэкап, жесткие SLO и автоматизированные операции. Следуя этим принципам, вы получите предсказуемую производительность, высокую устойчивость и прозрачную экономику хранения — с учетом требований безопасности и регуляторов.