Cluster04 - Ceph概述 部署Ceph集群 Ceph块存储
ceph
快照:可用做备份
一、ceph概述
1.1 什么是分布式文件系统
• 分布式文件系统(Distributed File System)是指文
件系统管理的物理存储资源不一定直接连接在本地节
点上,而是通过计算机网络与节点相连
• 分布式文件系统的设计基于客户机/服务器模式
1.2 常用分布式文件系统
• Lustre
• Hadoop
• FastDFS
• Ceph
• GlusterFS
1.3 什么是ceph
• ceph是一个分布式文件系统
• 具有高扩展、高可用、高性能的特点
• ceph可以提供对象存储、块存储、文件系统存储
• ceph可以提供PB级别的存储空间(PBàTBàGB)
– 1024G*1024G=1048576G
• 软件定义存储(Software Defined Storage)作为存储
行业的一大发展趋势,已经越来越受到市场的认可
1.4 ceph组件
• OSDs [有几个OSD就有几个ceph-osd进程 ]
– 存储设备
• Monitors [存储集群的入口]
– 集群监控组件
• MDSs
– 存放文件系统的元数据(对象存储和块存储不需要该组件)
• Client
– ceph客户端 [需要拷贝服务端存储的配置文件,和验证文件]
二、ceph实验环境准备
2.1 实验拓扑图
• 1台客户端虚拟机
• 3台存储集群虚拟机
2.2 配置YUM
2.1.1 物理机创建网络yum源服务器
[root@root9pc01 ~]# yum -y install vsftpd
[root@root9pc01 ~]# mkdir /var/vsftp/ceph
[root@root9pc01 ~]# mount -o loop \
rhcs2.0-rhosp9-20161113-x86_64.iso /var/vsftp/ceph
[root@root9pc01 ~]# systemctl restart vsfpd
2.1.2 虚拟机调用YUM源(下面以node1为例)
[root@node1 ~]# cat /etc/yum.repos.d/ceph.repo
[mon]
name=mon
baseurl=ftp://192.168.4.254/ceph/rhceph-2.0-rhel-7-x86_64/MON
gpgcheck=0
[osd]
name=osd
baseurl=ftp://192.168.4.254/ceph/rhceph-2.0-rhel-7-x86_64/OSD
gpgcheck=0
[tools]
name=tools
baseurl=ftp://192.168.4.254/ceph/rhceph-2.0-rhel-7-x86_64/Tools
gpgcheck=0
2.3 配置SSH无密钥连接
2.3.1 修改主机名
[root@node1 ~]# cat /etc/hosts
… …
192.168.4.10 client
192.168.4.11
node1
192.168.4.12
node2
192.168.4.13
node3
[root@node1 ~]# for i in 10 11 12 13
> do
> scp /etc/hosts 192.168.2.$i:/etc/
> done
2.3.2 非交互生成密钥对
[root@node1 ~]# ssh-keygen -f /root/.ssh/id_rsa -N ”
2.3.3 发布密钥到各个主机(包括自己)
[root@node1 ~]# for i in 10 11 12 13
> do
> ssh-copy-id 192.168.4.$i
> done
2.4 NTP时间同步
2.4.1 客户端创建NTP服务器
[root@client ~]# yum -y install chrony
[root@client ~]# cat /etc/chrony.conf
server 0.rhel.pool.ntp.org iburst
allow 192.168.4.0/24
local stratum 10
[root@client ~]# systemctl restart chronyd
2.4.2 其他所有主机与其同步时间(下面以node1为例)
[root@node1 ~]# cat /etc/chrony.conf
server 192.168.4.10 iburst
[root@node1 ~]# systemctl restart chronyd
2.5 准备存储磁盘
2.5.1 在图形环境中为虚拟机添加磁盘
[root@root9pc01 ~]# virt-manager
三、部署Ceph集群
3.1 准备部署环境
3.1.1 安装部署软件
• 使用node1作为部署主机
[root@node1 ~]# yum -y install ceph-deploy
• ceph-deploy命令与子命令都支持–help查看帮助
[root@node1 ~]# ceph-deploy –help
3.1.2 创建目录
• 为部署工具创建目录,存放密钥与配置文件
[root@node1 ~]# mkdir ceph-cluster
[root@node1 ~]# cd ceph-cluster/
3.2 部署存储集群
3.2.1 创建ceph集群
• 创建ceph集群配置(所有节点都为mon)
[root@node1 ceph-cluster]# ceph-deploy new node1 node2 node3
• 给所有节点安装ceph软件包
[root@node1 ceph-cluster]# ceph-deploy install node1 node2 node3
• 初始化所有节点的mon服务(主机名解析必须对)
[root@node1 ceph-cluster]# ceph-deploy mon create-initial
//这里没有指定主机,是因为第一步创建的配置文件中已经有了,所以要求主机名解析必须对,否则连接不到对应的主机
3.2.2 创建OSD
1. 所有节点准备磁盘分区(下面以node1为例)
[root@node1 ~]# parted /dev/vdb mklabel gpt
[root@node1 ~]# parted /dev/vdb mkpart primary 1M 50%
[root@node1 ~]# parted /dev/vdb mkpart primary 50% 100%
//这两个分区用来做存储服务器的日志journal盘
vim /etc/udev/rules.d/100-ceph.rules //通过udev管理日志磁盘权限,采用这种方式可以在重启机器之后,集群状态正常
ACTION==”add”, KERNEL==”vdb?”,SUBSYSTEM==”block”, OWNER=”ceph”,GROUP=”ceph”
[root@node2 rules.d]# systemctl restart systemd-udev-trigger.service
//通过命令行修改日志磁盘,这种方式临时修改的,重启机器集群状态不正常.[]
[root@node1 ~]# chown ceph.ceph /dev/vdb1
[root@node1 ~]# chown ceph.ceph /dev/vdb2
2. 初始化清空磁盘数据(仅node1操作即可)
[root@node1 ~]# ceph-deploy disk zap node1:vdc node1:vdd
[root@node1 ~]# ceph-deploy disk zap node2:vdc node2:vdd
[root@node1 ~]# ceph-deploy disk zap node3:vdc node3:vdd
3. 创建OSD存储空间(仅node1操作即可)
[root@node1 ~]# ceph-deploy osd create node1:vdc:/dev/vdb1 node1:vdd:/
dev/vdb2
//创建osd存储设备,vdc为集群提供存储空间,vdb1提供JOURNAL
日志,一个存储设备对应一个日志设备,日志需要SSD,不需要很大
[root@node1 ~]# ceph-deploy osd create node2:vdc:/dev/vdb1 node2:vdd:/
dev/vdb2
[root@node1 ~]# ceph-deploy osd create node3:vdc:/dev/vdb1 node3:vdd:/
dev/vdb2
3.3 验证
3.3.1 查看集群状态
[root@node1 ~]# ceph -s
3.3.2 可能出现的错误
– osd create创建OSD存储空间,如提示run
‘gatherkeys’
[root@node1 ~]# ceph-deploy gatherkeys node1 node2 node3
– ceph -s查看状态,如果失败
[root@node1 ~]# systemctl restart ceph\*.service ceph\*.target
//在所有节点,或仅在失败的节点重启服务
– 时间同步失败
~] # vim /etc/ceph/ceph.conf
vim /etc/ceph/ceph.conf
mon clock drift allowed = 2
mon clock drift warn backoff = 30
cp /etc/ceph/ceph.conf /root/ceph-cluster
cd /root/ceph-cluster
ceph-deploy –overwrite-conf admin node2 node3 //同步配置文件
在所有monitor主机上重启ceph-mon@\*服务
systemctl restart ceph-mon@node1
systemctl restart ceph-mon@node2
systemctl restart ceph-mon@node3
四、Ceph块存储 【提供硬盘】
4.1 概述
4.1.1 什么是块存储
什么是块存储
• 单机块设备
– 光盘
– 磁盘
• 分布式块存储
– Ceph
– Cinder
• Ceph块设备也叫做RADOS块设备
– RADOS block device:RBD
• RBD驱动已经很好的集成在了Linux内核中
• RBD提供了企业功能,如快照、COW克隆等等
• RBD还支持内存缓存,从而能够大大提高性能
• Linux内核可用直接访问Ceph块存储
• KVM可用借助于librbd访问
4.2 块存储集群
4.2.1 创建镜像
• 查看存储池(默认有一个rbd池)
[root@node1 ~]# ceph osd lspools
0 rbd,
• 创建镜像、查看镜像
[root@node1 ~]# rbd create demo-image –image-feature layering –size 10G
[root@node1 ~]# rbd create rbd/image –image-feature layering –size 10G
[root@node1 ~]# rbd list
[root@node1 ~]# rbd info demo-image
rbd image ‘demo-image’:
size 10240 MB in 2560 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.d3aa2ae8944a
format: 2
features: layering
4.2.2 动态调整大小
• 缩小容量
[root@node1 ~]# rbd resize –size 7G image –allow-shrink
[root@node1 ~]# rbd info image
• 扩容容量
[root@node1 ~]# rbd resize –size 15G image
[root@node1 ~]# rbd info image
4.2.3 集群内通过KRBD访问
• 将镜像映射为本地磁盘
[root@node1 ~]# rbd map demo-image
/dev/rbd0
[root@node1 ~]# lsblk
… …
rbd0 251:0 0 10G 0 disk
• 接下来,格式化了!
[root@node1 ~]# mkfs.xfs /dev/rbd0
[root@node1 ~]# mount /dev/rbd0 /mnt
4.2.4 客户端通过KRBD访问
• 客户端需要安装ceph-common软件包
• 拷贝配置文件(否则不知道集群在哪)
• 拷贝连接密钥(否则无连接权限)
[root@client ~]# yum -y install ceph-common
[root@client ~]# scp 192.168.4.11:/etc/ceph/ceph.conf /etc/ceph/
[root@client ~]# scp 192.168.4.11:/etc/ceph/ceph.client.admin.keyring \
/etc/ceph/
• 映射镜像到本地磁盘
[root@client ~]# rbd map image
[root@client ~]# lsblk
[root@client ~]# rbd showmapped
id pool image snap device
0 rbd image - /dev/rbd0
• 客户端格式化、挂载分区
[root@client ~]# mkfs.xfs /dev/rbd0
[root@client ~]# mount /dev/rbd0 /mnt/
[root@client ~]# echo “test” > /mnt/test.txt
4.2.5 创建镜像快照
• 查看镜像快照
[root@node1 ~]# rbd snap ls image
• 创建镜像快照
[root@node1 ~]# rbd snap create image –snap image-snap1
[root@node1 ~]# rbd snap ls image
SNAPID NAME SIZE
4 image-snap1 15360 MB
• 注意:快照使用COW技术,对大数据快照速度会很快!
4.2.6 使用快照恢复数据
• 删除客户端写入的测试文件
[root@client ~]# rm -rf /mnt/test.txt
• 还原快照
[root@node1 ~]# rbd snap rollback image –snap image-snap1
• 客户端重新挂载分区
[root@client ~]# umount /mnt
[root@client ~]# mount /dev/rbd0 /mnt/
[root@client ~]# ls /mnt
4.2.7 快照克隆
• 如果想从快照恢复出来一个新的镜像,则可以使用克隆
• 注意,克隆前,需要对快照进行<保护>操作
• 被保护的快照无法删除,取消保护(unprotect)
[root@node1 ~]# rbd snap protect image –snap image-snap1
[root@node1 ~]# rbd snap rm image –snap image-snap1 //会失败
[root@node1 ~]# rbd clone \
image –snap image-snap1 image-clone –image-feature layering
//使用image的快照image-snap1克隆一个新的image-clone镜像
• 查看克隆镜像与父镜像快照的关系
[root@node1 ~]# rbd info image-clone
rbd image ‘image-clone’:
size 15360 MB in 3840 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.d3f53d1b58ba
format: 2
features: layering
flags:
parent: rbd/image@image-snap1
• 克隆镜像很多数据都来自于快照链
• 如果希望克隆镜像可以独立工作,就需要将父快照中
的数据,全部拷贝一份,但比较耗时!!!
[root@node1 ~]# rbd flatten image-clone
[root@node1 ~]# rbd info image-clone
rbd image ‘image-clone’:
size 15360 MB in 3840 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.d3f53d1b58ba
format: 2
features: layering
flags:
//注意,父快照信息没了!
4.2.8 客户端撤销磁盘映射
• umount挂载点
[root@client ~]# umount /mnt
• 取消RBD磁盘映射
[root@client ~]# rbd showmapped
id pool image snap device
0 rbd image - /dev/rbd0
//语法格式:
[root@client ~]# rbd unmap /dev/rbd/{poolname}/{imagename}
[root@client ~]# rbd unmap /dev/rbd/rbd/image
4.2.9 删除快照与镜像
• 删除快照(确保快照未被保护)
[root@node1 ~]# rbd snap rm image –snap image-snap
• 删除镜像
[root@node1 ~]# rbd list
[root@node1 ~]# rbd rm image
ceph FS 提供共享文件夹,不是很成熟 ceph组件 搭建流程
对象存储 需要专门的客户端,了解
node1-3 mon/osd
node4: mds CEPH FS需要
node5: RADOS 对象存储需要
node6: 客户端
dump2fs -h /dev/vde1
?表示任意一个字符
ext4 比较适合存放小文件 网页文件
xfs比较适合存放大文件 视频
搭建类:如ceph/openstack/elk
配置类:zabbix配置,自动发现,监控模板
应用类:ansible
losetup -a //查看镜像所在目录
virsh secret-list //查看生成的secret
virsh secret-undefine uuid
ntpdate IP 手动同步时间
ceph auth list 查看认证的key
[root@node1 ceph]# ceph auth list
[root@node1 ceph-cluster]# cat /root/ceph-cluster/ceph.bootstrap-mds.keyring //这里面的key值要和ceph auth list查看到的值是一样的,如果不一样,需要手动将ceph.bootstrap-mds.keyring的值改成和ceph auth list查看到的值一致。
在部署节点上 /var/lib/ceph/bootstrap-rgw目录下的ceph.keyring里面的key要和管理节点上查看到的key值一样
Cluster04 - Ceph概述 部署Ceph集群 Ceph块存储相关推荐
- Ceph原理、部署、存储集群、块存储及对象存储centos7.5
目录 编辑 一.Ceph概述 1.基础知识 1. 分布式存储定义 2. 常用的分布式文件系统 3. Ceph定义 4. Ceph组件 二.实验环境准备 1.实验拓扑图 2.配置yum源 3.配置SS ...
- 部署Ceph集群(块存储,文件系统存储,对象存储)
一 前言 分布式文件系统(Distributed File System):文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连.分布式文件系统的设计基于C/S模式 1, ...
- 部署Ceph分布式高可用集群中篇
前言 如何快速部署Ceph分布式高可用集群 Ceph分布式存储底层实现原理 上文介绍了ceph的原理以及ceph的部署(部署了一个mon角色)本文继续介绍下ceph的部署 部署OSD 查看磁盘使用情况 ...
- ceph 部署单机集群
文章目录 ceph-deploy部署集群 ceph-deploy 部署单机 ceph-deploy 创建osd ceph osd创建资源池 ceph创建rbd块设备 ceph创建fs文件系统 本文档主 ...
- Openstack集群-Ceph集群作为存储的部署
1.安装Ceph集群 1.1 设置ceph的yum源 ceph版本:12.2.5 ceph-deploy版本: 2.0.0 注:此处用控制节点部署mod和mgr ,OSD部署在计算节点上 [root@ ...
- 玩转Docker Ceph集群及对象存储
为什么80%的码农都做不了架构师?>>> [编者按]Ceph是一种集高性能.高可靠性和高可扩展性为一体的统一的.分布式的存储系统."统一的"意味着Ceph可 ...
- Ceph (3) - 安装Ceph集群方法3:使用 ceph-ansible 离线安装 Red Hat Ceph Storage 4.1 集群
<OpenShift 4.x HOL教程汇总> 文章目录 安装前说明 准备主机环境 创建虚拟主机并配置网络 配置主机名和域名 设置环境变量 设置主机hosts 配置免密登录 设置节点主机名 ...
- 还在手动部署 Kubernetes 集群吗,是时候使用 Kubespray 完成自动化部署了!
公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 前言 部署 Kubernetes 除了手动方式外,还有诸如 Kubeadm.Kubespray.Breeze.Ra ...
- kubekey部署k8s集群
基本介绍:KubeKey 是 KubeSphere 社区开源的一款高效集群部署工具,运行时默认使用 Docker , 也可对接 Containerd CRI-O iSula 等 CRI 运行时,且 E ...
最新文章
- BZOJ1251: 序列终结者
- Nature封面重磅!剑桥大学团队揭开老年痴呆背后的罪魁祸首
- leetcode算法题--二叉树中的伪回文路径
- 为什么matlab显示error,【求救】我安装了资源 MATLAB R2012b 后,显示有error……
- hadoop重命名文件_Hadoop -- 3. 从Flume到HDFS
- 第九集 生死穿越风火山,感受尘世间轮回
- android mqtt详解_Android mqtt入门 Android studio(转)
- hadoop没有datanode_Hadoop运行在Kubernetes平台实践
- python加密字符串小写字母循环后错两位_Python简单加密程序:如何将Z循环回
- 大型网站技术架构(三)架构核心要素
- 云课堂在登陆时显示服务器错误,我的云课堂不能登陆怎么解决
- ADSL共享上网(简单方法)
- QT打印打印excel
- java处理Emoji表情
- Nginx:[emerg] unknown directive “server” in*******
- 搭建机器人电控系统——PID算法——位置式、增量式、模糊式PID
- 怎样让chatGPT给你打工然后月入过千?
- Java的一些基本概念和它们之间的关系
- 点击验证码刷新的实现
- 程序猿一般喜欢游览哪些网站,推荐?
热门文章
- Kafka教程(三):原理及存储
- 性的短暂而致真情永失
- java.io.IOException: java.io.FileNotFoundException: C:\Users\26904\AppData 找不到指定的路径,自动跑到C盘里找,太离谱了。
- 百度地图实现普通地图、卫星图、三维图、混合图(卫星图+路网)
- 一名普通22届本科毕业生|前端程序员|22年年终总结
- SAP 消息号 F5113 科目确认没有对交易. SKE (在会计科目表 XXXX 中)定义
- python PEP8问题及解决
- 【数论】——Catalan 卡特兰数
- win7运行c语言程序,win7打开程序弹出错误0xc000005的解决方法
- 获取、设置响应头、设置缓冲区