cephfs分布式系统
cephfs分布式系统
CephFS:分布式文件系统
l 什么是CephFS:
分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连
CephFS使用Ceph集群提供与POSIX兼容的文件系统
允许Linux直接将Ceph存储mount到本地
l 元数据服务器
- 什么是元数据
元数据(Metadata):
任何文件系统中的数据分为数据和元数据。
数据是指普通文件中的实际数据
而元数据指用来描述一个文件的特征的系统数据
比如:访问权限、文件拥有者以及文件数据块的分布信息(inode...)等
所以CephFS必须有MDSs节点
ceph对象存储
- 什么是对象存储
对象存储:
也就是键值存储,通其接口指令,也就是简单的GET、PUT、DEL和其他扩展,向存储服务上传下载数据
对象存储中所有数据都被认为是一个对象,所以,任何数据都可以存入对象存储服务器,如图片、视频、音频等
RGW全称是Rados Gateway
RGW是Ceph对象存储网关,用于向客户端应用呈现存储界面,提供RESTful API访问接口
ceph实战
:创建KVM虚拟机,虚拟的硬盘使用ceph存储
1.在ceph上远程服务器创建镜像
[root@node1 ceph-cluster]# rbd create vm1-image --image-feature layering --size 10G //vm1-image是池里镜像的名
[root@node1 ceph-cluster]# rbd create vm2-image --image-feature layering --size 10G
[root@node1 ceph-cluster]# rbd list
vm1-image
vm2-image
2.查看
[root@node1 ceph-cluster]# qemu-img info rbd:rbd/vm1-image
image: rbd:rbd/vm1-image
file format: raw
virtual size: 10G (10737418240 bytes)
disk size: unavailable
3.将物理主机作为ceph客户端
[root@room9pc01 ~]# yum -y install ceph-common
[root@node1ceph-cluster]#scp /etc/ceph/ceph.conf 192.168.4.254:/etc/ceph/
[root@node1ceph-cluster]#scp /etc/ceph/ceph.client.admin.keyring 192.168.4.254:/etc/ceph/
4.正常创建一台虚拟机,点击完成时,虚拟机将会运行起来,此时强制关闭虚拟机
5.把虚拟机的配置生成配置文件
[root@room9pc01 ~]# virsh dumpxml vm1 > /tmp/vm1.xml
[root@room9pc01 ~]# cat /tmp/vm1.xml
6.删除虚拟机vm1,以后再通过修改的vm1.xml生成虚拟机vm1
7.虚拟机使用ceph存储,需要有个“通行证”,编写xml文件,形成通行证
[root@room9pc01 ~]# vim /tmp/secret.xml
<secret ephemeral='no' private='no'>
<usage type='ceph'>
<name>client.admin secret</name>
</usage>
</secret>
8.生成UUID
[root@room9pc01 ~]# virsh secret-define /tmp/secret.xml
生成 secret 51a11275-f9fa-41cd-a358-ff6d00bd8085
[root@room9pc01 ~]# virsh secret-list 查看UUID
UUID 用量
--------------------------------------------------------------------------------
51a11275-f9fa-41cd-a358-ff6d00bd8085 ceph client.admin secret
9.查看ceph的client.admin的key
[root@room9pc01 ~]# ceph auth get-key client.admin
AQD0vAJby0NiERAAcdzYc//ONLqlyNXO37xlJA==
10.将第7、8步的虚拟机secret和ceph的client.admin进行关联
[root@room9pc01 ~]# virsh secret-set-value --secret 51a11275-f9fa-41cd-a358-ff6d00bd8085 --base64 AQD0vAJby0NiERAAcdzYc//ONLqlyNXO37xlJA==
secret 值设定
// 这里secret后面是之前创建的secret的UUID
base64后面是client.admin账户的密码
现在secret中既有账户信息又有密钥信息
11.修改生成的虚拟机配置文件
[root@room9pc01 ~]# vim /tmp/vm1.xml
32 <disk type='network' device='disk'>
33 <driver name='qemu' type='raw'/>
注释掉34行,在下面手动添加内容
34 <auth username='admin'>
35 <secret type='ceph' uuid='51a11275-f9fa-41cd-a358-ff6d00bd8085'/> 这里的uuid就是secret的uuid,有client.admin账户和密钥信息
36 </auth>
37 <source protocol='rbd' name='rbd/vm1-image'>
ü 38 <host name='192.168.4.2' port='6789' />
39 </source>
使用账户连接哪台ceph主机和端口,访问哪个池和镜像
40 <target dev='vda' bus='virtio'/>
将获取的镜像,设置为虚拟机的vda磁盘
12.生成虚拟机
[root@room9pc01 ~]# virsh define /tmp/vm1.xml
定义域 vm1(从 /tmp/vm1.xml)
然后就可以看到刚删除的虚拟机又给还原回来,然后点击灯泡再创建虚拟机,添加镜像,点击引导选项-->启用-->VirtlO磁盘1,上升到第一个
点击---IDE CDROM 1 ----->添加镜像—>引导选项----> IDE CDROM 1(勾选)-->启用新虚拟机
CephFS的使用:注意,这种方法还不成熟,不要应用在生产环境下
部署mds服务器
1配置主机名,yum,NTP,名称解析,node1免密登录mds节点
[root@node4 ~]# yum -y install ceph-mds
2.创建元数据服务器,必须在ceph-cluster目录上
[root@node1 ceph-cluster]# pwd
/root/ceph-cluster
[root@node1 ceph-cluster]# ceph-deploy mds create node4
3.同步配置文件和key
[root@node1 ceph-cluster]# ceph-deploy admin node4
然后在node4节点上查看
[root@node4 ~]# ceph -s
health HEALTH_OK
4.为cephFS创建数据池和元数据池,指定每个OSD有128个PG
关于PG的说明:在http://www,wzxue.com/ceph-osd-and-pg/
[root@node4 ~]# ceph osd pool create cephfs_data 128
pool 'cephfs_data' created
[root@node4 ~]# ceph osd pool create cephfs_metadata 128
pool 'cephfs_metadata' created
5.查看mds状态
[root@node4 ~]# ceph mds stat
e2:, 1 up:standby
6.创建名为myfs1的文件系统
[root@node4 ~]# ceph fs new myfs1 cephfs_metadata cephfs_data
new fs with metadata pool 2 and data pool 1
默认只能创建1个文件系统,多余的会报错
7.查看信息
[root@node4 ~]# ceph mds stat
e5: 1/1/1 up {0=node4=up:active}
[root@node4 ~]# ceph fs ls
name: myfs1, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
8.Linux内核已支持cephFS,只要挂载即可
-t 类型
[root@client ~]# mkdir /mnt/ceph_root
[root@client ~]# ceph auth list 查看admin的key
client.admin
key: AQD0vAJby0NiERAAcdzYc//ONLqlyNXO37xlJA==
[root@client ~]# mount -t ceph 192.168.4.11:6789:/ /mnt/ceph_root/ -o name=admin,secret=AQD0vAJby0NiERAAcdzYc//ONLqlyNXO37xlJA==
[root@client ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
192.168.4.11:6789:/ 60G 1008M 59G 2% /mnt/ceph_root

对象存储
1.创建ceph-deploy的工作目录
[root@node5 ~]# mkdir ceph-cluster
[root@node5 ~]# cd ceph-cluster
2.什么是对象存储
3.安装rgw
[root@node5 ceph-cluster]# ceph-deploy install --rgw node5
4.同步配置文件和key
[root@node5 ceph-cluster]# ceph-deploy admin node5
5.启动rgw服务
[root@node5 ceph-cluster]# ceph-deploy rgw create node5
[ceph_deploy.rgw][INFO ] The Ceph Object Gateway (RGW) is now running on host node5 and default port 7480 //网关接口
6.修改rgw端口,默认端口是7480,不是必须改
[root@node5 ceph-cluster]# vim /etc/ceph/ceph.conf
加入一下几行:
[client.rgw.node5]
host = node5
rgw_frontends = "civetweb port=8081" //随便写,写一个好记的
7.重启服务,以便生效
[root@node5 ~]# systemctl restart ceph-radosgw@\*
8.客户端访问rgw验证
[root@client ~]# curl http://node5:8081
<?xml version="1.0" encoding="UTF-8"?><ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Owner><ID>anonymous</ID><DisplayName></DisplayName></Owner><Buckets></Buckets></ListAllMyBucketsResult>
出现这些内容表示正常
9.创建对象访问的用户

[root@node5 ~]# radosgw-admin user create --uid="testuser" --display-name="First User"
//First User是一个昵称,随便写,要用到
"user": "testuser",
"access_key": "CJ38ADJYNMR3F3DJ3C9J",
"secret_key": "k5DZgUXBMJs3fdv5bT7yNFJiNw2bKac7D1IxO12I"
10.查看用户信息
[root@node5 ~]# radosgw-admin user info --uid="testuser"
11.客户端安装s3工具
[root@room9pc01 ~]# scp -r cluster相关软件 /ceph/s3cmd-2.0.1-1.el7.noarch.rpm 192.168.4.10:/root
[root@client ~]# yum -y localinstall s3cmd-2.0.1-1.el7.noarch.rpm
12.配置客户端
[root@client ~]# s3cmd --configure
Access Key: CJ38ADJYNMR3F3DJ3C9J
Secret Key: k5DZgUXBMJs3fdv5bT7yNFJiNw2bKac7D1IxO12I
Default Region [US]: 回车
S3 Endpoint [s3.amazonaws.com]: 192.168.4.15:8081
onaws.com]: %(bucket)s.192.168.4.15:8081
Encryption password: 回车
Path to GPG program [/usr/bin/gpg]: 回车
Use HTTPS protocol [Yes]: N
HTTP Proxy server name: 回车
Test access with supplied credentials? [Y/n] y
Save settings? [y/N] y
13.客户端上传下载测试
[root@client ~]# s3cmd ls // 查看数据
[root@client ~]# s3cmd mb s3://my_bucket 创建my_bucket
Bucket 's3://my_bucket/' created
上传
[root@client ~]# s3cmd put /var/log/messages s3://my_bucket/log/
upload: '/var/log/messages' -> 's3://my_bucket/log/' [1 of 1]
403379 of 403379 100% in 4s 97.49 kB/s done
[root@client ~]# s3cmd ls s3://my_bucket
2018-05-22 09:24 403379 s3://my_bucket/log
下载
[root@client ~]# s3cmd get s3://my_bucket/log/messages /tmp
download: 's3://my_bucket/log/messages' -> '/tmp/messages' [1 of 1]
403379 of 403379 100% in 0s 32.63 MB/s done
删除
[root@client ~]# s3cmd del s3://my_bucket/log/messages
delete: 's3://my_bucket/log/messages'
cephfs分布式系统的更多相关文章
- Logstash实践: 分布式系统的日志监控
文/赵杰 2015.11.04 1. 前言 服务端日志你有多重视? 我们没有日志 有日志,但基本不去控制需要输出的内容 经常微调日志,只输出我们想看和有用的 经常监控日志,一方面帮助日志微调,一方面及 ...
- 整理下.net分布式系统架构的思路
最近看到有部分招聘信息,要求应聘者说一下分布式系统架构的思路.今天早晨正好有些时间,我也把我们实际在.net方面网站架构的演化路线整理一下,只是我自己的一些想法,欢迎大家批评指正. 首先说明的是.ne ...
- 使用C# 和Consul进行分布式系统协调
随着大数据时代的到来,分布式是解决大数据问题的一个主要手段,随着越来越多的分布式的服务,如何在分布式的系统中对这些服务做协调变成了一个很棘手的问题.今天我们就来看看如何使用C# ,利用开源对分布式服务 ...
- 如何在高并发分布式系统中生成全局唯一Id
月整理出来,有兴趣的园友可以关注下我的博客. 分享原由,最近公司用到,并且在找最合适的方案,希望大家多参与讨论和提出新方案.我和我的小伙伴们也讨论了这个主题,我受益匪浅啊…… 博文示例: 1. ...
- 利用log4j+mongodb实现分布式系统中日志统一管理
背景 在分布式系统当中,我们有各种各样的WebService,这些服务可能分别部署在不同的服务器上,并且有各自的日志输出.为了方便对这些日志进行统一管理和分析.我们可以将日志统一输出到指定的数 ...
- 分布式系统理论基础 - 一致性、2PC和3PC
引言 狭义的分布式系统指由网络连接的计算机系统,每个节点独立地承担计算或存储任务,节点间通过网络协同工作.广义的分布式系统是一个相对的概念,正如Leslie Lamport所说[1]: What is ...
- 分布式系统理论基础 - CAP
引言 CAP是分布式系统.特别是分布式存储领域中被讨论最多的理论,“什么是CAP定理?”在Quora 分布式系统分类下排名 FAQ 的 No.1.CAP在程序员中也有较广的普及,它不仅仅是“C.A.P ...
- 【分布式】Zookeeper在大型分布式系统中的应用
一.前言 上一篇博文讲解了Zookeeper的典型应用场景,在大数据时代,各种分布式系统层出不穷,其中,有很多系统都直接或间接使用了Zookeeper,用来解决诸如配置管理.分布式通知/协调.集群管理 ...
- Dynamo分布式系统——「RWN」协议解决多备份数据如何读写来保证数据一致性,而「向量时钟」来保证当读取到多个备份数据的时候,如何判断哪些数据是最新的这种情况
转自:http://blog.jqian.net/post/dynamo.html Dynamo是Amazon开发的一款高可用的分布式KV系统,已经在Amazon商店的后端存储有很成熟的应用.它的特点 ...
随机推荐
- nohub 将程序永久运行下去
今天看了一遍文章,一直以为将程序制成sh脚本,通过crontab来间隔执行以为是真的不断执行,后来才发现是错误的,每隔一段时间都会执行一次,都会占用一个进程,难怪一看进程几十来个同样名字的进程在运行 ...
- CentOS RPM 安装 MySQL5.7
环境 CentOS 7 64位 MySQL 5.7 64位 1.卸载系统自带的 mariadb [root@localhost /]# rpm -qa|grep mariadb mariadb-lib ...
- C++ 按行读取文件并打印
#include<iostream> #include<fstream> #include<string> #include <vector> #inc ...
- macOS Catalina 升级软件问题
最近升级macOS Catalina系统,升级失败时多尝试几次就可以执行成功了,在使用过程中发现以下问题,大家谨慎升级!!! 存在软件启动不兼容,不存在已软件激活失效问题. 有道词典不兼容,启动异常 ...
- Python进阶学习之面向对象
目录 面向对象 私有属性 面向对象 python也有面向对象的编程,它与C++中的类有点相似.它也只是运算符重载,继承. class Test: num=0 def __init__(self): ...
- vscode 的tab空格设置设置为4的方法
1.点击“文件>首选项>设置” 进入设置页面,设置如下几个选项 2.在“文件>首选项>设置” 的“用户设置”里添加 "editor.detectIndentation ...
- python-参考书
真的是找了很多的参考书,但是看懂,上手用的就一本比较好的<编程小白的第1本python入门书>非常的好. 属于那种一看就懂,能说明白的.别的,要么就是翻译的外文的,有点难以理解,要么就是中 ...
- Linux - top命令监控列表的详细解析
统计信息区(系统资源信息区) 前五行,即列表上方的五行 第一行:输出系统任务队列信息 18:46:38:系统当前时间 up 2days 1:54:系统开机后到现在的总运行时间 1 user:当前登录用 ...
- Mol Cell Proteomics. | 粪便微生物蛋白质的组成与饮食诱导肥胖倾向的关联研究
题目:Associations of the Fecal Microbial Proteome Composition and Proneness to Diet-induced Obesity 期刊 ...
- Flutter 实现不同样式(有样式) 的TextField (可自定义),类似微博#话题#、@用户,(给TextField加TextSpan)
描述 先上效果图 在项目中,有 @ 和 话题功能,需要在编辑时即可回显,但是官方原生的TextField不支持对部分文字定义不同的样式,所以封装了一个. 注意:这不是富文本插件,不支持在输入框中显示图 ...