Учимся ронять и поднимать MooseFS


Пока игрался, успел получить несколько неправильных ситуаций с этой красивой класстерной файловой системой.

  1. Полная потеря данных в файлах:
    1. Настраиваем наличие единственной реплики mfsrsetgoal 1 /mnt/mfs
    2. Ждем, когда информация приметая.
    3. Убиваем один из chunk серверов
    4. Смотрим состояние через веб-интерфейс или через mfscli -SMF и получаем напротив некоторых файлов type of missing chunk = NO COPY.
    5. При обращении к файлам система ожидает timeout выставленный в mfsmount, а потом говорит, мол файл не доступен
    6. Вроде все логично - сам себе злобный Буратино.
  2. Частичная потеря данных:
    1. Роняем mfsmaster
    2. Восстанавливаем его из какой-нибудь прошлогодней копии и запускаем
    3. Смотрим состояние через веб-интерфейс или через mfscli -SMF и получаем напротив некоторых файлов type of missing chunk = WRONG VERSIONS.
    4. Файлы так же не доступны
    5. Тут более сложно, т.к. теоретически, эту ситуацию решают сервера mfsmetalogger. Но нужно помнить:
      1. мастер и металлогер скидывают инфу в файл только каждый час, т.е. если вдруг выключили свет, то за последний час, мы информацию можем потерять
      2. металлогер возьмет с мастера любую информацию и будет считать ее правильной. Т.е. если мастер откатили назад на год, то и на металлогерах она быстро окажется годичной давности.
      3. металлогер скидывает инфу в файл при перезапуске, т.е. если мы хотим иметь более частые копии, то его нужно передергивать самим.

Ну и когда все плохо начинаем стучать в бубен и пытаться достать инфу средствами MooseFS

Получение отчета о том, что же у нас пропало

mfscli -SMF > mfs_fail.txt

Попытка восстановления всех битых файлов на MoofsFS

mfscli -SMF -s '*' | awk -F'*' '{print "mfsfilerepair \""$2"\""}' | sh

Удаление файлов, чанки от которых потеряли:

mfscli -SMF -s '*' | grep 'NO COPY' | awk -F'*' '{print "rm \""$2"\""}' | sh