架构师的成长之路初片~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\node2\node3里面
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:服务有,没有文件系统。 //卡死