使用node1作为部署主机
[root@node1 ceph-cluster]# ls
ceph.conf ceph-deploy-ceph.log ceph.mon.keyring[root@node1 ceph-cluster]# ceph-deploy install node1 node2 node3
[root@node1 ceph-cluster]# ceph-deploy mon create-initial
创建OSD
创建日志盘(使用vdb做日志盘,分别在node1 node2 node3 主机上执行如下命令 )
parted /dev/vdb mklabel gpt //使用gpt模式分区
parted /dev/vdb mkpart primary 1M 50% //各分一半
parted /dev/vdb mkpart primary 50% 100%
]# chown ceph:ceph /dev/vdb*
]# echo "chown ceph.ceph /dev/vdb*" >> /etc/rc.local
]# chmod +x /etc/rc.d/rc.local
//设置属主属组为ceph ,设为开机启动命令,否则重启后会失效
在管理主机node1初始化存储盘 vdc 和 vdd
node1]# cd /root/ceph-cluster/
node1]# ceph-deploy disk zap node1:vdc node1:vdd
node1]# ceph-deploy disk zap node2:vdc node2:vdd
node1]# ceph-deploy disk zap node3:vdc node3:vdd
在管理主机node1上,创建osd设备
node1]#
ceph-deploy osd create node1:vdc:/dev/vdb1 node1:vdd:/dev/vdb2
//创建一个储存设备,vdc,vdb为集群提供储存空间,vdb1提供JOURNAL日志,一个存储设备对应一个日志设备,日志需要SSD硬盘,不需要很大
node1]#
ceph-deploy osd create node2:vdc:/dev/vdb1 node2:vdd:/dev/vdb2
node1]#
ceph-deploy osd create node3:vdc:/dev/vdb1 node3:vdd:/dev/vdb2
3查看集群状态
[root@node1 ~]# ceph -s
cluster ad2bf018-8b58-4289-97db-406a365a9289
health HEALTH_OK
monmap e1: 3 mons at
{node1=192.168.4.51:6789/0,node2=192.168.4.52:6789/0,node3=192.168.4.53:6789/0}
election epoch 6, quorum 0,1,2 node1,node2,node3
osdmap e33: 6 osds: 6 up, 6 in
flags sortbitwise
pgmap v82: 64 pgs, 1 pools, 0 bytes data, 0 objects
202 MB used, 61171 MB / 61373 MB avail
64 active+clean
[root@node1 ~]#
查看相关服务的状态信息:
node1]# systemctl status ceph\*.service ceph\*.target
查看工作目录下的文件列表
[root@node1 ~]# ls /root/ceph-cluster/
ceph.bootstrap-mds.keyring ceph.bootstrap-rgw.keyring ceph.conf
ceph.mon.keyring
ceph.bootstrap-osd.keyring ceph.client.admin.keyring ceph-deploy-ceph.lo
==================================================================
Ceph块设备也叫做RADOS块设备---RADOS block device:RDB
RBD驱动已经很好的集成在linux内核中了
RBD提供了企业功能,如快照,COW克隆等
RBD还支持内存缓存,从而能够大大提高性能
部署ceph块存储集群
[root@node1 ~]# ceph osd lspools 查看已有的存储池,默认存在的
0 rbd,
[root@node1 ~]# rbd list 查看存储池里的镜像列表,还没创建so 为空
创建新镜像
[root@node1 ~]# rbd create domo-image --image-feature layering --size 10G
//domo-image是镜像名
[root@node1 ~]# rbd create rbd/image --image-feature layering --size 15G
//也可以镜像名前面定义资源池名为rbd的池,不加默认为rbd池
[root@node1 ~]# rbd list
domo-image
image
[root@node1 ~]# rbd info domo-image
rbd image 'domo-image':
size 10240 MB in 2560 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.1052238e1f29
format: 2
features: layering
flags:
查看镜像大小
[root@node1 ~]# rbd info image
rbd image 'image':
size 15360 MB in 3840 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.10662ae8944a
format: 2
features: layering
flags:
调整镜像大小:
把image容量的缩小到1G
[root@node1 ~]# rbd resize --size 1G image --allow-shrink
Resizing image: 100% complete...done.
[root@node1 ~]#
[root@node1 ~]# rbd info image
rbd image 'image':
size 1024 MB in 256 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.10662ae8944a
format: 2
features: layering
flags:
//缩小需要加 --allow-shrink
把image容量的扩大到4G
[root@node1 ~]# rbd resize --size 4G image
Resizing image: 100% complete...done.
[root@node1 ~]# rbd info image
rbd image 'image':
size 4096 MB in 1024 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.10662ae8944a
format: 2
features: layering
flags:
=====================================================
在存储服务器本机使用镜像存储文件的步骤:
[root@node1 ~]# rbd list
domo-image
image
[root@node1 ~]# rbd map domo-image //把镜像映射到本机
/dev/rbd0
[root@node1 ~]# ls /dev/rbd0 // 会多个rbd0
/dev/rbd0
[root@node1 ~]# mkdir /notedir //创建挂载目录
[root@node1 ~]# mkfs.ext4 /dev/rbd0 //格式化
[root@node1 ~]# blkid /dev/rbd0 // 查看格式化信息
/dev/rbd0: UUID="c4b13e97-49ac-407c-8045-477a91fe6550" TYPE="ext4"
[root@node1 ~]# mount /dev/rbd0 /notedir/ //挂载
[root@node1 ~]# echo 123 > /notedir/test.txt //存储一个文件,确认可用
[root@node1 ~]# cat /notedir/test.txt
123
客户端通过KRBD访问
配置:在客户端50主机client, 使用ceph镜像存储文件的配置步骤:
1 安装软件包
【root@client ~]# yum -y install ceph-common
[root@client ~]# ls /etc/ceph/ //会出现drbdmap文件
rbdmap
2 从管理主机上拷贝集群配置文件
[root@client ~]# scp 192.168.4.51:/etc/ceph/ceph.conf /etc/ceph/
root@192.168.4.51's password:
ceph.conf 100% 235 441.4KB/s 00:00
[root@client ~]# ls /etc/ceph/
ceph.conf rbdmap
3 从管理主机上拷贝连接集群密钥文件
[root@client ~]# scp 192.168.4.51:/etc/ceph/ceph.client.admin.keyring /etc/ceph/
[root@client ~]# ls /etc/ceph/
ceph.client.admin.keyring ceph.conf rbdmap
[root@client ~]#
[root@client ~]# rbd list //查看ceph集群镜像列表
domo-image
image
[root@client ~]# rbd map image //把镜像文件映射到本机
/dev/rbd0
[root@client ~]# ls /dev/rbd0
/dev/rbd0
[root@client ~]#
[root@client ~]# mkdir /studayup //创建文件夹,挂载用
[root@client ~]# mkfs.ext4 /dev/rbd0 //格式化
[root@client ~]# blkid /dev/rbd0
/dev/rbd0: UUID="f4edce49-4dae-4a5e-a63d-fe55a30ac158" TYPE="ext4"
[root@client ~]#
[root@client ~]# mount /dev/rbd0 /studayup/ //挂载
[root@client ~]#
[root@client ~]# echo 123456 > /studayup/test2.txt
[root@client ~]#
[root@client ~]# cat /studayup/test2.txt
123456
====================================================
在管理主机上给被挂载的镜像创建快照 (COW技术 Copy Online Write)
[root@node1 ~]# rbd list 查看已有的镜像
domo-image
image
[root@node1 ~]# rbd snap ls image //查看image镜像是否有快照
给image镜像创建快照 名称叫 image-snap1
[root@node1 ~]# rbd snap create image --snap image-snap1
[root@node1 ~]# rbd snap ls image // 再次查看
SNAPID NAME SIZE
4 image-snap1 4096 MB
使用快照恢复 如果误删除了文件,可以恢复
[root@client ~]# cat /studayup/test2.txt
123456
[root@client ~]# rm -rf /studayup/test2.txt
[root@client ~]# cat /studayup/test2.txt
cat: /studayup/test2.txt: //内容被删了
在管理主机上使用快照恢复误删除的文件
[root@node1 ~]# rbd snap rollback image --snap image-snap1
Rolling back to snapshot: 100% complete...done.
客户端卸载当前挂载的image镜像 后 再次挂载image 就可看到恢复的文件
[root@client ~]# cat /studayup/test2.txt
cat: /studayup/test2.txt:
[root@client ~]# umount /studayup/
[root@client ~]# mount /dev/rbd0 /studayup/
[root@client ~]# ls /studayup/
lost+found test2.txt
[root@client ~]# cat /studayup/test2.txt
123456
======================================================
快照克隆:(在管理主机上操作)
对快照文件写保护
[root@node1 ~]# rbd snap protect image --snap image-snap1
对image镜像的快照image-snap1 做克隆 名称叫image-clone
[root@node1 ~]# rbd clone image --snap image-snap1 image-clone --image-feature layering
[root@node1 ~]# rbd info image-clone1 //查看克隆文件的信息 若没有报错
rbd: error opening image image-clone1: (2) No such file or directory
[root@node1 ~]# rbd info image-clone //查看克隆文件的信息
rbd image 'image-clone':
size 4096 MB in 1024 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.10653d1b58ba
format: 2
features: layering
flags:
parent: rbd/image@image-snap1 // 显示克隆文件对应的镜像信息
overlap: 4096 MB
[root@node1 ~]# rbd info image-clone // 恢复前查看
rbd image 'image-clone':
size 4096 MB in 1024 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.10653d1b58ba
format: 2
features: layering
flags:
parent: rbd/image@image-snap1
overlap: 4096 MB
[root@node1 ~]# rbd flatten image-clone //使用克隆文件恢复image镜像
Image flatten: 100% complete...done.
[root@node1 ~]# rbd info image-clone //恢复后查看
rbd image 'image-clone':
size 4096 MB in 1024 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.10653d1b58ba
format: 2
features: layering // 查看克隆文件的对应的镜像信息 信息没有了
flags:
//否则无法删除原名的image镜像文件
=========================================================
配置 客户端不使用ceph集群的块设备存储数据的步骤:
1. 撤销镜像映射 (要先卸载挂载的/dev/rbdx 设备)
[root@client ~]# umount /studayup/ //取消挂载点
[root@client ~]# rbd showmapped //查看映射
id pool image snap device
0 rbd image - /dev/rbd0
[root@client ~]# rbd unmap /dev/rbd/rbd/image //取消RBD磁盘映射
[root@client ~]# rbd showmapped //再次查看
===================================================
在管理主机上删除创建的镜像(如果镜像有快照的话要先删除快照文件)
[root@node1 ~]# rbd snap unprotect image --snap image-snap1 // 取消保护
[root@node1 ~]# rbd snap rm image --snap image-snap1 // 删除快照
[root@node1 ~]# rbd list
domo-image
image
image-clone
[root@node1 ~]# rbd rm image //删除image镜像
Removing image: 100% complete...done.
[root@node1 ~]# rbd list
domo-image
image-clone