Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Compute Cloud
  • Yandex Container Solution
    • Все руководства
    • Настройка синхронизации часов с помощью NTP
    • Автомасштабирование группы ВМ для обработки сообщений из очереди
    • Обновление группы ВМ под нагрузкой
    • Развертывание Remote Desktop Gateway
    • Начало работы с Packer
    • Передача логов с ВМ в Yandex Cloud Logging
    • Сборка образа ВМ с набором инфраструктурных инструментов с помощью Packer
    • Миграция в Yandex Cloud с помощью Хайстекс Акура
    • Защита от сбоев с помощью Хайстекс Акура
    • Резервное копирование ВМ с помощью Хайстекс Акура
    • Развертывание отказоустойчивой архитектуры с прерываемыми ВМ
    • Настройка отказоустойчивой архитектуры в Yandex Cloud
    • Создание триггера для бюджетов, который вызывает функцию для остановки ВМ
    • Создание триггеров, которые вызывают функции для остановки ВМ и отправки уведомлений в Telegram
    • Создание веб-приложения на Python с использованием фреймворка Flask
    • Создание SAP-программы в Yandex Cloud
    • Развертывание сервера Minecraft в Yandex Cloud
    • Автоматизация сборки образов с помощью Jenkins и Packer
    • Создание тестовых виртуальных машин через GitLab CI
    • Высокопроизводительные вычисления (HPC) на прерываемых ВМ
    • Настройка SFTP-сервера на Centos 7
    • Развертывание параллельной файловой системы GlusterFS в высокодоступном режиме
    • Развертывание параллельной файловой системы GlusterFS в высокопроизводительном режиме
    • Резервное копирование в Object Storage с помощью Bacula
    • Построение пайплайна CI/CD в GitLab с использованием serverless-продуктов
    • Реализация защищенной высокодоступной сетевой инфраструктуры с выделением DMZ на основе Check Point NGFW
    • Сегментация облачной инфраструктуры с помощью решения Check Point Next-Generation Firewall
    • Настройка защищенного туннеля GRE поверх IPsec
    • Создание бастионного хоста
    • Реализация отказоустойчивых сценариев для сетевых виртуальных машин
    • Создание туннеля между двумя подсетями при помощи OpenVPN Access Server
    • Создание внешней таблицы на базе таблицы из бакета Object Storage с помощью конфигурационного файла
    • Настройка сетевой связности между подсетями BareMetal и Virtual Private Cloud
    • Работа со снапшотами в Managed Service for Kubernetes
    • Запуск языковой модели DeepSeek-R1 в кластере GPU
    • Запуск библиотеки vLLM с языковой моделью Gemma 3 на ВМ с GPU
    • Доставка USB-устройств на виртуальную машину или сервер BareMetal
  • Управление доступом
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Обучающие курсы

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

  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Настройте профиль CLI
  • Подготовьте среду для развертывания ресурсов
  • Разверните ресурсы
  • Установите и настройте GlusterFS
  • Протестируйте доступность решения
  • Протестируйте производительность решения
  • Как удалить созданные ресурсы
  1. Практические руководства
  2. Развертывание параллельной файловой системы GlusterFS в высокопроизводительном режиме

Развертывание параллельной файловой системы GlusterFS в высокопроизводительном режиме

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 4 апреля 2025 г.
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Настройте профиль CLI
  • Подготовьте среду для развертывания ресурсов
  • Разверните ресурсы
  • Установите и настройте GlusterFS
  • Протестируйте доступность решения
  • Протестируйте производительность решения
  • Как удалить созданные ресурсы

GlusterFS — это распределенная, параллельная, линейно масштабируемая файловая система. При использовании горизонтального масштабирования она обеспечивает в облаке агрегированную пропускную способность в десятки ГБ/с и в сотни тысяч IOPS.

