Я только что проверил состояние моих томов glusterfs, и у меня есть один с разделенными мозговыми записями, у которых нет пути:
# gluster volume heal private_uploads info
Brick server01:/var/lib/glusterfs/brick01/uploads/
<gfid:4c0edafb-0c28-427c-a162-e530280b3396> - Is in split-brain
<gfid:42d62418-1be9-4f96-96c4-268230316869> - Is in split-brain
Number of entries: 2
Brick server02:/var/lib/glusterfs/brick01/uploads/
<gfid:42d62418-1be9-4f96-96c4-268230316869> - Is in split-brain
<gfid:4c0edafb-0c28-427c-a162-e530280b3396> - Is in split-brain
Number of entries: 2
Что это означает? Как мне это исправить?
Я использую GlusterFS 3.5.9:
# gluster --version
glusterfs 3.5.9 built on Mar 28 2016 07:10:17
Repository revision: git://git.gluster.com/glusterfs.git
Ответы:
Что такое сплит-мозг?
Как упоминалось в Официальной документации по управлению Split-Brain, предоставленной RedHat, split-brain - это состояние, когда несоответствия данных или доступности возникают из-за обслуживания двух отдельных наборов данных с перекрытием по объему, либо из-за серверов в проектировании сети, или состояние отказа на основе того, что серверы не связываются и не синхронизируют свои данные друг с другом. И это термин, применимый к репликации конфигурации.
Обратите внимание, что говорится «условие сбоя, связанное с тем, что серверы не связываются и не синхронизируют свои данные друг с другом» - из-за какой-либо вероятности - но это не означает, что ваши узлы могут потерять соединение. Узел может быть еще в кластере и подключен.
Сплит-мозг Типы:
У нас есть три разных типа расщепленного мозга, и, насколько я понимаю, ваш - это расщепленный мозг. Чтобы объяснить три типа разделения мозга:
Data split-brain: содержимое файла в split-brain различается в разных парах реплик, и автоматическое лечение невозможно.
Метаданные split-brain:, метаданные файлов (например, определенный пользователем расширенный атрибут) различаются, и автоматическое лечение невозможно.
Entry split-brain: это происходит, когда в файле есть разные gfids для каждой пары реплик.
Что такое GFID?
Внутренний идентификатор файла GlusterFS (GFID) - это уникальный идентификатор для каждого файла во всем кластере. Это аналог номера инода в нормальной файловой системе. GFID файла хранится в его xattr с именем
trusted.gfid
. Чтобы найти путь от GFID, я настоятельно рекомендую вам прочитать эту официальную статью, предоставленную GlusterFS.Как разрешить вход в сплит-мозг?
Существует несколько способов предотвратить возникновение split-brain, но для его устранения необходимо удалить соответствующие файлы gfid-link. Файлы gfid-link находятся в каталоге .glusterfs в каталоге верхнего уровня блока. Кстати, имейте в виду, что перед удалением ссылок gfid вы должны убедиться, что на этом кирпиче нет жестких ссылок на файлы. Если существуют жесткие ссылки, вы также должны удалить их. Затем вы можете использовать процесс самовосстановления, выполнив следующие команды.
Тем временем, чтобы просмотреть список файлов на томе, которые находятся в состоянии раздельного мозга, вы можете использовать:
Также следует помнить, что для реплицированных томов, когда кирпич отключается и возвращается в оперативный режим, требуется самовосстановление для повторной синхронизации всех реплик.
Чтобы проверить состояние восстановления томов и файлов, вы можете использовать:
Поскольку вы используете версию 3.5, у вас нет автоматического лечения. Итак, выполнив шаги, упомянутые ранее, вам нужно запустить самоисцеление. Для этого:
Только на файлы, которые требуют исцеления:
# gluster volume heal VOLNAME
На всех файлах:
# gluster volume heal VOLNAME full
Я надеюсь, что это поможет вам решить вашу проблему. Пожалуйста, прочитайте официальные документы для получения дополнительной информации. Приветствия.
источник
Я думаю, что документ достаточно ясен, он даже дал вам подобный пример.
И для целительных команд Gluesterfs, таких как
Так что вам не нужно беспокоиться об этом.
И как конвертировать GFID в путь говорит:
этот скрипт может сказать вам, какое имя файла принадлежит какому gfid, но произошло разделение мозга, у него может не быть имени файла.
Вы используете 3.5 и у вас нет полуавтоматического режима cmd, поэтому вам может потребоваться исправить конфликт вручную, что обычно означает, что вы должны решить, какой файл gfid необходимо удалить.
источник
Разрешение сплит-мозга можно найти здесь . В случае, если это не очень поможет, руководство с практическими рекомендациями здесь должно сделать работу. Для случая, я вижу статью также полезной.
Как избежать сплит-мозга.
Защита от сетевых разделов осуществляется через алгоритм кворумного голосования. В случае сбоя хоста или сценария с раздельным мозгом, когда узлы продолжают работать, но больше не могут связываться друг с другом, оставшиеся узлы или узлы в кластерной гонке размещают резервирование SCSI на диске-свидетеле. В случае разделения мозга свидетель поможет решить, кто из хостов, у которых есть копия данных, должен взять на себя управление.
Несколько примеров.
VMware VSAN позволяет запускать кластер из 2 узлов, когда диск-свидетель работает на 3-м хосте или в облаке. Источник
StarWind Virtual SAN работает только в двухузловой конфигурации с использованием службы отказоустойчивого кластера Microsoft, которая также содержит механизм кворумного голосования, позволяющий избежать проблем с разделением мозгов. Источник
В обоих случаях сеть Heartbeat используется для обслуживания / мониторинга связи между узлами и кворумом. Чтобы избежать разделения мозга, я вижу, что обязательно использовать избыточные каналы Heartbeat.
источник
расщепление мозга происходит, когда два узла кластера отключены. Каждый узел думает, что другой не работает.
Чтобы это исправить, вы должны понять, почему ваши два узла больше не разговаривают друг с другом.
источник