Как выполнить операции самовосстановления и балансировки в файловой системе Gluster. Часть 2
В моей предыдущей статье «Введение в GlusterFS (файловая система) и установка – Часть 1» был лишь краткий обзор файловой системы и ее преимуществ с описанием некоторых основных команд. В этой статье стоит упомянуть о двух важных функциях: Самовосстановление и Перебалансировка, без которых объяснение GlusterFS будет иметь бесполезное значение. бесполезно. Давайте познакомимся с терминами Самовосстановление и Повторный баланс.
Что мы подразумеваем под самовосстановлением реплицируемых томов?
Эта функция доступна для реплицируемых томов. Предположим, у нас есть реплицированный том [минимальное количество реплик 2]. Предположим, что из-за каких-то сбоев один или несколько блоков среди блоков реплик выходят из строя на некоторое время, и пользователь удаляет файл из точки монтирования, что повлияет только на онлайн-блок.
Когда автономный блок позже подключается к сети, необходимо также удалить этот файл из этого блока, т. е. необходимо выполнить синхронизацию между блоками реплик, называемую восстановлением. То же самое и с созданием/изменением файлов на автономных блоках. GlusterFS имеет встроенный демон самовосстановления, который позаботится о таких ситуациях, когда кирпичи подключатся к сети.
Что мы подразумеваем под Ребалансировкой?
Рассмотрим распределенный том только с одним кирпичом. Например, мы создаем 10 файлов на томе через точку монтирования. Теперь все файлы находятся на одном кирпиче, поскольку в томе только кирпич. При добавлении в том еще одного блока нам, возможно, придется заново сбалансировать общее количество файлов между двумя блоками. Если том расширяется или сжимается в GlusterFS, данные необходимо перебалансировать между различными блоками, включенными в том.
Выполнение самовосстановления в GlusterFS
1. Создайте реплицированный том, используя следующую команду.
gluster volume create vol replica 2 192.168.1.16:/home/a 192.168.1.16:/home/b
Примечание. Создание реплицированного тома с блоками на том же сервере может вызвать предупреждение, из-за которого вам придется игнорировать его.
2. Запустите и смонтируйте том.
gluster volume start vol
mount -t glusterfs 192.168.1.16:/vol /mnt/
3. Создайте файл из точки монтирования.
touch /mnt/foo
4. Проверьте то же самое на двух репликах блоков.
ls /home/a/
foo
ls /home/b/
foo
5. Теперь отправьте один из блоков в автономный режим, уничтожив соответствующий демон glusterfs, используя PID, полученный из информации о состоянии тома.
gluster volume status vol
Пример вывода
Status of volume: vol
Gluster process Port Online Pid
------------------------------------------------------------------------------
Brick 192.168.1.16:/home/a 49152 Y 3799
Brick 192.168.1.16:/home/b 49153 Y 3810
NFS Server on localhost 2049 Y 3824
Self-heal Daemon on localhost N/A Y 3829
Примечание. Обратите внимание на наличие демона самовосстановления на сервере.
kill 3810
gluster volume status vol
Пример вывода
Status of volume: vol
Gluster process Port Online Pid
------------------------------------------------------------------------------
Brick 192.168.1.16:/home/a 49152 Y 3799
Brick 192.168.1.16:/home/b N/A N N/A
NFS Server on localhost 2049 Y 3824
Self-heal Daemon on localhost N/A Y 3829
Сейчас второй кирпич не в сети.
6. Удалите файл foo из точки монтирования и проверьте содержимое кирпича.
rm -f /mnt/foo
ls /home/a
ls /home/b
foo
Вы видите, что foo все еще присутствует во втором блоке.
7. Теперь верните кирпич в онлайн.
gluster volume start vol force
gluster volume status vol
Пример вывода
Status of volume: vol
Gluster process Port Online Pid
------------------------------------------------------------------------------
Brick 192.168.1.16:/home/a 49152 Y 3799
Brick 192.168.1.16:/home/b 49153 Y 4110
NFS Server on localhost 2049 Y 4122
Self-heal Daemon on localhost N/A Y 4129
Теперь кирпич онлайн.
8. Проверьте содержимое кирпичей.
ls /home/a/
ls /home/b/
Файл был удален из второго кирпича демоном самоисцеления.
Примечание. В случае файлов большего размера для успешного выполнения операции самовосстановления может потребоваться некоторое время. Вы можете проверить статус лечения, используя следующую команду.
gluster volume heal vol info
Выполнение ребалансировки в GlusterFS
1. Создайте распределенный том.
gluster create volume distribute 192.168.1.16:/home/c
2. Запустите и смонтируйте том.
gluster volume start distribute
mount -t glusterfs 192.168.1.16:/distribute /mnt/
3. Создайте 10 файлов.
touch /mnt/file{1..10}
ls /mnt/
file1 file10 file2 file3 file4 file5 file6 file7 file8 file9
ls /home/c
file1 file10 file2 file3 file4 file5 file6 file7 file8 file9
4. Добавьте еще один блок в том распределение.
gluster volume add-brick distribute 192.168.1.16:/home/d
ls /home/d
5. Выполните повторную балансировку.
gluster volume rebalance distribute start
volume rebalance: distribute: success: Starting rebalance on volume distribute has been successful.
6. Проверьте содержимое.
ls /home/c
file1 file2 file5 file6 file8
ls /home/d
file10 file3 file4 file7 file9
Файлы были перебалансированы.
Примечание. Вы можете проверить статус повторной балансировки, выполнив следующую команду.
gluster volume rebalance distribute status
Пример вывода
Node Rebalanced-files size scanned failures skipped status run time in secs
--------- ----------- --------- -------- --------- ------- -------- -----------------
localhost 5 0Bytes 15 0 0 completed 1.00
volume rebalance: distribute: success:
На этом я планирую завершить серию статей о GlusterFS. Не стесняйтесь комментировать здесь свои сомнения относительно функций самоисцеления и повторного баланса.