Назад | Перейти на главную страницу

Информация об исцелении Glusterfs показывает только бога

У меня двухузловая установка GlusterFS. У каждого по 2 реплики. Одна из систем как-то была перегружена. Потом все пошло не так. На данный момент у меня отключены все приложения. Я не знаю, как его вернуть. Я могу запустить том, но некоторые файлы кажутся поврежденными.

Я побежал gluster volume heal kvm1, Сейчас gluster volume heal kvm1 info показывает длинный список gfid, например

<gfid:57d68ac5-5ae7-4d14-a65e-9b6bbe0f83a3>
<gfid:c725a364-93c5-4d98-9887-bc970412f124>
<gfid:8178c200-4c9a-407b-8954-08042e45bfce>
<gfid:b28866fa-6d29-4d2d-9f71-571a7f0403bd>

Я не уверен, что это действительно что-то «лечит». Количество записей стабильно. Как я могу подтвердить, что процесс заживления действительно работает?

# gluster volume heal kvm1 info|egrep 'Brick|entries'
Brick f24p:/data/glusterfs/kvm1/brick1/brick
Number of entries: 5
Brick f23p:/data/glusterfs/kvm1/brick1/brick
Number of entries: 216
Brick f23p:/bricks/brick1/kvm1
Number of entries: 6
Brick f24p:/bricks/brick2/kvm1
Number of entries: 1

# gluster volume status
Status of volume: kvm1
Gluster process                                         Port    Online  Pid
------------------------------------------------------------------------------
Brick f24p:/data/glusterfs/kvm1/brick1/brick       49160   Y       5937
Brick f23p:/data/glusterfs/kvm1/brick1/brick       49153   Y       5766
Brick f23p:/bricks/brick1/kvm1                     49154   Y       5770
Brick f24p:/bricks/brick2/kvm1                     49161   Y       5941
NFS Server on localhost                            2049    Y       5785
Self-heal Daemon on localhost                      N/A     Y       5789
NFS Server on f24p                                 2049    Y       5919
Self-heal Daemon on f24p                           N/A     Y       5923

There are no active volume tasks

Я был в таком же состоянии:

  • 2 копии
  • gluster volume heal myVolume info показывал gfid на одном из кирпичей

Я нашел этот скрипт (разрешает gfid в путь к файлу) https://gist.github.com/semiosis/4392640

Моя интерпретация следующая (т.е. ваша первая строка gfid) на узле, отображающем gfid (результат команды gluster)

Файл% yourBrickPath% /. Glusterfs / 57 / d6 / 57d68ac5-5ae7-4d14-a65e-9b6bbe0f83a3 - это жесткая ссылка, указывающая на индексный дескриптор.

В нормальной ситуации у вас должен быть файл (в производственном каталоге), указывающий на тот же индексный дескриптор, и по какой-то причине этой жесткой ссылки больше нет.

Я вижу 2 решения:

  • Вы воссоздаете отсутствующую жесткую ссылку в своем производственном каталоге (и убедитесь, что у вас такое же состояние на другом узле)
  • У вас нет возможности узнать, какое это было имя файла (это был мой случай, поскольку на другом узле ничего не было), и вы удаляете% yourBrickPath% /. Glusterfs / 57 / d6 / 57d68ac5-5ae7-4d14-a65e-9b6bbe0f83a3

изменить: содержимое файла может помочь

Возможно, вы наткнулись на эту ошибку, если используете версию <3.7.7:

https://bugzilla.redhat.com/show_bug.cgi?id=1284863

Проверьте, не отображается ли в каких-либо журналах glustershd «Не удалось получить xlator xl-0».

Исправление находится в версии 3.7.7. Однако было бы здорово найти обходные пути, если кто-нибудь их найдет.