Поиск по сайту:

Как выполнить операции самовосстановления и балансировки в файловой системе 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. Не стесняйтесь комментировать здесь свои сомнения относительно функций самоисцеления и повторного баланса.