GlusterFS kasutamine Debianiga

Allikas: Kuutõrvaja

Sissejuhatus

GlusterFS http://www.gluster.org/ on paralleelne võrgufailisüsteem (ingl. k. parallel network file system).

Eesmärk

Olgu eesmärgiks seada käima selline asjakorraldus

                                    --|--------------|--------- teenuse kliendid internetis
                                      |              |
                              www-1  _|_            _|_  www-2        GlusterFS kliendid
                                    |   |          |   | 
        gfs-1:/srv/gfs -> /srv/www  |___|          |___|  gfs-1:/srv/gfs -> /srv/www
        gfs-2:/srv/gfs -> /srv/www    |  \        /  |    gfs-2:/srv/gfs -> /srv/www
                                      |    \    /    |
                                      |      \/      |
                                      |    /    \    |
                                      |  /        \  |
                               --|----|--------------|----|--
                                 |                        |   
                                _|_  gfs-1               _|_  gfs-2   GlusterFS serverid
                               |   |                    |   | 
                               |___|                    |___| 
 
                            /dev/sdb -> /srv/gfs     /dev/sdb -> /srv/gfs

kus

  • veebiserverile www-1 on veebijuurika failisüsteem ühendatud külge natuke erilisel moel, mõlemast GlusterFS serverist, kirjutamised tehakse mõlema füüsilise salvestusressursi serveri gfs-1 ja gfs-2 failisüsteemidesse
  • veebiserverile www-2 on veebijuurika failisüsteem ühendatud külge sarnaselt
  • nb! gfs serveritest on ressurss ühendatud külge mitte plokk-seadme tasemel, vaid failisüsteemi tasemel (nt sarnaselt NFS'ile)

GlusterFS süsteemi ettevalmistamine

Arvestades süsteemi jõudlust ja redundantsust võib olla mõttekas gfs-1 ja gfs-2 arvutitena kasutada füüsilisi arvuteid. Käesolevas tekstis on kasutatud Debian GNU/Linux Squeeze operatsioonisüsteemi, mis on küll 2009 juunis nn Debian testing, kuid see-eest sisaldab paketihalduses kõike vajalikku GlusterFS kasutamiseks. Alternatiiv on paigaldada GlusterFS nt backportsidest või lähtetekstist. Kuna GlusterFS lahendus tekitab võrgule tõenäoliselt koormust, siis on ettenägelik kasutada selle andmevahetuse jaoks eraldi võrgusegmenti, lisaks on see ka mõistliku turvakaalutlustel, sest GlusterFS ligipääsu kontrollimine töötab ip aadressi täpsusega.

Tarkvara paigaldamine serveritesse

GlusterFS serveritesse gfs-1 ja gfs-2 tuleb paigalda pakett

 # apt-get install glusterfs-server

Tarkvara paigaldamine klientidesse

GlusterFS kliendis tuleb öelda loogiliselt võttes

 # apt-get install glusterfs-client

kuid praktiliselt tuleb ka serveri pakett paigaldada. Seejärel jälgida, et serveri protsess asjatult kliendis ei käiks.

GlusterFS seadistamine

Mõlemad serverid tuleb seadistada samasuguselt ja mõlemad kliendid samuti samasuguselt.

Serverite seadistamine

Serverites tuleb väljajagatav plokkseade sobivalt ettevalmitada, nt moodustada ext3 failisüseem ning ühendada külge extended attributes toetusega

 # mke2fs -j /dev/sdb
 # mount -o user_xattr /dev/sdb /srv/gfs

Serverites sobib kasutada nt sellist seadistusfaili /etc/glusterfs/glusterfsd.vol

 volume posix
   type storage/posix
   option directory /srv/gfs
 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
   subvolumes brick
   option auth.addr.brick.allow *
 end-volume

Seadistusfaili tuleks lugeda selliselt

  • volume posix kirjeldab ära, et /srv/gfs on väljajagatav failisüsteem
  • volume locks, volume brick ja volume server lisavad väljajagatavale failisüsteemile juurde omadusi, nt selle, et ta üldse üle etherneti võrgu välja jagatakse (option transport-type tcp)

Klientide seadistamine

Serverites sobib kasutada nt sellist seadistusfaili /etc/glusterfs/glusterfs.vol

 volume remote1
   type protocol/client
   option transport-type tcp
   option remote-host 192.168.10.55
   option remote-subvolume brick
 end-volume
 
 volume remote2
   type protocol/client
   option transport-type tcp
   option remote-host 192.168.10.56
   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

Seadistusfaili tuleks lugeda selliselt

  • volume remote1 ja remote2 kirjeldavad võrgus asuvad GlusterFS ressursid, ip aadressidega
  • volume replicate kirjeldab, et remote1 ja remote2 ressursse tuleb kasutada replikeerivas režiimis, st muudatused tuleb kliendil kirjutada mõlemale
  • volume writebehind ja cache määratlevad lisaomadusi

Süsteemi käivitamine

GlusterFS töötamisega käivad kõigis arvutites protsessid.

Serverid

GlusterFS serverite käivitamise eel peavad olema väljajagatavad failisüsteemid GlusterFS serverites lokaalselt külge monteeritud

 # mount /dev/sdb /srv/gfs

ning GlusterFS teenuse käivitamiseks tuleb öelda mõlemas serveris

 # /etc/init.d/glusterfs-server

Serveri logi tekib faili

 /var/log/glusterfs/glusterfsd.log

nt käivitamise kohta

 ================================================================================
 Version      : glusterfs 2.0.1 built on May 26 2009 21:13:14
 TLA Revision : 5c1d9108c1529a1155963cb1911f8870a674ab5b
 Starting Time: 2009-06-27 11:43:12
 Command line : /usr/sbin/glusterfsd -p /var/run/glusterfsd.pid -f /etc/glusterfs/glusterfsd.vol 
 PID          : 1681
 System name  : Linux
 Nodename     : gfs-2
 Kernel Release : 2.6.26-2-xen-amd64
 Hardware Identifier: x86_64
 
 Given volfile:
 +------------------------------------------------------------------------------+
 1: volume posix
 2:   type storage/posix
 3:   option directory /srv/gfs
 4: end-volume
 5: 
 6: volume locks
 7:   type features/locks
 8:   subvolumes posix
 9: end-volume
10: 
11: volume brick
12:   type performance/io-threads
13:   option thread-count 8
14:   subvolumes locks
15: end-volume
16: 
17: volume server
18:   type protocol/server
19:   option transport-type tcp
20:   subvolumes brick
21:   option auth.addr.brick.allow *
22: end-volume
 
 +------------------------------------------------------------------------------+
 [2009-06-27 11:43:12] N [glusterfsd.c:1152:main] glusterfs: Successfully started

Kliendid

GlusterFS kliendi poolel tuleb ühendada serveri ressurss külge öeldes mõlemas kliendis

 # mount -t glusterfs /etc/glusterfs/glusterfs.vol /srv/www

Seejärel tekib protsess

 # ps aux | grep glusterfs
 root ... /usr/sbin/glusterfs --log-level=NORMAL --volfile=/etc/glusterfs/glusterfs.vol /mnt/glusterfs

Kliendi logi tekib faili

 /var/log/glusterfs/glusterfs.log

GlusterFS süsteemi kasutamine

GlusterFS süsteemi kasutamine toimub nii nagu tavalise ext3 failisüsteemi kasutamine. Jõudlus on tõenäoliselt mõnevõrra tagasihoidlikum kui mõni muu lahendus, sest kasutatakse extended attribute'isid.

Märkused

  • Vahel moodustatakse mitmest arvutist, nt neljast sellised risti-rästi ühendatud salvestusressursiga süsteemid, et kuni kahe arvuti töötamast lakkamisel süsteem pakub teenust edasi. Sel juhul on kõik arvutid samaaegselt nii GlusterFS kliendid kui serverid.
  • Kuna GlusterFS ei ole iseenesest failisüsteem, vaid töötab olemasoleva failisüsteemiga, siis on võimalik üle võrgu kasutusel olnud salvestusressursse vajadusel kasutada ka ilma GlusterFS toetuseta süsteemides, nt ühendada vastav plokkseadme külge asjasse mitte-puutuvasse arvutisse ja monteerida GlusterFS teenusena kasutatud ext3 failisüsteem lokaalselt külge.
  • Nagu igasuguste nn kõrgkäideldavate lahendusete puhul, peab ka GlusterFS kasutamisel arvestama, milliste riskidega konkreetne asjakorraldus tegeleb ja millistega mitte. Nt antud juhul ollakse kaitstud selle vastu kui ühe gfs serveri toiteplokk rikneb, samas ei olda kaitstud selle vastu kui süsteemiadministraator ühes www arvutis olles kataloogi /srv/www alt mõne vajaliku alamkataloogi sisu kogemata kustutab.

Kasulikud lisamaterjalid