GeeseFS
GeeseFS — программа для Linux и macOS, позволяющая монтировать бакеты Object Storage через FUSE. Программа разработана командой Yandex Cloud как ответвление от goofys. Она обеспечивает высокую производительность и POSIX-совместимость.
Функциональность
Производительность
По сравнению с goofys и s3fs GeeseFS работает с большими количествами малых файлов (размером до 1 МБ) на порядки быстрее, а с большими файлами — на аналогичной скорости или быстрее. Подробнее о тестах производительности см. в репозитории GeeseFS на GitHub.
Чтобы GeeseFS работала быстрее, в ней реализованы:
- Параллельное опережающее чтение (parallel readahead).
- Эвристическое опережающее чтение при случайном доступе: если размер нескольких запрошенных подряд блоков ниже порога, для следующих запросов GeeseFS будет скачивать из хранилища меньшие блоки.
- Параллельная составная загрузка объектов в хранилище (parallel multipart upload).
- Оптимизированное изменение объектов: клиент и хранилище обмениваются только измененными частями объекта.
- Фоновая загрузка малых деревьев объектов и папок: при запросе папки GeeseFS скачает все дерево за одно обращение к хранилищу.
- Асинхронная запись, переименование и удаление объектов.
- Использование дискового кеша для чтения и записи.
POSIX-совместимость
Помимо базовых функций из стандартов POSIX (open
, read
, write
, close
и т. д.), GeeseFS поддерживает следующие возможности:
- Корректное чтение объектов сразу после записи в них (read-after-write consistency).
- Частичная запись (обратите внимание: в версионируемых бакетах при частичной записи могут появляться промежуточные версии объекта).
fsync
— синхронизация содержимого объекта или папки между памятью машины и хранилищем.truncate
— произвольное изменение размера объекта.- Символические (мягкие) ссылки.
xattr
— расширенные атрибуты файлов.- Переименование папок.
readdir
— чтение метаинформации о папках.
Ограничения
В GeeseFS не поддерживаются:
-
Работа с правами доступа к файлам и папкам, в том числе команды
chmod
иchown
.При монтировании файловой системы вы можете указать:
- Права доступа ко всем файлам или папкам в значениях опций
--file-mode
и--dir-mode
соответственно. - Идентификатор пользователя — владельца всех файлов и папок в значении опции
--uid
. - Идентификатор группы, к которой относятся все файлы и папки, в значении опции
--gid
.
Например:
geesefs <имя бакета> <точка монтирования> \ --file-mode=0666 \ --dir-mode=0777 \ --uid=1000
- Права доступа ко всем файлам или папкам в значениях опций
-
Жесткие ссылки.
-
Блокировка файлов.
-
Корректное время последнего доступа к файлу (
atime
) и последнего изменения атрибутов файла (ctime
). В обоих полях всегда содержится время последнего изменения файла — то же, что и в полеmtime
. -
Создание файлов размером больше 1 ТБ.
Подготовка к работе
- Создайте сервисный аккаунт.
- Назначьте нужную роль сервисному аккаунту. Подробнее о ролях см. в документации Identity and Access Management.
- Создайте статический ключ доступа.
Установка
-
Установите утилиты для работы FUSE. Например:
-
Debian, Ubuntu:
sudo apt-get install fuse fuse3
-
CentOS:
sudo yum install fuse fuse3
-
-
Скачайте и установите GeeseFS:
wget https://github.com/yandex-cloud/geesefs/releases/latest/download/geesefs-linux-amd64 chmod a+x geesefs-linus-amd64 sudo cp geesefs-linux-amd64 /usr/bin/geesefs
-
Установите пакет macFUSE. Подробнее см. в инструкции по установке в репозитории macFUSE на GitHub.
-
Скачайте и установите GeeseFS:
platform='arm64' if [[ $(uname -m) == 'x86_64' ]]; then platform='amd64'; fi wget https://github.com/yandex-cloud/geesefs/releases/latest/download/geesefs-mac-$platform chmod a+x geesefs-mac-$platform sudo cp geesefs-mac-$platform /usr/bin/geesefs
Также вы можете самостоятельно собрать GeeseFS из исходного кода. Подробнее см. в инструкции в репозитории GeeseFS на GitHub.
Аутентификация
GeeseFS использует статический ключ доступа к Object Storage, хранящийся в файле .aws/credentials
. Также можно поместить ключ в переменные окружения AWS_ACCESS_KEY_ID
и AWS_SECRET_ACCESS_KEY
.
При работе с GeeseFS на виртуальной машине Compute Cloud, к которой привязан сервисный аккаунт, вы можете включить упрощенную аутентификацию, без статического ключа доступа. Для этого при монтировании бакета используйте опцию --iam
.
Монтирование бакета
-
Выберите каталог, в который вы будете монтировать бакет, и убедитесь, что у вас достаточно прав для операции монтирования.
-
Для разового монтирования бакета выполните команду вида:
geesefs <имя бакета> <точка монтирования>
Чтобы бакет монтировался автоматически при запуске системы, добавьте в файл /etc/fstab
строку вида:
<имя бакета> <точка монтирования> fuse.geesefs _netdev,allow_other,--file-mode=0666,--dir-mode=0777 0 0
При монтировании бакета вы можете указать настройки GeeseFS, в том числе связанные с производительностью и правами доступа к объектам, с помощью опций командной строки. Чтобы посмотреть список опций и их описания, выполните команду geesefs --help
.