четверг, 9 марта 2023 г.

Как подключить S3 как диск?

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

Самое популярное: s3fs

https://github.com/s3fs-fuse/s3fs-fuse

Для начала, нужно сделать бакет, и записать файл с кредами, формат ID:KEY, в файл $HOME/.passwd-s3fs или /etc/s3fs-storage если будет монтироваться через fstab, и обязательно ставим права 0600, иначе может не монтировать.

На примере edgecore

Монтирование из консоли:

sudo s3fs <bucket> <local_dir> -o passwd_file=/etc/s3fs-storage -o allow_other -o url=https://s-dt2.cloud.edgecore.ru -o use_path_request_style

Если же требуется отладка то добавляем в конец этой строки:

-o dbglevel=info -f -o curldbg

Монтирование из fstab:
<bucket>    <local_dir>        fuse.s3fs     _netdev,allow_other,use_cache=/tmp/cache,uid=1000,gid=1000,use_path_request_style,passwd_file=/etc/s3fs-storage,url=https://s-dt2.cloud.edgecore.ru    0       0
Опции меняем-убираем по вкусу, это уже запуск под нужным пользователем. Нюанс, во многих инструкциях другой формат записи:
s3fs#<bucket>    <local_dir>        fuse ......
в убунте 20.04 работают оба.

Ещё нюанс, маунт при опциях выше показывает (rw,relatime,user_id=0,group_id=0,allow_other), хотя файлы внутри от нужного пользователя...

Для яндекса: отличий не так много, url=https://storage.yandexcloud.net

Для timeweb: по идее, должно быть тоже только url=https://s3.timeweb.com, но по факту - не работает...

Также интересно рассмотреть аналог от яндекса

https://github.com/yandex-cloud/geesefs

(а ещё там есть сравнение с несколькими другими проектами)


Если захочется собрать самому, то статей много, у яндекса, сбера итд, типа
https://tecadmin.net/mount-s3-bucket-centosrhel-ubuntu-using-s3fs/

PS

s3fs показал себя крайне ненадёжно:
ls: cannot access '/srv/storage': Transport endpoint is not connected
Ремаунт помогает на короткое время.
Поставлен  geesefs - работает так же медленно (помним что это fuse-обёртка на http), но хотя бы не падает.
Проверено на яндексе и эджцентре (оно же gcore). При этом для подключения под юзера с ид 1015 строка в fstab получилась такая
app-uploads    /srv/storage     fuse.geesefs    _netdev,allow_other,--endpoint=https://s-dt2.cloud.edgecore.ru,--cache=/tmp/geesefs.cache,--memory-limit=400,--read-ahead-large=20480,--dir-mode=0755,--file-mode=0644,--uid=1015,--gid=1015 0 0

Комментариев нет:

Отправить комментарий