云计算实验4-Ceph基本操作

ceph 简介
Ceph是一个可靠地、自动重均衡、自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储、块设备存储和文件系统服务。在虚拟化领域里,比较常用到的是Ceph的块设备存储,比如在OpenStack项目里,Ceph的块设备存储可以对接OpenStack的cinder后端存储、Glance的镜像存储和虚拟机的数据存储,比较直观的是Ceph集群可以提供一个raw格式的块存储来作为虚拟机实例的硬盘。
Ceph相比其它存储的优势点在于它不单单是存储,同时还充分利用了存储节点上的计算能力,在存储每一个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡,同时由于Ceph的良好设计,采用了CRUSH算法、HASH环等方法,使得它不存在传统的单点故障的问题,且随着规模的扩大性能并不会受到影响。
最底层的RADOS提供了对象存储的功能,是ceph的根基所在。所有的其他功能都是在RADOS之上构建的。LIBRADOS看名字就能猜到,它提供了一系列语言的接口,可以直接访问RADOS。RADOSGW基于LIBRADOS实现了REST的接口并兼容S3和Swift。RBD也基于LIBRADOS提供了块存储。最后是CEPH FS直接基于RADOS实现了文件存储系统。
实验1. 基于docker的ceph基本操作实验
1. 启动ceph测试环境
启动docker
1 | # service docker start |
运行结果:
导入镜像
1 | # docker load < /root/ceph.tar |
运行结果:
查看IP地址及网络
1 | # ifconfig |
这里假设IP地址为 172.17.0.2,网络为 172.17.0.0/16
运行结果:
启动 ceph测试环境(IP地址和网络需要替换为实际的值)
1 | # docker run -d --net=host -v /etc/ceph:/etc/ceph -e MON_IP=172.17.0.2 -e CEPH_PUBLIC_NETWORK=172.17.0.0/16 ceph/demo |
2. cephfs挂载
首先查看 key
1 | # cat /etc/ceph/ceph.client.admin.keyring |
挂载cephfs(IP地址和secret替换为上面实际输出的内容)
1 | # mount -t ceph -o name=admin,secret=AQBni81cnAC9GRAAzY2I9Wz+5gMdcY4ceGBcyA== 172.17.0.2:/ /mnt/cephfs |
查看挂载结果
1 | # mount |
运行结果:
3. rbd方式
还有一种方式是作为rbd来加载。rbd的模型:最外层是pool,相当于一块磁盘,默认的pool名字叫做rbd。每个pool里面可以有多个image,相当于文件夹。每个image可以映射成一个块设备,有了设备就可以加载它。
首先创建一个名为 test_pool 的 pool :
1 | # ceph osd pool create test_pool 128 |
128代表placement-group的数量。每个pg都是一个虚拟节点,将自己的数据存在不同的位置。这样一旦存储出现问题,pg就会选择新的存储,从而保证了自动高可用。运行这个命令就可以看到现在系统中的所有pool:
1 | # ceph osd lspools |
然后在 test_pool 这个pool里创建一个名为 test_image 的image:
1 | # rbd create test_pool/test_image --size 128 |
size的单位是MB,所以这个 test_image image的大小为128M。运行下列命令可以看到 test_pool 的pool中的所有 test_image 和查看 test_image 的详细信息:
1 | # rbd ls test_pool |
运行结果: