GlusterFS · 6 min read · Nov 26, 2025
Как установить и настроить GlusterFS на Ubuntu

GlusterFS — это бесплатная, открытая и масштабируемая сетевая файловая система, разработанная сначала компанией Gluster Inc., а затем Redhat. Она специально предназначена для работы с данными, требующими больших ресурсов, такими как облачное хранилище, CDN и потоковая передача медиа. Она способна обрабатывать петабайты данных и, следовательно, может обслуживать тысячи клиентов. Она поддерживает различные протоколы, такие как NFS, SMB, CIFS, HTTP и FTP. С помощью GlusterFS вы можете объединить различные ресурсы дискового хранилища в единую глобальную пространство имен.
В этом руководстве мы научимся настраивать реплицированный объем GlusterFS на Ubuntu 18.04.
Требования
- Два сервера с установленной Ubuntu 18.04 и 2 ГБ внешнего HDD на каждом.
- Статический IP-адрес 172.20.10.5 настроен на node1, а 172.20.10.6 — на node2.
- Пароль root настроен на обоих серверах.
Начало работы
Перед началом вам нужно обновить оба сервера до последней версии. Вы можете обновить их, выполнив следующую команду на обоих серверах.
apt-get update -y
apt-get upgrade -yПосле обновления обоих серверов перезагрузите их, чтобы применить изменения.
Затем вам нужно настроить разрешение имен хостов на обоих серверах, чтобы каждый сервер мог общаться друг с другом по имени хоста. Вы можете сделать это, отредактировав файл /etc/hosts на обоих серверах:
nano /etc/hostsДобавьте следующие строки:
172.20.10.5 node1
172.20.10.6 node2
Сохраните и закройте файл, когда закончите.
Установка GlusterFS
Сначала вам нужно установить пакет GlusterFS на обоих серверах. По умолчанию GlusterFS недоступен в стандартном репозитории Ubuntu 18.04. Поэтому вам нужно добавить репозиторий GlusterFS на обоих серверах.
Сначала установите необходимый пакет с помощью следующей команды:
apt-get install software-properties-common -yЗатем добавьте репозиторий с помощью следующей команды:
add-apt-repository ppa:gluster/glusterfs-5Далее установите сервер GlusterFS с помощью следующей команды:
apt-get install glusterfs-server -yПосле завершения установки запустите службу GlusterFS и включите ее автозагрузку при запуске с помощью следующей команды:
systemctl start glusterd
systemctl enable glusterdВы также можете проверить статус службы GlusterFS с помощью следующей команды:
systemctl status glusterdВы должны увидеть следующий вывод:
? glusterd.service - GlusterFS, a clustered file-system server
Loaded: loaded (/lib/systemd/system/glusterd.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2019-11-07 12:51:15 UTC; 48s ago
Main PID: 7199 (glusterd)
Tasks: 8 (limit: 505)
CGroup: /system.slice/glusterd.service
??7199 /usr/sbin/glusterd -p /var/run/glusterd.pid --log-level INFO
Nov 07 12:51:06 ubuntu systemd[1]: Starting GlusterFS, a clustered file-system server...
Nov 07 12:51:15 ubuntu systemd[1]: Started GlusterFS, a clustered file-system server.
Создание хранилища GlusterFS
Далее вам нужно создать раздел на внешнем жестком диске (/dev/sdb) на обоих серверах.
Чтобы создать новый раздел на /dev/sdb, выполните следующую команду:
fdisk /dev/sdbВы должны увидеть следующий вывод:
Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x06091fe8.
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-4194303, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-4194303, default 4194303):
Created a new partition 1 of type 'Linux' and of size 2 GiB.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
Далее отформатируйте раздел с помощью следующей команды:
mkfs.xfs /dev/sdb1Вы должны увидеть следующий вывод:
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=131008 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=0, rmapbt=0, reflink=0
data = bsize=4096 blocks=524032, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
Далее создайте каталог для хранилища GlusterFS на обоих серверах с помощью следующей команды:
mkdir /glusterdataДалее смонтируйте диск /dev/sdb1 в каталог /glusterdata.
mount.xfs /dev/sdb1 /glusterdataДалее сделайте монтирование постоянным после перезагрузки, отредактировав файл /etc/fstab:
nano /etc/fstabДобавьте следующую строку:
/dev/sdb1 /glusterdata xfs defaults 0 0
Сохраните и закройте файл, затем выполните следующую команду, чтобы применить изменения:
mount -aТеперь вы можете проверить смонтированный каталог с помощью следующей команды:
df -hВы должны увидеть следующий вывод:
Filesystem Size Used Avail Use% Mounted on
udev 211M 0 211M 0% /dev
tmpfs 49M 1016K 48M 3% /run
/dev/sda2 30G 4.3G 25G 16% /
tmpfs 241M 12K 241M 1% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 241M 0 241M 0% /sys/fs/cgroup
/dev/loop0 87M 87M 0 100% /snap/core/4486
tmpfs 49M 0 49M 0% /run/user/0
/dev/loop1 90M 90M 0 100% /snap/core/7917
/dev/sdb1 2.0G 35M 2.0G 2% /glusterdata
Настройка объема GlusterFS
Сначала вам нужно создать доверенный пул хранения, добавив node2 на node1. Для этого выполните следующую команду на node1:
gluster peer probe node2Вы можете перечислить пул хранения с помощью следующей команды:
gluster pool listВы должны получить следующий вывод:
UUID Hostname State
d049b519-9210-4bfa-a1c6-0d1454a88ea0 node2 Connected
dbb9252e-6082-4d31-aaef-1b99e0e0c369 localhost Connected
Далее создайте директорию кирпича на обоих узлах с помощью следующей команды:
mkdir /glusterdata/vol1Далее создайте объем с именем vol1 с двумя репликами:
gluster volume create vol1 replica 2 node1:/glusterdata/vol1 node2:/glusterdata/vol1Далее запустите объем с помощью следующей команды:
gluster volume start vol1Вы можете проверить статус созданного объема с помощью следующей команды:
gluster volume statusВы должны получить следующий вывод:
Status of volume: vol1
Gluster process TCP Port RDMA Port Online Pid
------------------------------------------------------------------------------
Brick node1:/glusterdata/vol1 49152 0 Y 7987
Brick node2:/glusterdata/vol1 49152 0 Y 18565
Self-heal Daemon on localhost N/A N/A Y 8010
Self-heal Daemon on node2 N/A N/A Y 18588
Task Status of Volume vol1
------------------------------------------------------------------------------
There are no active volume tasks
Вы также можете увидеть информацию о созданном объеме с помощью следующей команды:
gluster volume info vol1Вы должны получить следующий вывод:
Volume Name: vol1
Type: Replicate
Volume ID: e093ae7a-70ac-42b8-ab3f-a8bd186c5740
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: node1:/glusterdata/vol1
Brick2: node2:/glusterdata/vol1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off
Далее смонтируйте созданный объем в каталоге /mnt на обоих узлах, отредактировав файл /etc/fstab, чтобы ваш объем был доступен после загрузки сервера.
nano /etc/fstabДобавьте следующую строку:
localhost:/vol1 /mnt glusterfs defaults,_netdev 0 0
Сохраните и закройте файл, когда закончите. Затем выполните следующую команду, чтобы применить изменения:
mount -aТестирование репликации
Сервер GlusterFS теперь установлен и настроен. Время протестировать репликацию между двумя узлами.
Сначала создайте два файла на node1:
touch /mnt/file1 /mnt/file2Теперь перейдите на node2 и выполните следующую команду:
ls -l /mnt/Вы должны увидеть те же файлы, которые вы создали на node1:
total 0
-rw-r--r-- 1 root root 0 Nov 7 13:42 file1
-rw-r--r-- 1 root root 0 Nov 7 13:42 file2
Теперь остановите службу GlusterFS на node2 с помощью следующей команды:
service glusterd stopДалее перейдите на node1 и проверьте статус пира:
gluster peer statusВы должны увидеть, что node2 отключен:
Number of Peers: 1
Hostname: node2
Uuid: d049b519-9210-4bfa-a1c6-0d1454a88ea0
State: Peer in Cluster (Disconnected)
Вы также можете проверить статус объема с помощью следующей команды:
gluster volume statusВы должны увидеть следующий вывод:
Status of volume: vol1
Gluster process TCP Port RDMA Port Online Pid
------------------------------------------------------------------------------
Brick node1:/glusterdata/vol1 49152 0 Y 7987
Self-heal Daemon on localhost N/A N/A Y 8010
Task Status of Volume vol1
------------------------------------------------------------------------------
There are no active volume tasks
Далее создайте еще два файла на node1:
touch /mnt/file3 /mnt/file4Теперь перейдите на node2 и запустите службу GlusterFS с помощью следующей команды:
service glusterd startТеперь проверьте каталог /mnt на node2:
ls -l /mnt/Вы должны увидеть, что все файлы с node1 были реплицированы и теперь доступны.
total 0
-rw-r--r-- 1 root root 0 Nov 7 13:42 file1
-rw-r--r-- 1 root root 0 Nov 7 13:42 file2
-rw-r--r-- 1 root root 0 Nov 7 13:44 file3
-rw-r--r-- 1 root root 0 Nov 7 13:44 file4
Заключение
Поздравляем! Вы успешно установили и настроили двухузловый реплицированный объем Glusterfs на сервере Ubuntu 18.04. Вы также можете настроить распределенный объем Glusterfs, распределенный реплицированный объем Glusterfs, полосатый объем Glusterfs и распределенный полосатый объем Glusterfs.
Get new posts in your inbox
No spam. Unsubscribe anytime.