武陟县住房和城乡建设局网站,网站页面设计收费,广州pc网站建设,成都网站建设seo一、Ceph 简介
Ceph 是一个开源的分布式文件系统。因为它还支持块存储、对象存储#xff0c;所以很自 然的被用做云计算框架 openstack 或 cloudstack 整个存储后端。当然也可以单独作 为存储#xff0c;例如部署一套集群作为对象存储、SAN 存储、NAS 存储等。
二、ceph 支…一、Ceph 简介
Ceph 是一个开源的分布式文件系统。因为它还支持块存储、对象存储所以很自 然的被用做云计算框架 openstack 或 cloudstack 整个存储后端。当然也可以单独作 为存储例如部署一套集群作为对象存储、SAN 存储、NAS 存储等。
二、ceph 支持的 3 种存储方式
1、对象存储即 radosgw,兼容 S3 接口。通过 rest api 上传、下载文件。
2、文件系统posix 接口。可以将 ceph 集群看做一个共享文件系统挂载到本地。
3、块存储即 rbd。有 kernel rbd 和 librbd 两种使用方式。支持快照、克隆。相 当于一块硬盘挂到本地用法和用途和硬盘一样。比如在 OpenStack 项目里Ceph 的块设备存储可以对接 OpenStack 的后端存储。
三、ceph 集群部署
环境准备 (禁用 selinux, 关闭防火墙)
拓扑 前 3台机器添加一块 20G 的硬盘
硬盘给 osd 做存储使用
禁用 selinux, 关闭防火墙
__所有服务器__都需要关闭防火墙,selinux
[rootcong11 ~]# systemctlstop firewalld[rootcong11 ~]# systemctl disable firewalld[rootcong11 ~]# setenforce 0[rootcong11 ~]# sed \-i s/SELINUXenforcing/SELINUXdisabled/g/etc/selinux/config编辑 hosts 文件
所有的服务器都需要设置 hosts
[rootcong11 ~]# vim /etc/hosts #在文件最后加入以下行 192.168.1.11 cong11 192.168.1.12 cong12 192.168.1.13 cong13 192.168.1.14 cong14 SSH 免密码登录
在管理节点使用ssh-keygen 生成 ssh keys 发布到各节点这里使用主机名
[rootcong11 ~]# ssh -keygen #一直回车不设密码[rootcong11 ~]# ssh-copy-id cong11
[rootcong11 ~]# ssh-copy-id cong12
[rootcong11 ~]# ssh-copy-id cong13
[rootcong11 ~]# ssh-copy-id cong14配置 yum 源配置阿里网络源所有节点
\[rootcong11~\]\#wget \-O /etc/yum\.repos\.d/CentOS\-Base\.repo[http://mirrors\.aliyun\.com/repo/Centos\-7\.repo](http://mirrors.aliyun.com/repo/Centos-7.repo)配置 ceph 源所有节点
\[rootcong11 ~\]\# vim /etc/yum\.repos\.d/ceph\.repo\[Ceph\]nameCeph packages for $basearchbaseurl[http://mirrors\.aliyun\.com/ceph/rpm\-15\.2\.9/el7/$basearch](http://mirrors.aliyun.com/ceph/rpm-15.2.9/el7/$basearch) enabled1gpgcheck0 typerpm\-md\#gpgkey[https://download\.ceph\.com/keys/release\.asc](https://download.ceph.com/keys/release.asc)\[Ceph\-noarch\]nameCeph noarch packagesbaseurl[http://mirrors\.aliyun\.com/ceph/rpm\-15\.2\.9/el7/noarch](http://mirrors.aliyun.com/ceph/rpm-15.2.9/el7/noarch)enabled1gpgcheck0 typerpm\-md#gpgkey[https://download\.ceph\.com/keys/release\.asc](https://download.ceph.com/keys/release.asc) \[ceph\-source]nameCeph source packagesbaseurl[http://mirrors\.aliyun\.com/ceph/rpm\-15\.2\.9/el7/SRPMS](http://mirrors.aliyun.com/ceph/rpm-15.2.9/el7/SRPMS)enabled1gpgcheck0 typerpm\-md\#gpgkey[https://download\.ceph\.com/keys/release\.asc](https://download.ceph.com/keys/release.asc)安装 epel-release所有节点
[rootcong11 ~\]# yum \-y install epel\-release yum\-plugin\-priorities yum\-utils ntpdate在每服务器上部署 ceph
在 cong11、cong12、cong13 上安装ceph-deploy 是 ceph 集群部署工具。其他软 件是依赖包。
\[rootcong11 ~\]\# yum install \-y ceph\-deploy ceph ceph\-radosgw snappy leveldbgdisk python\-argparse gperftools\-libs python\-setuptools管理节点 cong11 上部署服务
创建 monitor 服务
也可以同时在 cong12cong13 上部署 mon实现高可用生产环境至少 3 个 mon 独立
[rootcong11 ~]# cd /etc/ceph
[rootcong11 ceph]# ceph-deploy new cong11修改副本数
配置文件的默认副本数从 3 改成 2这样只有两个 osd 也能达到 activeclean 状态
\[rootcong11 ceph\]\# vim ceph\.conf\[global\]fsid 085c7b61\-cac0\-494b\-9bfc\-18fe2cc2deb0mon\_initial\_members cong11 mon\_host [192\.168\.1\.11](192.168.1.11)auth\_cluster\_required cephx auth\_service\_required cephx auth\_client\_required cephx__osd\_pool\_default\_size 2 \#最后添加这行__部署 initial monitor
[rootcong11 ceph]# ceph-deploy mon create cong11收集节点的 keyring 文件
[rootcong11 ceph]# ceph-deploy gatherkeys cong11
[rootcong11 ceph]# ls[rootcong11 ceph\]\# cat ceph\.client\.admin\.keyring__\#连接__ __ceph 集群的admin 账号密码__### __部署__ __mgr 管理服务__在 master 上部署 mgr 管理服务也可以同时在 cong12 cong13 上部署 mgr实 现高可用。bash
[rootcong11 ceph]# ceph-deploy mgr create cong11部署 osd 服务
使用 ceph 自动分区
[rootcong11 ceph]# cd /etc/ceph/[rootcong11 ceph]# ceph-deploy disk zap cong11 /dev/sdb
[rootcong11 ceph]# ceph\-deploy disk zap cong12 /dev/sdb
[rootcong11 ceph]# ceph\-deploy disk zap cong13 /dev/sdb添加 osd 节点
[rootcong11 ceph\]# ceph-deploy osd create cong11 --data /dev/sdb
[rootcong11 ceph\]# ceph-deploy osd create cong12 --data /dev/sdb
[rootcong11 ceph\]# ceph-deploy osd create cong13 --data /dev/sdb查看 osd 状态
[rootcong11 ceph]# ceph-deploy osd list cong11 cong12 cong13统一集群配置
用 ceph-deploy 把配置文件和admin 密钥拷贝到所有节点这样每次执行 Ceph 命 令行时就无需指定 monitor 地址和 ceph.client.admin.keyring 了
[rootcong11 ceph\]\# ceph\-deploy admin cong11 cong12 cong13 cong14各节点修改 ceph.client.admin.keyring 权限
[rootcong11 ceph\]# chmod r /etc/ceph/ceph.client.admin.keyring
[rootcong12 ~]# chmod r /etc/ceph/ceph.client.admin.keyring
[rootcong13 ~]# chmod r /etc/ceph/ceph.client.admin.keyring
[rootcong14 ~]# chmod r /etc/ceph/ceph.client.admin.keyring部署 mds 服务
安装 mds
[rootcong11 ceph]# ceph-deploy mds create cong12 cong13查看 mds 服务
\[rootcong11 ceph\]\# ceph mds stat查看集群状态
[rootcong11 ceph]# ceph -s创建 ceph 文件系统
创建之前查看文件系统
[rootcong11 ceph]# cephfsls #没有 ceph 文件系统No filesystems enabled创建存储池 命令ceph osd pool create cephfs_data pg_num ceph osd pool create cephfs_metadata pg_num 其中pg_num 128 , 关于创建存储池 确定 pg_num 取值是强制性的因为不能自动计算。下面是几个常用的值 *少于 5 个 OSD 时可把 pg_num 设置为 128 *OSD 数量在 5 到 10 个时可把 pg_num 设置为 512 *OSD 数量在 10 到 50 个时可把 pg_num 设置为 4096 *OSD 数量大于 50 时你得理解权衡方法、以及如何自己计算 pg_num 取值 *自己计算 pg_num 取值时可借助 pgcalc 工具 随着 OSD 数量的增加正确的 pg_num 取值变得更加重要因为它显著地影响 着集群的行为、以及出错时的数据持久性即灾难性事件导致数据丢失的概率。
[rootcong11 ceph]# ceph osd pool create cephfs_data 128[rootcong11 ceph]# ceph osd pool create cephfs_metadata 128
创建文件系统
创建好存储池后你就可以用 fs new 命令创建文件系统了 命令
cephfs new fs_name cephfs_metadata cephfs_data
其中fs_name cephfs 可自定义 给刚才创建的 2 个存储池创建文件系统
[rootcong11 ceph]# cephfs new cephfscephfs_metadata cephfs_data
查看 ceph 文件系统
[rootcong11 ceph]# cephfsls查看 mds 节点状态
[rootcong11 ceph]# ceph mds stat
内核驱动挂载 Ceph 文件系统
创建挂载点
[rootcong14 ~]# mkdir /mnt/aa存储密钥如果没有在管理节点使用 ceph\-deploy 拷贝ceph 配置文件
cat /etc/ceph/ceph\.client\.admin\.keyring__\[client\.admin\]____key AQA6Fuli0zChIBAAN8ZnZp3uR\\DzP9cbbzaBA__将 __key 对应的值__复制下来保存到文件/etc/ceph/admin.secret 中。建挂载点
使用密钥挂载
[rootcong14 ~\]# mount -t ceph [192.168.1.11](192.168.1.11) :6789:/ /mnt/aa -onameadmin,secret AQA6Fuli0zChIBAAN8ZnZp3uR\\DzP9cbbzaBA
[rootcong14 ~\]\# df -h[rootcong14 ~]# mount -t ceph [192.168.1.11](192.168.1.11) :6789:/ /mnt/aa -onameadmin,secret AQA6Fuli0zChIBAAN8ZnZp3uRDzP9cbbzaBA
[rootcong14 ~]# df -h使用密钥文件挂载
[rootcong14 ~]# vim admin.secretAQA6Fuli0zChIBAAN8ZnZp3uRDzP9cbbzaBA[rootcong14 ~]# mount -t ceph [192.168.1.11](192.168.1.11):6789:/ /data/ \-onameadmin,secretfile/root/admin.secret用户控件挂载 Ceph 文件系统
安装 ceph-fuse
[rootcong14 ~]# yum install -y ceph-fuse挂载
[rootcong14 ~]# ceph-fuse -m [192.168.1.11](192.168.1.11):6789 /mnt/aa
rootcong14 ~]# df -hRBD 的使用
Ceph 支持一个非常好的特性以 COW写时复制的方式从 RBD 快照创建克隆 在 Ceph 中被称为快照分层。分层特性允许用户创建多个 CEPH RBD 克隆实例。这 些特性应用于 OpenStack 等云平台中使用快照形式保护ceph RBD 镜像快照是 只读的但 COW 克隆是完全可以写 可以多次来孵化实例对云平台来说是非常 有用的。
Ceph RBD 镜像有format-1 和 format-2 两种类型RBD 支持这两种类型但是 分层特性 COW 克隆特性只支持 format-2 镜像默认 RBD 创建的镜像是 format-2。 这个在克隆的时候特别重要
检测 linux 内核是否支持 RBD
[rootcong11 ~]# modprobe rbd如果有错误信息说明内核不支持那你就先去升级一下内核
创建 rbd 存储池
[rootcong11 ~]# ceph osd pool create rbd 64
创建指定大小的块设备
[rootcong11 ~]# rbd create --size 102400 rbd/test1这里需要注意 size 的大小这个大小可以超过你实际 pool 的大小这个叫做瘦 分配也叫超卖和按需分配。创建块之后可以通过指令 rbd resize test/myrbd1 --size 51200 --allow-shrink 来动态的更改。
查看 test1 信息
[rootcong11 ~]# rbd info test1映射进内核
映射进内核操作之前,首先查看内核版本, jw 版本的 ceph 默认 format 为 2, 2.x 及 之前的内核版本需手动调整 format 为 1, 4.x 之前要关闭 object-map, fast-diff, deep- flatten 功能才能成功映射到内核,这里使用的是 centos7.9, 内核版本 3.10。
[rootcong11 ~]# rbd feature disable test1 object -map fast-diff deep-flatten exclusive-lock[rootcong11 ~]# rbdmaptest1[rootcong11 ~]# ls /dev/rbd0
可以看见在/dev 下创建了一个叫 rbd0 的设备文件
挂载使用
挂载 rbd 的 Linux 服务器首先需要机器支持 ceph 客户端如果是一台新机器的 话请安装 ceph然后同步下配置文件。
创建挂载点
[rootcong11 ~]# mkdir /mnt/cephrbd格式化分区
[rootcong11 ~]# mkfs.xfs /dev/rbd0挂载
[rootcong11 ~]# mount /dev/rbd0 /mnt/cephrbd
[rootcong11 ~]# df -h测试写入数据
[rootcong11 ~]# dd if/dev/zero of/mnt/cephrbd/file bs100M count1 oflagdirect[rootcong11 ~]# rados df可以看到写了 100M 数据ceph 的 rbd pool相应的使用了 100M 的数据也就是对/mnt/cephrbd 目录的操作将会直接写到 ceph 集群的 rbd 这个 pool 中然后写到 ceph 的 osd 上。