Основы объектного хранения: что такое S3 и объектное хранилище

Разбираем основы объектного хранилища: что такое S3, bucket, метаданные, чем объектное хранение отличается от файлового, блочного, а также зачем нужны георепликация, неизменяемость и erasure coding.

Основы объектного хранения: что такое S3 и объектное хранилище
Автор статьи:
Александра Соколова
S3 API

Что такое объектное хранилище

Объем данных в бизнесе растет: видеоархивы, бэкапы, логи приложений, датасеты для машинного обучения, медиаконтент, статические файлы сайтов. Обычные файловые серверы и блочные диски все хуже справляются с такими объемами. Поэтому компании ищут альтернативы. Разберемся, что такое S3 и объектное хранилище.

Простое определение объектного хранилища

Объектное хранилище – это способ хранения, при котором каждая единица данных представлена в виде объекта с собственным уникальным ключом и набором метаданных. В объектном хранилище используется плоское пространство имен внутри логических контейнеров, так называемых бакетов. Управление сущностями (создание, чтение, изменение, удаление бакетов) происходит по HTTP/HTTPS через REST API.

Принцип работы объектного хранилища

Когда приложение загружает файл, система объектного хранения формирует объект, состоящий из самих данных, уникального идентификатора (ключа) и метаданных. Он распределяется между несколькими узлами кластера, что обеспечивает отказоустойчивость и горизонтальное масштабирование. Чтобы получить данные обратно, приложению нужно обратиться по ключу объекта через S3 API. В упрощенном виде путь данных в объектном хранилище выглядит так:

  • приложение отправляет PUT-запрос с файлом и метаданными в указанный bucket;
  • хранилище генерирует или принимает object key и сохраняет данные на нескольких узлах;
  • при чтении приложение делает GET-запрос по ключу и получает объект целиком;
  • метаданные позволяют дополнительно автоматизировать обработку – например, задать срок хранения или класс доступа.

Разработчикам не нужно проектировать физическое расположение данных. Операции сводятся к понятным HTTP-вызовам, а масштабирование происходит за счет добавления новых узлов в кластер.

Для каких данных подходит объектное хранение

Объектное хранилище подходит для больших объемов неструктурированных данных, к которым обращаются операциями «записать целиком» и «прочитать целиком». Оно не заменяет базу данных и не подходит для всех сценариев. Среди основных вариантов использования:

  • резервные копии серверов, виртуальных машин и баз данных;
  • медиаконтент (фото, аудио, видео, превью, исходники для обработки);
  • долгосрочное архивное хранение документов и логов;
  • статический контент сайта (стили, шрифты, картинки, скрипты);
  • датасеты для аналитики и обучения моделей машинного обучения;
  • результаты работы CI/CD (артефакты сборки, образы, дистрибутивы).

Выбирая S3, учитывайте, что для транзакционных нагрузок лучше подходят блочные и файловые хранилища, а объектные системы оптимизированы под добавление и чтение целых объектов.

Как устроено объектное хранилище

Что такое S3 и почему этот стандарт используют облачные хранилища

S3 (Simple Storage Service) – это стандарт объектного хранения от Amazon Web Services. Его API является отраслевым стандартом для работы с объектными хранилищами. Это не только продукт AWS, но и способ взаимодействия с облачным хранилищем через определенный набор HTTP-вызовов.

Что значит S3-совместимое хранилище

S3-совместимое хранилище – это объектное хранилище, которое реализует тот же набор операций и тех же правил аутентификации, что и оригинальный сервис AWS. Одно и то же приложение может работать с разными провайдерами без переписывания кода. Достаточно поменять endpoint, access key и secret key. Так устроен, например, PC-Storage от PlatformCraft. Это S3-совместимое объектное хранилище, в которое можно складывать резервные копии, медиаконтент, архивы, логи и датасеты.

Где используют S3-хранилища

Многие популярные инструменты, библиотеки и SaaS-сервисы по умолчанию умеют работать с S3 API. S3-хранилища используют для:

  • хранения бэкапов от Veeam, КиберБэкап, Bacula, Duplicati и других backup-систем;
  • размещения статических файлов сайтов и SPA-приложений;
  • доставки медиаконтента в связке с CDN;
  • архивов логов и журналов аудита;
  • хранения датасетов и моделей в проектах машинного обучения;
  • работы с артефактами в CI/CD-системах вроде GitLab CI или Jenkins.

Совместимость с S3 API – ключевое требования при выборе объектного хранилища, а сам стандарт нашел применение в разных проектах.

