ceph调研报告

2019-01-17  本文已影响0人  Joey_coder

基础概念


Ceph寻址流程

ceph.jpeg
#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之间的映射关系是多对一的关系


Ceph数据流程

ceph数据存储流程.png

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


ceph性能优势


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

集群读写性能


ceph块设备安装

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

#从管理节点安装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
#新建设备
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
上一篇 下一篇

猜你喜欢

热点阅读