欢迎光临散文网 会员登陆 & 注册

ceph安装及教程

2023-02-17 10:07 作者:bili_39183997178  | 我要投稿

ceph

•             ceph被称作面向未来的存储

•             中文手册:

–            https://access.redhat.com/documentation/zh-cn/red_hat_ceph_storage/5/html/architecture_guide/index

–            http://docs.ceph.org.cn/

•             ceph可以实现的存储方式:

–            块存储:提供像普通硬盘一样的存储,为使用者提供“硬盘”

–            文件系统存储:类似于NFS的共享方式,为使用者提供共享文件夹

–            对象存储:像百度云盘一样,需要使用单独的客户端

•             ceph还是一个分布式的存储系统,非常灵活。如果需要扩容,只要向ceph集中增加服务器即可。

•             ceph存储数据时采用多副本的方式进行存储,生产环境下,一个文件至少要存3份。ceph默认也是三副本存储。

ceph的构成

•             Ceph OSD 守护进程: Ceph OSD 用于存储数据。此外,Ceph OSD 利用 Ceph 节点的 CPU、内存和网络来执行数据复制、纠删代码、重新平衡、恢复、监控和报告功能。存储节点有几块硬盘用于存储,该节点就会有几个osd进程。

•             Ceph Mon监控器: Ceph Mon维护 Ceph 存储集群映射的主副本和 Ceph 存储群集的当前状态。监控器需要高度一致性,确保对Ceph 存储集群状态达成一致。维护着展示集群状态的各种图表,包括监视器图、 OSD 图、归置组( PG )图、和 CRUSH 图。

•             MDSs: Ceph 元数据服务器( MDS )为 Ceph 文件系统存储元数据。

•             RGW:对象存储网关。主要为访问ceph的软件提供API接口。

搭建ceph集群

•             节点准备

主机名

IP地址

node1

192.168.4.11/24

node2

192.168.4.12/24

node3

192.168.4.13/24

client1

192.168.4.10/24

# 创建4台虚拟机
[root@zzgrhel8 ~]# clone-vm7

•             关机,为node1-node3各额外再添加2块20GB的硬盘

# 查看添加的硬盘,注意硬盘名字
[root@node1 ~]# lsblk
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  30G  0 disk
└─vda1 253:1    0  30G  0 part /
vdb    253:16   0  20G  0 disk
vdc    253:32   0  20G  0 disk

•             配置yum源。除了系统yum源以外,还需要配置ceph的yum源

# 在真机上提供yum源。真机务必关掉防火墙
[root@zzgrhel8 ~]# yum install -y vsftpd
[root@zzgrhel8 ~]# systemctl start vsftpd
[root@zzgrhel8 ~]# mkdir /var/ftp/ceph
[root@zzgrhel8 ~]# cp /linux-soft/2/ceph10.iso /iso/
[root@zzgrhel8 ~]# vim /etc/fstab   # 追加一行如下
/iso/ceph10.iso /var/ftp/ceph   iso9660 defaults,loop   0 0
[root@zzgrhel8 ~]# mount -a
[root@zzgrhel8 ~]# df -h /var/ftp/ceph/
文件系统        容量  已用  可用 已用% 挂载点
/dev/loop3      284M  284M     0  100% /var/ftp/ceph
[root@zzgrhel8 ~]# ls /var/ftp/ceph/
EULA  MON  README                      Tools
GPL   OSD  RPM-GPG-KEY-redhat-release  TRANS.TBL


# 在node1-3节点上配置yum
[root@node1 ~]# cat /etc/yum.repos.d/local.repo
[local_repo]
name=CentOS-$releasever - Base
baseurl=ftp://192.168.4.254/centos-1804
enabled=1
gpgcheck=0

[root@node1 ~]# vim /etc/yum.repos.d/ceph.repo
[osd]
name=ceph osd
baseurl=ftp://192.168.4.254/ceph/OSD
enabled=1
gpgcheck=0

[mon]
name=ceph mon
baseurl=ftp://192.168.4.254/ceph/MON
enabled=1
gpgcheck=0

