Подключение объектного хранилища к серверу через s3fs

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

Утилиту s3fs можно установить на сервер с ОС Ubuntu, Debian, Fedora, Windows и т.д. Список ОС, дистрибутивы и инструкции по их установке см. в официальной документации.

Чтобы подключить Объектное хранилище S3 к серверу:

  1. Создайте статические ключи для Объектного хранилища S3.
  2. Установите утилиту s3fs на сервер.
  3. Выполните команды для подготовки к подключению бакета.
  4. Подключите бакет к серверу.
  5. Проверьте работоспособность подключения бакета к серверу.
  6. Настройте автоподключение бакета.

Пример установки s3fs на сервер с ОС Ubuntu

  1. При необходимости закажите сервер на базе OpenStack с ОС Ubuntu.
  2. Подключитесь к серверу.
  3. Введите команду bash и нажмите Enter для запуска оболочки bash.
  4. Обновите пакет apt:
  5. Установите утилиту s3fs на сервер:

  1. При необходимости закажите виртуальную машину на базе VMware c ОС Ubuntu.
  2. Чтобы виртуальная машина могла работать в сети Интернет:

    1. Если в виртуальном дата-центре не создан маршрутизатор, создайте его в виртуальном дата-центре или в виртуальном дата-центре с GPU.
    2. Настройте маршрутизатор для подключения виртуальной машины к Интернет.

  3. Подключитесь к виртуальной машине.
  4. Введите команду bash и нажмите Enter для запуска оболочки bash.
  5. Обновите пакет apt:
  6. Установите утилиту s3fs на виртуальную машину:

Подробнее об установке, настройке и использовании утилиты s3fs см. в официальной документации.

Подготовка к подключению бакета

  1. Сохраните статические ключи (Access key и Secret) в файле /etc/passwd-s3fs:
  2. Установите строгие права доступа к файлу, в котором хранятся статические ключи:

    Значение 600 означает, что смотреть и перезаписывать файл может только пользователь с правами root.

  3. На сервере создайте папку для бакета Объектного хранилища S3:где:
    • <s3> — папка Объектного хранилища S3;
    • <папка> — папка подключаемого бакета.
  4. Откройте файл /etc/fuse.conf в текстовом редакторе GNU nano, выполнив команду:
  5. В открывшемся редакторе удалите символ # перед user_allow_other.
  6. Сохраните изменения и закройте редактор.

Подключение бакета к серверу

Подключите бакет:

где:

  • <имя бакета> название бакета;

  • <s3> — папка Объектного хранилища S3;
  • <папка> — папка подключаемого бакета;
  • -o allow_other — параметр разрешает доступ к папке бакета не только пользователю, подключившему бакет (обычно root), но и другим пользователям;

  • -o umask=022 — параметр задаёт права доступа к папке бакета. Пользователь, подключивший бакет, получает права на чтение и запись, а остальные пользователи — только на чтение. Подробнее о значениях параметра umask см. в статье;

  • <endpoint> — адрес Endpoint Объектного хранилища S3:

    • https://api.s3.dp.t1.cloud — для Объектного хранилища S3 AZ0;
    • https://api.s3.az1.t1.cloud — для Объектного хранилища S3 AZ1;
    • https://api4.s3.mz1.t1.cloud — для Объектного хранилища S3 MZ1.

Примечание

После перезагрузки сервера бакет отключаетсяНастройте автоподключение бакета к серверу после его перезагрузки.

Проверка работоспособности

Создайте в папке бакета файл и убедитесь, что он добавился в бакет:

где:

  • <s3> — папка Объектного хранилища S3;

  • <папка> — папка подключённого бакета;
  • <файл> — имя файла с расширением, например, test.txt.

Созданный файл отображается в списке объектов бакета:

Чтобы посмотреть содержимое бакета, выполните команду:

где:

  • <s3> — папка Объектного хранилища S3;
  • <папка> — папка подключённого бакета.

Чтобы посмотреть содержимое папки бакета, добавьте к пути название папки:

Настройка автоподключения бакета

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

  1. Откройте файл /etc/fstab в текстовом редакторе GNU nano, выполнив команду:
  2. В открывшемся редакторе добавьте строку:

    где:

    • <имя бакета>название бакета; 
    • <s3> — папка Объектного хранилища S3;
    • <папка> — папка подключённого бакета;
    • <endpoint> — адрес Endpoint Объектного хранилища S3:
      • https://api.s3.dp.t1.cloud — для Объектного хранилища S3 AZ0;
      • https://api.s3.az1.t1.cloud — для Объектного хранилища S3 AZ1;
      • https://api4.s3.mz1.t1.cloud — для Объектного хранилища S3 MZ1.
  3. Сохраните изменения и закройте редактор.

После перезагрузки сервера и восстановления сетевого соединения, бакет подключится к папке, указанной в команде.

Отключение бакета от сервера

Чтобы отключить бакет от сервера:

  1. Подключитесь к серверу.
  2. Введите команду bash и нажмите Enter для запуска оболочки bash.
  3. Выполните команду:

    где:

    • <s3> — папка Объектного хранилища S3;
    • <папка> — папка отключаемого бакета.

  4. Если вы настраивали автоподключение бакета, удалите строку в файле /etc/fstab.
  5. Если папка для бакета больше не нужна, удалите её:

    где:

    • <s3> — папка Объектного хранилища S3;
    • <папка> — папка отключённого бакета.