Preface
由于近期Ceph集群经常出现各种OSD的问题,每次都需要人工手动来解决,故简单分享一下RookCeph是如何利用LVM来构建的OSD存储,OSD存储又能为我们做什么。
Why Use It?
- Ceph OSD Daemon 多副本同步机制,保障高可用、一致性。
ceph集群一般包含多个OSD,一旦发生磁盘故障时,Ceph OSD Daemon会智能的协同其他OSD对损坏的磁盘上的OSD进行恢复操作,与此同时,其内部会重新选主。
- OSD 扩展灵活、去中心化
相对传统HDFS,摒弃掉了元数据的概念,这是一种去中心化的设计思路,天然的规避了单点故障,基于LVM机制动态扩展,非常灵活、易用。
LVM Architecture
- 特性
不会丢失现有的数据的同时,可以对磁盘进行动态管理。它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。
- 工作流程
- 基于现有磁盘分区创建物理卷。
- LVM会管理自物理卷及以上的几层,分别是『物理卷PV』、『卷组VG』、『逻辑卷LV』、 『文件系统FS』。
- 最上层创建文件系统在创建时可以选择不同的类型,一般常用ext4。
- 最上层的文件系统创建好了以后,就可以利用mount命令挂载目录了。
- 实用命令
#lvm安装
yum -y install lvm2
#卸载挂载点
umount /dev/sda5
#创建物理卷
pvcreate /dev/sda5
#检查物理卷
pvscan
Thinking In RookCeph OSD
那么说了这么多有何用?:)
划重点!
这篇文章主要希望与大家分享 RookCeph是如何借助LVM来管理OSD的,进入正题。(以下内容仅限18岁+阅读)
- Rook-Ceph-Operator
看到job后,那么我会问,哪里来的 osd provision job ?
- rook-ceph-osd-prepare-staging-node0-fnl2w
观察这个容器组,启动日志开头就打印这几行:
于是继续挖掘 provision 容器日志
发现其容器本身的job就是在做磁盘的一系列检查,或者用"咱们"的话说叫做『自动发现』:)
lsblk、udevadm 这些命令是用来做磁盘检查的,进一步理解,是为了让 Rook 根据一些条件来筛选合适的设备作为OSD。
检查操作后,默认流程会进行创建OSD操作。这里由于Rook已经为我们之前创建过了,故没有发现新的OSD。
- Rook相关源码剖析
检查相关
当状态为 completed 的时候才会真正的去启动 osd
我们回顾下之前的Operator打印的日志
Manually Expand OSD Storage
- VCenter 挂新空盘/资源
- 加入K8s集群
- 给新开的VM虚机安装lvm
- 重启Rook-Operator让其重启自动发现
- 坐等新OSD加入
Repeat: 安装lvm命令
#lvm安装
yum -y install lvm2
怎么样,简单吧:)
Reference
https://cloud.tencent.com/developer/article/1703929