При помощи этого руководства вы сможете создать инфраструктуру из тридцати сегментов, имеющих общую файловую систему GlusterFS. Размещение дисков для хранения данных в одной зоне доступности обеспечит высокую производительность файловой системы. В данном сценарии производительность ограничивается скоростью обращения к физическим дискам, а сетевые задержки играют менее значимую роль.

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

  1. Подготовьте облако к работе.
  2. Настройте профиль CLI.
  3. Подготовьте среду для развертывания ресурсов.
  4. Разверните ресурсы.
  5. Установите и настройте GlusterFS.
  6. Протестируйте доступность решения.
  7. Протестируйте производительность решения.

Если созданные ресурсы вам больше не нужны, удалите их.

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

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

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

Подробнее об облаках и каталогах.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость поддержки инфраструктуры входят:

  • плата за постоянно работающие ВМ и диски (см. тарифы Yandex Compute Cloud);
  • плата за использование публичных IP-адресов и исходящий трафик (см. тарифы Yandex Virtual Private Cloud);

Настройте профиль CLIНастройте профиль CLI

  1. Если у вас еще нет интерфейса командной строки Yandex Cloud, установите его и авторизуйтесь от имени пользователя.

  2. Создайте сервисный аккаунт:

    Консоль управления
    CLI
    API
    1. В консоли управления выберите каталог, в котором хотите создать сервисный аккаунт.
    2. В списке сервисов выберите Identity and Access Management.
    3. Нажмите кнопку Создать сервисный аккаунт.
    4. Введите имя сервисного аккаунта, например, sa-glusterfs.
    5. Нажмите кнопку Создать.

    По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

    Выполните команду для создания сервисного аккаунта, указав имя sa-glusterfs:

    yc iam service-account create --name sa-glusterfs
    

    Где name — имя сервисного аккаунта.

    Результат:

    id: ajehr0to1g8b********
    folder_id: b1gv87ssvu49********
    created_at: "2023-06-20T09:03:11.665153755Z"
    name: sa-glusterfs
    

    Чтобы создать сервисный аккаунт, воспользуйтесь вызовом gRPC API ServiceAccountService/Create или методом create для ресурса ServiceAccount REST API.

  3. Назначьте сервисному аккаунту роль администратора на каталог:

    Консоль управления
    CLI
    API
    1. На стартовой странице консоли управления выберите каталог.
    2. Перейдите на вкладку Права доступа.
    3. Найдите аккаунт sa-glusterfs в списке и нажмите значок .
    4. Нажмите кнопку Изменить роли.
    5. В открывшемся диалоге нажмите кнопку Добавить роль и выберите роль admin.

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

    yc resource-manager folder add-access-binding <идентификатор_каталога> \
       --role admin \
       --subject serviceAccount:<идентификатор_сервисного_аккаунта>
    

    Чтобы назначить сервисному аккаунту роль на каталог, воспользуйтесь методом REST API setAccessBindings для ресурса ServiceAccount или вызовом gRPC API ServiceAccountService/SetAccessBindings.

  4. Настройте профиль CLI для выполнения операций от имени сервисного аккаунта:

    CLI
    1. Создайте авторизованный ключ для сервисного аккаунта и запишите его в файл:

      yc iam key create \
      --service-account-id <идентификатор_сервисного_аккаунта> \
      --folder-id <id_каталога_с_сервисным_аккаунтом> \
      --output key.json
      

      Где:

      • service-account-id — идентификатор сервисного аккаунта.
      • folder-id — идентификатор каталога, в котором создан сервисный аккаунт.
      • output — имя файла с авторизованным ключом.

      Результат:

      id: aje8nn871qo4********
      service_account_id: ajehr0to1g8b********
      created_at: "2023-06-20T09:16:43.479156798Z"
      key_algorithm: RSA_2048
      
    2. Создайте профиль CLI для выполнения операций от имени сервисного аккаунта:

      yc config profile create sa-glusterfs
      

      Результат:

      Profile 'sa-glusterfs' created and activated
      
    3. Задайте конфигурацию профиля:

      yc config set service-account-key key.json
      yc config set cloud-id <идентификатор_облака>
      yc config set folder-id <идентификатор_каталога>
      

      Где:

      • service-account-key — файл с авторизованным ключом сервисного аккаунта.
      • cloud-id — идентификатор облака.
      • folder-id — идентификатор каталога.
    4. Добавьте аутентификационные данные в переменные окружения:

      export YC_TOKEN=$(yc iam create-token)
      export YC_CLOUD_ID=$(yc config get cloud-id)
      export YC_FOLDER_ID=$(yc config get folder-id)
      

