Tento tutoriál ukazuje, jak provádět prokládání dat (segmentaci logicky sekvenčních dat, jako je jeden soubor, takže segmenty lze přiřazovat více fyzickým zařízením způsobem round-robin a tedy zapisovat souběžně) na čtyřech samostatných úložných serverech (se systémem Debian Lenny) 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.
Vezměte prosím na vědomí, že tento druh úložiště neposkytuje žádné funkce s vysokou dostupností/odolností proti chybám, jak 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/server 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/client option remote-host server1.example.com option remote-subvolume brick end-volume volume remote2 type protocol/client option transport-type tcp/client option remote-host server2.example.com option remote-subvolume brick end-volume volume remote3 type protocol/client option transport-type tcp/client option remote-host server3.example.com option remote-subvolume brick end-volume volume remote4 type protocol/client option transport-type tcp/client option remote-host server4.example.com option remote-subvolume brick end-volume volume stripe type cluster/stripe option block-size 1MB subvolumes remote1 remote2 remote3 remote4 end-volume volume writebehind type performance/write-behind option window-size 1MB subvolumes stripe 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:~# mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type 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 typu tmpfs (rw, režim=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 typu fusectl (rw)
/etc/glusterfs/glusterfs.vol na /mnt/glusterfs typu fuse.glusterfs (rw,max_read=131072,allow_other,default_permissions )
klient1:~#
... a...
df -h
Client1:~#df -h
Velikost souborového systému Používá se k dispozici Br/> udev 10m 80k 10m 1%/dev
tmpfs 126m 0 126m 0%/dev/shm
/etc/glusterfs/glusterfs.vol
105g 3,4g 96G 4%/mnt/ glusterfs
klient1:~#
(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 velký testovací soubor na sdílené složce GlusterFS:
client1.example.com:
dd if=/dev/zero of=/mnt/glusterfs/test.img bs=1024k count=1000
ls -l /mnt/glusterfs
client1:~# ls -l /mnt/glusterfs
celkem 1028032
-rw-r--r-- 1 root root 1048576000 2009-06-03 20:51 test.img
client1 :~#
Nyní se podívejme na adresář /data/export na server1.example.com, server2.example.com, server3.example.com a server4.example.com. Na každém uzlu byste měli vidět soubor test.img, ale s různými velikostmi (kvůli prokládání dat):
server1.example.com:
ls -l /data/export
server1:~# ls -l /data/export
celkem 257008
-rw-r--r-- 1 kořenový adresář 1045430272 2009-06-03 20:51 test.img
server1 :~#
server2.example.com:
ls -l /data/export
server2:~# ls -l /data/export
celkem 257008
-rw-r--r-- 1 kořenový adresář 1046478848 2009-06-03 20:55 test.img
server2 :~#
server3.example.com:
ls -l /data/export
server3:~# ls -l /data/export
celkem 257008
-rw-r--r-- 1 kořenový adresář 1047527424 2009-06-03 20:54 test.img
server3 :~#
server4.example.com:
ls -l /data/export
server4:~# ls -l /data/export
celkem 257008
-rw-r--r-- 1 kořenový adresář 1048576000 2009-06-03 20:02 test.img
server4 :~#
5 odkazů
- GlusterFS:http://www.gluster.org/
- Debian:http://www.debian.org/
-
Úložiště s vysokou dostupností s GlusterFS 3.0.x na Debian Squeeze – Automatická replikace souborů přes dva úložné servery
-
Vysoce dostupné úložiště s GlusterFS 3.2.x na Debian Wheezy – automatická replikace souborů (zrcadlení) na dvou serverech úložiště
-
Distribuované replikované úložiště mezi čtyři uzly úložiště s GlusterFS 3.2.x na CentOS 6.3