Хранилище · 2 min read · Feb 07, 2026

Распределенное хранилище на четырех узлах хранения с GlusterFS на Debian Lenny

Этот учебник показывает, как объединить четыре отдельных сервера хранения (работающих на Debian Lenny) в один большой сервер хранения (распределенное хранилище) с помощью GlusterFS. Клиентская система (также Debian Lenny) сможет получить доступ к хранилищу так, как если бы это была локальная файловая система. 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 (сервер)
  • server3.example.com: IP-адрес 192.168.0.102 (сервер)
  • server4.example.com: IP-адрес 192.168.0.103 (сервер)
  • client1.example.com: IP-адрес 192.168.0.104 (клиент)

Все пять систем должны иметь возможность разрешать имена хостов других систем. Если это невозможно сделать через 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 server3.example.com server3 192.168.0.103 server4.example.com server4 192.168.0.104 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/server3.example.com/server4.example.com:

GlusterFS недоступен в виде пакета Debian для Debian Lenny, поэтому нам нужно собрать его самостоятельно. Сначала мы устанавливаем необходимые пакеты:

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

Затем мы загружаем последнюю версию GlusterFS с http://www.gluster.org/download.php и собираем ее следующим образом:

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
server1:/tmp/glusterfs-2.0.1# ./configure --prefix=/usr > /dev/null  
  
GlusterFS configure summary  
===========================  
FUSE client        : no  
Infiniband verbs   : no  
epoll IO multiplex : yes  
Berkeley-DB        : yes  
libglusterfsclient : yes  
mod_glusterfs      : no ()  
argp-standalone    : no  
  
server1:/tmp/glusterfs-2.0.1#
make && make install  
ldconfig

Команда

glusterfs --version

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

server1:/tmp/glusterfs-2.0.1# glusterfs --version  
glusterfs 2.0.1 built on May 29 2009 17:23:10  
Repository revision: 5c1d9108c1529a1155963cb1911f8870a674ab5b  
Copyright (c) 2006-2009 Z RESEARCH Inc.   
GlusterFS comes with ABSOLUTELY NO WARRANTY.  
You may redistribute copies of GlusterFS under the terms of the GNU General Public License.  
server1:/tmp/glusterfs-2.0.1#

Затем мы создаем несколько директорий:

mkdir /data/  
mkdir /data/export  
mkdir /data/export-ns  
mkdir /etc/glusterfs

Теперь мы создаем файл конфигурации сервера GlusterFS /etc/glusterfs/glusterfsd.vol, который определяет, какая директория будет экспортирована (/data/export) и какой клиент может подключаться (192.168.0.104 = client1.example.com):

vi /etc/glusterfs/glusterfsd.vol

| volume posix type storage/posix option directory /data/export end-volume volume locks type features/locks subvolumes posix end-volume volume brick type performance/io-threads option thread-count 8 subvolumes locks end-volume volume server type protocol/server option transport-type tcp option auth.addr.brick.allow 192.168.0.104 subvolumes brick end-volume |

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

После этого мы создаем системные ссылки для инициализационного скрипта glusterfsd…

update-rc.d glusterfsd defaults

… и запускаем glusterfsd:

/etc/init.d/glusterfsd start
Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.