Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

SWARM_PERSISTENT_STORAGE_FAIL Linux / DevOps

Персистентное хранение данных в Docker Swarm: сетевые тома NFS и GlusterFS

Обновлено: 21.08.2026
  • Потеря данных при миграции контейнера (task reschedule) с одной ноды кластера Swarm на другую.
  • Локальные bind-mounts не синхронизируются между серверами кластера.
  • Ошибка монтирования volume driver not found или таймауты сетевых блокировок RPC.

1. Установка NFS-клиентов на все узлы Swarm кластера

# Ubuntu / Debian
apt-get install -y nfs-common

# RHEL / Rocky Linux
dnf install -y nfs-utils

2. Создание сетевого NFS тома через Docker CLI

docker volume create --driver local \
  --opt type=nfs \
  --opt o=addr=192.168.1.50,rw,nfsvers=4,noatime,rsize=1048576,wsize=1048576,hard,timeo=600 \
  --opt device=:/srv/nfs/shared_data \
  swarm_nfs_storage

3. Использование NFS томов в Docker Stack (Compose v3)

Определите сетевой том в файле stack.yml:

version: "3.8"
services:
  app:
    image: wordpress:latest
    deploy:
      replicas: 2
    volumes:
      - persistent_data:/var/www/html/wp-content

volumes:
  persistent_data:
    driver: local
    driver_opts:
      type: "nfs"
      o: "addr=192.168.1.50,rw,nfsvers=4,nolock,soft"
      device: ":/srv/nfs/wp_content"

4. Проверка монтирования на нодах кластера

docker volume inspect swarm_nfs_storage

# Тестовая проверка записи
docker run --rm -v swarm_nfs_storage:/mnt alpine touch /mnt/cluster_test.tmp
💡 Практика специалистов: Всегда указывайте опцию 'nolock' при монтировании NFS для Web/State-shared сервисов, если несколько реплик контейнеров обращаются к одним и тем же статическим файлам одновременно.

Частые вопросы (FAQ)

Почему при использовании NFS базы данных (PostgreSQL/MySQL) могут повреждаться?

NFS не гарантирует полную поддержку POSIX fcntl/flock файловых блокировок и fsync транзакций при высокой частоте случайной записи. Базы данных на сетевых хранилищах требуют специализированных драйверов (Ceph RBD, Longhorn, Portworx).

Каковы преимущества опций rsize и wsize в 1048576?

Они увеличивают размер буфера передачи пакетов NFS до 1MB, что кардинально повышает скорость последовательного чтения и записи по 10G/40G сетям.

Полезные материалы
Рекомендуем