一般硬盘也要备用几块,因为随着发展,可能这些型号的硬盘不好买到了,一般的事故不会在开始一两年出,在硬件老化的时候出故障的频率高。

4.1 硬盘故障

如果底层做了 RAID 配置,有硬件故障,直接更换硬盘,会自动同步数据。
如果没有做 RAID,处理方法如下:

正常节点上执行 gluster volume status,记录故障节点 uuid
执行:getfattr -d -m ‘.*’ /brick 记录 trusted.gluster.volume-id 及 trusted.gfid

以下为故障模拟及修复过程:

在 VMware Workstation 上移除 mystorage1 主机的第三块硬盘(对应 sdc /storage/brick2),相当于硬盘故障

# 系统提示如下:
Message from syslogd@linux-node01 at Jul :: ...
storage-brick2[]: [-- ::46.729896] M [MSGID: ] [posix-helpers.c::posix_health_check_thread_proc] -gv2-posix: health-check failed, going down Message from syslogd@linux-node01 at Jul :: ...
storage-brick2[]: [-- ::16.730518] M [MSGID: ] [posix-helpers.c::posix_health_check_thread_proc] -gv2-posix: still alive! -> SIGTERM # 查看卷状态,mystorage1:/storage/brick2 不在线了,不过这是分布式复制卷,还可以访问另外 brick 上的数据
[root@mystorage1 ~]# gluster volume status gv2
Status of volume: gv2
Gluster process TCP Port RDMA Port Online Pid
------------------------------------------------------------------------------
Brick mystorage1:/storage/brick2 N/A N/A N N/A

在 VMware Workstation 上新增 mystorage1 一块硬盘,相当于更换了新硬盘,下面先格式挂载新硬盘:

# mkfs.xfs -f /dev/sdc
# mkdir -p /storage/brick2
# mount -a
# df -h # 新硬盘挂载后目录为空
[root@mystorage1 ~]# ll /storage/brick2
total

开始手动配置新增硬盘的 gluster 参数

# 在 mystorage2 是获取 glusterfs 相关参数:
[root@mystorage2 tmp]# getfattr -d -m '.*' /storage/brick2
getfattr: Removing leading '/' from absolute path names
# file: storage/brick2
trusted.gfid=0sAAAAAAAAAAAAAAAAAAAAAQ==
trusted.glusterfs.dht=0sAAAAAQAAAAAAAAAAf////g==
trusted.glusterfs.dht.commithash=""
trusted.glusterfs.quota.dirty=0sMAA=
trusted.glusterfs.quota.size.=0sAAAAAATiAAAAAAAAAAAAAwAAAAAAAAAE
trusted.glusterfs.volume-id=0sEZKGliY6THqhVVEVrykiHw== # 在 mystorage1 上执行配置 glusterfs 参数和上述一样 setfattr -n trusted.gfid -v 0sAAAAAAAAAAAAAAAAAAAAAQ== /storage/brick2
setfattr -n trusted.glusterfs.dht -v 0sAAAAAQAAAAAAAAAAf////g== /storage/brick2
setfattr -n trusted.glusterfs.dht.commithash -v "" /storage/brick2
setfattr -n trusted.glusterfs.quota.dirty -v 0sMAA= /storage/brick2
setfattr -n trusted.glusterfs.quota.size. -v 0sAAAAAATiAAAAAAAAAAAAAwAAAAAAAAAE /storage/brick2
setfattr -n trusted.glusterfs.volume-id -v 0sEZKGliY6THqhVVEVrykiHw== /storage/brick2 [root@mystorage1 ~]# /etc/init.d/glusterd restart
Starting glusterd: [ OK ] [root@mystorage1 ~]# gluster volume heal gv2 info
Brick mystorage1:/storage/brick2
Status: Connected
Number of entries: Brick mystorage2:/storage/brick2
/data
Status: Connected
Number of entries: # 显示一个条目在修复,自动修复完成后会为 Brick mystorage3:/storage/brick1
Status: Connected
Number of entries: Brick mystorage4:/storage/brick1
Status: Connected
Number of entries: # 自动修复同步完成后,查看新硬盘的数据同步过来了
[root@mystorage1 ~]# ll /storage/brick2
total
-rw-r--r-- root root Jul : 20M.file
-rw-r--r-- root root Jul : 20M.file1
drwxr-xr-x root root Jul : data

4.2 一台主机故障

一台节点故障的情况包含以下情况:

  • 物理故障
  • 同时有多块硬盘故障,造成数据丢失
  • 系统损坏不可修复

解决方法:

找一台完全一样的机器,至少要保证硬盘数量和大小一致,安装系统,配置和故障机同样的 IP,安装 gluster 软件,
保证配置一样,在其他健康节点上执行命令 gluster peer status,查看故障服务器的 uuid

[root@mystorage2 ~]# gluster peer status
Number of Peers: Hostname: mystorage3
Uuid: 36e4c45c-466f-47b0-b829-dcd4a69ca2e7
State: Peer in Cluster (Connected) Hostname: mystorage4
Uuid: c607f6c2-bdcb--bc82-4bc2243b1b7a
State: Peer in Cluster (Connected) Hostname: mystorage1
Uuid: 6e6a84af-ac7a-44eb-85c9-50f1f46acef1
State: Peer in Cluster (Disconnected)

修改新加机器的 /var/lib/glusterd/glusterd.info 和 故障机器一样

[root@mystorage1 ~]# cat /var/lib/glusterd/glusterd.info
UUID=6e6a84af-ac7a-44eb-85c9-50f1f46acef1
operating-version=

