ceph搭建练习1
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ceph搭建练习1相关的知识,希望对你有一定的参考价值。
块存储:比如iscsi
文件存储:NFS/SAMBA
对象存储:都是C/S结构,客户端需要单独安装软件
ceph组件:
MON:ceph通过一系列的映射表来监控集群状态,一般来说MON是奇数个
OSD:ceph对象存储设备,它是唯一的真正存储数据的设备。OSD也是一个进程,一般来说OSD关联到集群中的每块物理硬盘。所以集群中有多少块硬盘就有多少个OSD进程。
MDS:元数据服务器。元数据是描述数据的数据。MDS为cephFS维护文件系统结构,存储元数据。
client:需要单独安装组件
环境准备
91 -96 添加的3块盘
90-96 主机网络yum源配置
90-96配置的主机名映射配置
91 能无密码连接本机及其他主机
90主机NTP服务的配置
部署ceph集群
一、准备7台虚拟机(各人喜欢)
1、初始化
node91 192.168.4.91
node92 192.168.4.92
node93 192.168.4.93
node94 192.168.4.94
node95 192.168.4.95
node96 192.168.4.96
client90 192.168.4.90
2、将ceph光盘挂载到物理主机,以便将其作为yum源
~]# tail -1 /etc/fstab
/ISO/rhcs2.0-rhosp9-20161113-x86_64.iso /var/ftp/ceph iso9660 defaults 0 0
yum源需要系统光盘和ceph光盘两个源。注意ceph光盘中rhceph-2.0-rhel-7-x86_64/目录有三个子目录MON/OSD/Tools,这是三个源
[[email protected] ~]# vim /etc/yum.repos.d/server.repo
[rhel7]
name=rhel7
baseurl=ftp://192.168.4.254/rhel7.4
enabled=1
gpgcheck=0
[mon]
name=mon
baseurl=ftp://192.168.4.254/ceph/rhceph-2.0-rhel-7-x86_64/MON
enabled=1
gpgcheck=0
[osd]
name=osd
baseurl=ftp://192.168.4.254/ceph/rhceph-2.0-rhel-7-x86_64/OSD
enabled=1
gpgcheck=0
[Tools]
name=Tools
baseurl=ftp://192.168.4.254/ceph/rhceph-2.0-rhel-7-x86_64/Tools
enabled=1
gpgcheck=0
[[email protected] ~]# yum clean all
[[email protected] ~]# yum repolist
3、将node91作为管理节点,为其生成ssh密钥,可以免密登陆其他节点
[[email protected] ~]# ssh-keygen -f /root/.ssh/id_rsa -N ‘‘
[[email protected] ~]# for i in {90..96}
do
ssh-copy-id 192.168.4.$i
done
4、通过hosts文件配置名称解析
[[email protected] ~]# for i in {1..6}
do
echo "192.168.4.9$i node9$i" >> /etc/hosts
done
[[email protected] ~]# echo "192.168.4.90 client90" >> /etc/hosts
[[email protected] ~]# for i in {90..96}
do
scp /etc/hosts 192.168.4.$i:/etc/
done
5、配置192.168.4.90为NTP服务器
[[email protected] 90~]# yum install -y chrony
[[email protected] 90~]# vim /etc/chrony.conf
server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
allow 192.168.4.0/24
local stratum 10
[[email protected] 90~]# systemctl restart chronyd
6、配置node91-node96为ntp客户端
[[email protected] ~]# for i in {91..96}
do
ssh node$i yum install -y chrony
done
[[email protected] ~]# vim /etc/chrony.conf
server 192.168.4.10 iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
[[email protected] ~]# for i in {92..96}
do
scp /etc/chrony.conf node$i:/etc/
done
[[email protected] ~]# for i in {91..96}
do
ssh node$i systemctl restart chronyd
done
7、node91-node96为共享存储提供硬盘,每个节点加三块硬盘,每块盘大小为10GB
8、在node1上安装ceph管理软件ceph-deploy
[[email protected] ~]# yum install -y ceph-deploy
9、创建ceph-deploy的工作目录
[[email protected] ~]# mkdir ceph-cluster
[[email protected] ~]# cd ceph-cluster
生成管理集群的配置文件和密钥文件
[[email protected] ceph-cluster]# ceph-deploy new node{91,92,93,94,95,96}
为所有节点安装ceph软件包
[[email protected] ceph-cluster]# ceph-deploy install node{91,92,93,94,95,96}
10、初始化mon服务
[[email protected] ceph-cluster]# ceph-deploy mon create-initial
11、为所有节点准备磁盘分区,用来做存储服务器的日志盘
[[email protected] ceph-cluster]# for i in {91..96}
do
ssh node$i parted /dev/vdb mklabel gpt
ssh node$i parted /dev/vdb mkpart primary 1M 50%
ssh node$i parted /dev/vdb mkpart primary 50% 100%
done
[[email protected] ceph-cluster]# for i in {91..96}
do
ssh node$i lsblk
done
[[email protected] ceph-cluster]# for i in {91..96}
do
ssh node$i chown ceph.ceph /dev/vdb1
ssh node$i chown ceph.ceph /dev/vdb2
done
[[email protected] ceph-cluster]# for i in {91..96} # 属主属组必须是ceph
do
ssh node$i ls -lh /dev/vdb?
done
12、配置OSD,初始化磁盘
[[email protected] ceph-cluster]# for i in {91..96}
do
ceph-deploy disk zap node$i:vdc node$i:vdd
done
13、创建OSD存储空间,与日志盘关联(/dev/vdb1作vdc日志盘,/dev/vdb2作vdd日志盘)
[[email protected] ceph-cluster]# for i in {91..96}
do
ceph-deploy osd create node$i:vdc:/dev/vdb1 node$i:vdd:/dev/vdb2
done
14、查看ceph状态
[[email protected] ceph-cluster]# ceph -s
如果正常的话,可以看到 health HEALTH_OK
如果是health HEALTH_ERR,可以重起服务
[[email protected] ceph-cluster]# for i in {91..96}
do
ssh node$i systemctl restart ceph*.service ceph*.target
done
使用ceph块设备
1、块设备存在于存储池中,默认ceph集群已有有一个名为rbd的池了
[[email protected] ceph-cluster]# ceph osd lspools
2、在默认池里创建一个名为demo-image的镜像,镜像可以当成远程主机的硬盘
[[email protected] ceph-cluster]# rbd create demo-image --image-feature layering --size 10G
3、指定在rbd这个池中创建一个名为image的镜像
[[email protected] ceph-cluster]# rbd create rbd/image --image-feature layering --size 10G
4、查看镜像信息
[[email protected] ceph-cluster]# rbd ls
[[email protected] ceph-cluster]# rbd info image
5、缩减/增容镜像
[[email protected] ceph-cluster]# rbd resize --size 7G image --allow-shrink
[[email protected] ceph-cluster]# rbd info image
[[email protected] ceph-cluster]# rbd resize --size 15G image
[[email protected] ceph-cluster]# rbd info image
6、如果需要使用Ceph的块存储,那么首先要把ceph镜像映射到本地
[[email protected] ceph-cluster]# lsblk # 此时还没有ceph存储
[[email protected] ceph-cluster]# rbd map demo-image #影射
[[email protected] ceph-cluster]# lsblk # 此时多了一个10GB的/dev/rbd0
[[email protected] ceph-cluster]# mkfs.xfs /dev/rbd0
[[email protected] ceph-cluster]# mount /dev/rbd0 /mnt/
[[email protected] ceph-cluster]# df -h /mnt/
[[email protected] ceph-cluster]# cp /etc/hosts /mnt/ # 此步骤只是测试共享存储可用
[[email protected] ceph-cluster]# cat /mnt/hosts
配置ceph客户端
1、安装软件包
[[email protected] ~]# yum install -y ceph-common
2、为了让客户端能够找到集群,需要集群配置文件
[[email protected] ceph-cluster]# scp /etc/ceph/ceph.conf 192.168.4.10:/etc/ceph/
3、客户端访问集群,需要授权,可以为客户端创建用户,也可以使用默认创建的admin帐户
[[email protected] ceph-cluster]# scp /etc/ceph/ceph.client.admin.keyring 192.168.4.90:/etc/ceph/
4、使用ceph块设备
[[email protected] ~]# rbd ls
[[email protected] 90~]# rbd map image #影射
[[email protected] 90~]# mkfs.xfs /dev/rbd0
[[email protected] 90~]# rbd showmapped # 查看ceph块设备信息
[[email protected] 90~]# mount /dev/rbd0 /mnt/
[[email protected] 90~]# echo ‘Hello ceph‘ > /mnt/mytest.txt # 只是测试
查看ceph存储的大小
[[email protected] ceph-cluster]# rados df
管理快照
快照:某一状态点的镜像,将来有任何误操作,都可以通过还原快照来恢复
1、查看image的快照
[[email protected] 90~]# rbd snap ls image
2、为image创建名为image-snap1的快照
[[email protected] ~]# rbd snap create image --snap image-snap1
[[email protected] 90~]# rbd snap ls image
3、模拟误删除操作
(1)删除文件
[[email protected] ~]# cat /mnt/mytest.txt
Hello ceph
[[email protected] ~]# rm -f /mnt/mytest.txt
(2)卸载存储并还原快照
[[email protected] ~]# umount /mnt/
[[email protected] ~]# rbd snap rollback image --snap image-snap1
(3)挂载存储,检查数据是否恢复
[[email protected] ~]# mount /dev/rbd0 /mnt/
[[email protected] ~]# ll /mnt/
[[email protected] ~]# cat /mnt/mytest.txt
克隆镜像
1、通过快照进行镜像克隆,首先保护快照
[[email protected] ~]# rbd snap protect image --snap image-snap1
2、创建名为image-clone的克隆镜像
[[email protected] ~]# rbd clone image --snap image-snap1 image-clone --image-feature layering
3、查看克隆镜像与父镜像关系
[[email protected] ~]# rbd info image-clone
4、合并克隆镜像,使之成为一个整体
[[email protected] ~]# rbd flatten image-clone
[[email protected] ~]# rbd info image-clone # 已经没有父镜像了
删除操作
1、取消RBD映射
[[email protected] ~]# umount /mnt/
[[email protected] ~]# rbd unmap /dev/rbd/rbd/image
[[email protected] ~]# lsblk # 没有rbd0了
2、删除快照
[[email protected] ~]# rbd snap unprotect image --snap image-snap1
[[email protected] ~]# rbd snap rm image --snap image-snap1
3、删除镜像
[[email protected] ~]# rbd list
[[email protected] ~]# rbd rm image
常见错误处理
初始化monitor常见错误
如果出现以下错误
:## ceph-deploy mon create-initial
[node91][ERROR ] admin_socket: exception getting command descriptions: [Errno 2] No such file or directory
解决方案:
[[email protected] ceph-clu]# vim ceph.conf 最下面加入行:
public_network = 192.168.4.0/24
再执行以下命令:
[[email protected] ceoh-clu]# ceph-deploy --overwrite-conf config push node91 node92 node93 node94 node95 node96
-#ceph -s 状态不正常
]#ceph -s
HEALTH_WARN too few PGs per OSD (16 < min 30)
查看rbd pool的PGS
]ceph osd pool get rbd pg_nu
解决办法:修改默认pool rbd的pgs
]ceph osd pool set rbd pg_num 128
set pool 0 pg_num to 128
注意需要把pgp_num也一并修改,默认两个pg_num和pgp_num一样大小均为64,此处也将两个的值都设为128
]ceph osd pool set rbd pgp_num 128
set pool 0 pgp_num to 128
再次ceph -s
health HEALTH_OK
当发现跟时间相关的错误时可以尝试重新同步所有主机的时间
以上是关于ceph搭建练习1的主要内容,如果未能解决你的问题,请参考以下文章