#本文欢迎转载,转载请注明出处和作者。
上一篇将Ceph搭建好了,Ceph是分布式存储,可以作为分布式块存储、分布式文件存储、分布式对象存储使用。
1、采用fuse作为文件存储使用
客户端安装ceph-fuse(这里直接用ceph-admin测试)
sudo yum install -y ceph-fuse
创建挂载目录
sudo mkdir /cephfs
复制配置文件
将ceph配置文件ceph.conf从管理节点copy到client节点(10.1.30.43为管理节点)
rsync -e "ssh -p22" -avpgolr root@10.1.30.43:/etc/ceph/ceph.conf /etc/ceph/
或者
rsync -e "ssh -p22" -avpgolr root@10.1.30.43:/home/cephuser/cluster/ceph.conf /etc/ceph/ #两个路径下的文件内容一样
复制密钥
将ceph的ceph.client.admin.keyring从管理节点copy到client节点
rsync -e "ssh -p22" -avpgolr root@10.1.30.43:/etc/ceph/ceph.client.admin.keyring /etc/ceph/
或者
rsync -e "ssh -p22" -avpgolr root@10.1.30.43:/home/cephuser/cluster/ceph.client.admin.keyring /etc/ceph/
查看ceph授权
ceph auth list
将ceph集群存储挂载到客户机的/cephfs目录下,可以在root下执行
ceph-fuse -m 10.1.30.43:6789 /cephfs
查看目录文件系统与目录大小
df -h
由上面可知,已经成功挂载了ceph存储,三个osd节点,每个节点有15G(在节点上通过"lsblk"命令可以查看ceph data分区大小),一共45G!
取消ceph存储的挂载
umount /cephfs
2、采用rbd接口作为块存储使用
2.1创建块设备
rbd create rbd/myrbd1 --size 102400
其中rbd为pool的名字,后面为块设备的名字,如果没有pool名字,就会放在叫rbd的这个默认pool。
2.2查看块设备
rbd ls -p rbd
2.3挂载块设备
rbd map rbd/myrbd1
如果报rbd: sysfs write failed
RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable".的错,是因为当前OS的内核不支持某些feature。
解决方法:
rbd info rbd/myrbd1rbd image 'myrbd':size 1024 MB in 256 objectsorder 22 (4096 kB objects)block_name_prefix: rbd_data.102c6b8b4567format: 2features: layering, exclusive-lock, object-map, fast-diff, deep-flattenflags:
可以看到features那里有一大堆特性
解决方法1:disabled不需要的特性
rbd feature disable rbd/myrbd1 exclusive-lock object-map fast-diff deep-flatten
解决方法2:
rbd create rbd/myrbd1 --size 1024 --image-feature layering
解决方法3:在创建rbd的ceph主机修改配置文件
/etc/ceph/ceph.conf在global section下
rbd_default_features = 1
已创建镜像需要重新创建,重新执行rbd map myrbd,成功会有输出
2.4将块设备格式化并且挂载到文件系统
mkfs.xfs /dev/rbd0mkdir -p /mnt/ceph_rbdmount /dev/rbd0 /mnt/ceph_rbd
3 、将Ceph当作对象存储使用
3.1服务端配置
Ceph 对象存储使用 Ceph 对象网关守护进程( radosgw ),它是个与 Ceph 存储集成的 FastCGI 模块。Ceph RGW的FastCGI支持多种Web服务器作为前端,而Ceph从v0.8开始,使用内嵌Civetweb作为WebServer,无需额外安装nginx或者apache作web服务。
修改yum文件,并且安装网关服务。
vi /etc/yum.repos.d/CentOS-Base.repo [centosplus] enabled=1
安装rgw
ceph-deploy install --rgw ceph-node1
创建网关实例
cd /home/cephuser/clusterceph-deploy admin ceph-node1ceph-deploy rgw create ceph-node1
一旦网关开始运行,可以通过7480端口访问尝试
创建账号
radosgw-admin user create --uid="testuser" --display-name="First User"
自动返回如下
使用查看命令也能再次看到上述信息
radosgw-admin user info --uid=testuser
3.2客户端调用
客户端安装软件
yum install s3cmd
修改配置,需要在root下运行
s3cmd --configure
提示需要输入accesskey与sercetkey,粘贴上面截图内容。
Access Key:D4P2850KVJF7LETQ24E6Secret Key:gbfa6cgvLANWVPDVkUKyLIF6FQNZ4Olt7EF9KF92Default Region [US]:默认 S3 Endpoint []: 10.1.30.37:7480[%(bucket)s.]: %(bucket)s.10.1.30.37:7480Use HTTPS protocol [Yes]: NTest access with supplied credentials? [Y/n] YRetry configuration[Y/n]:N Save settings? [y/N] Y
其他选项直接回车即可,不要修改。设置完成后,运行
s3cmd ls
如果报错如下,则证明配置文件里面有问题
Invoked as: /usr/bin/s3cmd ls Problem: error: [Errno 111] Connection refused
解决办法:
vi ~/.s3cfg
检查5个参数
access_key = ED4P2850KVJF7LETQ24E6 cloudfront_host = 10.1.30.37:7480host_base = 10.1.30.37:7480host_bucket = %(*)s.10.1.30.37:7480secret_key = gbfa6cgvLANWVPDVkUKyLIF6FQNZ4Olt7EF9KF92
然后重新s3cmd测试,如果没有报错则成功。
s3cmd ls
创建名叫my_bucket的数据目录(类似创建文件夹,但是注意,bucket是对象存储的概念,不是文件夹)
s3cmd mb s3://my_bucket
put上传对象到具体目录
sudo s3cmd put /var/log/messages s3://my_bucket/log/
查看对象
s3cmd ls s3://my_bucket/log/
get下载对象
s3cmd get s3://my_bucket/log/messages /tmp/
删除对象
s3cmd del s3://my_bucket/log/messages
删除bucket
s3cmd rb s3://my_bucket/
4、Ceph的故障冗余
当有一半以上的OSD节点挂掉后,远程客户端挂载的Ceph存储就会使用异常了,即暂停使用。比如本案例中有3个OSD节点,当其中一个OSD节点挂掉后(比如宕机),客户端挂载的Ceph存储使用正常;但当有2个OSD节点挂掉后,客户端挂载的Ceph存储就不能正常使用了(表现为Ceph存储目录下的数据读写操作一直卡着状态),当OSD节点恢复后,Ceph存储也会恢复正常使用。OSD节点宕机重新启动后,osd程序会自动起来(通过监控节点自动起来)。
ceph搭建_【实战演练】基于各种存储模拟器与软件存储的存储实验07-Ceph分布式存储的3种存储类型使用方法...