Хранилище · 3 min read · Jan 07, 2026

Хранилище с высокой доступностью с GlusterFS на Debian Lenny - Автоматическая репликация файлов между двумя серверами хранения - Страница 2

3 Настройка клиента GlusterFS

client1.example.com:

На клиенте нам нужно установить fuse и GlusterFS. Вместо установки пакета libfuse2 из репозитория Debian, мы устанавливаем исправленную версию с лучшей поддержкой GlusterFS.

Сначала снова установим предварительные условия:

aptitude install sshfs build-essential flex bison byacc libdb4.6 libdb4.6-dev

Затем мы собираем fuse следующим образом (вы можете найти последнюю исправленную версию fuse на ftp://ftp.zresearch.com/pub/gluster/glusterfs/fuse/):

cd /tmp  
wget ftp://ftp.zresearch.com/pub/gluster/glusterfs/fuse/fuse-2.7.4glfs11.tar.gz  
tar -zxvf fuse-2.7.4glfs11.tar.gz  
cd fuse-2.7.4glfs11  
./configure  
make && make install

После этого мы собираем GlusterFS (так же, как на сервере)…

cd /tmp  
wget http://ftp.gluster.com/pub/gluster/glusterfs/2.0/LATEST/glusterfs-2.0.1.tar.gz  
tar xvfz glusterfs-2.0.1.tar.gz  
cd glusterfs-2.0.1  
./configure --prefix=/usr > /dev/null
make && make install  
ldconfig  
glusterfs --version

… и создаем следующие две директории:

mkdir /mnt/glusterfs  
mkdir /etc/glusterfs

Далее создаем файл /etc/glusterfs/glusterfs.vol:

vi /etc/glusterfs/glusterfs.vol

| volume remote1 type protocol/client option transport-type tcp option remote-host server1.example.com option remote-subvolume brick end-volume volume remote2 type protocol/client option transport-type tcp option remote-host server2.example.com option remote-subvolume brick end-volume volume replicate type cluster/replicate subvolumes remote1 remote2 end-volume volume writebehind type performance/write-behind option window-size 1MB subvolumes replicate end-volume volume cache type performance/io-cache option cache-size 512MB subvolumes writebehind end-volume |

Убедитесь, что вы используете правильные имена хостов серверов или IP-адреса в строках option remote-host!

Вот и все! Теперь мы можем смонтировать файловую систему GlusterFS в /mnt/glusterfs с одной из следующих двух команд:

glusterfs -f /etc/glusterfs/glusterfs.vol /mnt/glusterfs

или

mount -t glusterfs /etc/glusterfs/glusterfs.vol /mnt/glusterfs

Теперь вы должны увидеть новую общую папку в выводах…

mount
client1:/tmp/glusterfs-2.0.1# mount  
/dev/sda1 on / type ext3 (rw,errors=remount-ro)  
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)  
proc on /proc type proc (rw,noexec,nosuid,nodev)  
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)  
udev on /dev type tmpfs (rw,mode=0755)  
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)  
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)  
fusectl on /sys/fs/fuse/connections type fusectl (rw)  
/etc/glusterfs/glusterfs.vol on /mnt/glusterfs type fuse.glusterfs (rw,max_read=131072,allow_other,default_permissions)  
client1:/tmp/glusterfs-2.0.1#

… и…

df -h
client1:/tmp/glusterfs-2.0.1# df -h  
Filesystem            Size  Used Avail Use% Mounted on  
/dev/sda1             29G  935M   27G   4% /  
tmpfs                 126M     0  126M   0% /lib/init/rw  
udev                  10M   80K   10M   1% /dev  
tmpfs                 126M     0  126M   0% /dev/shm  
/etc/glusterfs/glusterfs.vol  
                     19G  804M   17G   5% /mnt/glusterfs  
client1:/tmp/glusterfs-2.0.1#

( server1.example.com и server2.example.com имеют по 19 ГБ пространства для файловой системы GlusterFS, но поскольку данные зеркалируются, клиент не видит 38 ГБ (2 x 19 ГБ), а только 19 ГБ.)

Вместо того чтобы монтировать общую папку GlusterFS вручную на клиенте, вы можете изменить /etc/fstab, чтобы общая папка монтировалась автоматически при загрузке клиента.

Откройте /etc/fstab и добавьте следующую строку:

vi /etc/fstab

| [...] /etc/glusterfs/glusterfs.vol /mnt/glusterfs glusterfs defaults 0 0 |

Чтобы проверить, работает ли ваш измененный /etc/fstab, перезагрузите клиент:

reboot

После перезагрузки вы должны найти общую папку в выводах…

df -h

… и…

mount

4 Тестирование

Теперь давайте создадим несколько тестовых файлов на общей папке GlusterFS:

client1.example.com:

touch /mnt/glusterfs/test1  
touch /mnt/glusterfs/test2

Теперь давайте проверим директорию /data/export на server1.example.com и server2.example.com. Файлы test1 и test2 должны присутствовать на каждом узле:

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

ls -l /data/export
server1:~# ls -l /data/export  
total 0  
-rw-r--r-- 1 root root 0 2009-06-02 15:31 test1  
-rw-r--r-- 1 root root 0 2009-06-02 15:32 test2  
server1:~#

Теперь мы выключаем server1.example.com и добавляем/удаляем некоторые файлы на общей папке GlusterFS на client1.example.com.

server1.example.com:

shutdown -h now

client1.example.com:

touch /mnt/glusterfs/test3  
touch /mnt/glusterfs/test4  
rm -f /mnt/glusterfs/test2

Изменения должны быть видны в директории /data/export на server2.example.com:

server2.example.com:

ls -l /data/export
server2:/tmp/glusterfs-2.0.1# ls -l /data/export  
total 0  
-rw-r--r-- 1 root root 0 2009-06-02 15:31 test1  
-rw-r--r-- 1 root root 0 2009-06-02 15:32 test3  
-rw-r--r-- 1 root root 0 2009-06-02 15:33 test4  
server2:/tmp/glusterfs-2.0.1#

Давайте снова загрузим server1.example.com и посмотрим на директорию /data/export:

server1.example.com:

ls -l /data/export
server1:~# ls -l /data/export  
total 0  
-rw-r--r-- 1 root root 0 2009-06-02 15:31 test1  
-rw-r--r-- 1 root root 0 2009-06-02 15:32 test2  
server1:~#

Как видите, server1.example.com не заметил изменений, которые произошли, пока он был выключен. Это легко исправить, все, что нам нужно сделать, это вызвать команду чтения на общей папке GlusterFS на client1.example.com, например:

client1.example.com:

ls -l /mnt/glusterfs/
client1:~# ls -l /mnt/glusterfs/  
total 0  
-rw-r--r-- 1 root root 0 2009-06-02 15:31 test1  
-rw-r--r-- 1 root root 0 2009-06-02 15:32 test3  
-rw-r--r-- 1 root root 0 2009-06-02 15:33 test4  
client1:~#

Теперь взгляните на директорию /data/export на server1.example.com снова, и вы должны увидеть, что изменения были реплицированы на этот узел:

server1.example.com:

ls -l /data/export
server1:~# ls -l /data/export  
total 0  
-rw-r--r-- 1 root root 0 2009-06-02 15:31 test1  
-rw-r--r-- 1 root root 0 2009-06-02 15:52 test3  
-rw-r--r-- 1 root root 0 2009-06-02 15:52 test4  
server1:~#

5 Ссылки

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.