GFS2 failisüsteemi kasutamine

Allikas: Kuutõrvaja

Sissejuhatus

GFS2 (Global File System) http://sources.redhat.com/cluster/gfs/ (ingl. k. shared disk cluster file system) on cluster failisüsteem mis lubab kasutada tervel hulgal arvutitel üheaegselt sama block seadmet mis on nende vahel jagatud kas (FC, iSCSI, NBD, jne ...) abil. GFS kirjutab ja loeb blokkseadet nagu lokaalset, kuid kasutab ka samas lock moodulit mis lubab arvutitel kordineerida nende I/O-d säilitades sedamoodi failisüsteemi terviklikuse. Ühtlasi jõuavad kõik ühes nodes tehtud muudatused silmapilkselt ka teistele clustris asetsevate masinateni.

Tegemist on journaling filesystem-iga ehk iga külge ühendatud arvuti jaoks on vaja oma journalit süsteemi mountimiseks.

Tööpõhimõte

TODO

Kui on kasutusel corosync 1 siis kasutusel cman, kui kasutusel corosync 2 siis tema enda töövahend.

Tarkvara paigaldamine debianis

# apt-get install cman resource-agents gfs2-utils gfs2-cluster ocfs2-tools-cman

Tarkvara paigaldamine centosis

# yum groupinstall "iSCSI Storage Client" "High Availability" "Resilient Storage"

cmani seadistamine

/etc/hosts faili defineerime kõigis kolmes masinas kõik workerid

10.100.0.1 moodle1
10.100.0.2 moodle2
10.100.0.3 moodle3

et clvmd ja cman töötaks, on vaja /etc/cluster/cluster.conf tekitada. Selleks igas nodes käsud

ccs -f /etc/cluster/cluster.conf --createcluster moodle
ccs -f /etc/cluster/cluster.conf --addnode moodle1
ccs -f /etc/cluster/cluster.conf --addnode moodle2
ccs -f /etc/cluster/cluster.conf --addnode moodle3

Konf mis tekkis /etc/cluster/cluster.conf

<cluster config_version="4" name="moodle">
  <fence_daemon/>
  <clusternodes>
    <clusternode name="moodle1" nodeid="1"/>
    <clusternode name="moodle2" nodeid="2"/>
    <clusternode name="moodle3" nodeid="3"/>
  </clusternodes>
  <cman/>
  <fencedevices/>
  <rm>
    <failoverdomains/>
    <resources/>
  </rm>
</cluster>

Testime konfi

# ccs_config_validate
Configuration validates

et cman ka ilma quorumita starditaks, muidu ta hakkab kurjustama ja keeldub käivitumast ja tekib nokk kinni ja saba lahti stiilis ring

# echo "CMAN_QUORUM_TIMEOUT=0" >> /etc/sysconfig/cman

Teenused käima, centosis sedasi

# service cman start

Või debianis

# /etc/init.d/cman start
Starting cluster: 
  Checking Network Manager... [  OK  ]
  Global setup... [  OK  ]
  Loading kernel modules... [  OK  ]
  Mounting configfs... [  OK  ]
  Starting cman... [  OK  ]
  Waiting for quorum... [  OK  ]
  Starting fenced... [  OK  ]
  Starting dlm_controld... [  OK  ]
  Starting gfs_controld... [  OK  ]
  Unfencing self... [  OK  ]
  Joining fence domain... [  OK  ]

Vaatame kas quorum on koos ehk kõik masinad suhtlevad

# corosync-quorumtool -l
Nodeid     Name
   1   moodle1
   2   moodle2
   3   moodle3

Cmani enda staatus

# cman_tool nodes
Node  Sts   Inc   Joined               Name
   1   M     32   2016-05-18 15:05:22  moodle1
   2   M      4   2016-05-18 14:50:01  moodle2
   3   M     24   2016-05-18 14:52:41  moodle3

Clmvmd ja lvm tööle

Clvm on clustri ülene versioon lvm2-est ning teeb loogilised voluumid nähtavaks ja kasutatavaks kõigis nodedes.

lvm-i konfi muuta /etc/lvm/lvm.conf

locking_type = 3
fallback_to_local_locking = 0

Lvm tekitada, seadmeks meil multi0 mis tekitatud iscsi+multipathiga

pvcreate /dev/mapper/multi0
vgcreate clustervg /dev/mapper/multi0
vgchange -cy clustervg
lvcreate -l 100%FREE -n moodledata clustervg
lvmconf --enable-cluster

Ja samuti teenused tööle

# service clvmd start

GFS tekitamine

GFS failiüsteemi tekitamiseks on järgmine käsk ja süntaks

# mkfs.gfs2 -p lock_dlm -t <ClustriNimi>:<FailiSyseteemiNimi> -j <JournaliteArv> <Blokkseade>

Kusjuures -t väärtused peavad kattuma cluster.conf failis oleva cluster nimega ja resource nimega. Journalite number peab aga olema vastavuses nodede hulgaga

EHk siis meie puhul näiteks

# mkfs.gfs2 -p lock_dlm -t moodle:moodledata -j 3 /dev/clustervg/moodledata
This will destroy any data on /dev/drbd1.
It appears to contain: LVM2 (Linux Logical Volume Manager) , UUID: THHRQpAS11PRt2eImKtkh7pxZOiOa3U

Are you sure you want to proceed? [y/n] y

Device:                    /dev/drbd1
Blocksize:                 4096
Device Size                100.00 GB (26213591 blocks)
Filesystem Size:           100.00 GB (26213591 blocks)
Journals:                  2
Resource Groups:           400
Locking Protocol:          "lock_dlm"
Lock Table:                "network-raid1:*"
UUID:                      C920F2FB-6E5D-57B9-C1AD-964FE8FDA3E0

Mountimiseks

# echo "/dev/clustervg/moodledata /GFS gfs2 defaults,noatime,nodiratime 0 0" >>/etc/fstab

Täiendavaks häälestuseks

# gfs2_tool gettune /GFS
incore_log_blocks = 1024
log_flush_secs = 60
quota_warn_period = 10
quota_quantum = 60
max_readahead = 262144
complain_secs = 10
statfs_slow = 0
quota_simul_sync = 64
stall_secs = 600
statfs_quantum = 30
quota_scale = 1.0000   (1, 1)
new_files_jdata = 0

Kui soovime lisada täiendava neljanda node annab see käivitamisel veate

Mounting GFS2 filesystem (/GFS): Too many nodes mounting filesystem, no free journals

Seega peame lisama täiendava journali

# gfs2_jadd -j 1 /dev/mapper/clustervg-moodledata
Filesystem:            /GFS
Old Journals           3
New Journals           4

Vaatame gfs2 enda staatust

# clustat
Cluster Status for moodle @ Wed May 18 15:20:02 2016
Member Status: Quorate

 Member Name                                                     ID   Status
 ------ ----                                                     ---- ------
 moodle1                                                             1 Online
 moodle2                                                             2 Online
 moodle3                                                             3 Online, Local

Kui väga hädasti veebiliidest ka vaja siis pigaldada luci

/etc/init.d/luci restart Point your web browser to https://moodle1:8084 (or equivalent) to access luci

Kasulikud lisamaterjalid