分布式存储运维疑难故障


分布式存储是一种数据存储技术,通过网络使用企业中的每台机器上的磁盘空间,并将这些分散的存储资源构成一个虚拟的存储设备,数据分散的存储在企业的各个角落。

分布式.jpg

Ceph是一个统一的分布式存储系统,其具有高性能、高可用性、高可扩展性等特点。其主要提供以下三个存储服务:

1、块存储 (适合单客户端使用):作为块设备像硬盘一样直接挂载。

典型设备:磁盘阵列,硬盘。

使用场景:

a. docker容器、虚拟机远程挂载磁盘存储分配。

b. 日志存储。

2、文件存储 (适合多客户端有目录结构):如同网络文件系统一样挂载,兼容POSIX接口。

典型设备:FTP、NFS服务器。

使用场景:

a. 日志存储。

b. 多个用户有目录结构的文件存储共享。

3、对象存储 (适合更新变动较少的数据,没有目录结构,不能直接打开/修改文件):既可以通过使用Ceph的库,利用C, C++, Java, Python, PHP代码,也可以通过Restful网关以对象的形式访问或存储数据,兼容的S3和OpenStack的Swift。

典型设备:s3, swift。

使用场景:

a. 图片存储。

b. 视频存储。

c. 文件。

d. 软件安装包。

e. 归档数据。

运维技术难度:  io的读写,集中存储中数据只要写入一个磁阵就算成功了,分布式存储中是写入大部分的节点才算成功,如果写入全部节点IO性能有影响,写入少量节点即是写入失败。
运维困难:监控上,要采用分布式prometheus来采集各个节点的数据,节点多的时候,监控范围较大。出现故障时, 要判断节点与节点间的相互作用,诊断难度加大。

对不同类型的数据应采用不同的迁移方式:


(1)对渠道类数据通常是多而散,通常分批迁移;


(2)对于账务类数据,通常是实时数据,需要保证其关联性和事务性,需要择业务运维窗口迁移,同时做好新老数据同步工作;


(3)对于数据报送类数据,通常是交易历史数据等,可以择时一次性迁移。在迁移前期,会有数据不同步的现象,需要新老系统并存;在中期,需要进行必要的数据校验和压力测试(分布式存储读写性能很重要),后期在校验同步基础上,进行迁移(转型)的演练,将少量应用的数据源切换到分布式存储,进行预生产发布。