Хранилище · 4 min read · Jan 18, 2026

Высокодоступное хранилище с GlusterFS 3.2.x на Ubuntu 11.10 - Автоматическая репликация файлов (зеркало) между двумя серверами хранения

Высокодоступное хранилище с GlusterFS 3.2.x на Ubuntu 11.10 - Автоматическая репликация файлов (зеркало) между двумя серверами хранения

Версия 1.0
Автор: Фалко Тимме
Следите за мной в Twitter

Этот учебник показывает, как настроить высокодоступное хранилище с двумя серверами хранения (Ubuntu 11.10), которые используют GlusterFS. Каждый сервер хранения будет зеркалом другого сервера хранения, и файлы будут автоматически реплицироваться между обоими серверами хранения. Клиентская система (также Ubuntu 11.10) сможет получить доступ к хранилищу так, как если бы это была локальная файловая система. GlusterFS - это кластерная файловая система, способная масштабироваться до нескольких пета-байт. Она агрегирует различные хранилищные блоки через Infiniband RDMA или TCP/IP соединение в одну большую параллельную сетевую файловую систему. Хранилищные блоки могут быть изготовлены из любого стандартного оборудования, такого как серверы x86_64 с SATA-II RAID и Infiniband HBA.

Я не даю никаких гарантий, что это сработает для вас!

1 Предварительная заметка

В этом учебнике я использую три системы, два сервера и клиента:

  • server1.example.com: IP-адрес 192.168.0.100 (сервер)
  • server2.example.com: IP-адрес 192.168.0.101 (сервер)
  • client1.example.com: IP-адрес 192.168.0.102 (клиент)

Поскольку мы будем выполнять все шаги из этого учебника с правами root, мы можем либо предварять все команды в этом учебнике строкой sudo, либо стать root прямо сейчас, набрав

sudo su

Все три системы должны иметь возможность разрешать имена хостов других систем. Если это невозможно сделать через DNS, вам следует отредактировать файл /etc/hosts так, чтобы он выглядел следующим образом на всех трех системах:

vi /etc/hosts

| 127.0.0.1 localhost.localdomain localhost 192.168.0.100 server1.example.com server1 192.168.0.101 server2.example.com server2 192.168.0.102 client1.example.com client1 # Следующие строки желательны для хостов, поддерживающих IPv6 ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts |

(Также возможно использовать IP-адреса вместо имен хостов в следующей настройке. Если вы предпочитаете использовать IP-адреса, вам не нужно беспокоиться о том, могут ли быть разрешены имена хостов или нет.)

2 Настройка серверов GlusterFS

server1.example.com/server2.example.com:

GlusterFS доступен в виде пакета для Ubuntu 11.10, поэтому мы можем установить его следующим образом:

apt-get install glusterfs-server

Команда

glusterfsd --version

должна теперь показать версию GlusterFS, которую вы только что установили (в данном случае 3.2.1):

root@server1:~# glusterfsd --version  
glusterfs 3.2.1 built on Jun 28 2011 07:43:56  
Repository revision: v3.2.1  
Copyright (c) 2006-2010 Gluster Inc.   
GlusterFS comes with ABSOLUTELY NO WARRANTY.  
You may redistribute copies of GlusterFS under the terms of the GNU Affero General Public License.  
root@server1:~#

Если вы используете брандмауэр, убедитесь, что TCP порты 111, 24007, 24008, 24009-(24009 + количество блоков по всем томам) открыты на server1.example.com и server2.example.com.

Далее мы должны добавить server2.example.com в доверенный пул хранения (обратите внимание, что я выполняю все команды конфигурации GlusterFS с server1.example.com, но вы также можете выполнять их с server2.example.com, потому что конфигурация реплицируется между узлами GlusterFS - просто убедитесь, что вы используете правильные имена хостов или IP-адреса):

server1.example.com:

На server1.example.com выполните

gluster peer probe server2.example.com
root@server1:~# gluster peer probe server2.example.com  
Probe successful  
root@server1:~#

Статус доверенного пула хранения теперь должен быть похож на этот:

gluster peer status
root@server1:~# gluster peer status  
Number of Peers: 1
Hostname: server2.example.com  
Uuid: 7cd93007-fccb-4fcb-8063-133e6ba81cd9  
State: Peer in Cluster (Connected)  
root@server1:~#

Далее мы создаем общий ресурс с именем testvol с двумя репликами (обратите внимание, что количество реплик равно количеству серверов в данном случае, потому что мы хотим настроить зеркалирование) на server1.example.com и server2.example.com в каталоге /data (он будет создан, если не существует):

gluster volume create testvol replica 2 transport tcp server1.example.com:/data server2.example.com:/data
root@server1:~# gluster volume create testvol replica 2 transport tcp server1.example.com:/data server2.example.com:/data  
Creation of volume testvol has been successful. Please start the volume to access data.  
root@server1:~#

Запустите том:

gluster volume start testvol

Возможно, что вышеуказанная команда сообщит вам, что действие не было успешным:

root@server1:~# gluster volume start testvol  
Starting volume testvol has been unsuccessful  
root@server1:~#

В этом случае вам следует проверить вывод…

server1.example.com/server2.example.com:

netstat -tap | grep glusterfsd

на обоих серверах.

Если вы получите вывод, похожий на этот…

root@server1:~# netstat -tap | grep glusterfsd  
tcp        0      0 *:24009                 *:*                     LISTEN      1548/glusterfsd  
tcp        0      0 localhost.localdom:1019 localhost.localdo:24007 ESTABLISHED 1548/glusterfsd  
root@server1:~#

… все в порядке, но если вы не получите никакого вывода…

root@server2:~# netstat -tap | grep glusterfsd  
root@server2:~#

… перезапустите демон GlusterFS на соответствующем сервере (server2.example.com в данном случае):

server2.example.com:

/etc/init.d/glusterfs-server restart

Затем снова проверьте вывод…

netstat -tap | grep glusterfsd

… снова на этом сервере - он теперь должен выглядеть так:

root@server2:~# netstat -tap | grep glusterfsd  
tcp        0      0 *:24010                 *:*                     LISTEN      1458/glusterfsd  
tcp        0      0 localhost.localdom:1021 localhost.localdo:24007 ESTABLISHED 1458/glusterfsd  
root@server2:~#

Теперь вернемся к server1.example.com:

server1.example.com:

Вы можете проверить статус тома с помощью команды

gluster volume info
root@server1:~# gluster volume info
Volume Name: testvol  
Type: Replicate  
Status: Started  
Number of Bricks: 2  
Transport-type: tcp  
Bricks:  
Brick1: server1.example.com:/data  
Brick2: server2.example.com:/data  
root@server1:~#

По умолчанию все клиенты могут подключаться к тому. Если вы хотите предоставить доступ только client1.example.com (= 192.168.0.102), выполните:

gluster volume set testvol auth.allow 192.168.0.102

Обратите внимание, что возможно использовать подстановочные знаки для IP-адресов (например, 192.168.*) и что вы можете указать несколько IP-адресов, разделенных запятой (например, 192.168.0.102,192.168.0.103).

Информация о томе теперь должна показывать обновленный статус:

gluster volume info
root@server1:~# gluster volume info
Volume Name: testvol  
Type: Replicate  
Status: Started  
Number of Bricks: 2  
Transport-type: tcp  
Bricks:  
Brick1: server1.example.com:/data  
Brick2: server2.example.com:/data  
Options Reconfigured:  
auth.allow: 192.168.0.102  
root@server1:~#
Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.