ceph配置解析

ceph配置
Ceph的结构,对象存储由LIBRADOS和RADOSGW提供,块存储由RBD提供,文件系统由CEPH FS提供,而RADOSGW, RBD, CEPH FS均需要调用LIBRADOS的接口,而最终都是以对象的形式存储于RADOS里。

Ceph集群的节点有三种角色:
Monitor,监控集群的健康状况,向客户端发送最新的CRUSH map(含有当前网络的拓扑结构)
OSD,维护节点上的对象,响应客户端请求,与其他OSD节点同步
MDS,提供文件的Metadata,如果不使用CephFS可以不安装
Ceph是分布式的存储,它将文件分割后均匀随机地分散在各个节点上,Ceph采用了CRUSH算法来确定对象的存储位置,只要有当前集群的拓扑结构,Ceph客户端就能直接计算出文件的存储位置,直接跟OSD节点通信获取文件而不需要询问中心节点获得文件位置,这样就避免了单点风险。

前提:
安装前准备(yum)
配置无密码连接(包括自己远程自己也不需要密码)
1.vim /etc/hosts -----> 192.168.4.5 (+虚拟主机名)
2.vim host.txt --------->root@(虚拟主机名)
pssh -i -A -H ‘host1 host2 host3’ -x ‘-o StrictHostKeyChecking=no’ echo hello(使用密码远程多台主机执行命令,屏幕显示标准和错误输出信息)
pssh -A -h host.txt (用密码远程多台主机)
ssh-keygen -N ‘’ -f /root/.ssh/id_rsa (非交互生成密钥文件)
/etc/hosts解析的域名必须与本机主机名一致!!!!
for i in 10 11 12 13

do
scp /etc/hosts 192.168.4.$i:/etc/
done

for i in 10 11 12 13

do
scp /etc/yum.repos.d/ceph.repo 192.168.4.$i:/etc/yum.repos.d/
done
配置NTP时间同步 (特别注意!!!!)
如果有防火墙规则,需要清空所有规则(iptables -F)
其他所有节点与NTP服务器同步时间(chrony)
准备存储磁盘 使用virt-manager为虚拟机添加磁盘(图形化添加)
使用命令:cd /var/lib/libvirt/images
qemu-img create -f qcow2 node1-vdb.vol 10G(添加vdb)
部署ceph集群
部署软件 yum -y install ceph-deploy(自动化脚本)
创建目录
mkdir ceph-cluster
cd ceph-cluster/
创建Ceph集群配置。
ceph-deploy new node1 node2 node3 (创建三个集群)
给所有节点安装软件包。
ceph-deploy install node1 node2 node3
初始化所有节点的mon服务(主机名解析必须对)
ceph-deploy mon create-initial
[node1][ERROR ] admin_socket: exception getting command descriptions: [Error 2] No such file or directory (错误)
先检查自己的命令是否是在ceph-cluster目录下执行的!!!!如果时确认是在该目录下执行的create-initial命令,依然保存,可以使用如下方式修复。
vim ceph.conf #文件最后追加以下内容
public_network = 192.168.4.0/24
修改后重新推送配置文件:
[root@node1 ceph-cluster]# ceph-deploy --overwrite-conf config push node1 node2 node3

