文章目录
第一:ceph介绍
组件名 | 解释 |
---|---|
RADOSGW | 对象网关守护程序 |
RADOS | 存储集群 |
Monitor | 监视器,RADOS的组件,为何整个ceph集群的全局状态 |
OSD | Object Storage Device,RADOS的组件,用于存储资源,即数据盘(一个磁盘一个OSD进程) |
MDS | 为ceph文件系统存储元数据,他允许客户机挂载任意大小的posix文件系统,不直接提供任何数据,其他块存储,对象存储不需要这东西 |
RBD | 块存储 |
CEPHFS | 文件存储 |
LIBRADOS | 和RADOS 交互的基本库,librados,ceph通过原生协议和RADOS交互 |
第二:角色规划
主机名 | 主机IP | 磁盘配比 | 角色 |
---|---|---|---|
ceph50 | public-ip:192.168.200.50 cluster-ip:192.168.100.50 |
sda,sdb,sdc,sdd sda是系统盘,另外三块数据盘 sdb为ssd,sdc,sdd为hdd |
ceph-deploy,monitor,mgr,osd |
ceph51 | public-ip:192.168.200.51 cluster-ip:192.168.100.51 |
sda,sdb,sdc,sdd sda是系统盘,另外三块数据盘 sdb为ssd,sdc,sdd为hdd |
monitor,mgr,osd |
ceph52 | public-ip:192.168.200.52 cluster-ip:192.168.100.52 |
sda,sdb,sdc,sdd sda是系统盘,另外三块数据盘 sdb为ssd,sdc,sdd为hdd |
monitor,mgr,osd |
第三:ceph存储集群的搭建-略
第四:部署Ceph文件存储
Ceph文件系统至少需要两个RADOS池,一个用于数据,一个用于元数据
A:CephFS需要用到MDS服务,我们将MDS服务部署在集群所有节点上 (只在 ceph50管理节点上执行)
su - ceph
cd ~/my-cluster
ceph-deploy mds create ceph50 ceph51 ceph52
B:在集群管理节点上,创建cephfs存储pool
#创建数据pool,名字叫cephfs_data
ceph osd pool create cephfs_data 128
#创建Metadata池,名字叫cephfs_metadata
ceph osd pool create cephfs_metadata 128
#启用CephFS pool,关联启动
ceph fs new cephfs cephfs_metadata cephfs_data
C:查看mds,存储池pool,CephFS(在ceph50 管理节点上查看,或者ceph集群的web页面查看)
1、[ceph@ceph50 my-cluster]$ ceph mds stat #这里你会看到mds中是一个主,两个备
cephfs:1 {0=ceph50=up:active} 2 up:standby
2、[ceph@ceph50 my-cluster]$ ceph osd pool ls
ssdpool
cephfs_data
cephfs_metadata
3、[ceph@ceph50 my-cluster]$ ceph fs ls
name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
4、[ceph@ceph50 my-cluster]$ ceph -s
cluster:
id: 7d14181a-6159-40d6-9728-e1eb2408d73b
health: HEALTH_OK
services:
mon: 3 daemons, quorum ceph50,ceph51,ceph52 (age 6h)
mgr: ceph50(active, since 5w), standbys: ceph52, ceph51
mds: cephfs:1 {0=ceph50=up:active} 2 up:standby
osd: 9 osds: 9 up (since 5w), 9 in (since 5w)
data:
pools: 3 pools, 384 pgs
objects: 22 objects, 2.2 KiB
usage: 9.1 GiB used, 126 GiB / 135 GiB avail
pgs: 384 active+clean
D:创建用户名为cephfs的用户,并为mon,mds,osd分配权限,并指定pool(可选,因为部署时已经生成了一个admin的key,这里我们新建一个)
在ceph50管理节点上,创建用户cephfs
su - ceph
cd ~/my-cluster
ceph auth get-or-create client.cephfs mon 'allow r' mds 'allow r, allow rw path=/' osd 'allow rw pool=cephfs_data' -o ceph.client.cephfs.keyring
查看内容
[ceph@ceph50 my-cluster]$ cat ceph.client.cephfs.keyring
[client.cephfs]
key = AQApoVJeNB0XOhAA85RBtmHbpptBZ/dEVV9cdA==
在服务器上拷贝到客户端(可以不拷贝到客户机上,客户机挂载时只需使用上面key里面的内容即可)
scp ceph.client.cephfs.keyring root@234.234.234.234:/etc/ceph
第五:通过内核驱动 和 FUSE客户端两种方式挂载cephfs
A:kernel driver挂载,测试内核方式较 fuse方式速率要快一些
#一般Ceph我们都启用了Ceph 认证所有挂载的时候需要name 和secret ceph.client.cephfs.keyring文件信息
检查cephfs服务器是否开启了认证(在ceph管理服务器上执行,即ceph50),cephx表示开启了认证
[ceph@ceph50 my-cluster]$ cat /etc/ceph/ceph.conf | grep auth | grep required
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
获取上一步我们生成的key(在ceph管理服务器上执行,即ceph50)client.后面的是用户名
[ceph@ceph50 my-cluster]$ cat ceph.client.cephfs.keyring
[client.cephfs]
key = AQApoVJeNB0XOhAA85RBtmHbpptBZ/dEVV9cdA==
方式一:在ceph服务端关闭认证的情况如何挂载
挂载
mount -t ceph 192.168.200.50:6789:/ /mnt/cephfs
开机挂载 cat /etc/fstab
192.168.200.50:6789:/ /mnt/cephfs ceph noatime,_netdev 0 2
方式二:在ceph服务端开启认证的情况如何挂载
将cephfs挂载到/mnt/cephfs目录上
[root@localhost ~]# mount -t ceph 192.168.200.50:6789:/ /mnt/cephfs -o name=cephfs,secret=AQApoVJeNB0XOhAA85RBtmHbpptBZ/dEVV9cdA==
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 2.6G 2.2G 399M 85% /
devtmpfs 233M 0 233M 0% /dev
tmpfs 244M 0 244M 0% /dev/shm
tmpfs 244M 29M 216M 12% /run
tmpfs 244M 0 244M 0% /sys/fs/cgroup
/dev/sda1 1014M 159M 856M 16% /boot
tmpfs 49M 0 49M 0% /run/user/0
192.168.200.50:6789:/ 40G 0 40G 0% /mnt/cephfs
如何设置开机挂载cephfs,可以设置挂载多个主机,防止一个挂了影响使用(cat /etc/fstab)
192.168.200.51:6789,192.168.200.50:6789:/ /mnt/cephfs ceph name=cephfs,secret=AQApoVJeNB0XOhAA85RBtmHbpptBZ/dEVV9cdA==,noatime,_netdev 0 2
或者将echo "AQApoVJeNB0XOhAA85RBtmHbpptBZ/dEVV9cdA==" >>/etc/cephfskey #抱歉我没搞成功
有人说是bug,可以看看这篇文章 https://bugzilla.redhat.com/show_bug.cgi?id=1030402 但是我也见人搞成功过,现就这样吧不用这种文件的方式
192.168.200.50:6789:/ /mnt/cephfs ceph name=cephfs,secretfile=/etc/cephfskey,noatime,_netdev 0 2
B:fuse挂载,这种适用于内核低于2.6.34的
在客户端机器上,配置nautilus版本的软件源
echo '#阿里ceph源
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/
gpgcheck=0
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/
gpgcheck=0
[ceph-source]
name=ceph-source
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/SRPMS/
gpgcheck=0
#'>/etc/yum.repos.d/ceph.repo
安装软件
yum install ceph-fuse -y
把ceph 服务器上生成的cephfskey复制到客户端
[root@localhost ~]# cat ceph.client.cephfs.keyring
[client.cephfs]
key = AQApoVJeNB0XOhAA85RBtmHbpptBZ/dEVV9cdA==
挂载
[root@localhost ~]# ceph-fuse --keyring /root/ceph.client.cephfs.keyring --name client.cephfs -m 192.168.200.50:6789 /mnt/cephfs/
2020-02-24 19:14:08.116667 7efed9c23f00 -1 did not load config file, using default settings.
ceph-fuse[5504]: starting ceph client
2020-02-24 19:14:08.152631 7efed9c23f00 -1 init, newargv = 0x56257ca8a720 newargc=11
ceph-fuse[5504]: starting fuse
不指定key文件挂载(默认回去/etc/ceph/目录下找 对应的用户名key文件)
[root@localhost ceph]# pwd
/etc/ceph
[root@localhost ceph]# ls
ceph.client.cephfs.keyring ceph.conf
[root@localhost ceph]# ceph-fuse -m 192.168.200.50:6789 /mnt/cephfs/ --name client.cephfs
ceph-fuse[5962]: starting ceph client
2020-02-24 20:17:47.815047 7f32de5a8f00 -1 init, newargv = 0x5562b19447e0 newargc=11
ceph-fuse[5962]: starting fuse
开机挂载(在客户机上把ceph的服务器地址写进去,以及上面的key文件)
[root@localhost ceph]# cat /etc/ceph/ceph.client.cephfs.keyring
[client.cephfs]
key = AQApoVJeNB0XOhAA85RBtmHbpptBZ/dEVV9cdA==
[root@localhost ceph]# cat /etc/ceph/ceph.conf
mon_host = 192.168.200.50,192.168.200.51,192.168.200.52
#id=cephfs是用户名,fuse.ceph是固定写法
echo "id=cephfs /mnt/cephfs fuse.ceph _netdev,defaults 0 0" >> /etc/fstab
C:windows挂载软件
https://github.com/ksingh7/ceph-cookbook/tree/master/ceph-dokan
第六:将cephfs导出为nfs,以满足无法直接使用ceph的客户端对ceph存储的使用 ,用不到就不弄了
具体可以 参考这篇文章:https://www.jianshu.com/p/6b68c1a57268
如果文章对你有帮助,欢迎点击上方按钮打赏作者
暂无评论