Поиск по сайту:

Как смонтировать корзину S3 локально в Linux


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

Преимущества и ограничения S3 как файловой системы

Волшебство, благодаря которому вся эта установка работает, — это утилита под названием s3fs-fuse. FUSE расшифровывается как Filesystem in Userspace и создает смонтированную виртуальную файловую систему. s3fs взаимодействует с S3 и поддерживает большое подмножество POSIX, включая чтение, запись, создание каталогов и настройку метаданных файлов.

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

Конечно, это не без ограничений. Хотя с точки зрения производительности при хранении и извлечении целых файлов он работает примерно так же, как S3 API, он, очевидно, не полностью заменяет гораздо более быстрое сетевое блочное хранилище. Есть причина, по которой эта конфигурация официально не поддерживается AWS — вы столкнетесь с проблемами параллелизма с несколькими клиентами, использующими файлы, особенно если у вас есть клиенты в разных регионах, обращающиеся к одному и тому же сегменту. Конечно, S3 также имеет это ограничение, и оно не мешает вам иметь несколько подключенных клиентов, но это более очевидно, когда FUSE, кажется, дает вам «прямой» доступ. Это не так, и вам придется помнить об этих ограничениях.

У AWS есть похожий сервис — Storage Gateway, который может действовать как локальный NAS и предоставляет локальное блочное хранилище, поддерживаемое S3. Однако это скорее корпоративное решение, и для развертывания образа VMWare требуется целый физический сервер. s3fs, с другой стороны, представляет собой простое решение с одним сервером, хотя оно не выполняет много кэширования.

Итак, если вы можете преобразовать приложения для использования S3 API, а не FUSE, вам следует сделать это вместо этого. Но если вы не против немного хакерского решения, s3fs может быть полезным.

Настройка s3fs-fuse

По сравнению с тем, насколько он хакерский, его на удивление легко настроить. s3fs-fuse доступен в большинстве менеджеров пакетов, хотя в некоторых системах он может называться просто s3fs. Для систем на основе Debian, таких как Ubuntu, это будет:

sudo apt install s3fs

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

Вы можете вставить их в стандартный файл учетных данных AWS, ~/.aws/credentials, но если вы хотите использовать другой ключ, s3fs поддерживает собственный файл паролей. Вставьте идентификатор ключа доступа и секрет в /etc/passwd-s3fs в следующем формате:

echo ACCESS_KEY_ID:SECRET_ACCESS_KEY > /etc/passwd-s3fs

И убедитесь, что права доступа к этому ключевому файлу установлены правильно, иначе он будет жаловаться:

chmod 600 /etc/passwd-s3fs

Затем вы можете смонтировать ведро с помощью следующей команды:

s3fs bucket-name /mnt/bucket-name

Если это не сработает, вы можете включить вывод отладки с помощью нескольких дополнительных флагов:

-o dbglevel=info -f -o curldbg

Если вы хотите, чтобы это монтировалось при загрузке, вам нужно добавить следующее в ваш /etc/fstab:

s3fs#bucket-name /mnt/bucket-name fuse _netdev,allow_other,umask=227,uid=33,gid=33,use_cache=/root/cache 0 0