Объектное хранилище — модель хранения данных, отличающаяся от файловых систем (иерархия директорий/файлов) и блочных устройств. Каждый объект содержит: сами данные, расширяемые метаданные (до нескольких KB произвольных пар ключ-значение) и глобально уникальный идентификатор. Объекты хранятся в плоском пространстве (bucket), доступ — через HTTP REST API.
Как работает
Объектное хранилище проектировалось для хранения огромных объёмов неструктурированных данных: медиафайлы, бэкапы, логи, данные IoT. Не имеет ограничений файловой системы: нет лимита на число файлов в директории, нет проблем с inode. S3 от Amazon — де-факто стандарт API; его совместимость поддерживают: Яндекс Object Storage, Selectel, MinIO, Ceph Object Gateway, Cloud.ru.
Ключевые особенности объектного хранилища: eventual consistency (данные становятся доступны через 10–100 мс после записи), высокая долговечность (Amazon S3 гарантирует 99.999999999% — «11 девяток»), встроенная репликация между зонами доступности, версионирование объектов.
Объектное хранилище не является файловой системой POSIX: нет атомарных переименований, нет блокировок файлов. FUSE-монтирование (s3fs, goofys) делает объектное хранилище видимым как директорию, но с высокой latency (~100–500 мс на операцию vs ~1 мс для локального диска).
История
Amazon S3 (март 2006 года) популяризировал концепцию. До этого объектное хранилище использовалось внутренне: Lustre, GPFS. Ceph — open-source объектное хранилище — разработан Сейджем Вейлом (Sage Weil) как часть его PhD, открыт в 2006 году. HDFS (Hadoop Distributed File System, 2006) — схожая идеология, но для MapReduce. OpenStack Swift (2010) — первое крупное open-source объектное хранилище с S3-совместимым API.
Виды хранилищ
| Тип | Пример | Latency | Применение |
|---|---|---|---|
| Объектное | S3, MinIO | 50–500 мс | Медиа, бэкапы, статика |
| Блочное | EBS, Ceph RBD | 1–10 мс | БД, ОС виртуальных машин |
| Файловое | NFS, EFS | 1–50 мс | Общий доступ нескольких серверов |
На что обращать внимание
Для хостинга медиафайлов сайта: загружать в объектное хранилище + раздавать через CDN — дешевле и быстрее, чем хранить на VPS. Исходящий трафик из объектного хранилища обычно тарифицируется дополнительно — учитывать при расчёте стоимости. MinIO позволяет развернуть S3-совместимое хранилище на собственном VPS с нулевыми затратами на трафик внутри одного ЦОД.
Объектное хранилище для бэкапов
Объектное хранилище — оптимально для хранения резервных копий: дешевле блочного хранилища VPS, масштабируется до терабайт без предварительного планирования. Инструменты для синхронизации с S3-совместимым хранилищем: rclone, s3cmd, aws CLI. Off-site backup — основной сценарий использования: дампы PostgreSQL автоматически загружаются в объектное хранилище через Docker-сайдкар или cron. CDN перед объектным хранилищем: CloudFront (AWS), Fastly — раздача статических ассетов через Edge. nginx проксирует запросы к объектному хранилищу через proxy_pass. Ограничения: объектное хранилище не подходит как замена блочному диску для СУБД — нет файловой системы, высокая задержка чтения/записи (10-100 мс против <1 мс у SSD).