Если существующие скрипты и приложения рассчитаны на работу с обычной файловой системой, то работать с объектным хранилищем напрямую через 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 максимально прост:
- В панели управления откройте меню Продукты (в верхней части страницы).
- Выберите раздел S3.
- На открывшейся странице нажмите кнопку Создать бакет.
- Укажите уникальное имя бакета.
- Укажите тип бакета: публичный или приватный с доступом по логину и паролю.
- Выберите класс хранения: стандартное для часто используемых данных или холодное с экономией до 30% для архивов и резервных копий.
S3-хранилище от Servercore
Масштабируемое хранилище с AWS S3 API совместимостью. SLA 99,99% и тройная репликация данных.
Узнать большеПолучение ключей доступа (Access Key / Secret Key)
Для авторизации и доступа к S3 API используются специальные ключи.
- В разделе S3 найдите вкладку «S3-ключи».
- Создайте новую пару ключей. Система сгенерирует для вас две строки:
- 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.
Безопасность и рекомендации
Два совета, которые помогут вам безопасно подключить контейнер:
- Используйте обычного пользователя для монтирования и работы с файлами. Для некоторых операций (например, создания директорий в /mnt) потребуются права суперпользователя через sudo, но само монтирование и повседневную работу выполняйте от имени обычного пользователя. Не работайте постоянно под root — это создает дополнительные риски безопасности.
- Используйте IAM-политики (или их аналог у вашего провайдера) для создания ключей доступа, которые имеют права только на конкретный бакет, а не на весь аккаунт.
Устранение популярных ошибок
Если вы столкнулись с ошибкой Transport endpoint is not connected, это означает, что процесс s3fs завершился аварийно. Попробуйте размонтировать директорию командой sudo umount /mnt/myobjectstorage и смонтировать ее заново.
Выделенные серверы Servercore
Высокопроизводительные серверы для критичных нагрузок. Полный контроль над железом и гарантированные ресурсы без соседей.
Узнать большеЗаключение
Вы успешно настроили монтирование S3-бакета в Linux. Теперь удаленное объектное хранилище интегрировано в вашу систему как локальный folder, что открывает широкие возможности для его использования с привычными инструментами.
Краткий чек-лист выполненных действий:
- Создали S3-бакет и получили ключи доступа.
- Установили пакет s3fs на сервер.
- Настроили безопасное хранение ключей в файле ~/.passwd-s3fs.
- Выполнили ручное монтирование и проверили результат.
Настроили автоматическое монтирование через /etc/fstab для стабильной работы после перезагрузок.
+7 (727) 344-27-06
+998 (71) 205-16-83