Подготовьте среду для развертывания ресурсовПодготовьте среду для развертывания ресурсов

  1. Создайте пару ключей SSH:

    ssh-keygen -t ed25519
    

    Рекомендуем оставить имя файла ключа без изменения.

  2. Установите Terraform.

  3. Клонируйте репозиторий yandex-cloud-examples/yc-distributed-ha-storage-with-glusterfs из GitHub и перейдите в папку yc-distributed-ha-storage-with-glusterfs:

    git clone https://github.com/yandex-cloud-examples/yc-distributed-ha-storage-with-glusterfs.git
    cd ./yc-distributed-ha-storage-with-glusterfs
    
  4. Отредактируйте файл variables.tf, указав параметры разворачиваемых ресурсов:

    Важно

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

    1. В секции is_ha значение default измените на false.

    2. В секции client_node_per_zone значение default измените на 30.

    3. В секции storage_node_per_zone значение default измените на 30.

      Примечание

      В данном сценарии разворачивается 30 виртуальных машин. Вы можете изменить это количество в зависимости от требований к объёму конечного хранилища или общей пропускной способности.
      Максимальная агрегированная пропускная способность всей системы рассчитывается как произведение пропускной способности каждого сегмента (450 МБ/с для сетевых SSD-дисков) на количество сегментов (30), что составляет около 13,5 ГБ/с.
      Объем системы рассчитывается как произведение количества сегментов (30) на размер каждого хранилища (1 ТБ), что составляет 30 ТБ.

    4. Если при создании пары ключей SSH вы указали имя, отличное от имени по умолчанию, в секции local_pubkey_path значение default измените на <путь_к_публичному_ключу_SSH>.

    5. Если вам необходима повышенная производительность и не важна гарантия сохранности данных, вы можете использовать нереплицируемые SSD-диски. Для этого в секции disk_type значение default измените на network-ssd-nonreplicated. Кроме этого, в секции disk_size значение default должно быть кратно 93.

Разверните ресурсыРазверните ресурсы

  1. Выполните инициализацию Terraform:
    terraform init
    
  2. Проверьте конфигурацию Terraform файлов:
    terraform validate
    
  3. Проверьте список создаваемых облачных ресурсов:
    terraform plan
    
  4. Создайте ресурсы:
    terraform apply -auto-approve
    
  5. Дождитесь появления сообщения о завершении процесса:
    Outputs:
    
    connect_line = "ssh storage@158.160.108.137"
    public_ip = "158.160.108.137"
    

В результате в каталоге будут созданы 30 ВМ для размещения клиентского кода (client01, client02 и так далее) и 30 привязанных к ним ВМ для распределенного хранения данных (gluster01, gluster02 и так далее) в одной зоне доступности.

