Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Object Storage
    • Все инструменты
      • GeeseFS
      • s3fs
      • goofys
      • rclone
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Логи бакета
  • История изменений
  • Вопросы и ответы
  • Обучающие курсы

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

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

GeeseFS

Статья создана
Yandex Cloud
Обновлена 7 марта 2025 г.
  • Функциональность
    • Производительность
    • 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. Назначьте сервисному аккаунту роли, которые нужны для вашего проекта, например storage.editor на бакет — для работы с конкретным бакетом, или на каталог — для работы со всеми бакетами в каталоге. Подробнее о ролях см. на странице Управление доступом с помощью Yandex Identity and Access Management.

    Чтобы работать с объектами в зашифрованном бакете, у пользователя или сервисного аккаунта вместе с ролью storage.configurer должны быть следующие роли на ключ шифрования:

    • kms.keys.encrypter — для чтения ключа, шифрования и загрузки объектов;
    • kms.keys.decrypter — для чтения ключа, расшифровки и скачивания объектов;
    • kms.keys.encrypterDecrypter — включает разрешения, предоставляемые ролями kms.keys.encrypter и kms.keys.decrypter.

    Подробнее см. Сервисные роли Key Management Service.

  3. Создайте статический ключ доступа.

    В результате вы получите данные статического ключа доступа. Для аутентификации в Object Storage вам понадобятся:

    • key_id — идентификатор статического ключа доступа;
    • secret — секретный ключ.

    Сохраните key_id и secret, так как повторное получение значения ключа будет невозможно.

Примечание

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

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

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

Debian/Ubuntu
CentOS
macOS
Windows
  1. Проверьте, что в дистрибутиве установлены утилиты для работы с FUSE:

    apt list --installed | grep fuse
    

    Важно

    Во многих дистрибутивах Linux утилиты для работы с FUSE уже установлены по умолчанию. Их переустановка или удаление могут привести к нарушению работы операционной системы.

  2. Если утилиты для работы с FUSE не установлены, то выполните команду:

    sudo apt-get install fuse
    
  3. Скачайте и установите 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. Проверьте, что в дистрибутиве установлены утилиты для работы с FUSE:

    yum list installed | grep fuse
    

    Важно

    Во многих дистрибутивах Linux утилиты для работы с FUSE уже установлены по умолчанию. Их переустановка или удаление могут привести к нарушению работы операционной системы.

  2. Если утилиты для работы с FUSE не установлены, то выполните команду:

    sudo yum install fuse
    
  3. Скачайте и установите 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.

  2. Включите поддержку сторонних расширений ядра. Этот шаг необходим только при первом использовании MacFUSE на Apple Silicon Mac.

  3. Разрешите загрузку расширения ядра MacFUSE (Apple Silicon и Intel Mac).

    Подробнее об установке macFUSE см. в инструкции по установке в репозитории macFUSE на GitHub.

  4. Скачайте и установите 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/local/bin/geesefs
    
  1. Скачайте и установите WinFSP.

  2. Скачайте файл geesefs-win-x64.exe.

  3. Для удобства работы переименуйте файл geesefs-win-x64.exe в geesefs.exe.

  4. Создайте папку geesefs и перенесите в нее файл geesefs.exe.

  5. Добавьте папку geesefs в переменную PATH:

    1. Нажмите кнопку Пуск и в строке поиска Windows введите Изменение системных переменных среды.
    2. Справа снизу нажмите кнопку Переменные среды....
    3. В открывшемся окне найдите параметр PATH и нажмите Изменить.
    4. Добавьте путь к папке в список.
    5. Нажмите кнопку ОК.

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

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

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

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

    1. Создайте директорию:

      mkdir ~/.aws
      
    2. Создайте файл credentials со следующим содержимым:

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

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

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

    Структура файла с ключом должна быть аналогична ~/.aws/credentials.

  • С помощью переменных окружения:

    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 <путь_к_файлу_с_ключом> ^
      <имя_бакета> <точка_монтирования>
    

    Структура файла с ключом должна быть аналогична ~/.aws/credentials.

    В качестве точки монтирования укажите существующую папку.

  • С помощью переменных окружения:

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

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

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

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

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

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

    Linux/macOS
    Windows
    1. Убедитесь, что в файле .aws/credentials указаны актуальные данные статического ключа или передайте путь к нему в параметре --shared-config.

    2. Создайте папку для монтирования:

      mkdir <точка_монтирования>
      
    3. Смонтируйте бакет:

      geesefs <имя_бакета> <точка_монтирования>
      

      В качестве точки монтирования следует указывать существующую папку.

    1. Убедитесь, что в файле .aws/credentials указаны актуальные данные статического ключа или передайте путь к нему в параметре --shared-config.

    2. Смонтируйте бакет:

      geesefs <имя_бакета> <точка_монтирования>
      

      В качестве точки монтирования укажите имя новой папки, которая будет создана при монтировании бакета. Нельзя указывать имя существующей папки.

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

    macOS
    Linux
    Windows
    1. Создайте папку для автоматического монтирования:

      mkdir <точка_монтирования>
      
    2. Создайте файл com.geesefs.automount.plist с конфигурацией агента автозапуска:

      nano /Users/<имя_пользователя>/Library/LaunchAgents/com.geesefs.automount.plist
      
    3. Задайте конфигурацию агента, указав имя бакета и абсолютный путь к точке монтирования:

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
      <plist version="1.0">
      <dict>
          <key>Label</key>
          <string>com.geesefs.automount</string>
          <key>ProgramArguments</key>
          <array>
              <string>/usr/local/bin/geesefs</string>
              <string><имя_бакета></string>
              <string><абсолютный_путь_к_точке_монтирования></string>
          </array>
          <key>RunAtLoad</key>
          <true/>
          <key>KeepAlive</key>
          <dict>
              <key>NetworkState</key>
              <true/>
          </dict>
      </dict>
      </plist>
      

      Примечание

      В качестве точки монтирования укажите существующую пустую папку.

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

    4. Включите созданный агент:

      launchctl load /Users/<имя_пользователя>/Library/LaunchAgents/com.geesefs.automount.plist
      
    5. Перезагрузитесь и проверьте, что бакет смонтирован в указанную папку.

    Чтобы отключить автозапуск агента, используйте команду:

    launchctl unload /Users/<имя_пользователя>/Library/LaunchAgents/com.geesefs.automount.plist
    
    1. Создайте папку для автоматического монтирования:

      mkdir <точка_монтирования>
      
    2. Откройте файл /etc/fuse.conf:

      sudo nano /etc/fuse.conf
      
    3. Добавьте в него строку:

      user_allow_other
      
    4. Откройте файл /etc/fstab:

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

      <имя_бакета>    /home/<имя_пользователя>/<точка_монтирования>    fuse.geesefs    _netdev,allow_other,--file-mode=0666,--dir-mode=0777,--shared-config=/home/<имя_пользователя>/.aws/credentials    0   0
      

      Если вы создавали файл .aws/credentials для пользователя root, то указывать параметр --shared-config не требуется.

      Примечание

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

    6. Перезагрузитесь и проверьте, что бакет смонтирован в указанную папку.

    Чтобы отключить автомонтирование, удалите из файла /etc/fstabстроку с именем бакета.

    Создайте службу 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 ООО «Яндекс.Облако»