集群 分布式存储----Ceph

1 篇文章 0 订阅

分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过看i算计网络与节点相连。

分布式文件系统的设计基于客户机/服务器模式

常用分布式文件系统

Lustre , Hadoop ,
FsatDFS , Ceph , GlusterFS

Ceph组件

OSDs:存储设备

Monitors:集群监控组件

MDSs:存放文件系统的元数据(对象存储和块存储不需要该组件)

Client:ceph客户端

环境准备

client客户端:192.168.4.50

3台存储虚拟机:192.168.4.51(即是存储机也是管理机)
192.168.4.52 192.168.4.53

修改主机名,并且每台主机名映射都配写入
/etc/hosts 里面

192.168.4.50
client

192.168.4.51
node1

192.168.4.51
node2

192.168.4.51
node3

生成密钥,发布密钥到各个主机

[root@node1~]# ssh-keygen

[root@node1~]#for i
in 50 51 52 53

do

ssh-copy-id 192.168.4.$i

done

NTP时间同步

客户端创建NTP服务器

[root@client~]# yum -y install
chrony

[root@client~]# cat
/etc/chrony.conf

server 0.centos.pool.ntp.org
iburst

allow 192.168.4.0/24

local stratum 10

[root@client~]#systemctl
restart chronyd (并设开机自启动enable)

#其他三台与其同步时间 server 192.168.4.50 iburst

3台做存储的物理机添加3块10G磁盘,分别是 vdb vdc vdd

使用node1作为部署主机

[root@node1~]# yum -y install ceph-deploy

#ceph-deploy --help 可以看帮助

1.为部署工具创建目录,存放密钥与配置文件

[root@node1~]# mkdir
ceph-cluster //创建共享目录

[root@node1~]# cd ceph-cluster/
//cd进去不然下一步会报错

创建ceph集群配置(所有节点都为mon)

[root@node1
ceph-cluster]# ceph-deploy new node1 node2 node3

[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 ~]# rbd list

                //查看ceph集群镜像列表

domo-image

image

[root@client ~]# rbd map image

     //把镜像文件映射到本机

/dev/rbd0

[root@client ~]# ls /dev/rbd0

/dev/rbd0

[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 ~]# mount /dev/rbd0
/studayup/ //挂载

[root@client ~]# echo
123456 > /studayup/test2.txt

[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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值