Обновление IT-плов в Ташкенте IT-беш в Алматы
Облачные серверы с GPU в Ташкенте и Алматы Подробнее Как подобрать IT-инфраструктуру для AI/ML-задач? Зарегистрироваться Как подобрать IT-инфраструктуру для AI/ML-задач? Зарегистрироваться
Вычисления
Хранение и обработка данных
Сетевые сервисы
О компании
Кейсы
Клиентам
Юридическая информация
Для клиентских запросов
PR-служба
Техническая поддержка
Главная/Блог/Статьи/Утилита s3fs в Linux: как подключить контейнер для объектного хранилища

Утилита s3fs в Linux: как подключить контейнер для объектного хранилища

8 мин. чтения   /   Статьи

Если существующие скрипты и приложения рассчитаны на работу с обычной файловой системой, то работать с объектным хранилищем напрямую через API или специальные клиенты не всегда удобно. Утилита s3fs-fuse поможет смонтировать контейнер S3 как обычную директорию в Linux.

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

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

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

Объектное хранилище (Object Storage) — это тип хранения данных, где информация представлена в виде объектов.

Каждый объект состоит из самих данных, метаданных и уникального идентификатора. В отличие от иерархической файловой системы, здесь нет структуры папок — все объекты хранятся на одном уровне в рамках специальной сущности, которая называется контейнер или бакет (bucket).

Утилита s3fs — это драйвер файловой системы на базе FUSE (Filesystem in Userspace). Он выступает в роли переводчика: для операционной системы Linux он представляет удаленный S3-бакет как локальную директорию (папку), а для S3-хранилища он преобразует системные вызовы чтения/записи файлов в стандартные API-запросы.

Шаг 1. Подготовка на стороне облачного провайдера

Первым делом необходимо подготовить сам бакет и получить учетные данные для доступа к нему. Всё это делается в панели управления облачного сервера или S3-провайдера.

Выбор провайдера и создание бакета

Вы можете использовать любого провайдера, предоставляющего S3-совместимое хранилище. Процесс создания бакета в Servercore максимально прост:

  1. В панели управления откройте меню Продукты (в верхней части страницы).
  2. Выберите раздел S3.
  3. На открывшейся странице нажмите кнопку Создать бакет.
  4. Укажите уникальное имя бакета.
  5. Укажите тип бакета: публичный или приватный с доступом по логину и паролю.
  6. Выберите класс хранения: стандартное для часто используемых данных или холодное с экономией до 30% для архивов и резервных копий.

S3-хранилище от Servercore

Масштабируемое хранилище с AWS S3 API совместимостью. SLA 99,99% и тройная репликация данных.

Узнать больше

Получение ключей доступа (Access Key / Secret Key)

Для авторизации и доступа к S3 API используются специальные ключи.

  1. В разделе S3 найдите вкладку «S3-ключи».
  2. Создайте новую пару ключей. Система сгенерирует для вас две строки:
    • Access Key ID (идентификатор ключа, аналог логина).
    • Secret Access Key (secret key, секретный ключ, аналог пароля).

Важно: Secret Key отображается только один раз при создании. Обязательно скопируйте и сохраните его в надежном месте. Если вы его потеряете, придется создавать новую пару ключей.

Шаг 2. Подготовка Linux-системы и установка s3fs

Теперь, когда у нас есть бакет и ключи, можно приступать к настройке нашего Linux-сервера.

Установка необходимых пакетов (FUSE, s3fs-fuse)

Прежде чем мы сможем что-то монтировать, нужно установить саму утилиту s3fs и ее зависимости.

Для Debian / Ubuntu используются команды:

sudo apt update
sudo apt install s3fs

Для CentOS / RHEL пакет s3fs-fuse обычно находится в репозитории EPEL. Используются команды:

sudo yum install epel-release
sudo yum install s3fs-fuse

Конфигурация файла с ключами доступа

Хранить ключи в открытом виде в командах или скриптах опасно. Утилита linux s3fs предлагает использовать специальный файл для аутентификации. Вы можете сделать это в два шага.

1. Создайте файл ~/.passwd-s3fs в домашней директории пользователя, от имени которого будет производиться монтирование. 

Вставьте в него ключи в формате AccessKey:SecretKey.

echo "ACCESS_KEY_ID:SECRET_ACCESS_KEY" > ~/.passwd-s3fs

2. Замените ACCESS_KEY_ID и SECRET_ACCESS_KEY на ключи, полученные на первом шаге.

Это критически важный шаг для безопасности. Необходимо ограничить доступ к этому файлу, чтобы его мог читать только владелец. Используйте команду:

chmod 600 ~/.passwd-s3fs

Так вы установите права, разрешающие чтение и запись только для текущего пользователя.

Шаг 3. Монтирование S3 контейнера

Все готово для главного — подключения нашего S3-бакета к файловой системе сервера.

Создание директории (точки монтирования) и настройка прав доступа

Нам нужна пустая директория, в которую будет «подключен» контейнер.

Создайте директорию. Общепринятым местом для этого является /mnt. Для создания используйте команду:

sudo mkdir /mnt/myobjectstorage

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

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

sudo chown $USER:$USER /mnt/myobjectstorage

Базовая команда монтирования s3fs и ее опции

Теперь выполним команду s3fs mount:

s3fs bucketname /path/to/mountpoint -o opt1 -o opt2

Наш практический пример будет выглядеть так:

s3fs my-s3-bucket /mnt/myobjectstorage -o passwd_file=~/.passwd-s3fs -o url=https://s3.kz-1.srvstorage.kz/ -o use_path_request_style

Разберем параметры:

  • my-s3-bucket — Имя вашего бакета.
  • /mnt/myobjectstorage — Путь к созданной нами точке монтирования.
  • -o passwd_file=~/.passwd-s3fs — Указывает путь к файлу passwd-s3fs с ключами.
  • -o url=https://s3.kz-1.srvstorage.kz — Эндпоинт (endpoint) S3-хранилища провайдера.
  • -o use_path_request_style — Важная опция для совместимости со многими S3-провайдерами, помимо AWS.

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

mount | grep s3fs

В выводе вы должны увидеть новую файловую систему, смонтированную в /mnt/myobjectstorage.

Облачные серверы Servercore

Разверните облачный сервер за 2 минуты. Гибкое масштабирование и оплата по модели pay-as-you-go.

Узнать больше

Шаг 4. Настройка автоматического монтирования через /etc/fstab

Ручное монтирование исчезнет после перезагрузки сервера. Чтобы файловая система подключалась автоматически при каждой загрузке, необходимо добавить запись в /etc/fstab.

Откройте файл /etc/fstab с правами root:

sudo nano /etc/fstab

Добавьте в конец файла следующую строку, заменив параметры на свои:

s3fs#my-s3-bucket /mnt/myobjectstorage fuse _netdev,allow_other,url=https://s3.kz-1.srvstorage.kz,passwd_file=/home/user/.passwd-s3fs,use_path_request_style 0 0

Вот из чего состоит эта команда:

  • s3fs#my-s3-bucket — Имя бакета с префиксом s3fs#.
  • /mnt/myobjectstorage — Точка монтирования.
  • fuse — Тип файловой системы.
  • _netdev: Критически важная опция. Она указывает системе, что это сетевое устройство, и монтировать его нужно только после поднятия сети. Без этой опции сервер может не загрузиться.
  • allow_other — Позволяет другим пользователям (кроме того, кто выполнил монтирование) видеть файлы в директории. Чтобы эта часть команды сработала, нужно прописать разрешение в /etc/fuse.conf командой user_allow_other
  • passwd_file — Здесь нужно указать полный путь к файлу с ключами.

Используйте mount | grep s3fs для проверки корректности записи в fstab без перезагрузки. Если команда выполнится без ошибок, значит, вы все настроили правильно.

Важно: Для fstab лучше использовать отдельного сервисного пользователя и указывать полный путь к его файлу passwd-s3fs.

Безопасность и рекомендации

Два совета, которые помогут вам безопасно подключить контейнер:

  1. Используйте обычного пользователя для монтирования и работы с файлами. Для некоторых операций (например, создания директорий в /mnt) потребуются права суперпользователя через sudo, но само монтирование и повседневную работу выполняйте от имени обычного пользователя. Не работайте постоянно под root — это создает дополнительные риски безопасности.
  2. Используйте IAM-политики (или их аналог у вашего провайдера) для создания ключей доступа, которые имеют права только на конкретный бакет, а не на весь аккаунт.

Устранение популярных ошибок

Если вы столкнулись с ошибкой Transport endpoint is not connected, это означает, что процесс s3fs завершился аварийно. Попробуйте размонтировать директорию командой sudo umount /mnt/myobjectstorage и смонтировать ее заново.

Выделенные серверы Servercore

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

Узнать больше

Заключение

Вы успешно настроили монтирование S3-бакета в Linux. Теперь удаленное объектное хранилище интегрировано в вашу систему как локальный folder, что открывает широкие возможности для его использования с привычными инструментами.

Краткий чек-лист выполненных действий:

  • Создали S3-бакет и получили ключи доступа.
  • Установили пакет s3fs на сервер.
  • Настроили безопасное хранение ключей в файле ~/.passwd-s3fs.
  • Выполнили ручное монтирование и проверили результат.

Настроили автоматическое монтирование через /etc/fstab для стабильной работы после перезагрузок.

Была ли эта статья полезной для вас?
Главная/Блог/Статьи/Утилита s3fs в Linux: как подключить контейнер для объектного хранилища
Начните пользоваться продуктами Servercore сейчас
Регистрация в панели управления займет несколько минут.
Уже есть аккаунт? Авторизуйтесь.
Протестируйте облачную платформу Servercore бесплатно
Оставьте заявку, и мы начислим вам до 230 USD на баланс панели управления.
Оставьте заявку, и мы начислим вам до 210 EUR на баланс панели управления.
Оставьте заявку, и мы начислим вам до 100 000 KZT на баланс панели управления.
Оставьте заявку, и мы начислим вам до 30 000 KES на баланс панели управления.
Оставьте заявку, и мы начислим вам до 1 500 000 UZS на баланс панели управления.
Спасибо за заявку!
Наш менеджер свяжется с вами в течение 1 рабочего дня. 
А пока вы можете зарегистрироваться в панели управления
и посмотреть демо от CTO Servercore.
После просмотра вы сможете: