Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог

Are you located in United States?

To see content in English and prices in USD, change your region.
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Object Storage
    • Все инструменты
      • GeeseFS
      • s3fs
      • goofys
      • rclone
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Логи бакета
  • История изменений
  • Вопросы и ответы
  • Обучающие курсы

В этой статье:

  • Функциональность
  • Производительность
  • POSIX-совместимость
  • Частичное изменение и дозапись объектов
  • Ограничения
  • Подготовка к работе
  • Установка
  • Аутентификация
  • Монтирование бакета
  1. Инструменты
  2. FUSE
  3. GeeseFS

GeeseFS

Статья создана
Yandex Cloud
Обновлена 26 декабря 2024 г.
  • Функциональность
    • Производительность
    • POSIX-совместимость
    • Частичное изменение и дозапись объектов
    • Ограничения
  • Подготовка к работе
  • Установка
  • Аутентификация
  • Монтирование бакета

GeeseFS — программа для монтирования бакетов Object Storage через FUSE в системах Linux, macOS и Windows. Разработана командой Yandex Cloud как ответвление от goofys. Она обеспечивает высокую производительность и POSIX-совместимость.

ФункциональностьФункциональность

ПроизводительностьПроизводительность

По сравнению с goofys и s3fs GeeseFS работает с большими количествами малых файлов (размером до 1 МБ) на порядки быстрее, а с большими файлами — на аналогичной скорости или быстрее. Подробнее о тестах производительности см. в репозитории GeeseFS на GitHub.

Чтобы GeeseFS работала быстрее, в ней реализованы:

  • Параллельное опережающее чтение (parallel readahead).
  • Эвристическое опережающее чтение при случайном доступе: если размер нескольких запрошенных подряд блоков ниже порога, для следующих запросов GeeseFS будет скачивать из хранилища меньшие блоки.
  • Параллельная составная загрузка объектов в хранилище (parallel multipart upload).
  • Оптимизированное изменение объектов: клиент и хранилище обмениваются только измененными частями объекта.
  • Фоновая загрузка малых деревьев объектов и папок: при запросе папки GeeseFS скачает все дерево за одно обращение к хранилищу.
  • Асинхронная запись, переименование и удаление объектов.
  • Использование дискового кеша для чтения и записи.

POSIX-совместимостьPOSIX-совместимость

Помимо базовых функций из стандартов POSIX (open, read, write, close и т. д.), GeeseFS поддерживает следующие возможности:

  • Корректное чтение объектов сразу после записи в них (read-after-write consistency).
  • Частичная запись (обратите внимание: в версионируемых бакетах при частичной записи могут появляться промежуточные версии объекта).
  • fsync — синхронизация содержимого объекта или папки между памятью машины и хранилищем.
  • truncate — произвольное изменение размера объекта.
  • Символические (мягкие) ссылки.
  • xattr — расширенные атрибуты файлов.
  • Переименование папок.
  • readdir — чтение метаинформации о папках.

Частичное изменение и дозапись объектовЧастичное изменение и дозапись объектов

В GeeseFS поддерживается частичное изменение и дозапись объектов в бакеты Object Storage.

Чтобы включить частичное изменение объектов, используйте опцию --enable-patch.

Подробнее в репозитории GeeseFS на GitHub:

  • Partial object updates — описание частичного изменения и дозаписи объектов.
  • Concurrent Updates — описание частичного изменения объекта одновременно несколькими запросами.

ОграниченияОграничения

В GeeseFS не поддерживаются:

  • Работа с правами доступа к файлам и папкам, в том числе команды chmod и chown.

    При монтировании файловой системы вы можете указать:

    • Права доступа ко всем файлам или папкам в значениях опций --file-mode и --dir-mode соответственно.
    • Идентификатор пользователя — владельца всех файлов и папок в значении опции --uid.
    • Идентификатор группы, к которой относятся все файлы и папки, в значении опции --gid.

    Например:

    geesefs \
      --file-mode=0666 \
      --dir-mode=0777 \
      --uid=1000 \
      <имя_бакета> <точка_монтирования>
    
  • Жесткие ссылки.

  • Блокировка файлов.

  • Корректное время последнего доступа к файлу (atime) и последнего изменения атрибутов файла (ctime). В обоих полях всегда содержится время последнего изменения файла — то же, что и в поле mtime.

  • Создание файлов размером больше 1 ТБ.

Подготовка к работеПодготовка к работе

  1. Создайте сервисный аккаунт.
  2. Назначьте сервисному аккаунту роли, необходимые для вашего проекта. Подробнее о ролях см. в документации Identity and Access Management.
  3. Создайте статический ключ доступа.

Примечание

Сервисный аккаунт может просматривать список бакетов только в том каталоге, в котором он был создан.

Сервисный аккаунт может выполнять действия с объектами в бакетах, которые созданы в каталогах, отличных от каталога сервисного аккаунта. Для этого назначьте сервисному аккаунту роли на нужный каталог или бакет в нем.

УстановкаУстановка

Linux
macOS
Windows
  1. Установите утилиты для работы FUSE. Например:

    • Debian, Ubuntu:

      sudo apt-get install fuse
      
    • CentOS:

      sudo yum install fuse
      
  2. Скачайте и установите GeeseFS:

    wget https://github.com/yandex-cloud/geesefs/releases/latest/download/geesefs-linux-amd64
    chmod a+x geesefs-linux-amd64
    sudo cp geesefs-linux-amd64 /usr/bin/geesefs
    
  1. Установите пакет macFUSE. Подробнее см. в инструкции по установке в репозитории macFUSE на GitHub.

  2. Скачайте и установите 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
    
  1. Скачайте и установите WinFSP.
  2. Скачайте файл geesefs-win-x64.exe.
  3. Для удобства работы переименуйте файл geesefs-win-x64.exe в geesefs.exe.

Также вы можете самостоятельно собрать GeeseFS из исходного кода. Подробнее см. в инструкции в репозитории GeeseFS на GitHub.

АутентификацияАутентификация

GeeseFS использует статический ключ доступа к Object Storage. Он задается несколькими способами:

Linux/macOS
Windows
  • С помощью файла credentials, который нужно поместить в директорию ~/.aws/:

    [default]
    aws_access_key_id = <идентификатор_ключа>
    aws_secret_access_key = <секретный_ключ>
    

    Если файл с ключом находится в другом месте, передайте путь к нему в параметре --shared-config при монтировании бакета:

    geesefs \
      --shared-config <путь_к_файлу_с_ключом> \
      <имя_бакета> <точка_монтирования>
    
  • С помощью переменных окружения:

    export AWS_ACCESS_KEY_ID=<идентификатор_ключа>
    export AWS_SECRET_ACCESS_KEY=<секретный_ключ>
    

Примечание

Вы можете использовать команду geesefs с правами суперпользователя (sudo). В этом случае обязательно передавайте информацию о ключе либо в параметре --shared-config, либо с помощью переменных окружения.

  • С помощью файла credentials, который нужно поместить в папку users/<текущий_пользователь>/.aws/:

    [default]
    aws_access_key_id = <идентификатор_ключа>
    aws_secret_access_key = <секретный_ключ>
    

    Если файл с ключом находится в другом месте, передайте путь к нему в параметре --shared-config при монтировании бакета:

    geesefs <имя_бакета> <точка_монтирования> ^
      --shared-config <путь_к_файлу_с_ключом>
    
  • С помощью переменных окружения:

    set AWS_ACCESS_KEY_ID=<идентификатор_ключа>
    set AWS_SECRET_ACCESS_KEY=<секретный_ключ>
    

При работе с GeeseFS на виртуальной машине Compute Cloud, к которой привязан сервисный аккаунт, вы можете включить упрощенную аутентификацию, без статического ключа доступа. Для этого при монтировании бакета используйте опцию --iam.

Монтирование бакетаМонтирование бакета

Выберите каталог или диск для монтирования бакета. Убедитесь, что у вас достаточно прав для этой операции.

При монтировании бакета также можно задать настройки GeeseFS связанные с производительностью и правами доступа к объектам. Чтобы посмотреть список опций и их описания, выполните команду geesefs --help.

  • Для разового монтирования бакета выполните команду:

    geesefs <имя_бакета> <точка_монтирования>
    
  • Для автоматического монтирования бакета при запуске системы:

    Linux/macOS
    Windows
    1. Добавьте в файл /etc/fuse.conf строку:

      user_allow_other
      
    2. Добавьте в файл /etc/fstab строку вида:

      <имя_бакета>    <точка_монтирования>    fuse.geesefs    _netdev,allow_other,--file-mode=0666,--dir-mode=0777    0   0
      

    Примечание

    Чтобы бакет монтировался корректно, указывайте полный абсолютный путь к точке монтирования без ~. Например: /home/user/mountpoint.

    Создайте службу Windows, которая будет запускаться вместе с ОС:

    1. Запустите командную строку CMD от имени администратора.

    2. Выполните команду:

      sc create <имя_службы> ^
        binPath="<команда_для_монтирования>" ^
        DisplayName= "<имя_службы>" ^
        type=own ^
        start=auto
      

      Где binPath — путь к файлу geesefs.exe с необходимыми параметрами монтирования. Например: C:\geesefs\geesefs.exe <имя_бакета> <точка_монтирования>.

      Результат:

      [SC] CreateService: успех
      
    3. Нажмите кнопку Пуск и в строке поиска Windows введите Службы. Запустите от имени администратора приложение Службы.

    4. В открывшемся окне найдите созданную ранее службу, нажмите на нее правой кнопкой мыши и выберите Свойства.

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

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

    6. Нажмите кнопку OK.

    Чтобы удалить созданную службу, запустите командную строку CMD от имени администратора и выполните команду:

    sc delete <имя_службы>
    

    Результат:

    [SC] DeleteService: успех
    

Была ли статья полезна?

Предыдущая
AWS SDK для Go
Следующая
s3fs
Проект Яндекса
© 2025 ООО «Яндекс.Облако»