GlusterFS:常见故障与经典案例全解析

一、GlusterFS常见故障

1.1 报错:”Another transaction is in progress for volname" or “Locking failed on xxx.xxx.xxx.xxx”

由于Gluster本质上是分布式的,因此Glusterd在执行操作时会使用锁,以确保对卷所做的配置更改在整个集群中是原子的,以下情况会导致该报错产生:

  1. 多个事物争用同一个锁
    解决方案:这些可能是暂时的错误,如果在其他事物完成后重试,操作将成功。

  2. 其中一个节点上存在过时的锁
    解决方案:在清理过期的锁之前,重复该操作将无济于事。重启持有锁的glusterd进程。

    • a.检查glusterd.log文件以找出哪个节点持有过期的锁。查找消息:lock being held by
    • b.运行gluster peer status 以在日志消息中识别具有uuid的节点
    • C.在该节点上重新启动glusterd

1.2 报错:”Transport endpoint is not connected" errors but all bricks are up

这通常在brick进程没有完全关闭时发生,在glusterd进程中留下过期的数据。Gluster客户端进程向Glusterd查询侦听的端口并尝试连接到该端口。如果glusterd中的端口信息不正确,则客户端即使已启动也将无法连接到Glusterd.因此产生上面的报错
解决方案:重启Glusterd服务

1.3 报错:”Peer Rejected”

执行gluster peer status 命令返回“Peer Rejected”
这表明节点上的卷配置与可信任存储池的其余部分不同步。您应该在运行peer status命令的节点的glusterd日志中看到以下消息:

Version of Cksums <vol-name> differ. local cksum = xxxxxx, remote cksum = xxxxyx on peer <hostname>

解决方案:更新cluster.op-version
运行gluster volume get all cluster.max-op-version以获取最新支持的操作版本
通过执行cluster.op-version更新为最新支持的op-version
#gluster volume set all cluster.op-version

下面是NFS客户端挂载的常见报错

1.4 报错:RPC Error: Program not registered”

当portmap或rpcbind服务未正常启动时会遇到此错误
解决方案:
# /etc/init.d/portmap start 或 # /etc/init.d/rpcbind start
启动 portmap 或 rpcbind 后,需要重新启动 gluster NFS 服务器。

1.5 报错:执行mount灵命报““rpc.statd”相关报错

 mount.nfs: rpc.statd is not running but is required for remote locking.
 mount.nfs: Either use '-o nolock' to keep locks local, or start statd.

对于NFS客户端挂载NFS服务端,rpc.statd服务必须在客户端运行,通过一下命令运行rpc.statd
#rpc.statd

1.6 Heketi创建volume失败问题

使用heketi创建pvc过程中,发现有两个问题:

  1. 创建不出超过3副本以上的复制卷
  2. 无法创建超过30T以上的3副本复制卷

下面分别对这两个问题进行分析:

1.6.1 创建不出超过3副本以上的复制卷

报错: Invalid replica value

GlusterFS本身对副本数上限没有限制,Heketi是GlusterFS的智能管理工具,提供RESTful管理接口,可管理卷(volume)的生命周期,也负责管理集群、节点、磁盘等的创建、销毁、接入。
Heketi在app_volume.go中禁止用户创建超过3副本的复制卷,Heketi通过硬编码限制了副本数量,如果需要解除限制,则需要编译代码,编译代码需考虑风险。
在这里插入图片描述

1.6.2. 无法创建超过30T以上的3副本复制卷

报错:Maximum number of bricks reached

Heketi在limits.go中对brick最小容量、brick最大容量、brick最大数量,单个volume的可跨集群数量做了限制
使用空间30T的3副本复制卷,实际占用空间为90T, 粗略计算并没有超过最大brick容量和最大brick数量
对于单个brick容量的计算,heketi有单独的计算公式,根据申请的容量大小计算出单个brick的容量
然后在创建volume时,如果需要的brick数量超过32,就报错,volume创建失败
在这里插入图片描述
在这里插入图片描述

二、GlusterFS脑裂故障分析

2.1 脑裂介绍

GlusterFS发现一个文件的多个副本不一致的时候就认为该文件处于脑裂状态。
脑裂分为三种:
数据脑裂:文件中的数据在副本集上不同
元数据脑裂:元数据在不同的节点上不同
入口脑裂:副本中文件的GFID不同或副本的文件类型不同。

