GNU/Linux >> Znalost Linux >  >> Debian

Distribuované úložiště napříč čtyřmi uzly úložiště s GlusterFS na Debianu Lenny

Tento tutoriál ukazuje, jak zkombinovat čtyři samostatné úložné servery (se systémem Debian Lenny) do jednoho velkého úložného serveru (distribuované úložiště) s GlusterFS. Klientský systém (také Debian Lenny) bude mít přístup k úložišti, jako by to byl místní souborový systém. GlusterFS je klastrovaný souborový systém schopný škálování na několik petabajtů. Sdružuje různé úložné bloky přes propojení Infiniband RDMA nebo TCP/IP do jednoho velkého paralelního síťového souborového systému. Úložné kostky mohou být vyrobeny z jakéhokoli běžného hardwaru, jako jsou servery x86-64 s SATA-II RAID a Infiniband HBA.

Upozorňujeme, že tento druh úložiště (distribuované úložiště) neposkytuje žádné funkce s vysokou dostupností, jako by tomu bylo v případě replikovaného úložiště.

Neposkytuji žádnou záruku, že to pro vás bude fungovat!

1 předběžná poznámka

V tomto tutoriálu používám pět systémů, čtyři servery a klienta:

  • server1.example.com:IP adresa 192.168.0.100 (server)
  • server2.example.com:IP adresa 192.168.0.101 (server)
  • server3.example.com:IP adresa 192.168.0.102 (server)
  • server4.example.com:IP adresa 192.168.0.103 (server)
  • client1.example.com:IP adresa 192.168.0.104 (klient)

Všech pět systémů by mělo být schopno rozlišit názvy hostitelů ostatních systémů. Pokud to nelze provést prostřednictvím DNS, měli byste upravit soubor /etc/hosts tak, aby na všech pěti systémech vypadal následovně:

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

# The following lines are desirable for IPv6 capable hosts
::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

(V následujícím nastavení je také možné použít IP adresy místo názvů hostitelů. Pokud dáváte přednost použití IP adres, nemusíte se starat o to, zda lze názvy hostitelů přeložit nebo ne.)

2 Nastavení serverů GlusterFS

server1.example.com/server2.example.com/server3.example.com/server4.example.com:

GlusterFS není k dispozici jako balíček Debianu pro Debian Lenny, proto si jej musíme vytvořit sami. Nejprve nainstalujeme předpoklady:

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

Poté si stáhneme nejnovější verzi GlusterFS z http://www.gluster.org/download.php a sestavíme ji následovně:

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

Přehled konfigurace GlusterFS
===========================
Klient FUSE        : ne
Infiniband slovesa   : ne
epoll IO multiplex : ano
Berkeley-DB        :ano
libglusterfsclient : ano
mod_glusterfs      : ne ()
argp-standalone    : ne

server1:/tmp/glusterfs-2.0.1#

make &&make install
ldconfig

Příkaz

glusterfs --version

by nyní měla zobrazovat verzi GlusterFS, kterou jste právě zkompilovali (v tomto případě 2.0.1):

server1:/tmp/glusterfs-2.0.1# glusterfs --version
glusterfs 2.0.1 vytvořen 29. května 2009 17:23:10
Revize úložiště:5c1d9108c1529a1155963f874Copy06b874Copy06right -2009 Z RESEARCH Inc.
GlusterFS přichází s ABSOLUTNĚ ŽÁDNOU ZÁRUKOU.
Můžete redistribuovat kopie GlusterFS za podmínek GNU General Public License.
server1:/tmp/glusterfs-2.0.1#

Dále vytvoříme několik adresářů:

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

