架构师的成长之路初片~Ceph-block存储

Ceph之块存储
存储池: pools(水池)
  现阶段环境说明:沿上配置:进行操作
  在创建好存储磁盘后,默认创建一个编号为0的存储池。可用命令:ceph osd lspools 查看。

  查看镜像
  rbd list
  创建镜像
  rbd create demo-image --size 10G
  vbd create rbd/jacob --size 10G //指定rbd为池
  列出所有镜像
  rbd list
  查看这个镜像的详细信息
  rbd info demo-image(镜像名)

二、动态调整(调整镜像的大小)
  rbd resize --size 15G jacob //调整jacob的镜像指定扩容到15G
  rbd info jacob //查看镜像详细信息
  rbd resize --size 7G jacob --allow-shrink //将jacob镜像缩减到指定大小。
    //当如把镜像缩小时,因数据会丢失,则需要加 --allow-shrink 标签即可。

三、客户端访问
  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 map jacob #客户端访问映射服务器的jacob共享镜像
  lsblk #查看结果(会多一块磁盘)
  rbd showmapped #查看磁盘名和共享镜像名称的对应关系
此时的磁盘是个网络磁盘,必须格式化,挂载,才可以写入数据。且写入的数据并不存在自身的主机,而是存在node1 ode2 ode3里面
  mkfs.xfs /dev/rbd0 #格式化,格式为xfs
  echo "test" > /mnt/test.txt //写入数据
  rbd showmapped //可查看该磁盘由那个池以及镜像提供。


删除镜像:思路,由于磁盘时挂载使用的,所以需要在客户端进行卸载,并且取消镜像的映射。
  客户端操作:
    1)卸载访问点
    umount /mnt/rbd/ //操作完可用lsblk查看
    2)取消映射
    rbd unmap /dev/rbd0 //操作完可用lsblk查看

Ceph之块存储:
缺点:同一时刻,只能允许一个客户端读取数据。
也不能同时挂载,否则会造成文件丢失
一、创建镜像快照
  OSD的三个备份,也敌不过人为的删除。所以引入快照的概念。
  现环境状况,沿上案例继续进行。

1)快照的概念:基于当前的镜像创建一个快照(可不用格式化,直接操作)
  rbd snap ls jacob /查看某个镜像名称
  Mon(node1)端
2) rbd snap create jacob --snap jacob-snap1 //给jacob镜像创建一个叫jacob-snap1的快照镜像
  rbd snap ls jacob //查看jacob的快照 //#为jacob镜像创建快照,--snap指定快照名称,快照名称为jacob-snap1,快照名称可以任意

客户端 :
  rbd map jacob #客户端访问映射服务器的jacob共享镜像
  mount /dev/rbd0 /mnt/rbd/ //挂载
  cd /mnt/rbd/ //进入挂载的目录
3) rm -rf /mnt/rbd/* //删除里面的所有文件,此时该盘内不存在任何文件。


4)还原快照
  在还原快照之前,先把client端的网络磁盘卸载。否则还原的时候会出现问题
  rbd snap rollback jacob --snap jacob-snap1 //还原快照

二、创建快照克隆
  因在克隆快照镜像的时候,被克隆的镜像不能被删除,所以得保护快照并且不做任何操作。
  rbd snap protect jacob --snap jacob-snap1 //保护快照,jacob是镜像名称,jacob-snap1是前面创建的快照(被保护的快照,不可以被删除)
  rbd snap rm jacob --snap jacob-snap1 #删除被保护的快照,会失败
  rbd clone jacob --snap jacob-snap1 jacob-clone --image-feature layering //使用jacob镜像的快照jacob-snap1克隆一个新的名称为jacob-clone的镜像,新镜像名称可以任意

  rbd info jacob //原始的镜像
  rbd info jacob-clone //克隆原始的镜像
  rbd info 镜像名 //可用此命令查看,jacob与jacob-clone的详细信息
  rbd flatten jacob-clone //将现在的克隆镜像,取消与它父亲之间的关联
  rbd 选项:flatten //flatten:解释 Fill clone with parent data (make itindependent).
  rbd --help 可查看所有选项 ^// 用父数据填充克隆(使其独立)


Ceph文件系统存储:
现环境状况,沿上案例继续进行。
一个文件系统由:inode和block两部分构成
inode:存储元数据(metadata元数据),存的是block的(目录)信息。
block存储真正的数据

优点:支持多人使用

1)装包:ceph-dms //选择一个节点来进行装包及控制
2)ceph-deploy mds create node1 //远程nod1,拷贝集群配置文件,启动mds服务
3)ceph osd pool create cephfs_data 64 //创建存储池,共享池的名称为cephfs_data,对应有64个PG,共享池名称可以任意
4)ceph osd pool create cephfs_metadata 64 //创建存储池,共享池的名称为cephfs_metadata,对应有64个PG
5)ceph fs new myfxl cephfs_metadata cephfs_data //创建ceph文件系统,#myfs1是名称,名称可以任意,注意,先写metadata池,再写data池,fs是filesystem的缩写,filesystem中文是文件系统,默认,只能创建1个文件系统,多余的会报错
6)ceph fs ls //查看文件系统此时的状态

客户端操作:
挂载使用
 1)mount -t ceph 192.168.4.11:6789:/ /mnt/ceph -o name=admin,secret=AQC2tElgvRqyKhAA/RvZdiFGfZ5hcUsWB6gRMQ=
=
  //#注意:-t(type)指定文件系统类型,文件系统类型为ceph
  #-o(option)指定mount挂载命令的选项,选项包括name账户名和secret密码
  #192.168.4.11为MON节点的IP(不是MDS节点),6789是MON服务的端口号
  #admin是用户名,secret后面是密钥
  #密钥可以在/etc/ceph/ceph.client.admin.keyring中找到
报错集:
1:密码不对 //坏的超级块,block
2:用户名不对,权限不足 //(perrmission deined)
3:ecph-mds.target服务没有启动 //(设备不存在,don`t exits)
4:服务有,没有文件系统。 //卡死

原文地址:https://www.cnblogs.com/ahaocloud/p/14588659.html