Что такое S3 API и как он работает

S3 API – это набор HTTP-методов и правил, по которым приложения общаются с объектным хранилищем. По сути, это REST API. Клиент отправляет HTTP-запрос с подписанными заголовками, а сервер возвращает результат в виде статуса и тела ответа. Для работы достаточно HTTP API и SDK.

Какие операции выполняют через S3 API

Базовый набор операций S3 API покрывает все типичные задачи работы с объектами и контейнерами. Среди наиболее распространенных операций:

  • PUT Object – загрузить объект в bucket;
  • GET Object – получить объект по ключу;
  • DELETE Object – удалить объект;
  • LIST Objects – получить список объектов в бакете;
  • HEAD Object – получить только метаданные без самого тела;
  • Multipart Upload – загрузка крупных файлов по частям;
  • Presigned URL – временные ссылки для доступа к объекту без раскрытия ключей.

Все операции описаны в документации S3. Они реализуются S3-совместимыми сервисами в одинаковом виде.

Почему совместимость с S3 API важна для бизнеса и разработчиков

Если хранилище совместимо с S3, команда может использовать готовые SDK для Python, Go, Java, Node.js и других языков, а также десятки готовых утилит вроде aws-cli, rclone, s3cmd, MinIO Client. Такой подход снижает стоимость интеграции и делает миграцию между разными провайдерами технически возможной, что экономически выгодно для бизнеса.

Что такое объект, bucket, ключ и метаданные в S3

Теперь разберемся, что такое bucket в S3.

Бакет – контейнер, в котором размещаются объекты. У каждого объекта есть уникальный ключ и набор метаданных. Такая плоская структура упрощает взаимодействие неструктурированных данных.

Как данные превращаются в объекты

Объект в S3 – это связка из трех элементов: данных (например, содержимое видеофайла), ключа (строка-идентификатор) и метаданных (системных и пользовательских). Объект сохраняется целиком и не предназначен для частичной перезаписи. Если содержимое нужно изменить, фактически создается новая версия объекта.

Принцип работы бакета

S3 bucket – это логический контейнер, внутри которого хранятся объекты. У каждого бакета есть уникальное имя в рамках сервиса, политика доступа и набор настроек. Хотя в интерфейсах часто отображается «псевдодерево» с папками, на самом деле эти папки – это просто префиксы в ключах объектов.

Для чего нужны метаданные в объектном хранении

Метаданные в объектном хранении – это дополнительные сведения об объекте, которые хранятся вместе с ним. Они делятся на системные (размер, дата загрузки, ETag, тип контента) и пользовательские (произвольные пары ключ-значение). С их помощью можно автоматизировать работу с данными.

Как приложение получает доступ к объектам

Доступ к объектам происходит по уникальному адресу вида https://endpoint/bucket/key. Запрос подписывается с помощью access key и secret key. Аутентификация по подписи позволяет проверить подлинность запроса без передачи самого секретного ключа по сети. Для временного публичного доступа можно использовать presigned URL – ссылку с ограниченным сроком действия.

Какие настройки обычно применяют к bucket

На уровне бакета удобно задавать общие правила, которые автоматически применяются ко всем объектам внутри. Среди распространенных настроек:

  • bucket policy – правила доступа на уровне контейнера;
  • versioning – хранение нескольких версий одного объекта;
  • lifecycle policy – автоматическое перемещение или удаление объектов по расписанию;
  • Object Lock – защита объектов от удаления и изменения;
  • настройки шифрования объектов «на лету»;
  • параметры репликации между регионами или площадками.

Настройки задаются один раз. Они работают для всех новых объектов, что упрощает управление большими объемами данных.

Как устроены права доступа в S3-хранилище

Права доступа в S3 – ответственная тема. Ошибки в настройке приводят к утечкам данных. В S3-модели разграничение прав строится на двух основных механизмах: bucket policy и IAM. И IAM и bucket policy в S3 управляют доступом к объектам, но работают на разных уровнях.

Как работает bucket policy

Bucket policy – это JSON-документ, описывающий, кто и какие действия может выполнять с объектами в конкретном бакете. В нем можно указать конкретных пользователей, IP-адреса, разрешенные операции и условия. Это удобно, когда нужно открыть, например, публичный доступ только на чтение к статическим файлам сайта.

Как работает IAM

IAM (Identity and Access Management) – это система управления учетными записями и их правами на стороне провайдера хранилища. С ее помощью создаются пользователи и сервисные учетки, выдаются ключи доступа и настраиваются роли. Правильная организация IAM позволяет соблюдать принцип минимальных привилегий.

