Облачные вычисления
Block и File Storage
Неправильный выбор storage tier стоит деньги: PostgreSQL на io2 вместо gp3 = переплата в 10x. Неправильная архитектура PV в Kubernetes = Pod зависает в AZ без диска. Storage - не просто 'место для файлов'.
- **Uber:** MySQL кластеры на EBS io2 с 50K+ IOPS. Переход на io2 Block Express снизил p99 latency с 5ms до 1.2ms. EBS Snapshots для ежечасных backup - автоматически через DLM (Data Lifecycle Manager).
- **Spotify:** Cassandra кластеры используют Instance Store NVMe (i4i инстансы) для максимальной скорости. Cassandra сама обеспечивает репликацию данных между нодами - потеря одной ноды не = потеря данных.
- **GitLab.com:** GitLab на EKS с EBS CSI Driver. StatefulSet для PostgreSQL с gp3 StorageClass. VolumeSnapshots через AWS Backup для ежесуточных backup. EFS для shared GitLab Pages контента.
Ebs
Amazon EBS (Elastic Block Store) - сетевые блочные диски для EC2. Аналог физического SSD, но по сети. Один EBS Volume подключается к одному EC2 (исключение: EBS Multi-Attach для io2 Block Express). Данные сохраняются при остановке EC2. Типы: gp3 (балансировка цена/производительность), io2 Block Express (ultra-high IOPS для Oracle RAC, SAP HANA), sc1/st1 (архивное хранение).
gp3 vs gp2: gp3 - новый стандарт. Baseline 3000 IOPS + 125 MB/s независимо от размера (gp2 привязывал IOPS к размеру: 3 IOPS/GB). gp3 дешевле на 20% при одинаковой или лучшей производительности. Миграция с gp2 на gp3: изменение типа без downtime.
Чем gp3 принципиально лучше gp2 для production баз данных?
Efs
Amazon EFS (Elastic File System) - управляемая NFS файловая система для Linux, монтируется одновременно на несколько EC2 и Lambda. Автоматически масштабируется (нет предварительного выделения). Идеален для: shared content между instances (WordPress media), home directories, big data analytics. Azure Files (SMB), GCP Filestore - аналоги. EFS стоит дороже EBS (~0.3$/GB vs ~0.08$/GB для gp3).
EFS Performance Modes: General Purpose (по умолчанию, низкая латентность) и Max I/O (высокий throughput, более высокая латентность - для MapReduce). Throughput Modes: Bursting (привязан к размеру FS) и Provisioned (фиксированный throughput независимо от размера). EFS Intelligent-Tiering автоматически перемещает редко используемые файлы в EFS-IA.
Для какого сценария EFS предпочтительнее EBS?
Persistent Volumes
Persistent Volumes (PV) в Kubernetes абстрагируют хранилище от Pod'ов. PV - ресурс кластера (EBS volume, EFS, NFS). PVC (Persistent Volume Claim) - запрос Pod'а на хранилище. StorageClass автоматически создаёт PV через provisioner (AWS EBS CSI Driver, EFS CSI Driver). StatefulSets используют volumeClaimTemplates для создания уникального PVC каждому Pod'у.
CSI (Container Storage Interface) - стандарт для хранилищ в Kubernetes. AWS EBS CSI Driver v1.x: поддерживает Dynamic Provisioning, Volume Snapshots, Volume Resizing. EFS CSI Driver: динамически создаёт Access Points для каждого PVC. Helm chart для установки: aws-ebs-csi-driver, aws-efs-csi-driver.
Зачем StorageClass для EBS устанавливает volumeBindingMode: WaitForFirstConsumer?
Performance Tiers
Выбор storage tier критически влияет на производительность и стоимость. io2 Block Express: 256K IOPS, 4000 MB/s - для Oracle RAC, SAP HANA, ML training с большими checkpoints. gp3: 16K IOPS, 1000 MB/s - для большинства production баз данных. Instance Store (NVMe): наибольшая скорость (локальный диск), но данные теряются при остановке - для временного кеша, Elasticsearch hot tier.
EBS Optimized Instances: выделенная пропускная способность между EC2 и EBS. Почти все современные типы EC2 EBS-optimized по умолчанию. Без EBS optimization: EBS и сеть делят один канал - IOPS падает при сетевой нагрузке.
Почему Instance Store (NVMe) нельзя использовать для хранения данных базы данных PostgreSQL?
Ключевые идеи
- **EBS types:** gp3 - дефолт для production (3K IOPS baseline, масштабируемый). io2 Block Express - ultra-high IOPS для Oracle/SAP. Instance Store - максимальная скорость, но данные не сохраняются. sc1/st1 - для sequential cold data.
- **EFS vs EBS:** EFS - NFS для shared доступа нескольких EC2/Lambda (WordPress media, shared config). EBS - exclusive block device для БД и boot volumes. EFS дороже, но решает multi-attach проблему.
- **Kubernetes storage:** StorageClass + CSI Driver = Dynamic Provisioning. WaitForFirstConsumer для EBS - привязка к AZ Pod'а. StatefulSet volumeClaimTemplates = уникальный PVC каждому Pod'у. EFS для ReadWriteMany.
Связанные темы
Block и File Storage интегрированы с вычислительными и контейнерными сервисами:
- Kubernetes StatefulSets — StatefulSets требуют persistent storage через PVC; volumeClaimTemplates создают уникальный EBS Volume для каждой реплики (postgres-0, postgres-1, postgres-2)
- EC2 Instance Types — EBS-optimized инстансы имеют выделенный канал для EBS трафика. Инстансы серии 'd' (m5d, c5d) и 'n' включают Instance Store NVMe
- AWS Backup — Централизованное управление backup для EBS Snapshots, EFS backups и RDS snapshots. Retention policies, cross-region copy, vault lock для compliance
Вопросы для размышления
- Как рассчитать оптимальный storage tier (gp3 vs io2) для PostgreSQL с профилем 70% read / 30% write, 5K IOPS среднее, 20K IOPS peak?
- Почему Cassandra и Elasticsearch часто рекомендуют Instance Store вместо EBS, несмотря на риск потери данных?
- Как организовать backup EFS файловой системы и какой RPO (Recovery Point Objective) реалистично достичь?