Объектное хранение
Объектное хранение (англ. object storage) — это архитектура хранения данных, в которой информация управляется как дискретные единицы (объекты), каждый из которых содержит сами данные, метаданные и уникальный идентификатор. В отличие от традиционных файловых систем (иерархических) или блочных хранилищ (работающих на уровне секторов диска), объектное хранение не использует иерархию папок и файловых путей. Данные адресуются по плоскому адресному пространству через уникальный ключ (Object ID), что позволяет масштабировать систему до эксабайтных объёмов и обеспечивать высокую отказоустойчивость за счёт распределённой архитектуры.
История
Концепция объектного хранения возникла в конце 1990-х годов как ответ на ограничения традиционных файловых систем при работе с большими объёмами неструктурированных данных. Одним из первых значимых проектов стал Lustre (разработан в 1999 году, изначально для кластерных вычислений), который использовал объектные модели для управления хранением. Однако настоящий прорыв произошёл с появлением облачных вычислений. В 2006 году компания Amazon Web Services (AWS) запустила сервис Amazon S3 (Simple Storage Service), который стал де-факто стандартом объектного хранения. S3 предложил простой RESTful API для записи, чтения и удаления объектов, а также модель оплаты за фактически использованное пространство.
В начале 2010-х годов объектное хранение стало активно внедряться в корпоративных ЦОДах. Появились открытые решения, такие как OpenStack Swift (2010) и Ceph (изначально разработан в 2004 году, но объектный интерфейс RGW — RADOS Gateway — добавлен позже). Крупные вендоры (Dell EMC, NetApp, IBM, Hitachi) выпустили коммерческие платформы объектного хранения. В России развитие объектного хранения связано с проектами «Яндекс.Облако» (сервис Object Storage, запущен в 2018 году), VK Cloud (ранее Mail.ru Cloud Solutions) и решениями для государственных информационных систем, требующих масштабируемого и отказоустойчивого хранения.
Архитектура и принцип работы
Структура объекта
Каждый объект состоит из трёх компонентов:
- Данные (Data) — произвольный двоичный поток (файл, изображение, видео, бэкап базы данных).
- Метаданные (Metadata) — набор пар «ключ-значение», описывающих объект (тип контента, дата создания, пользовательские теги, контрольная сумма). Метаданные могут быть как системными (генерируются автоматически), так и пользовательскими.
- Уникальный идентификатор (Object ID) — строка, которая однозначно определяет объект в хранилище. Обычно это хеш-сумма (например, MD5, SHA-256) или UUID.
Плоское адресное пространство
В отличие от файловой системы, где путь к файлу выглядит как /home/user/docs/file.txt, в объектном хранении используется «плоское» пространство. Объект может быть размещён в «корзине» (bucket) — контейнере верхнего уровня, который не поддерживает вложенность папок. Однако для удобства пользователей многие реализации (например, S3) эмулируют иерархию через префиксы в имени объекта: user/docs/file.txt — это не путь, а просто строка-ключ.
API и протоколы
Основной протокол доступа — RESTful HTTP/HTTPS. Клиент отправляет HTTP-запросы (GET, PUT, DELETE, POST) к конечной точке (endpoint), указывая в URL имя корзины и ключ объекта. Пример:
PUT /bucket/object-key— загрузка объекта.GET /bucket/object-key— скачивание.DELETE /bucket/object-key— удаление.
Популярные API:
- Amazon S3 API — де-факто стандарт, поддерживается большинством коммерческих и открытых решений.
- OpenStack Swift API — используется в проектах OpenStack.
- NFS/SMB — некоторые системы (например, NetApp StorageGRID) предоставляют шлюзы для доступа через традиционные файловые протоколы.
Распределённость и отказоустойчивость
Объектное хранение строится на кластере из множества узлов (серверов с дисками). Данные реплицируются или кодируются с помощью стирающих кодов (erasure coding) для защиты от потери. При выходе из строя одного или нескольких узлов система автоматически восстанавливает данные из оставшихся копий. Масштабирование осуществляется добавлением новых узлов без остановки сервиса (горизонтальное масштабирование).
Виды объектного хранения
По модели развёртывания
- Облачное объектное хранение — предоставляется как услуга (SaaS) через публичные облака. Примеры: Amazon S3, Google Cloud Storage, Azure Blob Storage, Яндекс Object Storage, VK Cloud Storage.
- Частное (on-premise) объектное хранение — разворачивается в ЦОДе организации. Примеры: Ceph, MinIO, Dell EMC ECS, NetApp StorageGRID, IBM Cloud Object Storage.
- Гибридное — сочетает локальное и облачное хранение с синхронизацией данных.
По типу данных
- Для неструктурированных данных (файлы, медиа, архивы, бэкапы) — основной сценарий.
- Для структурированных данных — ограниченно, так как объектное хранение не поддерживает транзакции и сложные запросы (для этого используются базы данных).
Применение
Бэкапы и архивы
Объектное хранение идеально подходит для долгосрочного хранения резервных копий и архивов. Благодаря низкой стоимости хранения (по сравнению с блочными массивами) и возможности автоматического удаления старых версий (lifecycle policies) оно используется в корпоративных системах резервного копирования (Veeam, Commvault, NetBackup).
Хранение медиаконтента
Видеохостинги, фотосервисы, стриминговые платформы хранят миллионы файлов (видео, аудио, изображения) в объектных хранилищах. Пример: YouTube использует собственное объектное хранилище (Colossus), а Netflix — Amazon S3.
Большие данные и аналитика
Объектное хранение служит «озером данных» (data lake) для систем Big Data. Инструменты вроде Apache Spark, Presto, Hive могут читать данные напрямую из объектного хранилища (например, через S3A-коннектор в Hadoop).
Веб-хостинг и статические сайты
Многие облачные хранилища (S3, Яндекс Object Storage) позволяют хостить статические веб-сайты (HTML, CSS, JS) без использования серверов. Пользователь настраивает корзину как веб-сайт и указывает главную страницу.
Научные и исследовательские данные
Генетические последовательности, снимки со спутников, результаты моделирования — всё это требует масштабируемого и долговечного хранения. Объектные системы используются в CERN (для хранения данных LHC), в проектах по изучению климата и астрономии.
Преимущества и недостатки
Преимущества
- Неограниченная масштабируемость — можно хранить петабайты и эксабайты данных.
- Высокая отказоустойчивость — данные восстанавливаются при сбоях оборудования.
- Низкая стоимость — за счёт использования дешёвых дисков (SATA HDD) и стирающих кодов.
- Простота доступа — через HTTP/HTTPS, без монтирования файловых систем.
- Версионирование — возможность хранить несколько версий одного объекта.
Недостатки
- Задержки — чтение/запись медленнее, чем у блочных хранилищ (NVMe, SSD).
- Ограниченная поддержка транзакций — нет атомарных операций над несколькими объектами.
- Сложность модификации — объект нельзя изменить частично (только перезаписать целиком).
- Зависимость от сети — при отсутствии сети доступ к данным невозможен.
Критика и ограничения
Основная критика объектного хранения связана с его неэффективностью для рабочих нагрузок, требующих низкой задержки (базы данных, транзакционные системы). Также отмечается проблема «мусорных объектов» (orphan objects), когда из-за ошибок приложения в хранилище остаются неиспользуемые данные, которые не удаляются автоматически. В некоторых реализациях (например, в старых версиях Ceph) наблюдались проблемы с производительностью при большом количестве мелких объектов (менее 1 МБ). Кроме того, объектное хранение не поддерживает блокировки (file locking), что затрудняет совместную работу нескольких приложений над одним файлом.
Интересные факты
- Крупнейшее объектное хранилище в мире — Amazon S3, которое по состоянию на 2023 год хранило более 100 триллионов объектов.
- В объектном хранении Ceph используется алгоритм CRUSH (Controlled Replication Under Scalable Hashing) для распределения данных без централизованной таблицы размещения.
- В 2020 году компания Backblaze запустила сервис B2 (Backblaze B2), который предлагает объектное хранение по цене $0.005/ГБ/месяц, что значительно дешевле S3.
- В России объектное хранение активно используется в системах «Электронный бюджет» и «Госуслуги» для хранения документов и архивов.
Источники
- Amazon Web Services. «Amazon S3 Documentation» (2023).
- Sage Weil et al. «Ceph: A Scalable, High-Performance Distributed File System» (2006).
- OpenStack Foundation. «OpenStack Swift Administration Guide» (2022).
- Dell Technologies. «Dell EMC ECS: An Architecture Guide» (2021).
- NetApp. «StorageGRID Object Storage Architecture» (2020).
- «Яндекс.Облако». Документация по Object Storage (2023).
- RFC 2616 — HTTP/1.1 (1999) — основа RESTful API.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →