GFS文件系统
实验目的:
掌握GFS的理论和配置
实验理论:
在集群中为什么不用ext4类似的文件系统?
ext4文件系统在集群中不能实时同步数据,一个文件系统只有一个日志区,日志区记录着数据的变化
storage里的一个iscsi分区被格式化成ext4,iscsi分区通过iscsi技术又分别被映射到A机和B机,被映射过去的iscsi分区又分别被挂载到A机和B机,ext4文件系统里只有一个日志区,当A主机对iscsi分区写数据(创建/passwd)的时候,ext4文件系统里的日志区被加载到A主机了,B主机没有这个日志区,就看不到/passwd信息了,B主机卸载iscsi分区,有重新挂载iscsi分区,日志区加载到了B主机,B主机就看到了数据的变化,B主机对iscsi分区写数据(创建/123)时,A主机是看不到/123的,因为A主机没有日志区
在集群中为什么要用gfs文件系统?
如果有3个节点,使用gfs文件系统,gfs文件系统要被分3个日志区,3个日志区分别被3个节点加载,3个节点分别写数据的时候3个日志区会自动的同步彼此的日志,另一个节点就会实时看到其它节点修改的数据了,一个标准的日志区大概是128M,一个gfs分区内会有多个分区,牺牲了数据空间。
Gfs(Global File system)叫全局文件系统,也是一个网络日志文件系统,也叫集群文件系统,通常被用作多台计算机共享同一存储设备。
集群文件系统采用分布式锁管理,可以实现多个操作系统载入同一个文件系统的日志区同时对一个文件系统在同一时间内读写数据(在多台机器能同时看到变化的数据)
gfs有两种机制:
dlm锁机制:gfs不是可以让多个节点同时写入数据,dlm机制就防止其它节点同时写入数据
nolock不锁机制:可以同时看,同时写
本地LVM:本地节点里lvm.conf里的locking_type默认就为1,1代表不锁,3代表锁
集群LVM:只要节点加入到集群里lvm.conf里的locking_type的值就会从1自动变成3
集群LVM在node1创建一个LVM分区,node2也会有这个LVM分区,这就是集群LVM
实验步骤:
Node1:
[root@node1 ~]# fdisk -cu /dev/mapper/clusterstorage
Command (m for help): p
Disk /dev/mapper/clusterstorage: 2147 MB,2147483648 bytes
Device Boot Start End Blocks Id System
/dev/mapper/clusterstoragep1 63 224909 112423+ 83 Linux
/dev/mapper/clusterstoragep2 224910 449819 112455 83 Linux
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 3
First sector (449820-4194303, default 449820):
Using default value 449820
Last sector, +sectors or +size{K,M,G}(449820-4194303, default 4194303): +800M
Command (m for help): w
The partition table has been altered!
[root@node1 ~]# partprobe /dev/mapper/clusterstoragep3 创建一个分区,把分区写进内核
Node2:
[root@node2 ~]# partprobe /dev/mapper/clusterstorage 把分区写进内核
[root@node2 ~]# fdisk -l
Disk /dev/mapper/clusterstorage: 2147 MB, 2147483648bytes
Device Boot Start End Blocks Id System
/dev/mapper/clusterstoragep1 1 14 112423+ 83 Linux
/dev/mapper/clusterstoragep2 15 28 112455 83 Linux
/dev/mapper/clusterstoragep3 29 130 819200 83 Linux
Node1:
mkfs. tables一下看你的系统是否有mkfs.gfs2这条命令,如果没有,那你需要安装gfs软件包了yum -y install gfs*
root@node1 ~]# mkfs.
mkfs.cramfs mkfs.ext3 mkfs.ext4dev mkfs.msdos
mkfs.ext2 mkfs.ext4 mkfs.gfs2 mkfs.vfat
[root@node1 ~]# mkfs.gfs2 -j 4 -p lock_dlm -t cluster0:gfs1 /dev/mapper/clusterstoragep3 -j表示划分几个日志区 3个节点划分4个日志区,5个节点就划分6个日志区,划分日志区最好要比总节点多一个 –p 填写锁还是不锁机制 -t 填写集群名:随便取的设备名
This will destroy any data on/dev/mapper/clusterstoragep3.
It appears to contain: data
Are you sure you want to proceed? [y/n] y
Device: /dev/mapper/clusterstoragep3
Blocksize: 4096
Device Size 0.78 GB (204800 blocks)
Filesystem Size: 0.78 GB (204797 blocks)
Journals: 4
Resource Groups: 4
Locking Protocol: "lock_dlm"
Lock Table: "cluster0:gfs1"
UUID: f73338c6-2f8b-9c5a-95a3-158c3c856b7d
[root@node1 ~]# /etc/init.d/clvmd restart 两个节点都要重启clvmd服务
Restarting clvmd: [ OK ]
[root@node1 ~]# chkconfig clvmd on
[root@node1 ~]# mkdir /clv
[root@node1 ~]# mount /dev/mapper/clusterstoragep3 /clv
[root@node1 ~]# cd /clv
[root@node1 clv]# ls
[root@node1 clv]# touch 123
[root@node1 clv]# ls
123
Node2:
[root@node2 ~]# /etc/init.d/clvmd restart
Restarting clvmd: [ OK ]
[root@node2 ~]# chkconfig clvmd on
[root@node2 ~]# mkdir /clv
[root@node2 ~]# mount /dev/mapper/clusterstoragep3 /clv
[root@node2 ~]# cd /clv
[root@node2 clv]# ls
[root@node2 clv]# ls
123
格式化成gfs文件系统,node1和node2都能同时看到变化的数据