2.2 脑裂产生原因

2.2.1 网络分区
一个集群的多个节点处在不同的网络分区下,不同的分区客户端都会操作该分区下的文件,当网络发生故障恢复后,GlusterFS发现一个文件的多个副本是不同的,此时该文件处于脑裂状态

2.2.2 GlusterFS进程出现问题
好比两个节点的集群server1和server2。(1)server1宕机了,此时文件操作在server2上;(2)server1启动了,server2宕机了,此时文件操作在server1上;(3)server1和server2都启动后,两节点的副本就会不同

2.3 脑裂修复方法介绍

 #gluster volume heal <VOLNAME> info

使用以上命令输出所有需要修复的文件列表

  #GlusterFS volume heal <VOLNAME> info split-brain

使用以上命令仅输出脑裂中的文件列表

一旦识别出脑裂中的文件,就可以使用各种策略从gluster命令行进行解决修复脑裂
使用gluster cli解决数据/元数据脑裂

2.3.1选择较大的文件作为源
此命令对于每个文件的修复很有用,其中已知/决定将较大大小的文件视为源。

gluster volume heal <VOLNAME> split-brain bigger-file <FILE>

在这里,<FILE>可以是从卷的根目录看到的完整文件名或文件的 GFID 字符串表示,有时会显示在修复信息命令的输出中。执行此命令后,将<FILE>找到包含更大尺寸的副本,并以该brick为源完成修复。

2.3.2选择 mtime 最新的文件作为源

 # gluster volume heal <VOLNAME> split-brain latest-mtime <FILE>

2.3.3选择副本中的一块砖作为特定文件的源

gluster volume heal <VOLNAME> split-brain source-brick <HOSTNAME:BRICKNAME> <FILE>

2.3.4选择副本的一块砖作为所有文件的源

gluster volume heal <VOLNAME> split-brain source-brick <HOSTNAME:BRICKNAME>

2.4 实际修复案例

现有一个test Volume卷,包含两个brick,b1和b2,自愈守护进程关闭

# gluster volume heal test info split-brain
  # gluster volume heal test info split-brain
    Brick <hostname:brickpath-b1>
    <gfid:aaca219f-0e25-4576-8689-3bfd93ca70c2>
    <gfid:39f301ae-4038-48c2-a889-7dac143e82dd>
    <gfid:c3c94de2-232d-4083-b534-5da17fc476ac>
    Number of entries in split-brain: 3

    Brick <hostname:brickpath-b2>
    /dir/file1
    /dir
    /file4
    Number of entries in split-brain: 3

可以看出b1中有三个文件处于脑裂状态,b2中有三个文件处于脑裂状态
我们选用较大的文件作为源进行解决脑裂,在修复文件之前,请注意文件大小和md5校验和
在b1上

 [brick1]# stat b1/dir/file1
    File: ‘b1/dir/file1’
    Size: 17              Blocks: 16         IO Block: 4096   regular file
    Device: fd03h/64771d    Inode: 919362      Links: 2
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2015-03-06 13:55:40.149897333 +0530
    Modify: 2015-03-06 13:55:37.206880347 +0530
    Change: 2015-03-06 13:55:37.206880347 +0530
     Birth: -
     [brick1]#
     [brick1]# md5sum b1/dir/file1
     040751929ceabf77c3c0b3b662f341a8  b1/dir/file1

在b2上:

[brick2]# stat b2/dir/file1
      File: ‘b2/dir/file1’
      Size: 13              Blocks: 16         IO Block: 4096   regular file
      Device: fd03h/64771d    Inode: 919365      Links: 2
      Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
      Access: 2015-03-06 13:54:22.974451898 +0530
      Modify: 2015-03-06 13:52:22.910758923 +0530
      Change: 2015-03-06 13:52:22.910758923 +0530
      Birth: -
      [brick2]#
      [brick2]# md5sum b2/dir/file1
      cb11635a45d45668a403145059c2a0d5  b2/dir/file1

使用以下命令进行修复

#gluster volume heal test split-brain bigger-file /dir/file1

修复完成后,两块砖上的 md5sum 和文件大小应该相同。

