Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Yandex Object Storage
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Бакеты
      • Создание бакета
      • Удаление бакета
      • Ограничение максимального размера бакета
      • Открытие публичного доступа к бакету
      • Шифрование бакета
      • Управление жизненными циклами объектов
      • Управление конфигурацией CORS
      • Управление политикой доступа
      • Управление версионированием бакета
      • Редактирование ACL бакета
      • Включение механизма логирования
      • Управление блокировками версий объектов
    • Объекты
      • Загрузка объекта
      • Получение информации об объекте
      • Скачивание объекта
      • Восстановление версии объекта
      • Получение публичной ссылки на объект
      • Настройка блокировок версии объекта
      • Удаление объекта
      • Удаление всех объектов
      • Удаление частично загруженного объекта
      • Редактирование ACL объекта
    • Хостинг статических сайтов
      • Настройка хостинга
      • Поддержка собственного домена
      • Поддержка нескольких доменных имен
      • Настройка HTTPS
  • Практические руководства
    • Получение статистики запросов к объекту с использованием S3 Select
    • Получение статистики посещения сайта с использованием S3 Select
    • Формирование отчета по ресурсной детализации расходов с использованием S3 Select
    • Шифрование на стороне сервера
    • Интеграция L7-балансировщика с CDN и Object Storage
    • Сине-зеленое и канареечное развертывание версий сервиса
    • Анализ логов с использованием DataLens
    • Использование скриптов инициализации для настройки GeeseFS в Yandex Data Proc
    • Подключение бакета как диска в Windows
    • Миграция данных из Yandex Data Streams с помощью Yandex Data Transfer
  • Концепции
    • Обзор
    • Бакет
    • Объект
    • Версионирование бакета
    • Блокировка версии объекта (object lock)
    • Шифрование
    • Жизненные циклы объектов
    • CORS
    • Хостинг статических сайтов
    • Подписанные (pre-signed) URL
    • Составная (multipart) загрузка
    • Список управления доступом (ACL)
    • Политика доступа (Bucket Policy)
    • Загрузка файла через HTML-форму
    • Класс хранилища
    • Механизм логирования действий с бакетом
    • Резервное копирование
    • Протокол TLS
    • Язык запросов S3 Select
    • Квоты и лимиты
  • Инструменты
    • Все инструменты
    • Консольные клиенты
      • AWS CLI
      • S3cmd
    • Файловые браузеры
      • CyberDuck
      • WinSCP
    • SDK
      • AWS SDK для Java
      • Python SDK (boto)
      • AWS SDK для .NET
      • AWS SDK для C++
      • AWS SDK для PHP
      • AWS SDK для Go
    • FUSE
      • GeeseFS
      • s3fs
      • goofys
    • FTP
      • Docker-контейнер для (S)FTP(S)
  • Справочник API
    • REST (совместимый с Amazon S3)
      • Как пользоваться API
      • Подписывание запросов
      • REST
        • Все сервисы и методы
        • Bucket
          • Все методы
          • create
          • getBucketEncryption
          • getMeta
          • listObjects
          • listBuckets
          • deleteBucket
          • deleteBucketEncryption
          • putBucketEncryption
          • putBucketVersioning
          • getBucketVersioning
          • putBucketLogging
          • getBucketLogging
          • listObjectVersions
          • putObjectLockConfiguration
          • getObjectLockConfiguration
        • Object
          • Все методы
          • upload
          • get
          • copy
          • getObjectMeta
          • delete
          • deleteMultipleObjects
          • options
          • selectObjectContent
          • putObjectRetention
          • putObjectLegalHold
          • getObjectRetention
          • getObjectLegalHold
        • Multipart upload
          • Общий порядок составной загрузки
          • startUpload
          • uploadPart
          • copyPart
          • listParts
          • abortUpload
          • completeUpload
          • listUploads
        • Static Website Hosting
          • Все методы
          • upload
          • get
          • delete
          • Коды ответов статического сайта
        • CORS
          • Все методы
          • XML-структура конфигурации CORS
          • upload
          • get
          • delete
        • Lifecycles
          • Все методы
          • XML-структура конфигурации жизненных циклов
          • upload
          • get
          • delete
        • ACL
          • Все методы
          • XML-структура конфигурации ACL
          • objectGetAcl
          • objectPutAcl
          • bucketGetAcl
          • bucketPutAcl
        • Bucket Policy
          • Все методы
          • GetBucketPolicy
          • PutBucketPolicy
          • DeleteBucketPolicy
          • Схема данных
          • Действия
          • Условия
        • Общие заголовки запросов
        • Общие заголовки ответов
        • Ответы
    • gRPC и REST
      • Аутентификация в API
      • gRPC (англ.)
        • Overview
        • BucketService
        • OperationService
      • REST (англ.)
        • Overview
        • Bucket
          • Overview
          • create
          • delete
          • deleteHTTPSConfig
          • get
          • getHTTPSConfig
          • getStats
          • list
          • setHTTPSConfig
          • update
  • Управление доступом
  • Правила тарификации
    • Действующие правила
    • Архив
      • До 1 января 2019 года
      • С 1 января до 1 марта 2019 года
  • Вопросы и ответы
  1. Инструменты
  2. FUSE
  3. GeeseFS

GeeseFS

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

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 ТБ.

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

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

Установка

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

    • Debian, Ubuntu:

      sudo apt-get install fuse fuse3
      
    • CentOS:

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

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

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

GeeseFS использует статический ключ доступа к Object Storage, хранящийся в файле .aws/credentials. Также можно поместить ключ в переменные окружения AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY.

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

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

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

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

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

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

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

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

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

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Функциональность
  • Производительность
  • POSIX-совместимость
  • Ограничения
  • Подготовка к работе
  • Установка
  • Аутентификация
  • Монтирование бакета