本文共 7552 字,大约阅读时间需要 25 分钟。
块存储:比如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.91node92 192.168.4.92node93 192.168.4.93node94 192.168.4.94node95 192.168.4.95node96 192.168.4.96client90 192.168.4.902、将ceph光盘挂载到物理主机,以便将其作为yum源~]# tail -1 /etc/fstab
/ISO/rhcs2.0-rhosp9-20161113-x86_64.iso /var/ftp/ceph iso9660 defaults 0 0yum源需要系统光盘和ceph光盘两个源。注意ceph光盘中rhceph-2.0-rhel-7-x86_64/目录有三个子目录MON/OSD/Tools,这是三个源[root@node91 ~]# vim /etc/yum.repos.d/server.repo[rhel7]name=rhel7baseurl=ftp://192.168.4.254/rhel7.4enabled=1gpgcheck=0[mon]name=monbaseurl=ftp://192.168.4.254/ceph/rhceph-2.0-rhel-7-x86_64/MONenabled=1gpgcheck=0[osd]name=osdbaseurl=ftp://192.168.4.254/ceph/rhceph-2.0-rhel-7-x86_64/OSDenabled=1gpgcheck=0[Tools]name=Toolsbaseurl=ftp://192.168.4.254/ceph/rhceph-2.0-rhel-7-x86_64/Toolsenabled=1gpgcheck=0[root@node1 ~]# yum clean all[root@node1 ~]# yum repolist3、将node91作为管理节点,为其生成ssh密钥,可以免密登陆其他节点
[root@node91 ~]# ssh-keygen -f /root/.ssh/id_rsa -N ''[root@node91 ~]# for i in {90..96}do
ssh-copy-id 192.168.4.$idone
4、通过hosts文件配置名称解析
[root@node91 ~]# for i in {1..6}do
echo "192.168.4.9$i node9$i" >> /etc/hostsdone[root@node91 ~]# echo "192.168.4.90 client90" >> /etc/hosts[root@node91 ~]# for i in {90..96}doscp /etc/hosts 192.168.4.$i:/etc/done
5、配置192.168.4.90为NTP服务器
[root@client 90~]# yum install -y chrony[root@client 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 iburstallow 192.168.4.0/24local stratum 10[root@client 90~]# systemctl restart chronyd6、配置node91-node96为ntp客户端
[root@node91 ~]# for i in {91..96}do
ssh node$i yum install -y chronydone[root@node91 ~]# 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[root@node91 ~]# for i in {92..96}doscp /etc/chrony.conf node$i:/etc/done[root@node91 ~]# for i in {91..96}dossh node$i systemctl restart chronyddone
7、node91-node96为共享存储提供硬盘,每个节点加三块硬盘,每块盘大小为10GB
8、在node1上安装ceph管理软件ceph-deploy[root@node91 ~]# yum install -y ceph-deploy9、创建ceph-deploy的工作目录
[root@node91 ~]# mkdir ceph-cluster[root@node91 ~]# cd ceph-cluster生成管理集群的配置文件和密钥文件[root@node91 ceph-cluster]# ceph-deploy new node{91,92,93,94,95,96}为所有节点安装ceph软件包[root@node91 ceph-cluster]# ceph-deploy install node{91,92,93,94,95,96}10、初始化mon服务
[root@node91 ceph-cluster]# ceph-deploy mon create-initial11、为所有节点准备磁盘分区,用来做存储服务器的日志盘
[root@node91 ceph-cluster]# for i in {91..96}do
ssh node$i parted /dev/vdb mklabel gptssh node$i parted /dev/vdb mkpart primary 1M 50%ssh node$i parted /dev/vdb mkpart primary 50% 100%done
[root@node91 ceph-cluster]# for i in {91..96}
do
ssh node$i lsblkdone
[root@node91 ceph-cluster]# for i in {91..96}
do
ssh node$i chown ceph.ceph /dev/vdb1ssh node$i chown ceph.ceph /dev/vdb2done
[root@node91 ceph-cluster]# for i in {91..96} # 属主属组必须是ceph
do
ssh node$i ls -lh /dev/vdb?done12、配置OSD,初始化磁盘[root@node91 ceph-cluster]# for i in {91..96}doceph-deploy disk zap node$i:vdc node$i:vdddone
13、创建OSD存储空间,与日志盘关联(/dev/vdb1作vdc日志盘,/dev/vdb2作vdd日志盘)
[root@node91 ceph-cluster]# for i in {91..96}do
ceph-deploy osd create node$i:vdc:/dev/vdb1 node$i:vdd:/dev/vdb2done
14、查看ceph状态
[root@node91 ceph-cluster]# ceph -s如果正常的话,可以看到 health HEALTH_OK如果是health HEALTH_ERR,可以重起服务[root@node91 ceph-cluster]# for i in {91..96}do
ssh node$i systemctl restart ceph*.service ceph*.targetdone
使用ceph块设备
1、块设备存在于存储池中,默认ceph集群已有有一个名为rbd的池了
[root@node91 ceph-cluster]# ceph osd lspools2、在默认池里创建一个名为demo-image的镜像,镜像可以当成远程主机的硬盘[root@node91 ceph-cluster]# rbd create demo-image --image-feature layering --size 10G3、指定在rbd这个池中创建一个名为image的镜像
[root@node91 ceph-cluster]# rbd create rbd/image --image-feature layering --size 10G4、查看镜像信息
[root@node91 ceph-cluster]# rbd ls[root@node91 ceph-cluster]# rbd info image5、缩减/增容镜像
[root@node91 ceph-cluster]# rbd resize --size 7G image --allow-shrink[root@node91 ceph-cluster]# rbd info image[root@node91 ceph-cluster]# rbd resize --size 15G image[root@node91 ceph-cluster]# rbd info image6、如果需要使用Ceph的块存储,那么首先要把ceph镜像映射到本地
[root@node91 ceph-cluster]# lsblk # 此时还没有ceph存储[root@node91 ceph-cluster]# rbd map demo-image #影射[root@node91 ceph-cluster]# lsblk # 此时多了一个10GB的/dev/rbd0[root@node91 ceph-cluster]# mkfs.xfs /dev/rbd0 [root@node91 ceph-cluster]# mount /dev/rbd0 /mnt/[root@node91 ceph-cluster]# df -h /mnt/[root@node91 ceph-cluster]# cp /etc/hosts /mnt/ # 此步骤只是测试共享存储可用[root@node91 ceph-cluster]# cat /mnt/hosts配置ceph客户端
1、安装软件包[root@client90 ~]# yum install -y ceph-common2、为了让客户端能够找到集群,需要集群配置文件[root@node91 ceph-cluster]# scp /etc/ceph/ceph.conf 192.168.4.10:/etc/ceph/3、客户端访问集群,需要授权,可以为客户端创建用户,也可以使用默认创建的admin帐户[root@node91 ceph-cluster]# scp /etc/ceph/ceph.client.admin.keyring 192.168.4.90:/etc/ceph/4、使用ceph块设备[root@client90 ~]# rbd ls[root@client 90~]# rbd map image #影射[root@client 90~]# mkfs.xfs /dev/rbd0[root@client 90~]# rbd showmapped # 查看ceph块设备信息[root@client 90~]# mount /dev/rbd0 /mnt/[root@client 90~]# echo 'Hello ceph' > /mnt/mytest.txt # 只是测试查看ceph存储的大小
[root@node91 ceph-cluster]# rados df管理快照
快照:某一状态点的镜像,将来有任何误操作,都可以通过还原快照来恢复1、查看image的快照[root@client 90~]# rbd snap ls image2、为image创建名为image-snap1的快照[root@client90 ~]# rbd snap create image --snap image-snap1[root@client 90~]# rbd snap ls image3、模拟误删除操作(1)删除文件
[root@client90 ~]# cat /mnt/mytest.txt Hello ceph[root@client90 ~]# rm -f /mnt/mytest.txt(2)卸载存储并还原快照[root@client90 ~]# umount /mnt/[root@client90 ~]# rbd snap rollback image --snap image-snap1(3)挂载存储,检查数据是否恢复[root@client90 ~]# mount /dev/rbd0 /mnt/[root@client90 ~]# ll /mnt/[root@client90 ~]# cat /mnt/mytest.txt克隆镜像
1、通过快照进行镜像克隆,首先保护快照[root@client90 ~]# rbd snap protect image --snap image-snap12、创建名为image-clone的克隆镜像[root@client90 ~]# rbd clone image --snap image-snap1 image-clone --image-feature layering3、查看克隆镜像与父镜像关系[root@client90 ~]# rbd info image-clone4、合并克隆镜像,使之成为一个整体[root@client90 ~]# rbd flatten image-clone[root@client90 ~]# rbd info image-clone # 已经没有父镜像了删除操作
1、取消RBD映射[root@client90 ~]# umount /mnt/[root@client90 ~]# rbd unmap /dev/rbd/rbd/image [root@client90 ~]# lsblk # 没有rbd0了2、删除快照[root@client90 ~]# rbd snap unprotect image --snap image-snap1[root@client90 ~]# rbd snap rm image --snap image-snap13、删除镜像[root@client90 ~]# rbd list[root@client90 ~]# rbd rm image常见错误处理
初始化monitor常见错误如果出现以下错误
:## ceph-deploy mon create-initial[node91][ERROR ] admin_socket: exception getting command descriptions: [Errno 2] No such file or directory解决方案:
[root@node91 ceph-clu]# vim ceph.conf 最下面加入行:public_network = 192.168.4.0/24再执行以下命令:[root@host1 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 128set pool 0 pg_num to 128注意需要把pgp_num也一并修改,默认两个pg_num和pgp_num一样大小均为64,此处也将两个的值都设为128]ceph osd pool set rbd pgp_num 128set pool 0 pgp_num to 128再次ceph -shealth HEALTH_OK
当发现跟时间相关的错误时可以尝试重新同步所有主机的时间
转载于:https://blog.51cto.com/13999764/2315077