Nyní vytvoříme konfigurační soubor serveru GlusterFS /etc/glusterfs/glusterfsd.vol, který definuje, který adresář bude exportován (/data/export) a jaký klient se smí připojit (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

Upozorňujeme, že pro adresy IP je možné použít zástupné znaky (např. 192.168.*) a že můžete zadat více adres IP oddělených čárkou (např. 192.168.0.104, 192.168.0.105).

Poté vytvoříme spouštěcí odkazy systému pro iniciační skript glusterfsd...

update-rc.d glusterfsd defaults

... a spusťte glusterfsd:

/etc/init.d/glusterfsd start

3 Nastavení klienta GlusterFS

client1.example.com:

Na klientovi musíme nainstalovat fuse a GlusterFS. Místo instalace balíčku libfuse2 z repozitáře Debianu nainstalujeme opravenou verzi s lepší podporou GlusterFS.

Nejprve znovu nainstalujeme předpoklady:

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

Poté sestavíme pojistku následovně (nejnovější verzi opravené pojistky najdete na 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

Poté sestavíme GlusterFS (stejně jako na serveru)...

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

... a vytvořte následující dva adresáře:

mkdir /mnt/glusterfs
mkdir /etc/glusterfs

Dále vytvoříme soubor /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 remote3
  type protocol/client
  option transport-type tcp
  option remote-host server3.example.com
  option remote-subvolume brick
end-volume

volume remote4
  type protocol/client
  option transport-type tcp
  option remote-host server4.example.com
  option remote-subvolume brick
end-volume

volume distribute
  type cluster/distribute
  subvolumes remote1 remote2 remote3 remote4
end-volume

volume writebehind
  type performance/write-behind
  option window-size 1MB
  subvolumes distribute
end-volume

volume cache
  type performance/io-cache
  option cache-size 512MB
  subvolumes writebehind
end-volume

Ujistěte se, že používáte správné názvy serverů nebo IP adresy ve volbě vzdálené hostitelské řádky!

A je to! Nyní můžeme připojit souborový systém GlusterFS do /mnt/glusterfs jedním z následujících dvou příkazů:

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

nebo

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

Nyní byste měli vidět nový podíl ve výstupech...

mount

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

... a...

df -h

Client1:/tmp/glusterfs-. /lib/init/rw
udev 10m 80k 10m 1%/dev
tmpfs 126m 0 126m 0%/dev/shm
/etc/glusterfs/glusterfs.vol
105g 3.4 G   96G   4 % /mnt/glusterfs
klient1:/tmp/glusterfs-2.0.1#

(server1.example.com, server2.example.com, server3.example.com a server4.example.com mají každý přibližně 26 GB prostoru pro souborový systém GlusterFS, takže výsledná sdílená položka má velikost přibližně 4 x 26 GB ( 105 GB).)

Místo ručního připojování sdílené složky GlusterFS na klienta můžete upravit /etc/fstab tak, aby se sdílená složka připojila automaticky, když se klient zavede.

Otevřete /etc/fstab a připojte následující řádek:

vi /etc/fstab  
[...]
/etc/glusterfs/glusterfs.vol  /mnt/glusterfs  glusterfs  defaults  0  0

Chcete-li otestovat, zda váš upravený /etc/fstab funguje, restartujte klienta:

reboot 

Po restartu byste měli najít podíl ve výstupech...

df -h 

... a...

mount

4 testování

Nyní vytvoříme nějaké testovací soubory na sdílené složce GlusterFS:

client1.example.com:

dotkněte se /mnt/glusterfs/test1
dotkněte se /mnt/glusterfs/test2
dotkněte se /mnt/glusterfs/test3
dotkněte se /mnt/glusterfs/test4
dotkněte se /mnt/glusterfs/ test5
dotkněte se /mnt/glusterfs/test6

Nyní se podívejme na adresář /data/export na server1.example.com, server2.example.com, server3.example.com a server4.example.com. Všimnete si, že každý uzel úložiště obsahuje pouze část souborů/adresářů, které tvoří sdílenou složku GlusterFS na klientovi:

server1.example.com:

ls -l /data/export 

server1:/tmp/glusterfs-2.0.1# ls -l /data/export
celkem 0
-rw-r--r-- 1 kořenový adresář 0 2009-06-02 18:04 test1
-rw-r--r-- 1 kořenový kořen 0 2009-06-02 18:05 test2
-rw-r--r-- 1 kořenový kořen 0 2009-06-02 18:06 test5
server1:/tmp/glusterfs-2.0.1#

server2.example.com:

ls -l /data/export 

server2:/tmp/glusterfs-2.0.1# ls -l /data/export
celkem 0
-rw-r--r-- 1 kořenový adresář 0 2009-06-02 18:06 test4
server2:/tmp/glusterfs-2.0.1#

server3.example.com:

ls -l /data/export 

server3:/tmp/glusterfs-2.0.1# ls -l /data/export
celkem 0
-rw-r--r-- 1 kořenový adresář 0 2009-06-02 18:07 test6
server3:/tmp/glusterfs-2.0.1#

server4.example.com:

ls -l /data/export 

server4:/tmp/glusterfs-2.0.1# ls -l /data/export
celkem 0
-rw-r--r-- 1 kořenový adresář 0 2009-06-02 18:06 test3
server4:/tmp/glusterfs-2.0.1#

  • GlusterFS:http://www.gluster.org/
  • Debian:http://www.debian.org/

Debian
  1. Úložiště s vysokou dostupností s GlusterFS na Debianu 8 – zrcadlení mezi dvěma úložnými servery

  2. Distribuované úložiště mezi čtyřmi uzly úložiště s GlusterFS 3.2.x na Ubuntu 12.10

  3. Distribuované replikované úložiště mezi čtyři uzly úložiště s GlusterFS 3.2.x na Ubuntu 12.10

  1. Pruhování přes čtyři uzly úložiště s GlusterFS 3.2.x na Ubuntu 12.10

  2. Úložiště s vysokou dostupností s GlusterFS na Debianu Lenny – Automatická replikace souborů přes dva úložné servery

  3. Distribuované replikované úložiště mezi čtyři uzly úložiště s GlusterFS na Debianu Lenny

  1. Pruhování přes čtyři úložné uzly s GlusterFS na Debianu Lenny

  2. Vytvoření samostatného úložného serveru podobného NFS s GlusterFS na Debianu Lenny

  3. Distribuované replikované úložiště napříč čtyřmi uzly úložiště s GlusterFS na CentOS 5.4