Она привязана к пользователю, роли или группе и отвечает на вопрос:

Что этот субъект может делать с какими S3-ресурсами?

То есть IAM policy → «что может этот пользователь/роль», а Bucket policy → «кто и как может использовать этот bucket».

Что такое версионирование данных и зачем оно нужно

Версирование – это режим бакета, при котором каждое изменение или удаление объекта не затирает старую версию, а создает новую. Прежние версии остаются доступными по специальному идентификатору, и при необходимости их можно восстановить. Это используется для защиты от удаления, ошибок в скриптах или действий шифровальщиков.

Что такое lifecycle policy в S3

Lifecycle policy – это набор правил автоматического управления жизненным циклом объектов. С их помощью можно, например, автоматически удалять логи старше 30 дней, переносить редко используемые объекты в более дешевый класс хранения или удалять старые версии при включенном версионировании.

Что такое неизменяемое хранилище, WORM-подход и Object Lock

Неизменяемое хранилище – это режим, при котором сохраненный объект нельзя изменить или удалить в течение заданного срока. В основе лежит подход WORM (Write Once, Read Many) – «записал один раз, читаешь много раз». Он реализуется через механизм Object Lock.

Как неизменяемость помогает защищать резервные копии

Шифровальщики и атаки на инфраструктуру часто пытаются уничтожить именно бэкапы, чтобы лишить компанию возможности восстановиться. Неизменяемое хранилище решает эту проблему: даже скомпрометированная учетная запись с правами администратора не сможет удалить «залоченные» объекты до истечения срока блокировки.

Где используют WORM-подход и Object Lock

WORM-подход и Object Lock применяют в системах с высокими требованиями к сохранности данных. Среди основных направлений:

  • защищенные бэкапы серверов, БД и виртуальных инфраструктур;
  • архивы финансовых, медицинских и юридических документов;
  • журналы аудита и логи безопасности;
  • данные, на которые распространяются требования регуляторов;
  • мастер-копии медиаконтента и оригиналы видеоархивов.

Неизменяемое хранилище не гарантирует абсолютную сохранность данных. Оно снижает риск их потери из-за удаления или изменения.

Что такое георепликация и как она работает

Георепликация – это механизм, при котором копии объектов автоматически распространяются между несколькими географически удаленными площадками. Репликация данных происходит непрерывно и фактически в фоновом режиме. Для бизнеса это возможность повысить устойчивость сервиса и сократить возможное время простоя. Именно поэтому георепликация используется в медиапроектах, e-commerce и SaaS-сервисах с высокими требованиями к доступности.

Что такое erasure coding

Erasure coding (стирающее кодирование) – это способ хранения данных, при котором объект разбивается на N блоков данных и M блоков избыточности, рассчитанных по специальным алгоритмам. Эти блоки распределяются между разными узлами кластера. Для восстановления исходного объекта достаточно любых N блоков из общего количества N+M. Например, схема 10+4 переживает отказ четырех узлов из четырнадцати, тратя на избыточность около 40% вместо 200% при тройной репликации. Подобный механизм актуален для крупных объектных хранилищ для архивов, медиаархивов и долгосрочного хранения.

Что такое распределенное хранилище

Распределенное объектное хранилище – это система, в которой данные хранятся не на одном сервере, а на множестве узлов, объединенных в кластер. Такая архитектура рассчитана на отказы оборудования и постоянный рост объема данных.

Как данные распределяются между узлами

Когда объект попадает в кластер, система решает, на каких именно узлах разместить его блоки и блоки избыточности. Распределение строится с учетом топологии. Таким образом, можно параллельно использовать сетевые и дисковые ресурсы множества узлов как при записи, так и при чтении, что нужно учитывать при выборе S3 или NAS.

Почему распределенная архитектура повышает отказоустойчивость

В распределенной системе отказ отдельного диска или сервера не приводит к недоступности данных. Оставшиеся узлы продолжают обслуживать запросы, а кластер сам инициирует восстановление недостающих блоков. Распределенная архитектура легко масштабируется горизонтально. Для увеличения емкости и производительности достаточно добавить в кластер новые узлы.

Распределенное хранилище

Когда бизнесу нужно объектное хранилище

Объектное хранилище – не универсальное решение. К его выбору нужно отнестись осознанно. Такой вариант хорошо подходит, если у вас:

  • большой объем бэкапов, который растет каждый месяц;
  • много медиаконтента, который нужно отдавать пользователям через CDN;
  • архивы логов, документов или видео с длительным сроком хранения;
  • статические сайты, SPA или мобильные приложения с большими ассетами;
  • датасеты для аналитики и машинного обучения;
  • требования к защите данных от удаления через WORM и Object Lock.

Если вам нужно S3-совместимое хранилище для резервных копий, архивов или медиаконтента, рассмотрите PC-Storage от PlatformCraft. Для хранения и доставки медиаконтента можно использовать связку PC-Storage, PC-Media и CDN.

FAQ – часто задаваемые вопросы

Что такое объектное хранилище простыми словами?

Объектное хранилище – это способ хранить данные не в папках и файлах, как на обычном файловом сервере, а в виде отдельных объектов. Каждый объект содержит сами данные, уникальный ключ и метаданные. Такой подход удобен для больших объемов неструктурированных данных: бэкапов, видео, фото, логов, архивов и датасетов.

Что такое S3?

S3 – это стандарт объектного хранения, изначально созданный Amazon Web Services. Сегодня S3 API стал отраслевым стандартом: многие облачные и локальные хранилища поддерживают те же операции, что и AWS S3. Благодаря этому приложения могут работать с разными S3-совместимыми хранилищами без серьезной переработки кода.

Чем S3 отличается от обычного файлового хранилища?

В файловом хранилище данные организованы в виде папок и файлов, как в привычной файловой системе. В S3 используется плоская структура: объекты лежат в bucket, а «папки» обычно являются только префиксами в ключах объектов. S3 лучше подходит для хранения больших объемов данных, которые записываются и читаются целиком.

Что такое bucket в S3?

Bucket – это логический контейнер для хранения объектов в S3. Внутри bucket находятся объекты с уникальными ключами и метаданными. На уровне bucket обычно настраивают политики доступа, версионирование, lifecycle rules, шифрование, Object Lock и репликацию.

Зачем объектам нужны метаданные?

Метаданные описывают объект и помогают управлять им автоматически. Они могут включать размер, дату загрузки, тип контента, ETag, а также пользовательские пары ключ-значение. С помощью метаданных можно задавать правила обработки, хранения, поиска, классификации и жизненного цикла данных.

Что выбрать: S3 или NAS?

S3 стоит выбирать для больших объемов неструктурированных данных: бэкапов, архивов, медиаконтента, логов, статических файлов и датасетов. NAS лучше подходит для сценариев, где приложениям нужна привычная файловая система, работа с директориями и частое изменение файлов. Если данные в основном записываются и читаются целиком, чаще подходит S3; если важна файловая семантика – NAS.

Чем объектное хранилище отличается от блочного?

Блочное хранилище предоставляет приложению низкоуровневые блоки данных, из которых строятся диски и файловые системы. Оно хорошо подходит для баз данных, виртуальных машин и транзакционных нагрузок. Объектное хранилище работает с объектами целиком через API и лучше подходит для масштабируемого хранения архивов, бэкапов, медиа и других неструктурированных данных.

Что такое неизменяемое хранилище?

Неизменяемое хранилище – это режим, при котором сохраненный объект нельзя изменить или удалить в течение заданного срока. Такой подход называется WORM: Write Once, Read Many. В S3-подобных хранилищах он реализуется через Object Lock и используется для защиты бэкапов, архивов, логов аудита и данных с регуляторными требованиями.

Зачем нужна георепликация?

Георепликация нужна для повышения отказоустойчивости и доступности данных. При ее использовании копии объектов автоматически размещаются на нескольких географически удаленных площадках. Это помогает снизить риск простоя при сбоях в одном регионе и ускорить доступ к данным для пользователей из разных локаций.

Что такое стирающее кодирование?

Стирающее кодирование, или erasure coding, – это способ защиты данных от потери без полного многократного копирования. Объект разбивается на блоки данных и дополнительные блоки избыточности, которые распределяются по разным узлам. Для восстановления объекта достаточно части этих блоков. Такой подход экономит место по сравнению с тройной репликацией и подходит для крупных архивов и долгосрочного хранения.

Выводы

Объектное хранилище – это такой подход к хранению больших объемов данных, в котором каждая единица данных становится объектом с ключом и метаданными, а доступ организован через S3 API. Оно дает важное преимущество. Одни и те же приложения, бэкап-системы и SDK работают с разными провайдерами без переписывания кода. При этом важно помнить, что файловое, объектное или блочное хранилище решает разные задачи. Грамотный выбор решения зависит от конкретных требований проекта и сценариев использования.

Подпишитесь на наши новости,
чтобы быть в курсе всех событий

    Прокрутить вверх