GFS2 How To

GFS2 How To

Ist für den Produktiveinsatz besser geeignet als OCFS2 da 
kaputte nodes einfacher den Cluster joinen können.

###############################################################################################
Prererquisits:

nss				via Yast installieren
				http://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_17_RTM/src/nss-3.17-with-nspr-4.10.7.tar.gz
				cp -frv /usr/include/nspr4/* /usr/include/

libqb			siehe Heartbeat Pacemaker Doku.

corosync 2 		siehe Heartbeat Pacemaker Doku.

Nicht unbedingt notwendig
ggf. libcab2
	"wget --no-check-certificate https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.24.tar.gz"
	"tar -xzf libcap-2.24.tar.gz"
	"cd libcap-2.24"
	"make"
	"make install"

ggf. systemd, je nachdem ob die Header bereits vorhanden sind.
	Vorsicht bei der Installation. Es kann das ganze System zerschießen. Am besten via Yast updaten !!!!!!
	"wget http://www.freedesktop.org/software/systemd/systemd-216.tar.xz" oder "git clone https://github.com/systemd/systemd.git"
	"tar -xf systemd-216.tar.xz"
	"cd systemd-216.tar.xz"
	"vi src/shared/missing.h" -> hinzufügen von
		#ifndef IFF_MULTI_QUEUE
		#define IFF_MULTI_QUEUE 0x100
		#endif
		//Vor
		//#ifndef IFF_LOWER_UP
		//#define IFF_LOWER_UP 0x10000
		//#endif
	"./configure --bindir=/usr/bin --sbindir=/usr/sbin --libdir=/usr/lib64 --includedir=/usr/include" oder "./configure CFLAGS='-g -O0 -ftrapv' --enable-compat-libs --enable-kdbus --sysconfdir=/etc --localstatedir=/var --libdir=/usr/lib64 --enable-gtk-doc --with-rootprefix= --with-rootlibdir=/lib64  --bindir=/usr/bin --sbindir=/usr/sbin --includedir=/usr/include  --enable-introspection=no"
	"make V=1"
	"make install"
	
Backup /boot; /etc/init.d; /etc/systemd
"reboot"

###############################################################################################
DLM und GFS2 Util. Rest kommt aus den Kernel.

bei Debian "apt-get install lksctp-tools"

dlm	
	"git clone https://git.fedorahosted.org/git/dlm.git"
	"vi ~/dlm/dlm_controld/Makefile" -> USE_SD_NOTIFY=no
	"make"
	"make install"
	Bei Debian "cp -frv /usr/lib64/libdlm* /usr/lib"
	
gettext bei SLES:
	"wget http://ftp.gnu.org/pub/gnu/gettext/gettext-0.19.tar.gz"
	"tar -xzf gettext-0.19.tar.gz"
	"cd gettext-0.19"
	"./configure --bindir=/usr/bin --sbindir=/usr/sbin --libdir=/usr/lib64 --includedir=/usr/include"
	"make"
	"make install"
	
Bei SLES blkid-devel via YAST installieren

Bei SLES Bison update:	
	"yacc --version"
	"wget http://ftp.gnu.org/gnu/bisonbison-3.0.2.tar.gz"
	"tar -xzf bison-2.4.1.tar.gz"
	"cd bison-2.4.1"
	SuSE "./configure --bindir=/usr/bin/ --sbindir=/usr/sbin/ --libdir=/usr/lib64 --includedir=/usr/include/"
	"make"
	"make install"

ggf. glibc-devel-static via yast2

gfs2 Utilities 
	"wget --no-check-certificate https://git.fedorahosted.org/cgit/gfs2-utils.git/snapshot/gfs2-utils-3.1.6.tar.gz" oder  "git clone https://git.fedorahosted.org/git/gfs2-utils.git"
	Bei SLES
		"vi configure.ac" ->
			auskommentieren von "#AM_SILENT_RULES([yes])"
		"vi gfs2/libgfs2/meta.c" ->
			das "F(f.mh_jid)" löschen 
				F(f.mh_format, .flags = LGFS2_MFF_ENUM, .symtab=lgfs2_metaformats, .nsyms=ARRAY_SIZE(lgfs2_metaformats)) \
				weg mit => F(f.mh_jid)
		"vi gfs2/libgfs2/parser.y" -> auskommentieren
			//typedef void* yyscan_t;
		"vi gfs2/libgfs2/parser.h" -> auskommentieren
		//int yyparse (struct lgfs2_lang_state *state, yyscan_t lexer);
	"./autogen.sh"
	"./configure --bindir=/usr/bin --sbindir=/usr/sbin --libdir=/usr/lib64 --includedir=/usr/include"
	Bei Debian "./configure --bindir=/usr/bin --sbindir=/usr/sbin --libdir=/usr/lib --includedir=/usr/include"
	unittest ignorieren
	"make"
	"make install"

###############################################################################################	
Nicht unbedingt notwendig
pexpect	
	"git clone https://github.com/pexpect/pexpect.git"
	"python ./setup.py install"
	
suds
	"wget --no-check-certificate https://fedorahosted.org/releases/s/u/suds/python-suds-0.4.tar.gz"
	"python ./setup.py install"
	
requests
	"wget --no-check-certificate https://pypi.python.org/packages/source/r/requests/requests-2.4.1.tar.gz#md5=931461f761c70708c46ea65b7889da58"
	"python ./setup.py install"
	
fence-agnets
	"git clone https://git.fedorahosted.org/git/fence-agents.git"
	

iscsi-initiator

###############################################################################################
Konfig

"vi /etc/corosync/corsync.conf" siehe conf file "cluster_name: xen_cluster_2" Name des GFS2 Volumen

mkdir /var/lock/subsys
/etc/init.d/corosync start

/sbin/iscsid
iscsiadm -m discovery -t sendtargets -p 172.16.190.16:3260
iscsiadm -m node -T iqn.2012-10.moore.corp:xen_2 -p 172.16.190.16:3260 --login

Bei SLES "modprobe gfs2"

nicht unbedingt Notwendig
"vi /etc/cluster/cluster.conf" ->
	<?xml version="1.0"?>
	<cluster name="xen_cluster_2" config_version="1">
	  <clusternodes>
		<clusternode name="test-apache" nodeid="1"></clusternode>
		<clusternode name="xen01" nodeid="2"></clusternode>
	  </clusternodes>
	</cluster>
	
	
mkfs.gfs2 -t xen_cluster_2:xen_storage_2 -j 8 -p lock_dlm /dev/sda

"vi /etc/dlm/dlm.conf" ->
	enable_fencing=0
	#fence_all /bin/false
	#fence_all /usr/sbin/dlm_stonith

ggf. "ln -s /dev/dlm-control /dev/misc/dlm-control" und "ln -s /dev/dlm-monitor /dev/misc/dlm-monitor" und "ln -s /dev/dlm_plock /dev/misc/dlm_plock"
ggf. "rm -frv /var/run/dlm_controld/dlm_controld.pid"
ggf. "modprobe dlm"

"dlm_controld" oder "dlm_controld --foreground --daemon_debug" oder mit SCTP "dlm_controld --foreground --daemon_debug -r 1" für meherer Ringe (HBs) bzw. Multihomeing
	http://manpages.ubuntu.com/manpages/precise/en/man8/dlm_controld.8.html
	http://datatag.web.cern.ch/datatag/WP3/sctp/tests.htm
		xen01:~ # netstat -apn | grep -i sctp
		sctp                172.16.190.20:21064                             LISTEN      -
		sctp       0      5 0.0.82.72:47039         172.16.190.20:21064     ESTABLISHED -
		sctp       0      4 0.0.82.72:45033         172.16.190.20:21064     ESTABLISHED -
		sctp       0      3 0.0.82.72:27324         172.16.190.20:21064     ESTABLISHED -
		sctp       0      2 0.0.82.72:25925         172.16.190.20:21064     ESTABLISHED -
		sctp       0      1 0.0.82.72:25735         172.16.190.20:21064     ESTABLISHED -

	
"mount /dev/sda /mnt/gfs2" sda ist der iSCSI import

"dlm_tool -n ls" = Node Status Informationen.
	"dlm_tool -n status"
	"dlm_tool -n dump"
	
"corosync-cfgtool -s" = Alle Ringe anzeigen
"corosync-cfgtool -r" = Failed Rings activeted
"corosync-cpgtool"
"corosync-quorumtool" = Zeigt das Quorum an

Bei Debian "checksctp" = Checkt ob SCTP möglich. Nötig für mehrer Ringe

###############################################################################
Join Node online:

Einfach nur den dlm_controld starten und in allen corosync.conf den neuen node hinzufügen.
Ein restart auf den vorhanden nodes von corosync ist nicht notwendig.
Zum Schluss das Laufwerk einmountern

###############################################################################
resize Volume online

Ausfallsicherheit
Klappt Problemlos. Einfach DLM und corosync neu starten und das GFS2 Volume einmounten

Features


##########################################################################################################
DLM und GFS2 Prozesse:

ps -ef | grep -i dlm; ps -ef | grep -i gfs
root       2675   2657  0 14:45 pts/1    00:00:01 dlm_controld --foreground --daemon_debug
root       2684      2  0 14:46 ?        00:00:00 [dlm_scand]
root       2685      2  0 14:46 ?        00:00:00 [dlm_recv]
root       2686      2  0 14:46 ?        00:00:00 [dlm_send]
root       2687      2  0 14:46 ?        00:00:00 [dlm_callback]
root       2688      2  0 14:46 ?        00:00:00 [dlm_recoverd]
root       2683      2  0 14:46 ?        00:00:00 [gfs_recovery]
root       2692      2  0 14:46 ?        00:00:00 [gfs2_logd]
root       2693      2  0 14:46 ?        00:00:00 [gfs2_quotad]

##########################################################################################################
Troubleshooting

"fsck.gfs2 /dev/sdc -y -v -f" = Filesystem Check


Fehler:
	52229 /sys/kernel/config/dlm/cluster/comms: opendir failed: 2
	52229 /sys/kernel/config/dlm/cluster/spaces: opendir failed: 2
	52229 No /sys/kernel/config/dlm, is the dlm loaded?
	52229 shutdown

Lösung:
	Bei Debian "mount -t configfs none /sys/kernel/config"
	
	
	
Fehler:
gfs2_quotad: statfs error -5

Lösung:
iSCSI LUN ausloggen und neu einloggen.
Danach ein fsck.gfs2 ausführen

Fehler:
[ 6240.651154] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 6240.651159] httpd           D ffff88007f619c58     0 19957  19893 0x00000000
[ 6240.651170]  ffff88007653f9d8 0000000000000086 0000000000000000 ffff880036c27bc0
....
[ 6240.651268]  [<ffffffffa05c9dc9>] gfs2_glock_holder_wait+0x9/0x10 [gfs2]

Lösung




Post Revisions: