1. RedhatGFS

GFS是RHCS为集群系统提供的一个存储解决方案,它允许集群多个节点在块级别上共享存储,每个节点通过共享一个存储空间,保证了访问数据的一致性,更切实的说,GFS是RHCS提供的一个集群文件系统,多个节点同时挂载一个文件系统分区,而文件系统数据不受破坏,这是单一的文件系统不能实现的。

为了实现多个节点对于一个文件系统同时读写操作,GFS使用锁管理器来管理I/O操作,当一个写进程操作一个文件时,这个文件就被锁定,此时不允许其它进程进行读写操作直到这个写进程正常完成才释放锁,有当锁被释放后,其它读写进程才能对这个文件进行操作,另外,当一个节点在GFS文件系统上修改数据后,这种修改操作会通过RHCS底层通信机制立即在其它节点上可见。

在搭建RHCS集群时,GFS一般作为共享存储,运行在每个节点上,并且可以通过RHCS管理工具对GFS进行配置和管理。这些需要说明的是RHCS和GFS之间的关系,一般初学者很容易混淆这个概念:运行RHCS,GFS不是必须的,只有在需要共享存储时,才需要GFS支持,而搭建GFS集群文件系统,必须要有RHCS的底层支持,所以安装GFS文件系统的节点,必须安装RHCS组件。

2. 搭建步骤

1.将apache组件资源停掉(此时在2上所以停掉2的)

[root@server2 ~]# clusvcadm -d apache
Local machine disabling service:apache...Success
[root@server2 ~]#

greep集群 gfs集群 存储节点_html


2.格式化组设备,采用gfs2

mkfs.gfs2为gfs2文件系统创建工具,其一般常用的选项有:

-b BlockSize:指定文件系统块大小,最小为512,默认为4096;
-J MegaBytes:指定gfs2日志区域大小,默认为128MB,最小值为8MB;
-j Number:指定创建gfs2文件系统时所创建的日志区域个数,一般需要为每个挂载的客户端指定一个日志区域;
-p LockProtoName:所使用的锁协议名称,通常为lock_dlm或lock_nolock之一;
-t LockTableName:锁表名称,一般来说一个集群文件系统需一个锁表名以便让集群节点在施加文件锁时得悉其所关联到的集群文件系统,锁表名称为clustername:fsname,其中的clustername必须跟集群配置文件中的集群名称保持一致,因此,也仅有此集群内的节点可访问此集群文件系统;此外,同一个集群内,每个文件系统的名称必须惟一;

[root@server2 ~]# mkfs.gfs2 -p lock_dlm -j 3 -t westos_xin:mygfs2 /dev/dd/cc
This will destroy any data on /dev/dd/cc.
It appears to contain: symbolic link to `../dm-2'

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

Device:                    /dev/dd/cc
Blocksize:                 4096
Device Size                4.00 GB (1048576 blocks)
Filesystem Size:           4.00 GB (1048575 blocks)
Journals:                  3
Resource Groups:           16
Locking Protocol:          "lock_dlm"
Lock Table:                "westos_xin:mygfs2"
UUID:                      883a5abc-37de-b224-9280-a693d5fc3597

[root@server2 ~]#

greep集群 gfs集群 存储节点_html_02


3.测试多点挂载

greep集群 gfs集群 存储节点_html_03


greep集群 gfs集群 存储节点_html_04


4.将组设备分别永久挂载在/var/www/html下

[root@server1 ~]# vim /etc/fstab 
[root@server1 ~]# umount /mnt/
[root@server1 ~]# mount -a
[root@server1 ~]# df
Filesystem                   1K-blocks    Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root   8813300 1082360   7283248  13% /
tmpfs                           510200   31816    478384   7% /dev/shm
/dev/sda1                       495844   33476    436768   8% /boot
/dev/mapper/dd-cc              4193856  397152   3796704  10% /var/www/html
[root@server1 ~]#

greep集群 gfs集群 存储节点_文件系统_05

[root@server2 ~]# vim /etc/fstab 
[root@server2 ~]# umount /mnt/
[root@server2 ~]# mount -a
[root@server2 ~]# df
Filesystem                   1K-blocks    Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root   8813300 1023932   7341676  13% /
tmpfs                           510200   31816    478384   7% /dev/shm
/dev/sda1                       495844   33476    436768   8% /boot
/dev/mapper/dd-cc              4193856  397152   3796704  10% /var/www/html
[root@server2 ~]#

greep集群 gfs集群 存储节点_文件系统_06


5.进入挂载点,编写一个默认发布页

[root@server1 ~]# cd /var/www/html/
[root@server1 html]# ls
passwd
[root@server1 html]# rm -rf passwd 
[root@server1 html]# vim index.html
[root@server1 html]# cat index.html 
i am gfs2 share
[root@server1 html]#

6.将资源组里的文件系统删除,再删除资源里的(注意顺序)

greep集群 gfs集群 存储节点_apache_07

greep集群 gfs集群 存储节点_文件系统_08


7.开启apache组资源

[root@server2 ~]# clusvcadm -e apache
Local machine trying to enable service:apache...Success
service:apache is now running on server2
[root@server2 ~]# clustat 
Cluster Status for westos_xin @ Sun Feb 23 12:39:23 2020
Member Status: Quorate

 Member Name                               ID   Status
 ------ ----                               ---- ------
 server1                                       1 Online, rgmanager
 server2                                       2 Online, Local, rgmanager

 Service Name                     Owner (Last)                     State         
 ------- ----                     ----- ------                     -----         
 service:apache                   server2                          started       
[root@server2 ~]#

测试:

[kiosk@foundation8 ~]$ curl 172.25.254.100
i am gfs2 share
[kiosk@foundation8 ~]$ curl 172.25.254.100
i am gfs2 share
[kiosk@foundation8 ~]$

greep集群 gfs集群 存储节点_文件系统_09


将apache服务迁移到server1上

[root@server2 ~]# clusvcadm -r apache -m server1
Trying to relocate service:apache to server1...Success
service:apache is now running on server1
[root@server2 ~]# clustat 
Cluster Status for westos_xin @ Sun Feb 23 12:41:22 2020
Member Status: Quorate

 Member Name                               ID   Status
 ------ ----                               ---- ------
 server1                                       1 Online, rgmanager
 server2                                       2 Online, Local, rgmanager

 Service Name                     Owner (Last)                     State         
 ------- ----                     ----- ------                     -----         
 service:apache                   server1                          started       
[root@server2 ~]#

greep集群 gfs集群 存储节点_html_10

3. gfs2的相关操作

查看配置的gfs2的信息

[root@server1 html]# gfs2_tool sb /dev/dd/cc all
  mh_magic = 0x01161970
  mh_type = 1
  mh_format = 100
  sb_fs_format = 1801
  sb_multihost_format = 1900
  sb_bsize = 4096
  sb_bsize_shift = 12
  no_formal_ino = 2
  no_addr = 23
  no_formal_ino = 1
  no_addr = 22
  sb_lockproto = lock_dlm
  sb_locktable = westos_xin:mygfs2
  uuid = 883a5abc-37de-b224-9280-a693d5fc3597
[root@server1 html]#

查看保留的日志信息

[root@server1 html]# gfs2_tool journals /dev/dd/cc
journal2 - 128MB
journal1 - 128MB
journal0 - 128MB
3 journal(s) found.
[root@server1 html]#

如果再添加3个挂载点,对应的需要增加3份日志信息

[root@server1 html]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root  8.5G  1.1G  7.0G  13% /
tmpfs                         499M   32M  468M   7% /dev/shm
/dev/sda1                     485M   33M  427M   8% /boot
/dev/mapper/dd-cc             4.0G  388M  3.7G  10% /var/www/html
[root@server1 html]#
[root@server1 html]# gfs2_jadd -j 3 /dev/dd/cc
Filesystem:            /var/www/html
Old Journals           3
New Journals           6
[root@server1 html]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root  8.5G  1.1G  7.0G  13% /
tmpfs                         499M   32M  468M   7% /dev/shm
/dev/sda1                     485M   33M  427M   8% /boot
/dev/mapper/dd-cc             4.0G  776M  3.3G  19% /var/www/html
[root@server1 html]#

对设备进行扩容

[root@server1 html]# lvextend -L +1G /dev/dd/cc
  Extending logical volume cc to 5.00 GiB
  Logical volume cc successfully resized
[root@server1 html]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root  8.5G  1.1G  7.0G  13% /
tmpfs                         499M   32M  468M   7% /dev/shm
/dev/sda1                     485M   33M  427M   8% /boot
/dev/mapper/dd-cc             4.0G  776M  3.3G  19% /var/www/html
[root@server1 html]#

注意:此时文件系统大小并没有改变,需要进行如下操作

[root@server1 html]# gfs2_grow /dev/dd/cc
FS: Mount Point: /var/www/html
FS: Device:      /dev/dm-2
FS: Size:        1048575 (0xfffff)
FS: RG size:     65533 (0xfffd)
DEV: Size:       1310720 (0x140000)
The file system grew by 1024MB.
gfs2_grow complete.
[root@server1 html]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root  8.5G  1.1G  7.0G  13% /
tmpfs                         499M   32M  468M   7% /dev/shm
/dev/sda1                     485M   33M  427M   8% /boot
/dev/mapper/dd-cc             5.0G  776M  4.3G  16% /var/www/html
[root@server1 html]#