Ceph分布式存储学习笔记之jewel
本文介绍在Oracle Linux上创建配置ceph集群。Ceph软件代号为jewel。
一、操作系统设置
以下操作在每个ceph集群节点都要操作。
1、OS内核设置
[root@hdp01 ~]# cat /proc/sys/kernel/pid_max 32768 [root@hdp01 ~]# vi /etc/sysctl.conf kernel.pid_max = 4194303 [root@hdp01 ~]# sysctl -p
2、软件仓库
[root@hdp01 ~]# yum -y install yum-utils [root@hdp01 ~]# yum-config-manager --enable ol7_ceph ol7_latest ol7_optional_latest ol7_addons
3、禁用防火墙和Selinux
[root@hdp01 ~]# systemctl disable firewalld [root@hdp01 ~]# systemctl stop firewalld [root@hdp01 ~]# sed -i -e 's,enforcing,disabled,' /etc/sysconfig/selinux
4、设置免密码SSH互访(略)
5、各个节点配置NTP服务
[root@hdp01 ~]# echo "server ntp1.aliyun.com" >>/etc/ntp.conf [root@hdp01 ~]# echo "server ntp2.aliyun.com" >>/etc/ntp.conf [root@hdp01 ~]# echo "server ntp3.aliyun.com" >>/etc/ntp.conf [root@hdp01 ~]# systemctl enable ntpd [root@hdp01 ~]# systemctl start ntpd [root@hdp01 ~]# ntpdate -u ntp1.aliyun.com
二、安装配置Ceph
2.1 管理节点安装配置ceph
[root@hdp01 ~]# yum -y install ceph-deploy [root@hdp01 ~]# mkdir fc;cd fc --创建集群 [root@hdp01 fc]# ceph-deploy new fc
2.2 编辑ceph配置文件
[root@hdp01 fc]# vi ceph.conf osd pool default size = 3 public network = 192.168.120.0/24 rbd_default_features = 3
2.3 安装配置集群存储节点
[root@hdp01 fc]# ceph-deploy install hdp0{2..4}
此步骤就是调用yum安装软件包,如果之前配置了ceph的yum仓库,在安装过程中它会重新初始化yum仓库,如果网络差的情况下,此步骤会非常慢。最直接的就是在各个节点手工安装以下软件包:
[root@hdp02 ~]# yum -y install ceph-osd ceph-mds ceph-mon ceph-radosgw [root@hdp03 ~]# yum -y install ceph-osd ceph-mds ceph-mon ceph-radosgw [root@hdp04 ~]# yum -y install ceph-osd ceph-mds ceph-mon ceph-radosgw
2.4 创建ceph监控节点
[root@hdp01 fc]# ceph-deploy mon create-initial [root@hdp01 fc]# ceph-deploy mon create hdp0{2,3,4}
在ceph集群中的监控节点都是奇数个,这里使用了4个监控节点。创建完成后,收集下各个节点的密钥信息:
[root@hdp01 fc]# ceph-deploy gatherkeys hdp0{2,3,4}
2.5 创建OSDs
[root@hdp01 fc]# ceph-deploy disk zap hdp01:sdb [root@hdp01 fc]# ceph-deploy osd create hdp01:sdb --检查ceph集群状态 [root@hdp01 fc]# ceph -s cluster ef4bfc8f-6e8b-497e-a5e5-336213a7f4f7 health HEALTH_ERR 64 pgs are stuck inactive for more than 300 seconds 64 pgs degraded 64 pgs stuck inactive 64 pgs undersized monmap e1: 1 mons at {hdp01=192.168.120.96:6789/0} election epoch 3, quorum 0 hdp01 osdmap e5: 1 osds: 1 up, 1 in flags sortbitwise pgmap v8: 64 pgs, 1 pools, 0 bytes data, 0 objects 34004 kB used, 46023 MB / 46056 MB avail 64 undersized+degraded+peered
创建其他几个OSD:
[root@hdp01 fc]# ceph-deploy disk zap hdp02:sdb [root@hdp01 fc]# ceph-deploy osd create hdp02:sdb [root@hdp01 fc]# ceph-deploy disk zap hdp03:sdb [root@hdp01 fc]# ceph-deploy osd create hdp03:sdb [root@hdp01 ~]# ceph health HEALTH_OK [root@hdp01 ~]# ceph status cluster 87d6656b-1ba9-4345-904e-37c9f860ebc3 health HEALTH_OK monmap e4: 4 mons at {hdp01=192.168.120.96:6789/0,hdp02=192.168.120.97:6789/0,hdp03=192.168.120.98:6789/0,hdp04=192.168.120.99:6789/0} election epoch 8, quorum 0,1,2,3 hdp01,hdp02,hdp03,hdp04 osdmap e23: 3 osds: 3 up, 3 in flags sortbitwise pgmap v189: 214 pgs, 2 pools, 14624 kB data, 16 objects 153 MB used, 134 GB / 134 GB avail 214 active+clean
三、安装配置ceph客户端
3.1 设置客户端和ceph集群之间的SSH互访(略)
3.2 安装ceph-common软件包
[root@hdp05 ~]# yum -y install ceph-common
3.3 同步ceph配置文件到客户端
[root@hdp01 fc]# ceph-deploy admin hdp05
四、创建RBD块设备
4.1 客户端创建存储池
[root@hdp05 ~]# ceph osd pool create datastore 150 150
4.2 创建块设备镜像
[root@hdp05 ~]# rbd create --size 4096 --pool datastore vol01
如果没有指定pool参数,则rbd使用默认的rbd pool。
4.3 将image映射为块设备
[root@hdp05 ~]# rbd map vol01 --pool datastore [root@hdp05 ~]# ll /dev/rbd0 brw-rw---- 1 root disk 248, 0 Apr 11 10:27 /dev/rbd0 [root@hdp05 ~]# ll /dev/rbd/datastore/ total 0 lrwxrwxrwx 1 root root 10 Apr 11 10:27 vol01 -> ../../rbd0 [root@hdp05 ~]# lsmod|grep rbd rbd 77824 1 libceph 249856 1 rbd [root@hdp05 ~]# rbd ls -p datastore vol01
4.4 创建文件系统
可以直接对映射的设备创建文件系统,也可以对映射后的设备进行分区操作,然后创建文件系统。
[root@hdp05 ~]# mkfs.xfs /dev/rbd0 [root@hdp05 ~]# mount /dev/rbd0 /mnt
4.5 RBD设备自动映射
如果安装了ceph-common软件包,默认会在/etc/ceph下面产生一个rbdmap文件。此文件主要作用是在系统启动的时候自动映射块设备。
# RbdDevice Parameters datastore/vol01 id=admin,keyring=/etc/ceph/ceph.client.admin.keyring
其中,rbdevice为poolname/blockname,parameters的id,这里用的是admin,也就是ceph服务端的admin。
4.6 RBD设备扩容
[root@hdp05 ~]# rbd resize -p datastore --image vol01 -s 5120 Resizing image: 100% complete...done. [root@hdp05 ~]# rbd info -p datastore --image vol01 rbd image 'vol01': size 5120 MB in 1280 objects order 22 (4096 kB objects) block_name_prefix: rbd_data.11342ae8944a format: 2 features: layering flags: [root@hdp05 ~]# mount /dev/rbd0 /mnt [root@hdp05 ~]# df /mnt Filesystem Size Used Avail Use% Mounted on ...... /dev/rbd0 4.0G 33M 4.0G 1% /mnt [root@hdp05 ~]# xfs_growfs b60 /mnt [root@hdp05 ~]# df /mnt Filesystem Size Used Avail Use% Mounted on /dev/rbd0 5.0G 33M 5.0G 1% /mnt
4.7 查看image状态
[root@hdp05 ~]# rbd status -p datastore --image vol01 Watchers: watcher=192.168.120.103:0/3157940806 client.4408 cookie=1 [root@hdp05 ~]# rbd status datastore/vol01 Watchers: watcher=192.168.120.103:0/3157940806 client.4408 cookie=1
4.8 查看image信息
[root@hdp05 ~]# rbd info --pool datastore --image vol01 rbd image 'vol01': size 4096 MB in 1024 objects order 22 (4096 kB objects) block_name_prefix: rbd_data.11342ae8944a format: 2 features: layering flags:
五、删除RBD设备
-- 卸载挂载点
[root@hdp05 ~]# umount /mnt
--删除映射
[root@hdp05 ~]# rbd unmap /dev/rbd/datastore/vol01
--删除块设备
[root@hdp05 ~]# rbd rm vol01 -p datastore
--删除存储池
在删除存储池之前,必须在ceph.conf文件中加入下面内容,然后同步到其他ceph集群节点:
[root@hdp01 ~]# vi /etc/ceph/ceph.conf mon allow pool delete = true [root@hdp01 ~]# for i in {2..4};do scp /etc/ceph/ceph.conf hdp0$i:/etc/ceph/;done
然后在各个节点重启mon服务:
[root@hdp01 ~]# systemctl restart ceph-mon.target [root@hdp02 ~]# systemctl restart ceph-mon.target [root@hdp03 ~]# systemctl restart ceph-mon.target [root@hdp04 ~]# systemctl restart ceph-mon.target
[root@hdp05 ~]# ceph osd pool delete datastore datastore --yes-i-really-really-mean-it
六、CephFS配置
Ceph 文件系统( Ceph FS )是个 POSIX 兼容的文件系统,它使用 Ceph 存储集群来存储数据。Ceph 文件系统要求 Ceph 存储集群内至少有一个 Ceph 元数据服务器。这里将hdp04作为cephfs的元数据服务节点(MDS)。
6.1 创建MDS服务
[root@hdp01 fc]# ceph-deploy --overwrite-conf mds create hdp04 [root@hdp01 ~]# echo $(sed -n 's/.*key *= *\([^ ]*.*\)/\1/p' < /etc/ceph/ceph.client.admin.keyring) > /etc/ceph/admin.secret [root@hdp01 ~]# chmod 600 /etc/ceph/admin.secret [root@hdp01 ~]# cat /etc/ceph/ceph.client.admin.keyring [client.admin] key = AQBfZM1aAhtVIhAAToLlVABZs/nH107Dt6z/jg== [root@hdp01 ~]# cat /etc/ceph/admin.secret AQBfZM1aAhtVIhAAToLlVABZs/nH107Dt6z/jg== [root@hdp01 ~]# scp /etc/ceph/admin.secret hdp07:/etc/ceph/ [root@hdp01 ~]# scp /etc/ceph/admin.secret hdp05:/etc/ceph/
6.2 创建CephFS
MDS需要使用两个pool,一个pool用来存储数据,一个pool用来存储元数据。
[root@hdp07 ~]# ceph osd pool create cephfs_data 1 pool 'cephfs_data' created [root@hdp07 ~ b68 ]# ceph osd pool create cephfs_metadata 2 pool 'cephfs_metadata' created [root@hdp07 ~]# ceph fs new cephfs cephfs_metadata cephfs_data new fs with metadata pool 5 and data pool 4 [root@hdp07 ~]# ceph mds stat e5: 1/1/1 up {0=hdp04=up:active} [root@hdp07 ~]# mount -t ceph hdp04:6789:/ /mnt -o name=admin,secretfile=/etc/ceph/admin.secret [root@hdp07 ~]# df Filesystem Size Used Avail Use% Mounted on ...... 192.168.120.99:6789:/ 135G 156M 135G 1% /mnt
还有一种方法就是通过fuse挂载,如下:
[root@hdp07 ~]# yum -y install ceph-fuse [root@hdp07 ~]# ceph-fuse -c /etc/ceph/ceph.conf /mnt 2018-04-11 16:44:47.705919 7ff65fab5e80 -1 init, newargv = 0x559559a5a510 newargc=11 ceph-fuse[3325]: starting ceph client ceph-fuse[3325]: starting fuse [root@hdp07 ~]# df /mnt Filesystem Size Used Avail Use% Mounted on ceph-fuse 135G 156M 135G 1% /mnt
如果客户端没有安装ceph-common软件,则使用下面的方法:
[root@hdp08 ~]# mkdir -p /etc/ceph [root@hdp01 ~]# scp /etc/ceph/ceph.conf root@hdp08:/etc/ceph [root@hdp01 ~]# scp /etc/ceph/ceph.client.admin.keyring root@hdp08:/etc/ceph [root@hdp08 ~]# chmod -R 644 /etc/ceph/ [root@hdp08 ~]# ceph-fuse -c /etc/ceph/ceph.conf /mnt [root@hdp08 ~]# df /mnt Filesystem Size Used Avail Use% Mounted on ceph-fuse 135G 156M 135G 1% /mnt [root@hdp08 ~]# umount /mnt
- Ceph分布式存储学习笔记之ISCSI服务配置
- ceph学习笔记之三Object
- ceph学习笔记之四PG
- ceph学习笔记之五 Pool与映射过程
- ceph学习笔记之十 副本放置策略
- ceph学习笔记之六 数据读写过程
- Ceph分布式存储-运维操作笔记
- ceph学习笔记之十一 Cent OS7安装部署Ceph J版本
- ceph学习笔记之十三 CephFS文件系统
- ceph学习笔记之二RADOS
- ceph学习笔记之十二 Ubuntu安装部署Ceph J版本
- ceph 学习笔记
- ceph学习笔记之八 CRUSH
- Ceph-Openstack学习笔记
- 分布式存储-fastdfs+glusterfs- 学习笔记
- OpenGL超级宝典第七版学习笔记-uniform-(2)
- EMF学习笔记6——模型验证
- Java学习个人笔记---java数组初始化
- python学习(仅作为个人学习笔记,记录零散知识点)