Skip to main content

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

Объектное хранилище OpenStack (Swift) – это масштабируемое распределенное объектное хранилище с резервированием, которое использует кластеры стандартизированных серверов. Под “распределением” понимается, что каждый фрагмент данных реплицируется по кластеру узлов хранения.

Основные логические сущности Swift:

  • Владелец (tenant)

  • Учетная запись (account)

  • Пользователь (users)

  • Контейнер (container)

  • Объект (object)

Связь логических сущностей:

В аккаунте может содержаться несколько пользователей (users). Принадлежит владельцу (владельцем может быть компания, субъект и т.п.). Владелец (tenant) может создавать дополнительных пользователей. Учетная запись содержит в себе контейнеры (container). Контейнеры в свою очередь содержат в себе объекты (object).

Контейнеры в пределах одной учетной записи должны иметь уникальные имена. Но могут иметь одинаковые имена, если они располагаются в разных учетных записях.

Объект – это единица хранения данных таких, как текстовый файл, изображение, снимок виртуальной машины и т.п. По умолчанию в Swift у объекта три репликации (с возможностью физического разделения по разным ЦОД). Для того чтобы обратиться к объекту необходима связка из 3 элементов: account, container и object.

Кольца. Компоненты Swift распределяют данные по дискам при помощи колец. Это такие файлы, где для каждой партиции указано, на каких дисках она должна находиться. Чтобы создать кольцо, можно воспользоваться утилитой swift-ring-builder. Кроме формирования хеш-кольца, она распределяет партиции по дискам и следит как за поддержанием уровня репликации, так и за объемами миграций, не позволяя мигрировать больше одной копии данных за раз.

Доступ к объектам в Swift осуществляется по интерфейсу REST. Эти объекты можно хранить, получать или обновлять по требованию.

Для этого используются стандартные методы HTTP:

  • PUT — создать объект,

  • POST — изменить объект,

  • GET — получить объект,

  • HEAD — получить только метаданные объекта,

  • DELETE — удалить объект.

Путь доступа к каждому объекту состоит из трех элементов:

/<disk>/<partition>/<account>/<container>/<object>

Подробнее о запросах API к объектному хранилищу Swift 

Создать контейнер

Для создания нового контейнера:

  1. В основном меню платформы перейдите в раздел Проект -> Хранилище Объектов -> Контейнеры.
  2. Нажмите +Контейнер.
  3. Укажите параметры:
    • Имя контейнера – введите название контейнера. Название не должно содержать слеша /, так как этот символ используется для отделения одного уровня вложенности от другого.
    • Политика хранения – укажите политику хранения. Выбрать политику можно, если она уже ранее была создана. В ином случае используется политика хранилища по умолчанию.
    • Доступ к контейнеру – выберите доступ к контейнеру:
      • Публичный – доступ к контейнеру и объектам в нем будет у всех пользователей по публичному URL.
      • Непубличный – доступ к контейнеру и объектам в нем будет только у пользователей конкретного проекта OpenStack.
  4. Сохраните настройки и завершите создание контейнера, нажав Отправить.

После создания контейнера в нем можно создать новую папку и загрузить объекты.

Загрузить объект

  1. В основном меню платформы перейдите в раздел Проект -> Хранилище Объектов -> Контейнеры.
  2. Нажмите на название созданного контейнера. Откроется вкладка с подробностями о контейнере.
  3. Нажмите на значок загрузки объекта.

obs_container-download.png

  1. Выберите файл со своего локального хранилища и загрузите его в контейнер. Также можно выбрать несколько файлов.

Управление объектами в контейнере

  1. В основном меню платформы перейдите в раздел Проект -> Хранилище Объектов -> Контейнеры.

  2. Выберите контейнер, в котором вы хотите сохранить свой объект.

  3. Нажмите кнопку меню и в выпадающем списке выберите Редактировать . Откроется диалоговое окно Редактировать объект.

  4. Найдите и выберите файл, который вы хотите загрузить.

  5. Нажмите Обновить объект.

Чтобы удалить объект, нажмите кнопку меню и выберите пункт Удалить объект.