在信任存储池中任意节点执行

# gluster volume heal gv2 full

就会自动开始同步,但在同步的时候会影响整个系统的性能。

可以查看状态

# gluster volume heal gv2 info

4.GlusterFS 常见故障处理的更多相关文章

  1. sql server 复制、镜像常见故障处理

    sql server2008数据库复制实现数据同步常见问题 操作使用的一些技巧(事务复制类型): 1.如何修改一个已经发布的表的属性? 将发布所有订阅删除,(发布不用删除),就可以在发布属性的项目中取 ...

  2. linux常见故障处理

    目录 一. 文件和目录类 1.1 File exist 文件已经存在 1.2 No such file or directory 没有这个文件或目录(这个东西不存在) 1.3 command not ...

  3. (转)GlusterFS 01 理论基础,企业实战,故障处理

    https://jaminzhang.github.io/glusterfs/GlusterFS-01-Theory-Basis/--------GlusterFS 01 理论基础 https://j ...

  4. glusterfs分布式存储

    一,分布式文件系统理论基础 1.1 分布式文件系统出现 计算机通过文件系统管理,存储数据,而现在数据信息爆炸的时代中人们可以获取的数据成指数倍的增长,单纯通过增加硬盘个数来扩展计算机文件系统的存储容量 ...

  5. Linux实战教学笔记52:GlusterFS分布式存储系统

    一,分布式文件系统理论基础 1.1 分布式文件系统出现 计算机通过文件系统管理,存储数据,而现在数据信息爆炸的时代中人们可以获取的数据成指数倍的增长,单纯通过增加硬盘个数来扩展计算机文件系统的存储容量 ...

  6. GlusterFS分布式存储系统

    一,分布式文件系统理论基础 1.1 分布式文件系统出现 计算机通过文件系统管理,存储数据,而现在数据信息爆炸的时代中人们可以获取的数据成指数倍的增长,单纯通过增加硬盘个数来扩展计算机文件系统的存储容量 ...

  7. 学习GlusterFS(五)

    一,分布式文件系统理论基础 1.1 分布式文件系统出现 计算机通过文件系统管理,存储数据,而现在数据信息爆炸的时代中人们可以获取的数据成指数倍的增长,单纯通过增加硬盘个数来扩展计算机文件系统的存储容量 ...

  8. Glusterfs 分布式存储安装部署

    Glusterfs 分布式存储部署 是存储当中可以选择的一种 现在很多虚拟化 云计算都在用软件存储 例如 ceph Glusterfs 等等 今天我们部署一下Glusterfs环境 GlusterFs ...

  9. 分布式文件存储——GlusterFS

    一.概论 1.简介 GlusterFS (Gluster File System) 是一个开源的分布式文件系统,主要由 Z RESEARCH 公司负责开发. GlusterFS 是 Scale-Out ...

随机推荐

  1. Ubuntu系统Apache Maven安装

    操作系统:Linux x64 / Ubuntu 14.04 Apache Maven版本:3.3.9 建议预先搭建Java开发环境:详见上一篇<Linux Ubuntu系统下Java开发环境搭建 ...

  2. Intel万兆网卡背靠背连接ping不通那点事儿

    对那些整天喊着“玩大的,玩狠的”口号的人来说,我下面要说的这点事儿,根本就不算事儿.所以,如果你正好喜欢喊口号,就不要往下看了,因为我要讲述的,你可能不感兴趣,也可能看不懂. 今天,是我加入I公司3个 ...

  3. Chart图表整合——面积对比图、扇形图、柱状图

    一. chart图表demo网址 网址:http://antv.alipay.com/zh-cn/f2/3.x/demo/index.html 二. 本文主要对面积对比图,扇形图,柱状图三大常见图进行 ...

  4. 使用 Redis 实现分布式锁(转载)

    背景 在一般的分布式应用中,要安全有效地同步多服务器多进程之间的共享资源访问,就要涉及到分布式锁.目前项目是基于 Tornado 实现的分布式部署,同时也使用了 Redis 作为缓存.参考了一些资料并 ...

  5. 【angular5项目积累总结】遇到的一些问题以及解决办法

    1.项目中字符串特别是\r\n,替换成br之后,在页面换行无法生效? 答:绑定元素 innerHTML. <div class="panel-body" [innerHTML ...

  6. [转]HTTP Error 502.5 - Process Failure asp.net core error in IIS

    本文转自:http://www.cnblogs.com/autohome7390/p/6840652.html 在windows server 2012 上安装完dotnet-win-x64.1.1. ...

  7. golang学习之defer

    golang中的defer通常用于执行一些资源释放性操作,比如open/close.connect/disconnect.lock/unlock等,对defer理解主要记住以下三点: 1.defer ...

  8. django中的缓存

    对于一个动态网站来说,用户的每次访问都意味着对服务器的一次开销,当该服务器的并发访问非常大时,对于一个动态网站来说,开销会非常的大.所以对于大中型web应用来说,减轻服务器的性能瓶颈就很有必要 对于d ...

  9. [linux] C语言Linux系统编程-捕获进程信号

    typedef void( *sighandler_t)(int); 1.用typedef给类型起一个别名. 2.为函数指针类型定义别名, 3.函数指针(指向函数的指针) sighandler_t s ...

  10. HDU 1874(简单最短路) (大优化)

    优先队列那里用greater会报错 http://acm.hdu.edu.cn/showproblem.php?pid=1874 /* 使用pair代替结构 */ #include <iostr ...