[tools]
name=ceph tools
baseurl=ftp://192.168.4.254/ceph/Tools
enabled=1
gpgcheck=0

[root@node1 ~]# yum repolist
... ...
repolist: 10,013

[root@node1 ~]# scp /etc/yum.repos.d/ceph.repo 192.168.4.12:/etc/yum.repos.d/
[root@node1 ~]# ^12^13
[root@node1 ~]# ^13^10

•             各节点务必关闭selinux和防火墙

•             集群安装前的准备工作

# ceph为我们提供了一个ceph-deploy工具,可以在某一节点上统一操作全部节点
# 将Node1作为部署节点,将来的操作都在node1上进行。这样,需要node1能够免密操作其他主机
[root@node1 ~]# ssh-keygen    # 生成密钥对
[root@node1 ~]# for i in {10..13}
> do
> ssh-copy-id 192.168.4.$i
> done


# 在所有的主机上配置名称解析。注意,解析的名字必须是该机器的主机名
[root@node1 ~]# vim /etc/hosts   # 增加4行
... ...
192.168.4.10    client1
192.168.4.11    node1
192.168.4.12    node2
192.168.4.13    node3
[root@node1 ~]# for i in 10 12 13
> do
> scp /etc/hosts 192.168.4.$i:/etc/
> done

•             安装集群

# 在3个节点上安装软件包
[root@node1 ~]# for i in node{1..3}
> do
> ssh $i yum install -y ceph-mon ceph-osd ceph-mds ceph-radosgw
> done


# 配置client1为ntp服务器
[root@client1 ~]# yum install -y chrony
[root@client1 ~]# vim /etc/chrony.conf
 29 allow 192.168.4.0/24    # 授权192.168.4.0/24可以时钟同步
 33 local stratum 10   # 即使没有从一个源同步时钟,也为其他主机提供时间
[root@client1 ~]# systemctl restart chronyd

# 配置node1-3成为client1的NTP客户端
[root@node1 ~]# for i in node{1..3}
> do
> ssh $i yum install -y chrony
> done
[root@node1 ~]# vim /etc/chrony.conf  # 只改第7行
  7 server 192.168.4.10 iburst   # 替换gateway
[root@node1 ~]# for i in node{2..3}
> do
> scp /etc/chrony.conf $i:/etc/
> done
[root@node1 ~]# for i in node{1..3}
> do
> ssh $i systemctl restart chronyd
> done

# 验证时间是否同步  client1前面有^*表示同步成功
[root@node1 ~]# chronyc sources -v
... ...
^* client1                      10   6    17    40  -4385ns[-1241us] +/-  162us



# 在node1上安装ceph-deploy部署工具
[root@node1 ~]# yum install -y ceph-deploy
# 查看使用帮助
[root@node1 ~]# ceph-deploy --help
[root@node1 ~]# ceph-deploy mon --help   # 查看mon子命令的帮助

# 创建ceph-deploy工作目录
[root@node1 ~]# mkdir ceph-cluster
[root@node1 ~]# cd ceph-cluster

# 创建一个新的集群。
[root@node1 ceph-cluster]# ceph-deploy new node{1..3}
[root@node1 ceph-cluster]# ls
ceph.conf  ceph-deploy-ceph.log  ceph.mon.keyring
[root@node1 ceph-cluster]# tree .
.
├── ceph.conf               # 集群配置文件
├── ceph-deploy-ceph.log    # 日志文件
└── ceph.mon.keyring        # 共享密钥

# 开启分层快照功能。
[root@node1 ceph-cluster]# vim ceph.conf   # 尾部追加一行如下
rbd_default_features = 1

# 初始化monitor
[root@node1 ceph-cluster]# ceph-deploy mon create-initial

# 如果安装过程中出现keyring...这种报错,可以试着执行以下命令:
[root@node1 ceph-cluster]# ceph-deploy gatherkeys node{1..3}

# 如果安装错误,可以清理数据后,重新执行初始化。清理数据命令:
[root@node1 ceph-cluster]# ceph-deploy purge node1
[root@node1 ceph-cluster]# ceph-deploy purge node2
[root@node1 ceph-cluster]# ceph-deploy purge node3

[root@node1 ceph-cluster]# systemctl status ceph-mon*
● ceph-mon@node1.service .. ..
[root@node2 ~]# systemctl status ceph*
● ceph-mon@node2.service ... ...
[root@node3 ~]# systemctl status ceph*
● ceph-mon@node3.service ... ...
# 注意:这些服务在30分钟之内只能启动3次,超过报错。

# 查看集群状态
[root@node1 ceph-cluster]# ceph -s
     health HEALTH_ERR   # 因为还没有硬盘,所以状态是HEALTH_ERR


# 创建OSD
[root@node1 ceph-cluster]# ceph-deploy disk --help
# 初始化各主机的硬盘。vmware应该是sdb和sdc
[root@node1 ceph-cluster]# ceph-deploy disk zap node1:vdb node1:vdc
[root@node1 ceph-cluster]# ceph-deploy disk zap node2:vdb node2:vdc
[root@node1 ceph-cluster]# ceph-deploy disk zap node3:vdb node3:vdc

# 创建存储空间。ceph会硬盘分为两个分区,一个分区大小为5GB,用于保存ceph的内部资源;另一个分区是剩余全部空间
[root@node1 ceph-cluster]# ceph-deploy osd --help
[root@node1 ceph-cluster]# ceph-deploy osd create node1:vd{b,c}
[root@node1 ceph-cluster]# lsblk
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  30G  0 disk
└─vda1 253:1    0  30G  0 part /
vdb    253:16   0  20G  0 disk
├─vdb1 253:17   0  15G  0 part /var/lib/ceph/osd/ceph-0
└─vdb2 253:18   0   5G  0 part
vdc    253:32   0  20G  0 disk
├─vdc1 253:33   0  15G  0 part /var/lib/ceph/osd/ceph-1
└─vdc2 253:34   0   5G  0 part
# 将会出现2个osd进程,因为有两块硬盘用于ceph
[root@node1 ceph-cluster]# systemctl status ceph-osd*

# 继续初始化其他节点的OSD
[root@node1 ceph-cluster]# ceph-deploy osd create node2:vd{b,c}
[root@node1 ceph-cluster]# ceph-deploy osd create node3:vd{b,c}

# 查看集群状态
[root@node1 ceph-cluster]# ceph -s
     health HEALTH_OK     # 状态是HEALTH_OK表示一切正常

实现块存储

•             块设备存取数据时,可以一次存取很多。字符设备只能是字符流

[root@node1 ceph-cluster]# ll /dev/vda
brw-rw---- 1 root disk 253, 0 11月  4 10:15 /dev/vda
# b表示block,块设备
[root@node1 ceph-cluster]# ll /dev/tty
crw-rw-rw- 1 root tty 5, 0 11月  4 10:54 /dev/tty
# c表示character,字符设备

•             块存储,就是可以提供像硬盘一样的设备。使用块存储的节点,第一次连接块设备,需要对块设备进行分区、格式化,然后挂载使用。

•             ceph提供存储时,需要使用存储池。为了给客户端提供存储资源,需要创建名为存储池的容器。存储池类似于逻辑卷管理中的卷组。卷组中包含很多硬盘和分区;存储池中包含各节点上的硬盘。

# ceph默认有一个名为rbd的存储池,其编号为0
[root@node1 ceph-cluster]# ceph osd lspools
0 rbd,

# 查看存储池大小
[root@node1 ceph-cluster]# ceph df
GLOBAL:
    SIZE       AVAIL      RAW USED     %RAW USED
    92093M     91889M         203M          0.22
POOLS:
    NAME     ID     USED     %USED     MAX AVAIL     OBJECTS
    rbd      0        16         0        30629M           0

# 查看存储池rbd存储数据时,保存的副本数量
[root@node1 ceph-cluster]# ceph osd pool get rbd size
size: 3

# 在默认存储池中,创建一个名为demo-image大小为10G的镜像,提供给客户端使用
# 镜像相当于逻辑卷管理中的lv
[root@node1 ceph-cluster]# rbd create demo-image --size 10G
# 查看默认存储池中的镜像
[root@node1 ceph-cluster]# rbd list
demo-image
# 查看demo-image的详细信息
[root@node1 ceph-cluster]# rbd info demo-image
rbd image 'demo-image':
    size 10240 MB in 2560 objects
    order 22 (4096 kB objects)
    block_name_prefix: rbd_data.1035238e1f29
    format: 2
    features: layering
    flags:

# 扩容
[root@node1 ceph-cluster]# rbd resize --size 15G demo-image
Resizing image: 100% complete...done.
[root@node1 ceph-cluster]# rbd info demo-image
rbd image 'demo-image':
    size 15360 MB in 3840 objects

# 缩减
[root@node1 ceph-cluster]# rbd resize --size 7G demo-image --allow-shrink
[root@node1 ceph-cluster]# rbd info demo-image
rbd image 'demo-image':
    size 7168 MB in 1792 objects

客户端使用块设备

•             怎么用?装软件

•             ceph集群在哪?通过配置文件说明集群地址

•             权限。keyring文件

# 安装ceph客户端软件
[root@client1 ~]# yum install -y ceph-common

# 将配置文件和密钥keyring文件拷贝给客户端
[root@node1 ceph-cluster]# scp /etc/ceph/ceph.conf 192.168.4.10:/etc/ceph/
[root@node1 ceph-cluster]# scp /etc/ceph/ceph.client.admin.keyring 192.168.4.10:/etc/ceph/

# 客户端查看镜像
[root@client1 ~]# rbd list
demo-image

# 将ceph提供的镜像映射到本地
[root@client1 ~]# rbd map demo-image
/dev/rbd0
[root@client1 ~]# lsblk
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  30G  0 disk
└─vda1 253:1    0  30G  0 part /
rbd0   252:0    0   7G  0 disk    # 多了一块7GB的硬盘
[root@client1 ~]# ls /dev/rbd0
/dev/rbd0

# 查看映射
[root@client1 ~]# rbd showmapped
id pool image      snap device   
0  rbd  demo-image -    /dev/rbd0

# 使用
[root@client1 ~]# mkfs.xfs /dev/rbd0
[root@client1 ~]# mount /dev/rbd0 /mnt/
[root@client1 ~]# df -h /mnt/
文件系统        容量  已用  可用 已用% 挂载点
/dev/rbd0       7.0G   33M  7.0G    1% /mnt



块存储

# 查看块设备映射信息
[root@client1 ~]# rbd showmapped
id pool image      snap device   
0  rbd  demo-image -    /dev/rbd0
[root@client1 ~]# lsblk
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  30G  0 disk
└─vda1 253:1    0  30G  0 part /
rbd0   252:0    0   7G  0 disk /mnt

# 停用设备
[root@client1 ~]# umount /mnt/
[root@client1 ~]# lsblk
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  30G  0 disk
└─vda1 253:1    0  30G  0 part /
rbd0   252:0    0   7G  0 disk    # 已经卸载

[root@client1 ~]# rbd unmap /dev/rbd0
[root@client1 ~]# lsblk    # /dev/rbd0消失
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  30G  0 disk
└─vda1 253:1    0  30G  0 part /

快照

•             快照可以保存某一时间点时的状态数据

•             希望回到以前的一个状态,可以恢复快照

# 新建名为img1的镜像
[root@node1 ~]# rbd create img1 --size 10G
[root@client1 ~]# rbd list    # 查看镜像名
# 映射为本地硬盘
[root@client1 ~]# rbd map img1
/dev/rbd0
# 格式化后挂载
[root@client1 ~]# mkfs.ext4 /dev/rbd0
[root@client1 ~]# mount /dev/rbd0 /mnt
[root@client ~]# cp /etc/hosts /mnt/
[root@client ~]# ls /mnt/
hosts  lost+found


# 查看img1的快照
[root@node1 ~]# rbd snap ls img1
# 为img1创建名为img1-snap1的快照。
[root@node1 ~]# rbd snap create img1 --snap img1-snap1
[root@node1 ~]# rbd snap ls img1   # 查看镜像的快照
SNAPID NAME          SIZE
     6 img1-snap1 10240 MB

# 删除快照
[root@node1 ~]# rbd snap remove img1 --snap img1-snap1
# 删除镜像,删除前需要在客户端卸载它
[root@client1 ~]# umount /mnt
[root@client1 ~]# rbd unmap /dev/rbd0
[root@node1 ~]# rbd rm img1

•             使用镜像、快照综合示例

# 1. 在rbd存储池中创建10GB的镜像,名为img1
[root@node1 ~]# rbd --help   # 查看子命令
[root@node1 ~]# rbd help create  # 查看子命令create的帮助
[root@node1 ~]# rbd create img1 --size 10G
[root@node1 ~]# rbd list
img1
[root@node1 ~]# rbd info img1
rbd image 'img1':
    size 10240 MB in 2560 objects
    order 22 (4096 kB objects)
    block_name_prefix: rbd_data.1061238e1f29
    format: 2
    features: layering
    flags:


# 2. 在客户端使用镜像img1,将其挂载到/mnt
[root@client1 ~]# rbd list
img1
[root@client1 ~]# rbd map img1
/dev/rbd0
[root@client1 ~]# mkfs.xfs /dev/rbd0
[root@client1 ~]# mount /dev/rbd0 /mnt/
[root@client1 ~]# rbd showmapped
id pool image snap device   
0  rbd  img1  -    /dev/rbd0
[root@client1 ~]# df -h /mnt/
文件系统        容量  已用  可用 已用% 挂载点
/dev/rbd0        10G   33M   10G    1% /mnt


# 3. 向/mnt中写入数据
[root@client1 ~]# cp /etc/hosts /mnt/
[root@client1 ~]# cp /etc/passwd /mnt/
[root@client1 ~]# ls /mnt/
hosts  passwd

# 4. 创建img1的快照,名为img1-sn1
[root@node1 ~]# rbd snap create img1 --snap img1-sn1
[root@node1 ~]# rbd snap ls img1
SNAPID NAME         SIZE
     8 img1-sn1 10240 MB

# 5. 删除/mnt/中的数据
[root@client1 ~]# rm -f /mnt/*

# 6. 通过快照还原数据
[root@client1 ~]# umount /mnt/
[root@client1 ~]# rbd unmap /dev/rbd0
[root@node1 ~]# rbd help snap rollback   # 查看子命令帮助
# 回滚img1到快照img1-sn1
[root@node1 ~]# rbd snap rollback img1 --snap img1-sn1
# 重新挂载
[root@client1 ~]# rbd map img1
/dev/rbd0
[root@client1 ~]# mount /dev/rbd0 /mnt/
[root@client1 ~]# ls /mnt/   # 数据还原完成
hosts  passwd

•             保护快照,防止删除

[root@node1 ~]# rbd help snap protect
# 保护镜像img1的快照img1-sn1
[root@node1 ~]# rbd snap protect img1 --snap img1-sn1
[root@node1 ~]# rbd snap rm img1 --snap img1-sn1   # 不能删

快照克隆

•             不能将一个镜像同时挂载到多个节点,如果这样操作,将会损坏数据

•             如果希望不同的节点,拥有完全相同的数据盘,可以使用克隆技术

•             克隆是基于快照的,不能直接对镜像克隆

•             快照必须是受保护的快照,才能克隆

•             克隆流程


 

•             给多个客户端生成数据相同的数据盘

# 1. 创建名为img2的镜像,大小10GB
[root@node1 ~]# rbd create img2 --size 10G

# 2. 向镜像中写入数据
[root@node1 ~]# rbd map img2
/dev/rbd0
[root@node1 ~]# mkfs.xfs /dev/rbd0
[root@node1 ~]# mount /dev/rbd0 /mnt/
[root@node1 ~]# for i in {1..20}
> do
> echo "Hello World $i" > /mnt/file$i.txt
> done
[root@node1 ~]# ls /mnt/
file10.txt  file15.txt  file1.txt   file5.txt
file11.txt  file16.txt  file20.txt  file6.txt
file12.txt  file17.txt  file2.txt   file7.txt
file13.txt  file18.txt  file3.txt   file8.txt
file14.txt  file19.txt  file4.txt   file9.txt

# 3. 卸载镜像
[root@node1 ~]# umount /mnt/
[root@node1 ~]# rbd unmap /dev/rbd0

# 4. 为img2创建名为img2-sn1快照
[root@node1 ~]# rbd snap create img2 --snap img2-sn1

# 5. 保护img2-sn1快照
[root@node1 ~]# rbd snap protect img2 --snap img2-sn1

# 6. 通过受保护的快照img2-sn1创建克隆镜像
[root@node1 ~]# rbd clone img2 --snap img2-sn1 img2-sn1-1 --image-feature layering
[root@node1 ~]# rbd clone img2 --snap img2-sn1 img2-sn1-2 --image-feature layering
# 7. 查看创建出来的、克隆的镜像
[root@node1 ~]# rbd list
img1
img2
img2-sn1-1
img2-sn1-2

# 8. 不同的客户端挂载不同的克隆镜像,看到的是相同的数据
[root@client1 ~]# rbd map img2-sn1-1
/dev/rbd1
[root@client1 ~]# mkdir /data
[root@client1 ~]# mount /dev/rbd1 /data
[root@client1 ~]# ls /data
file10.txt  file15.txt  file1.txt   file5.txt
file11.txt  file16.txt  file20.txt  file6.txt
file12.txt  file17.txt  file2.txt   file7.txt
file13.txt  file18.txt  file3.txt   file8.txt
file14.txt  file19.txt  file4.txt   file9.txt

•             查询镜像和快照

# 查看快照信息
[root@node1 ~]# rbd info img2 --snap img2-sn1
rbd image 'img2':
    size 10240 MB in 2560 objects
    order 22 (4096 kB objects)
    block_name_prefix: rbd_data.107a238e1f29
    format: 2
    features: layering
    flags:
    protected: True    # 受保护

# 查看克隆的快照
[root@node1 ~]# rbd info img2-sn1-2
rbd image 'img2-sn1-2':
    size 10240 MB in 2560 objects
    order 22 (4096 kB objects)
    block_name_prefix: rbd_data.10842eb141f2
    format: 2
    features: layering
    flags:
    parent: rbd/img2@img2-sn1  # 父对象是rbd池中img2镜像的img2-sn1快照
    overlap: 10240 MB

•             合并父子镜像

–            img2-sn1-2是基于img2的快照克隆来的,不能独立使用。

–            如果父镜像删除了,子镜像也无法使用。

–            将父镜像内容合并到子镜像中,子镜像就可以独立使用了。

# 把img2的数据合并到子镜像img2-sn1-2中
[root@node1 ~]# rbd flatten img2-sn1-2
# 查看状态,它就没有父镜像了
[root@node1 ~]# rbd info img2-sn1-2
rbd image 'img2-sn1-2':
    size 10240 MB in 2560 objects
    order 22 (4096 kB objects)
    block_name_prefix: rbd_data.10842eb141f2
    format: 2
    features: layering
    flags:

# 删除父镜像,如果镜像正在被使用,则先取消
[root@client ~]# umount /data/
[root@client ~]# rbd unmap /dev/rbd1
# 1. 删除镜像img2-sn1-1
[root@node1 ~]# rbd rm img2-sn1-1
# 2. 取消img2-sn1的保护
[root@node1 ~]# rbd snap unprotect img2 --snap img2-sn1
# 3. 删除img2-sn1快照
[root@node1 ~]# rbd snap rm img2 --snap img2-sn1
# 4. 删除img2
[root@node1 ~]# rbd rm img2

# 因为img2-sn1-2已经是独立的镜像了,所以它还可以使用
[root@client1 ~]# rbd list
img1
img2-sn1-2
[root@client1 ~]# rbd map img2-sn1-2
/dev/rbd1
[root@client1 ~]# mount /dev/rbd1 /data/
[root@client1 ~]# ls /data/
file10.txt  file15.txt  file1.txt   file5.txt
file11.txt  file16.txt  file20.txt  file6.txt
file12.txt  file17.txt  file2.txt   file7.txt
file13.txt  file18.txt  file3.txt   file8.txt
file14.txt  file19.txt  file4.txt   file9.txt

ceph文件系统

•             文件系统:相当于是组织数据存储的方式。

•             格式化时,就是在为存储创建文件系统。

•             Linux对ceph有很好的支持,可以把ceph文件系统直接挂载到本地。

•             要想实现文件系统的数据存储方式,需要有MDS组件

•             安装并启用mds

# 在node3节点上安装MDS
[root@node1 ~]# ssh node3
[root@node3 ~]# yum install -y ceph-mds

# 的node1配置MDS
[root@node1 ~]# cd ceph-cluster/
[root@node1 ceph-cluster]# ceph-deploy mds create node3

使用MDS

•             元数据就是描述数据的属性。如属主、属组、权限等。

•             ceph文件系统中,数据和元数据是分开存储的

•             新建存储池

–            归置组PG:存储池包含PG。PG是一个容器,用于存储数据。

–            为了管理方便,将数量众多的数据放到不同的PG中管理,而不是直接把所有的数据扁平化存放。

–            通常一个存储池中创建100个PG。

•             创建ceph文件系统

# 1. 新建一个名为data1的存储池,目的是存储数据,有100个PG
[root@node1 ceph-cluster]# ceph osd pool create data1 100

# 2. 新建一个名为metadata1的存储池,目的是存储元数据
[root@node1 ceph-cluster]# ceph osd pool create metadata1 100

# 3. 创建名为myfs1的cephfs,数据保存到data1中,元数据保存到metadata1中
[root@node1 ceph-cluster]# ceph fs new myfs1 metadata1 data1

# 查看存储池
[root@node1 ceph-cluster]# ceph osd lspools
0 rbd,1 data1,2 metadata1,
[root@node1 ceph-cluster]# ceph df
GLOBAL:
    SIZE       AVAIL      RAW USED     %RAW USED
    92093M     91574M         519M          0.56
POOLS:
    NAME          ID     USED       %USED     MAX AVAIL     OBJECTS
    rbd           0      86469k      0.28        30488M        2606
    data1         1           0         0        30488M           0
    metadata1     2        2068         0        30488M          20
   
# 查看文件系统
[root@node1 ~]# ceph fs ls
name: myfs1, metadata pool: metadata1, data pools: [data1 ]

•             客户端使用cephfs

# 挂载文件系统需要密码。查看密码
[root@client1 ~]# cat /etc/ceph/ceph.client.admin.keyring
[client.admin]
    key = AQBmhINh1IZjHBAAvgk8m/FhyLiH4DCCrnrdPQ==

# -t 指定文件系统类型。-o是选项,提供用户名和密码
# cephfs的端口号默认是6789
[root@client1 ~]# mkdir /mydata
[root@client1 ~]# mount -t ceph -o name=admin,secret=AQBmhINh1IZjHBAAvgk8m/FhyLiH4DCCrnrdPQ== 192.168.4.13:6789:/ /mydata
[root@client1 ~]# df -h /mydata
文件系统             容量  已用  可用 已用% 挂载点
192.168.4.13:6789:/   90G  520M   90G    1% /mydata

对象存储

•             需要专门的客户端访问

•             键值对存储方式

•             对象存储需要rgw组件

•             安装部署

[root@node1 ceph-cluster]# ssh node3
[root@node3 ~]# yum install -y ceph-radosgw
[root@node1 ~]# cd ceph-cluster/
[root@node1 ceph-cluster]# ceph-deploy rgw create node3

•             客户端使用:http://docs.ceph.org.cn/radosgw/s3/python/


ceph安装及教程的评论 (共 条)

分享到微博请遵守国家法律