Хранилище · 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/nullmake && 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Теперь вы должны увидеть новую общую папку в выводах…
mountclient1:/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 -hclient1:/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… и…
mount4 Тестирование
Теперь давайте создадим несколько тестовых файлов на общей папке 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/exportserver1:~# 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 nowclient1.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/exportserver2:/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/exportserver1:~# 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/exportserver1:~# 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 Ссылки
- GlusterFS: http://www.gluster.org/
- Debian: http://www.debian.org/
Get new posts in your inbox
No spam. Unsubscribe anytime.