ceph调研报告

基础概念

  • File:用户需要存储或者访问的文件。对于一个基于Ceph开发的对象存储应用而言,这个file也就对应于应用中的“对象”,也就是用户直接操作的“对象”。
  • OSD:全称Object Storage Device,也就是负责响应客户端请求读写具体数据的进程。一个Ceph集群一般都有很多个OSD,OSD一般和磁盘绑定。
  • PG:全称Placement Grouops,是一个逻辑的概念。PG的用途是对object的存储进行组织和位置映射。一个PG负责组织若干个object(可以为数千个甚至更多),但一个 object只能被映射到一个PG中。
  • RADOS:全称Reliable Autonomic Distributed Object Store,是Ceph集群的精华,用户实现数据分配、Failover等集群操作。
  • CRUSH:CRUSH是Ceph使用的动态数据分布算法,类似一致性哈希,将PGs均匀映射到OSDs上
  • Monitor:维护着展示集群状态的各种图表,包括监视器图、 OSD 图、归置组( PG )图、和 CRUSH 图。 Ceph 保存着发生在Monitors 、 OSD 和 PG上的每一次状态变更的历史信息

Ceph寻址流程

ceph.jpeg
  • File -> Objects
    file为用户需要访问或者或获取的文件,当file文件超过RADOS限定的最大size时(一般为2M或4M),file会被均等的分割为等大的object对象(最后一块object大小可以不等)。对file进行分割有两个好处:一,让大小不限的file变成最大size一致、可以被RADOS高效管理的 object;二,单一处理的file转化为并行处理的objects
  • Objects -> PGs
    当File被分割成若干Objects时,需要将Objects随机映射到PGs上,计算公式:
#oid为object的唯一id
#ino为file未被分割前的唯一id
#ono为file被分割后该object的序号
#mask为pg总数减一
#hash哈希算法
oid = ino + ono 
pgid = hash(oid) & mask

哈希值计算和按位与操作的整体结果事实上是从所有m个PG中近似均匀地随机选择一个。基于这一机制,当有大量object和大量PG 时,RADOS能够保证object和PG之间的近似均匀映射。又因为object是由file切分而来,大部分object的size相同,因而,这一映射最终保证了,各个PG中存储的object的总数据量近似均匀。只有当object和PG的数量较多时,这种伪随机关系的近似均匀性才能成立,Ceph的数据存储均匀性才有保证。为保证“大量”的成立,一方面,object的最大size应该被合理配置,以使得同样大小的file能够被切分成更多的object;另一方面,Ceph也推荐PG总数应该为OSD总数的数百倍,以保证有足够数量的PG可供映射。
Objects和PGs之间的映射关系是多对一的关系

  • PGs -> OSDs
    RADOS采用CRUSH算法,将pgid作为参数,会得到一个包含多个OSD的组。该组里的OSD共同负责存储,维护一个PG里的Objects。
    有关CRUSH:CRUSH是一个动态算法,其结果会受当前系统状态存储策略配置的影响。所以当有设备损坏或者增添时,大部分PG与OSD之间的映射关系不会发生 改变,只有少部分PG的映射关系会发生变化并引发数据迁移。这种可配置性和稳定性都不是普通哈希算法所能提供的。因此,CRUSH算法的设计也是Ceph 的核心内容之一
    有关三次映射和二次映射:如果除去PG层的话,从Files到OSDs只有两次映射,Objects采用静态算法直接映射到OSDs上,当OSDs数量发生变化的时候,整个存储系统将无法做到动态拓展。如果Objects仍然采用CRUSH算法映射到OSDs上,则OSDs之间进行信息交互的时间开销将会暴增。

Ceph数据流程

ceph数据存储流程.png
  • 步骤1:client向Ceph集群写入一个flie时,通过上述的寻址流程得到三个OSDs,client和Primary OSD(主OSD)发起写请求通信。
  • 步骤2,3:Primary OSD获取到client的写请求之后向另外两个OSD发起写请求
  • 步骤4,5:另外两个OSD写入数据后向主OSD发送确认信息
  • 步骤6:主OSD在获取两个OSD的确认信息后,完成数据写入,并向client发送写入完成确认信息

由于需要等待所有的OSD确认完才能最终返回写入确认,所以整体时延会较长,一般OSD会像client发送两次确认信息,第一次是所有OSD写入内存时,第二次是所有OSD写入磁盘时。


ceph性能优势

  • 高性能
    1, 摒弃了传统的集中式存储元数据寻址的方案,采用CRUSH算法,数据分布均衡,并行度高。
    2, 考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等。
    3, 能够支持上千个存储节点的规模,支持TB到PB级的数据。
  • 高可用
    1, 副本数可以灵活控制。
    2, 支持故障域分隔,数据强一致性。
    3, 多种故障场景自动进行修复自愈。
    4, 没有单点故障,自动管理。
  • 高拓展性
    1, 去中心化
    2, 拓展灵活

ceph安装

monitor:192.168.4.4
osd1:192.168.4.1
osd2:192.168.4.2
ceph-admin:192.168.0.192

主机名              IP 地址
ceph-admin           192.168.0.192
mon1                 192.168.4.4
osd1                 192.168.4.1
osd2                 192.168.4.2

1, 在上述主机上创建ceph用户

useradd -m -s /bin/bash cephuser
passwd cephuser

2, 获取sudo权限,因为在ceph的安装中不支持sudo命令输入

echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser
chmod 0440 /etc/sudoers.d/cephuser
sed -i s'/Defaults requiretty/#Defaults requiretty'/g /etc/sudoers

3, 安装和配置 NTP

sudo apt-get install -y ntp ntpdate ntp-doc
ntpdate 0.us.pool.ntp.org
hwclock --systohc
systemctl enable ntp
systemctl start ntp

4, 编辑/etc/hosts文件

ceph-admin           192.168.0.192
mon1                 192.168.4.4
osd1                 192.168.4.1
osd2                 192.168.4.2

5,配置admin节点到其他节点的免密ssh登录

ssh root@ceph-admin
su - cephuser
ssh-keygen
vim ~/.ssh/config
#输入以下内容:
Host ceph-admin
        Hostname ceph-admin
        User cephuser
Host mon1
        Hostname mon1
        User cephuser
Host ceph-osd1
        Hostname ceph-osd1
        User cephuser
Host ceph-osd2
        Hostname ceph-osd2
        User cephuser
#####
chmod 644 ~/.ssh/config
ssh-keyscan ceph-osd1 ceph-osd2 mon1 >> ~/.ssh/known_hosts
ssh-copy-id ceph-admin
ssh-copy-id ceph-osd1
ssh-copy-id ceph-osd2
ssh-copy-id mon1

6, osd节点硬盘划分和挂载

dd if=/dev/zero of=ceph-volumes.img bs=1M count=8192 oflag=direct
sgdisk -g --clear ceph-volumes.img
sudo vgcreate ceph-volumes $(sudo losetup --show -f ceph-volumes.img)
sudo lvcreate -L2G -nceph0 ceph-volumes
sudo mkfs.xfs -f /dev/ceph-volumes/ceph0
sudo mount /dev/ceph-volumes/ceph0 /srv/ceph/osd0

7, ceph-admin创建集群

mkdir cluster
cd cluster/
ceph-deploy new mon1
echo "osd pool default size = 2" >> ceph.conf

8, 从ceph-admin安装ceph到所有节点

ceph-deploy install ceph-admin ceph-osd1 ceph-osd2 mon1
ceph-deploy mon create-initial
ceph-deploy gatherkeys mon1

9, 增加osd到集群

ceph-deploy osd prepare ceph-osd1:/srv/ceph/osd1 ceph-osd2:/srv/ceph/osd2
ceph-deploy osd activate ceph-osd1:/srv/ceph/osd1 ceph-osd2:/srv/ceph/osd2

10, 安装结果验证:

sudo ceph -s
安装结果.png

osd盘读写性能测试

osd1读写速度:


osd1读速度.png

osd1写速度.png

osd2读写速度:


osd2读速度.png
osd2写速度.png

集群读写性能

  • 集群随机读速度


    集群随机读速度.png
  • 集群顺序读速度


    集群顺序读速度.png
  • 集群写速度


    集群写.png

ceph块设备安装

1, 块是一个字节序列(例如,一个 512 字节的数据块)。基于块的存储接口是最常见的存储数据方法,它们基于旋转介质,像硬盘、 CD 、软盘、甚至传统的 9 磁道磁带。无处不在的块设备接口使虚拟块设备成为与 Ceph 这样的海量存储系统交互的理想之选。
2, Ceph 块设备是精简配置的、大小可调且将数据条带化存储到集群内的多个 OSD 。 Ceph 块设备利用 RADOS 的多种能力,如快照、复制和一致性。 Ceph 的 RADOS 块设备( RBD )使用内核模块或 librbd 库与 OSD 交互。
3, 安装ceph设备必须要先完成ceph的集群部署

  • 在管理节点上,安装一个ceph-client,ssh的免密设置参考集群部署
#从管理节点安装ceph-client,client地址为172
ceph-deploy install ceph-client
#从管理节点拷贝配置文件到ceph-client
ceph-deploy admin ceph-client
#修改文件权限
sudo chmod +r /etc/ceph/ceph.client.admin.keyring
  • 在client节点创建块
#新建设备
rbd create foo --size 4096 -m 192.168.4.1 -k ceph.client.admin.keyring 
#映射
sudo rbd map foo --name client.admin -m 192.168.4.1 -k ceph.client.admin.keyring 
#创建文件系统
sudo mkfs.ext4 -m0 /dev/rbd/rbd/foo
#挂载
sudo mkdir /mnt/ceph-block-device
sudo mount /dev/rbd/rbd/foo /mnt/ceph-block-device
cd /mnt/ceph-block-device

映射步骤可能会报错“rbd feature disable”,原因是不同内核对ceph默认的rbd服务支持不同,可以使用dmesg | tail命令查找错误码,关闭掉不支持的默认项。具体参考映射问题


ceph文件系统安装

  • 创建文件系统
ceph osd pool create cephfs_data <pg_num>
ceph osd pool create cephfs_metadata <pg_num>
ceph fs new <fs_name> cephfs_metadata cephfs_data
  • 创建文件挂载
sudo mkdir /mnt/mycephfs
#admin.secret是cat ceph.client.admin.keyring密钥
sudo mount -t ceph 192.168.4.1:6789,192.168.4.2:6789,192.168.4.4:6789:/ /mnt/mycephfs -o name=admin,secretfile=admin.secret
文件系统挂载.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容