创建OSD (查看osd状态 ceph osd tree)
准备磁盘分区
parted /dev/vdb mklabel gpt
parted /dev/vdb mkpart primary 1M 50%
parted /dev/vdb mkpart primary 50% 100%
chown ceph.ceph /dev/vdb1 -------------》 (所用osd都要给权限。有几台给几台!!!!)
chown ceph.ceph /dev/vdb2 这两个分区用来做存储服务器的日志journal盘
注意:要挂载,否则关机无法启动 vim /etc/udev/rules.d/xxxx.rules (固定格式) ------------》 做几台就要写几台
ENV{DEVNAME}"/dev/vdb1",OWNER=“ceph”,GROUP=“ceph”
ENV{DEVNAME}
"/dev/vdb2",OWNER=“ceph”,GROUP=“ceph”
磁盘名字 所属着 所属组
初始化清空磁盘数据(仅node1操作即可)
ceph-deploy disk zap node1:vdc node1:vdd (只分了三个分区)
创建OSD存储空间(仅node1操作即可)
ceph-deploy osd create node1:vdc:/dev/vdb1 node1:vdd:/dev/vdb2
创建osd存储设备,vdc为集群提供存储空间,vdb1提供JOURNAL日志,一个存储设备对应一个日志设备,日志需要SSD,不需要很大
常见错误 使用osd create创建OSD存储空间时,如提示run ‘gatherkeys’,可以使用如下命令修复
ceph-deploy gatherkeys node1 node2 node3
查看集群状态 ceph -s
常见错误 health: HEALTH_WARN
clock skew detected on node2, node3…
clock skew表示时间不同步,解决办法:请先将所有主机的时间都使用NTP时间同步!!!
如果状态还是失败,可以尝试执行如下命令,重启ceph服务
systemctl restart ceph*.service ceph*.target
补充 :systemctl restart(stop/status) ceph-mon@(主机).service
systemctl restart(stop/status) ceph-osd@(1…).service-----停止osd
列出所有的OSD
ceph osd tree
#删除OSD(这里删除osd.0)
ceph osd out osd.0
service ceph stop osd.0
ceph osd crush remove osd.0
创建Ceph块存储
查看存储池。ceph osd lspools -----0 rbd,
创建镜像、查看镜像
rbd create demo-image --image-feature layering --size 10G
rbd create rbd/image --image-feature layering --size 10G
rbd list
rbd info demo-image(查看)
动态调整
缩小容量
rbd resize --size 7G image --allow-shrink
rbd info image
扩容容量
rbd resize --size 15G image
rbd info image

通过KRBD访问 (krbd–适用为物理主机提供块设备)
集群内将镜像映射为本地磁盘
rbd map demo-image-------/dev/rbd0
客户端通过KRBD访问 (从部署集群端拷贝)
yum -y install ceph-common #客户端需要安装ceph-common软件包
scp 192.168.4.11:/etc/ceph/ceph.conf /etc/ceph/ #拷贝配置文件(否则不知道集群在哪)
scp 192.168.4.11:/etc/ceph/ceph.client.admin.keyring /etc/ceph/ 拷贝连接密钥(否则无连接权限)
rbd showmapped (查看)
客户端格式化、挂载分区
mkfs.xfs /dev/rbd0
mount /dev/rbd0 /mnt/
echo “test” > /mnt/test.txt
创建镜像快照

  1. 查看镜像快照 rbd snap ls image
  2. 创建镜像快照 rbd snap create image --snap image-snap1
    rbd snap ls image
  3. 删除客户端写入的测试文件
    rm -rf /mnt/test.txt
  4. 还原快照 rbd snap rollback image --snap image-snap1 #客户端重新挂载分区
    umount /mnt (还原前先取消挂载)
    mount /dev/rbd0 /mnt/
    ls /mnt
    创建快照克隆
    1)克隆快照 rbd snap protect image --snap image-snap1 (先克隆)
    rbd snap rm image --snap image-snap1 //会失败
    rbd clone image --snap image-snap1 image-clone --image-feature layering //使用image的快照image-snap1克隆一个新的image-clone镜像
    查看克隆镜像与父镜像快照的关系
    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 (父照信息)
    #克隆镜像很多数据都来自于快照链
    #如果希望克隆镜像可以独立工作,就需要将父快照中的数据,全部拷贝一份,但比较耗时!!!
    rbd flatten image-clone (克隆)
    克隆后 父照会消失
    客户端撤销磁盘映射
    rbd unmap /dev/rbd/{poolname}/{imagename}
    rbd unmap /dev/rbd/rbd/image
    2)删除快照与镜像
    rbd snap rm image --snap image-snap
    rbd list
    rbd rm image
    如果你不再使用父镜像,可以先移除它的保护状态,再删除它
    rbd snap unprotect rbd/image@image-snap1
    rbd snap rm rbd/image@image-snap1

你可能感兴趣的:(ceph)