在 b1 上:
     [brick1]# stat b1/dir/file1
     File: ‘b1/dir/file1’
     Size: 17              Blocks: 16         IO Block: 4096   regular file
     Device: fd03h/64771d    Inode: 919362      Links: 2
     Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
     Access: 2015-03-06 14:17:27.752429505 +0530
     Modify: 2015-03-06 13:55:37.206880347 +0530
     Change: 2015-03-06 14:17:12.880343950 +0530
     Birth: -
     [brick1]#
     [brick1]# md5sum b1/dir/file1
     040751929ceabf77c3c0b3b662f341a8  b1/dir/file1
 在砖 b2 上:
     [brick2]# stat b2/dir/file1
     File: ‘b2/dir/file1’
     Size: 17              Blocks: 16         IO Block: 4096   regular file
     Device: fd03h/64771d    Inode: 919365      Links: 2
     Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
     Access: 2015-03-06 14:17:23.249403600 +0530
     Modify: 2015-03-06 13:55:37.206880000 +0530
    Change: 2015-03-06 14:17:12.881343955 +0530
    Birth: -
    [brick2]#
    [brick2]# md5sum b2/dir/file1
    040751929ceabf77c3c0b3b662f341a8  b2/dir/file1

三、GlusterFS 更换故障Brick

3.1 测试集群环境

GlusterFS集群系统一共有4个节点,集群信息如下:
分别在各个节点上配置hosts、同步好系统时间,关闭防火墙和selinux

[root@GlusterFS-slave data]# cat /etc/hosts
192.168.xx.xx  GlusterFS-master
192.168.xx.xx  GlusterFS-slave
192.168.xx.xx  GlusterFS-slave2
192.168.xx.xx  GlusterFS-slave3

分别在四个节点机上使用df创建一个虚拟分区,然后在这个分区上创建存储目录

[root@GlusterFS-master ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   36G  1.8G   34G   5% /
devtmpfs                 2.9G     0  2.9G   0% /dev
tmpfs                    2.9G     0  2.9G   0% /dev/shm
tmpfs                    2.9G  8.5M  2.9G   1% /run
tmpfs                    2.9G     0  2.9G   0% /sys/fs/cgroup
/dev/vda1               1014M  143M  872M  15% /boot
/dev/mapper/centos-home   18G   33M   18G   1% /home
tmpfs                    581M     0  581M   0% /run/user/0

dd命令创建一个虚拟分区出来,格式化并挂载到/data目录下

[root@GlusterFS-master ~]# dd if=/dev/vda1 of=/dev/vdb1
2097152+0 records in
2097152+0 records out
1073741824 bytes (1.1 GB) copied, 2.0979 s, 512 MB/s
 
[root@GlusterFS-master ~]# du -sh /dev/vdb1
1.0G  /dev/vdb1
 
[root@GlusterFS-master ~]# mkfs.xfs -f /dev/vdb1

//这里格式成xfs格式文件,也可以格式化成ext4格式的。

meta-data=/dev/vdb1              isize=512    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
 
 
[root@GlusterFS-master ~]# mkdir /data
 
[root@GlusterFS-master ~]# mount /dev/vdb1 /data
 
[root@GlusterFS-master ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   36G  1.8G   34G   5% /
devtmpfs                 2.9G   34M  2.8G   2% /dev
tmpfs                    2.9G     0  2.9G   0% /dev/shm
tmpfs                    2.9G  8.5M  2.9G   1% /run
tmpfs                    2.9G     0  2.9G   0% /sys/fs/cgroup
/dev/vda1               1014M  143M  872M  15% /boot
/dev/mapper/centos-home   18G   33M   18G   1% /home
tmpfs                    581M     0  581M   0% /run/user/0
/dev/loop0               976M  2.6M  907M   1% /data
 
[root@GlusterFS-master ~]# fdisk -l
.......
Disk /dev/loop0: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

设置开机自动挂载

[root@GlusterFS-master ~]# echo '/dev/loop0 /data xfs defaults 1 2' >> /etc/fstab

记住:以上操作要在四台节点机器上都要执行一遍,即创建存储目录环境!

创建集群,在GlusterFS-master节点上操作:

[root@GlusterFS-master ~]# gluster peer probe 192.168.xx.xx
peer probe: success.
[root@GlusterFS-master ~]# gluster peer probe 192.168.xx.xx
peer probe: success.
[root@GlusterFS-master ~]# gluster peer probe 192.168.xx.xx
peer probe: success.

查看集群情况

[root@GlusterFS-master ~]# gluster peer status
Number of Peers: 3
 
Hostname: 192.168.xx.xx
Uuid: f8e69297-4690-488e-b765-c1c404810d6a
State: Peer in Cluster (Connected)
 
Hostname: 192.168.xx.xx
Uuid: a989394c-f64a-40c3-8bc5-820f623952c4
State: Peer in Cluster (Connected)
 
Hostname: 192.168.xx.xx
Uuid: dd99743a-285b-4aed-b3d6-e860f9efd965
State: Peer in Cluster (Connected)

在其他节点上查看集群情况,就能看到GlusterFS-master节点了

[root@GlusterFS-slave ~]# gluster peer status
Number of Peers: 3
 
Hostname: GlusterFS-master
Uuid: 5dfd40e2-096b-40b5-bee3-003b57a39007
State: Peer in Cluster (Connected)
 
Hostname: 192.168.xx.xx
Uuid: a989394c-f64a-40c3-8bc5-820f623952c4
State: Peer in Cluster (Connected)
 
Hostname: 192.168.xx.xx
Uuid: dd99743a-285b-4aed-b3d6-e860f9efd965
State: Peer in Cluster (Connected)

3.2 模拟Brick故障

3.2.1查看当前存储状态
在GlusterFS-slave3节点机器上操作

[root@GlusterFS-slave3 ~]# gluster volume status
Status of volume: models
Gluster process           Port  Online  Pid
------------------------------------------------------------------------------
Brick 192.168.xx.xx:/data/gluster      49156 Y 16040
Brick 192.168.xx.xx:/data/gluster      49157 Y 5544
Brick 192.168.xx.xx:/data/gluster      49157 Y 12432
Brick 192.168.xx.xx:/data/gluster      49158 Y 17678
NFS Server on localhost         N/A N N/A
Self-heal Daemon on localhost       N/A Y 17697
NFS Server on GlusterFS-master        N/A N N/A
Self-heal Daemon on GlusterFS-master      N/A Y 16104
NFS Server on 192.168.xx.xx        N/A N N/A
Self-heal Daemon on 192.168. xx.xx      N/A Y 12451
NFS Server on 192.168.xx.xx       N/A N N/A
Self-heal Daemon on 192.168.xx.xx      N/A Y 5593
  
Task Status of Volume models
------------------------------------------------------------------------------
There are no active volume tasks

注:注意到Online项全部为"Y"

3.2.2制造故障(注意这里模拟的是文件系统故障,假设物理硬盘没有问题或已经更换阵列中的硬盘)
在GlusterFS-slave3节点机器上操作

[root@GlusterFS-slave3 ~]# vim /etc/fstab     //注释掉如下行
......
#/dev/loop0 /data xfs defaults 1 2
 
重启服务器
[root@GlusterFS-slave3 ~]# reboot
 
重启后,发现GlusterFS-slave3节点的/data没有挂载上
[root@GlusterFS-slave3 ~]# df -h
 
重启后,发现GlusterFS-slave3节点的存储目录不在了,数据没有了。
[root@GlusterFS-slave3 ~]# ls /data/
[root@GlusterFS-slave3 ~]#
 
重启服务器后,记得启动glusterd服务
[root@GlusterFS-slave3 ~]# /usr/local/GlusterFS/sbin/glusterd
[root@GlusterFS-slave3 ~]# ps -ef|grep gluster
root     11122     1  4 23:13 ?        00:00:00 /usr/local/GlusterFS/sbin/glusterd
root     11269     1  2 23:13 ?        00:00:00 /usr/local/GlusterFS/sbin/GlusterFS -s localhost --volfile-id gluster/glustershd -p /usr/local/GlusterFS/var/lib/glusterd/glustershd/run/glustershd.pid -l /usr/local/GlusterFS/var/log/GlusterFS/glustershd.log -S /var/run/98e3200bc6620c9d920e9dc65624dbe0.socket --xlator-option *replicate*.node-uuid=dd99743a-285b-4aed-b3d6-e860f9efd965
root     11280  5978  0 23:13 pts/0    00:00:00 grep --color=auto gluster

3.2.3查看当前存储状态

[root@GlusterFS-slave3 ~]# gluster volume status
Status of volume: models
Gluster process           Port  Online  Pid
------------------------------------------------------------------------------
Brick 192.168.xx.xx:/data/gluster      49156 Y 16040
Brick 192.168.xx.xx:/data/gluster      49157 Y 5544
Brick 192.168.xx.xx:/data/gluster      49157 Y 12432
Brick 192.168.xx.xx:/data/gluster      N/A N N/A
NFS Server on localhost         N/A N N/A
Self-heal Daemon on localhost       N/A Y 11269
NFS Server on GlusterFS-master        N/A N N/A
Self-heal Daemon on GlusterFS-master      N/A Y 16104
NFS Server on 192.168.xx.xx       N/A N N/A
Self-heal Daemon on 192.168.xx.xx      N/A Y 5593
NFS Server on 192.168.xx.xx       N/A N N/A
Self-heal Daemon on 192.168.xx.xx      N/A Y 12451
  
Task Status of Volume models
------------------------------------------------------------------------------
There are no active volume tasks
 

注意:发现GlusterFS-slave3节点(192.168.xx.xx)的Online项状态为"N"了!

3.3 恢复故障Brick方法

3.3.1 结束故障brick的进程
如上通过"gluster volume status"命令,如果查看到状态Online项为"N"的GlusterFS-slave3节点存在PID号(不显示N/A),则应当使用"kill -15 pid"杀死它!
一般当Online项为"N"时就不显示pid号了。

3.3.2 创建新的数据目录(注意绝不可以与之前目录一样)

[root@GlusterFS-slave3 ~]# dd if=/dev/vda1 of=/dev/vdb1
2097152+0 records in
2097152+0 records out
1073741824 bytes (1.1 GB) copied, 2.05684 s, 522 MB/s
[root@GlusterFS-slave3 ~]# du -sh /dev/vdb1
1.0G  /dev/vdb1
[root@GlusterFS-slave3 ~]# mkfs.xfs -f /dev/vdb1
meta-data=/dev/vdb1              isize=512    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
 
重新挂载
[root@GlusterFS-slave3 ~]# mount /dev/vdb1 /data
 
 
[root@GlusterFS-slave3 ~]# vim /etc/fstab       //去掉下面注释
......
/dev/loop0 /data xfs defaults 1 2

3.3.3 查询故障节点的备份节点(GlusterFS-slave2)目录的扩展属性(使用"yum search getfattr"命令getfattr工具的安装途径)

[root@GlusterFS-slave2 ~]# yum install -y attr.x86_64
[root@GlusterFS-slave2 ~]# getfattr -d -m. -e hex /data/gluster
getfattr: Removing leading '/' from absolute path names
# file: data/gluster
trusted.gfid=0x00000000000000000000000000000001
trusted.GlusterFS.dht=0x00000001000000007fffffffffffffff
trusted.GlusterFS.volume-id=0x8eafb261e0d24f3b8e0905475c63dcc6

3.3.4 挂载卷并触发自愈

在客户端先卸载掉之前的挂载
[root@Client ~]# umount /data/gluster
 
然后重新挂载GlusterFS-slave3(其实挂载哪一个节点的都可以)
[root@Client ~]# mount -t GlusterFS 192.168.xx.xx:models /opt/gfsmount
[root@Client ~]# df -h
.......
192.168.xx.xx:models    2.0G   74M  2.0G   4% /opt/gfsmount
 
新建一个卷中不存在的目录并删除
[root@Client ~]# cd /opt/gfsmount/
[root@Client gfsmount]# mkdir testDir001
[root@Client gfsmount]# rm -rf testDir001
 
设置扩展属性触发自愈
[root@Client gfsmount]# setfattr -n trusted.non-existent-key -v abc /opt/gfsmount
[root@Client gfsmount]# setfattr -x trusted.non-existent-key /opt/gfsmount

3.3.5 检查当前节点是否挂起xattrs

再次查询故障节点的备份节点(GlusterFS-slave2)目录的扩展属性
[root@GlusterFS-slave2 ~]# getfattr -d -m. -e hex /data/gluster
getfattr: Removing leading '/' from absolute path names
# file: data/gluster
trusted.afr.dirty=0x000000000000000000000000
trusted.afr.models-client-2=0x000000000000000000000000
trusted.afr.models-client-3=0x000000000000000200000002
trusted.gfid=0x00000000000000000000000000000001
trusted.GlusterFS.dht=0x00000001000000007fffffffffffffff
trusted.GlusterFS.volume-id=0x8eafb261e0d24f3b8e0905475c63dcc6
 
注意:留意第5行,表示xattrs已经将源标记为GlusterFS-slave3:/data/gluster

3.3.6 检查卷的状态是否显示需要替换

[root@GlusterFS-slave3 ~]# gluster volume heal models info
Brick GlusterFS-master:/data/gluster/
Number of entries: 0
 
Brick GlusterFS-slave:/data/gluster/
Number of entries: 0
 
Brick GlusterFS-slave2:/data/gluster/
/
Number of entries: 1
 
Brick 192.168.xx.xx:/data/gluster
Status: Transport endpoint is not connected
 
注:状态提示传输端点未连接(最后一行)

3.3.7 使用强制提交完成操作

[root@GlusterFS-slave3 ~]# gluster volume replace-brick models 192.168.xx.xx:/data/gluster 192.168.xx.xx:/data/gluster1 commit force
提示如下表示正常完成:
volume replace-brick: success: replace-brick commit force operation successful
 
-------------------------------------------------------------------------------------
注意:也可以将数据恢复到另外一台服务器,详细命令如下(192.168.xx.xx为新增的另一个GlusterFS节点)(可选):
# gluster peer probe 192.168.xx.xx
# gluster volume replace-brick models 192.168.xx.xx:/data/gluster 192.168.xx.xx:/data/gluster commit force
-------------------------------------------------------------------------------------

3.3.8 检查存储的在线状态

[root@GlusterFS-slave3 ~]# gluster volume status
Status of volume: models
Gluster process           Port  Online  Pid
------------------------------------------------------------------------------
Brick 192.168.xx.xx:/data/gluster      49156 Y 16040
Brick 192.168.xx.xx:/data/gluster      49157 Y 5544
Brick 192.168.xx.xx:/data/gluster      49157 Y 12432
Brick 192.168.xx.xx:/data/gluster1     49159 Y 11363
NFS Server on localhost         N/A N N/A
Self-heal Daemon on localhost       N/A Y 11375
NFS Server on 192.168.xx.xx        N/A N N/A
Self-heal Daemon on 192.168.xx.xx      N/A Y 12494
NFS Server on 192.168.xx.xx        N/A N N/A
Self-heal Daemon on 192.168.xx.xx      N/A Y 5625
NFS Server on GlusterFS-master        N/A N N/A
Self-heal Daemon on GlusterFS-master      N/A Y 16161
  
Task Status of Volume models
------------------------------------------------------------------------------
There are no active volume tasks

从上面信息可以看出,192.168.xx.xx(GlusterFS-slave3)节点的Online项的状态为"Y"了,不过存储目录是/data/gluster1
这个时候,查看GlusterFS-slave3节点的存储目录,发现数据已经恢复了

[root@GlusterFS-slave3 ~]# ls /data/gluster/
copy-test-002  copy-test-014  copy-test-036  copy-test-047  copy-test-059  copy-test-069  copy-test-080  copy-test-097
copy-test-003  copy-test-018  copy-test-037  copy-test-049  copy-test-061  copy-test-070  copy-test-084
copy-test-005  copy-test-020  copy-test-040  copy-test-050  copy-test-062  copy-test-071  copy-test-085
copy-test-007  copy-test-025  copy-test-042  copy-test-053  copy-test-064  copy-test-072  copy-test-089
copy-test-009  copy-test-026  copy-test-043  copy-test-055  copy-test-066  copy-test-074  copy-test-091
copy-test-010  copy-test-027  copy-test-044  copy-test-056  copy-test-067  copy-test-075  copy-test-092
copy-test-013  copy-test-035  copy-test-045  copy-test-058  copy-test-068  copy-test-076  copy-test-096
[root@GlusterFS-slave3 ~]# ll /data/gluster/|wc -l
51

温馨提示:
上面模拟的故障是gluster节点的存储目录所在的分区挂载失败,导致存储目录不在的数据修复方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值