Установите и настройте GlusterFSУстановите и настройте GlusterFS

  1. Подключитесь к ВМ client01, используя команду из выдачи о завершении процесса:

    ssh storage@158.160.108.137
    
  2. Перейдите в режим работы с правами суперпользователя root:

    sudo -i
    
  3. Установите ClusterShell:

    dnf install epel-release -y
    dnf install clustershell -y
    echo 'ssh_options: -oStrictHostKeyChecking=no' >> /etc/clustershell/clush.conf
    
  4. Создайте конфигурационные файлы:

    cat > /etc/clustershell/groups.conf <<EOF
    [Main]
    default: cluster
    confdir: /etc/clustershell/groups.conf.d $CFGDIR/groups.conf.d
    autodir: /etc/clustershell/groups.d $CFGDIR/groups.d
    EOF
    
    cat > /etc/clustershell/groups.d/cluster.yaml <<EOF
    cluster:
       all: '@clients,@gluster'
       clients: 'client[01-30]'
       gluster: 'gluster[01-30]'
    EOF 
    
  5. Установите GlusterFS:

    clush -w @all hostname # check and auto add fingerprints
    clush -w @all dnf install centos-release-gluster -y
    clush -w @all dnf --enablerepo=powertools install glusterfs-server -y
    clush -w @gluster mkfs.xfs -f -i size=512 /dev/vdb
    clush -w @gluster mkdir -p /bricks/brick1
    clush -w @gluster "echo '/dev/vdb /bricks/brick1 xfs defaults 1 2' >> /etc/fstab"
    clush -w @gluster "mount -a && mount"
    
  6. Перезапустите GlusterFS:

    clush -w @gluster systemctl enable glusterd
    clush -w @gluster systemctl restart glusterd
    
  7. Проверьте доступность ВМ от gluster02 до gluster30:

    clush -w gluster01 'for i in {2..9}; do gluster peer probe gluster0$i; done'
    clush -w gluster01 'for i in {10..30}; do gluster peer probe gluster$i; done'
    
  8. Создайте папки vol0 в ВМ для хранения данных и настройте доступность и отказоустойчивость за счет подключения к папке общего доступа stripe-volume:

    clush -w @gluster mkdir -p /bricks/brick1/vol0
    export STRIPE_NODES=$(nodeset -S':/bricks/brick1/vol0 ' -e @gluster)
    clush -w gluster01 gluster volume create stripe-volume ${STRIPE_NODES}:/bricks/brick1/vol0 
    
  9. Выполните дополнительные настройки производительности:

    clush -w gluster01 gluster volume set stripe-volume client.event-threads 8
    clush -w gluster01 gluster volume set stripe-volume server.event-threads 8
    clush -w gluster01 gluster volume set stripe-volume cluster.shd-max-threads 8
    clush -w gluster01 gluster volume set stripe-volume performance.read-ahead-page-count 16
    clush -w gluster01 gluster volume set stripe-volume performance.client-io-threads on
    clush -w gluster01 gluster volume set stripe-volume performance.quick-read off
    clush -w gluster01 gluster volume set stripe-volume performance.parallel-readdir on
    clush -w gluster01 gluster volume set stripe-volume performance.io-thread-count 32
    clush -w gluster01 gluster volume set stripe-volume performance.cache-size 1GB
    clush -w gluster01 gluster volume set stripe-volume performance.cache-invalidation on
    clush -w gluster01 gluster volume set stripe-volume performance.md-cache-timeout 600
    clush -w gluster01 gluster volume set stripe-volume performance.stat-prefetch on
    clush -w gluster01 gluster volume set stripe-volume server.allow-insecure on
    clush -w gluster01 gluster volume set stripe-volume network.inode-lru-limit 200000
    clush -w gluster01 gluster volume set stripe-volume features.shard-block-size 128MB
    clush -w gluster01 gluster volume set stripe-volume features.shard on
    clush -w gluster01 gluster volume set stripe-volume features.cache-invalidation-timeout 600
    clush -w gluster01 gluster volume set stripe-volume storage.fips-mode-rchecksum on
    
  10. Смонтируйте папку общего доступа stripe-volume на клиентских ВМ:

    clush -w gluster01  gluster volume start stripe-volume
    clush -w @clients mount -t glusterfs gluster01:/stripe-volume /mnt/
    

Протестируйте доступность решенияПротестируйте доступность решения

  1. Проверьте статус папки общего доступа stripe-volume:

    clush -w gluster01  gluster volume status
    ``
    
    
  2. Создайте текстовый файл:

    cat > /mnt/test.txt <<EOF
    Hello, GlusterFS!
    EOF
    
  3. Убедитесь, что файл доступен на всех клиентских ВМ:

    clush -w @clients sha256sum /mnt/test.txt
    

    Результат:

    client01: 5fd9c031531c39f2568a8af5512803fad053baf3fe9eef2a03ed2a6f0a884c85  /mnt/test.txt
    client02: 5fd9c031531c39f2568a8af5512803fad053baf3fe9eef2a03ed2a6f0a884c85  /mnt/test.txt
    client03: 5fd9c031531c39f2568a8af5512803fad053baf3fe9eef2a03ed2a6f0a884c85  /mnt/test.txt
    ...
    client30: 5fd9c031531c39f2568a8af5512803fad053baf3fe9eef2a03ed2a6f0a884c85  /mnt/test.txt
    

Протестируйте производительность решенияПротестируйте производительность решения

IOR — это бенчмарк для параллельных операций ввода-вывода, который может использоваться для тестирования производительности параллельных систем хранения данных с использованием различных интерфейсов и сценариев доступа.

  1. Установите зависимости:

    clush -w @clients dnf install -y autoconf automake pkg-config m4 libtool git mpich mpich-devel make fio
    cd /mnt/
    git clone https://github.com/hpc/ior.git
    cd ior
    mkdir prefix
    
  2. Выйдите из командной оболочки и войдите заново:

    ^C
    sudo -i
    module load mpi/mpich-x86_64
    cd /mnt/ior
    
  3. Установите IOR:

    ./bootstrap
    ./configure --disable-dependency-tracking  --prefix /mnt/ior/prefix
    make 
    make install
    mkdir -p /mnt/benchmark/ior
    
  4. Запустите IOR:

    export NODES=$(nodeset  -S',' -e @clients)
    mpirun -hosts $NODES -ppn 16 /mnt/ior/prefix/bin/ior  -o /mnt/benchmark/ior/ior_file -t 1m -b 16m -s 16 -F
    mpirun -hosts $NODES -ppn 16 /mnt/ior/prefix/bin/ior  -o /mnt/benchmark/ior/ior_file -t 1m -b 16m -s 16 -F -C
    

    Результат:

    IOR-4.1.0+dev: MPI Coordinated Test of Parallel I/O
    Options:
    api                 : POSIX
    apiVersion          :
    test filename       : /mnt/benchmark/ior/ior_file
    access              : file-per-process
    type                : independent
    segments            : 16
    ordering in a file  : sequential
    ordering inter file : no tasks offsets
    nodes               : 30
    tasks               : 480
    clients per node    : 16
    memoryBuffer        : CPU
    dataAccess          : CPU
    GPUDirect           : 0
    repetitions         : 1
    xfersize            : 1 MiB
    blocksize           : 16 MiB
    aggregate filesize  : 120 GiB
    
    Results:
    
    access    bw(MiB/s)  IOPS       Latency(s)  block(KiB) xfer(KiB)  open(s)    wr/rd(s)   close(s)   total(s)   iter
    ------    ---------  ----       ----------  ---------- ---------  --------   --------   --------   --------   ----
    write     1223.48    1223.99    4.65        16384      1024.00    2.44       100.39     88.37      100.44     0
    read      1175.45    1175.65    4.83        16384      1024.00    0.643641   104.52     37.97      104.54     0
    

Как удалить созданные ресурсыКак удалить созданные ресурсы

Чтобы перестать платить за созданные ресурсы, удалите их:

terraform destroy -auto-approve

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

Предыдущая
Развертывание параллельной файловой системы GlusterFS в высокодоступном режиме
Следующая
Резервное копирование в Object Storage с помощью Bacula
Проект Яндекса
© 2025 ООО «Яндекс.Облако»