分布式存储 Ceph 运维 10 个疑难问题解读 | 运维进阶
从Ceph提供的存储服务上看,其所包含的设备、使用场景是比较复杂的,有很多社区会员反映,在平时的使用中经常会遇到一些难题无法及时解决。因此,社区特别组织了相关答疑活动为大家提供参考,以下是一些比较典型的问题整理,更多内容欢迎点击阅读原文浏览。
1、如何将块设备映像挂载到客户机?
用三台虚拟机手动部署了ceph集群,在集群上创建了一个test存储池和一个叫testimage的1000M大小的块设备映像,请问如何将块设备映像挂载到一个外部的客户机的/home/test目录下?
@zhuqibs Mcd 软件开发工程师:
rbd create test --size 1024 --pool test --p_w_picpath-format 2
rbd info test --pool test
rbd map test --pool test
rbd showmapped
mkfs.ext4 /dev/rbd0
mount /dev/rbd0 /mnt
@youki2008 广东溢达 系统架构师:
首先在ceph1管理节点上创建ceph块客户端用户名和认证密钥。
其次安装ceph客户端。
最后块设备的创建及映射。
ceph集群中默认创建的块设备会在rbd池中创建,但是使用deploy的安装方式部署的集群,rbd池默认不创建。
@山鸡 某保险:
客户端需要装ceph-common客户端吧, 而且客户端需要访问该存储池的秘钥, 当然,如果只是为了做实验的话,可直接用admin 。
只要能保证客户端能访问ceph集群,其余的就是块存储挂载的正常命令, 网上很多挂载的,参考下。
2、Ceph集群出现了故障,如何知道影响到了哪些文件?哪些文件还可用?
Ceph向外提供的是文件系统,客户端mount到本地使用。如果集群健康状态不正常(比如某些对象丢失),如何知道哪些文件可用?
@youki2008 广东溢达 系统架构师:
那就要看是逻辑层上的故障还是物理层的故障了,逻辑层面的话可以通过副本进行修复,物理层面的话就比较麻烦了。
@zhuqibs Mcd 软件开发工程师:
Ceph集群出现什么故障, 如果只是逻辑上问题,修复后,所有文档都不会损失;如果是物理层的故障,ceph有副本,只要不超过一定限度,仍然不会影响到数据和文件;如果损失的,这个是物理层的,基本上追不回来了,除非用底层的修复技术。
3、cinder与ceph osd的连接问题?
cinder的volume进程是否对每一个ceph osd都建立了一个TCP连接?cinder默认的文件描述符数是1024,那有很多osd的时候,是否要把这个参数调高?
@zhuqibs Mcd 软件开发工程师:
(1) ceph的少量的monitor组成的小规模集群,负责管理的Map。Cluster Map是整个RADOS系统的关键数据结构,包含集群中全部成员、关系、属性等信息以及管理数据的分发。ceph.conf文件中主要就是指定mon的节点的位置,所以cinder服务需要和ceph的monitor保持连接,但不一定是tcp啊,内部的应该是rpc连接。
(2)cinder的文件描述符是个逻辑概念,和后端的osd,没有必然联系,应该不需要调高。
@youki2008 广东溢达 系统架构师:
有很多osd的时候,有必要将默认的文件描述符数量调大,不然后边数量多起来超过1024的话会有报错。
4、Ceph的块设备存储有良好的读写性能,可以组成共享文件系统,但同时Ceph自身也有文件系统接口,请问两者有何区别?性能上孰高孰低?
@zhuqibs Mcd 软件开发工程师:
块存储读写快,不利于共享,文件存储读写慢,利于共享。能否弄一个读写快,利 于共享的出来呢。于是就有了对象存储。
所以,Ceph的块存储是可以组成文件系统的,提供共享服务的,但没有这个必要,因为服务器、网络以及NFS服务,你都要自行安排。除非一种情况,你对文件系统共享的速度,乃至对象存储的速度均不满意,但又想要共享功能时,你再可以考虑块设备存储组成共享文件系统的方案。
@youki2008 广东溢达 系统架构师:
特点是块存储读写快,但不利于共享,而文件存储读写慢,但有利于共享。在性能上,块存储的性能高于文件存储。
@荣重实 XSKY 技术总监:
CephFS最大的问题是社区并不推荐上生产,请自行评估数据安全性。
5、传统存储如何一键切换到分布式存储Ceph?
我们行现在用的存储是华为5800,架构是同城双活,假如采用分布式存储,如何升级迁移?
@zhuqibs Mcd 软件开发工程师:
(1)存储的形式基本上对用户的透明的,用户感知不到数据是在传统存储上,还是在分布式存储上;
(2)每个厂商对自己名下的数据迁移都有特定的解决方案。我感受最深的是emc的scaleio,确实好用,性能又好,原来有试用版的,现在不知道有没有。
@荣重实 XSKY 技术总监:
存储的切换,涉及应用和数据两个平面的工作。
首先数据层面,如何做好数据迁移是做一键切换的基础,那么至少要有数据在线迁移的方案或者工具来做支撑;其次在数据迁移之后,应用怎么平滑切换应用,也是要提前考虑的问题;所以并不是简单的存储替换问题,需要综合评估,各个平面的适应性,兼容性,可能发生的影响,以及回退方案。对于存储来说,如果有类似存储虚拟化或者存储纳管的功能,可能会让这个过程风险降低,趋于平滑。
@lhs0981101410 中银保信 系统运维工程师:
添加分布式存储的映射关系,然后做数据的迁移。
6、ceph对象存储osd分配不均匀,osd full?
200TB的集群,导入100来个T的数据就有osd full(95%)是什么情况?看osd状况,最大92%,最少58%,大部分在60-70%左右。CRUSH算法下为什么会分布不均呢?
@zhuqibs Mcd 软件开发工程师:
crush算法不是万能的啊!
(1)哈希计算分配数据地址,存在一定的随机性,随着系统的使用,各个存储节点的容量使用很不均衡,在一些不利配置的条件下,最大和最小容量之间最高相差50%,即使对数据进行复杂的重新分布均衡优化,也仅能达到90%左右的容量使用率。造成容量的浪费;
(2)crush算法中,有两次映射,对象到PG的映射是通过哈希值取模,对象名是不可控的,因此只有在数据量大的情况,可以达到一个大致的均衡分布。再就是第二次映射,ceph会生成一系列的pg数目,包含了一些osd列表,它是一种伪随机算法,pg的数目也会影响数据均衡的效果,也会产生一些不稳定因素。
7、如何恢复Ceph的故障节点的硬盘上的数据?
假设集群的故障域为host,那么如果两个节点同时down掉,而且无法启动这两个节点,但是节点的硬盘数据可以正常读取。那么我该如何将这两个节点的数据导入到集群?导入会不会覆盖在节点down掉后写入到集群的对象呢?
@zhuqibs Mcd 软件开发工程师:
(1)如果真的是故障,故障磁盘重新加入集群,必先初始化,恢复不了;
(2)如果不是故障,restart,可以重启磁盘读取数据;
(3)故障磁盘没有必要去恢复,ceph都是有副本的。
@youki2008 广东溢达 系统架构师:
Ceph都是有副本数据的,如果是很严重的故障, 故障磁盘只能重新加入集群,必先初始化,恢复不了了。
8、目前企业Ceph 应用版本该如何抉择;采用ssd+sata 应用bulestore引擎?
1:目前企业应用ceph 的主流版本是哪个版本,目前ceph已经到o版了 ,那我现在部署的话建议部署哪个版本了?
2:采用ssd+sata 应用bulestore引擎 ,其中block.db 和block.wal 的大小该如何设置, 看过一些资料,建议block.db 是主设备 4%,那block.wal的大小建议如何设置了?是与block.db的大小一样吗?
@zhuqibs Mcd 软件开发工程师:
(1)一般LTS版本是当前年份往过去退2年左右,所以,现在的稳定版是M版mimic。
(2)wal 是 RocksDB 的write-ahead log, 相当于之前的 journal 数据,db 是 RocksDB 的metadata 信息。在磁盘选择原则是 block.wal > block.db > block。当然所有的数据也可以放到同一块盘上。
(3)默认情况下, wal 和 db 的大小分别是 512 MB 和 1GB, 官方建议调整block.db 是主设备 4% ,而block.wal分为6%左右,2个加起来10%左右。
@花花世界 系统架构师:
1、生产环境L版比较多。
2、一般 wal 分区大于 10G 就足够使用, Ceph 官方文档建议每个 db 分区不小于每个数据盘容量的 4%,比如:数据盘4T,db分区 180G,wal分区 60G。具体可根据SSD或者NVME盘容量灵活设置。
9、Ceph成熟的升级方案 j 版到 L?
目前公司项目中使用了J版本的ceph,在页面管理不能实现,只能升级后才能使用mgr,目前遇到问题是:
1 、ceph即是数据节点又是openstack计算节点
2 、业务中使用的数据大概20t
3 、共计节点数70个
有没有类似的升级方式可以参考?
@zhuqibs Mcd 软件开发工程师:
作为生产系统,有一个dashboard是很有必要的。
(1)建议滚动升级到L版
(2)寻求是否有其他第三方的dashboard可供J版使用;
(3)根据ceph api接口,自己开发一个dashboard
@花花世界 系统架构师:
1、为了一个所谓的dashboard去升级ceph,是不是有点得不偿失?
2、长远看自己写一个管理平台,可以兼容各种ceph版本收益更高,非得赖着官方的dashboard可能会导致管理模块和ceph版本紧耦合,不得不跟着官方天天升级,这就是从此折腾不断了。
3、官方的dashboard 重构了不知道多少次了, 最早的calamari时代 到现在的版本,来来回回的变,你要是贴着他们的版本,官方一旦弃坑就歇菜,这些都是老司机们之前吃过的亏。
10、使用ceph-ansible安装好一个ceph集群,怎么才能在安装完更改集群name呢?
@youki2008 广东溢达 系统架构师:
可以采用命令:ceph-deploy --cluster mydom new ceph-node
@zhuqibs Mcd 软件开发工程师:
文档中写了设置名字的命令
ceph-deploy --cluster mydom new ceph-node
但是同时,又写了没有必要去设置集群名字。
应该是原先是有这功能的,但后来被开发小组移除了,以下是移除该功能的公告,供参考:
http://lists.ceph.com/pipermail/ceph-users-ceph.com/2017-June/018497.html
@宁泽阳 中信银行信用卡中心 系统工程师:
建议在部署过程中修改配置文件进行集群name修改,部署完成后集群name配置较为分散,容易修改不完全,可能会导致集群访问异常。
本文来自社区会员交流,点击阅读原文,可以看更多相关分享觉得本文有用,请转发或点击“在看”,让更多同行看到
资料/文章推荐:
欢迎关注社区 "分布式存储" 技术主题 ,将会不断更新优质资料、文章,您也可以前往提出疑难问题,与同行切磋交流。地址:http://www.talkwithtrend.com/Topic/23951
下载 twt 社区客户端 APP
长按识别二维码即可下载
或到应用商店搜索“twt”
*本公众号所发布内容仅代表作者观点,不代表社区立场