cephfs分布式系统

CephFS:分布式文件系统

什么是CephFS:

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

CephFS使用Ceph集群提供与POSIX兼容的文件系统

允许Linux直接将Ceph存储mount到本地

元数据服务器

  • 什么是元数据

元数据(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分布式系统的更多相关文章

  1. Logstash实践: 分布式系统的日志监控

    文/赵杰 2015.11.04 1. 前言 服务端日志你有多重视? 我们没有日志 有日志,但基本不去控制需要输出的内容 经常微调日志,只输出我们想看和有用的 经常监控日志,一方面帮助日志微调,一方面及 ...

  2. 整理下.net分布式系统架构的思路

    最近看到有部分招聘信息,要求应聘者说一下分布式系统架构的思路.今天早晨正好有些时间,我也把我们实际在.net方面网站架构的演化路线整理一下,只是我自己的一些想法,欢迎大家批评指正. 首先说明的是.ne ...

  3. 使用C# 和Consul进行分布式系统协调

    随着大数据时代的到来,分布式是解决大数据问题的一个主要手段,随着越来越多的分布式的服务,如何在分布式的系统中对这些服务做协调变成了一个很棘手的问题.今天我们就来看看如何使用C# ,利用开源对分布式服务 ...

  4. 如何在高并发分布式系统中生成全局唯一Id

    月整理出来,有兴趣的园友可以关注下我的博客. 分享原由,最近公司用到,并且在找最合适的方案,希望大家多参与讨论和提出新方案.我和我的小伙伴们也讨论了这个主题,我受益匪浅啊…… 博文示例: 1.     ...

  5. 利用log4j+mongodb实现分布式系统中日志统一管理

    背景     在分布式系统当中,我们有各种各样的WebService,这些服务可能分别部署在不同的服务器上,并且有各自的日志输出.为了方便对这些日志进行统一管理和分析.我们可以将日志统一输出到指定的数 ...

  6. 分布式系统理论基础 - 一致性、2PC和3PC

    引言 狭义的分布式系统指由网络连接的计算机系统,每个节点独立地承担计算或存储任务,节点间通过网络协同工作.广义的分布式系统是一个相对的概念,正如Leslie Lamport所说[1]: What is ...

  7. 分布式系统理论基础 - CAP

    引言 CAP是分布式系统.特别是分布式存储领域中被讨论最多的理论,“什么是CAP定理?”在Quora 分布式系统分类下排名 FAQ 的 No.1.CAP在程序员中也有较广的普及,它不仅仅是“C.A.P ...

  8. 【分布式】Zookeeper在大型分布式系统中的应用

    一.前言 上一篇博文讲解了Zookeeper的典型应用场景,在大数据时代,各种分布式系统层出不穷,其中,有很多系统都直接或间接使用了Zookeeper,用来解决诸如配置管理.分布式通知/协调.集群管理 ...

  9. Dynamo分布式系统——「RWN」协议解决多备份数据如何读写来保证数据一致性,而「向量时钟」来保证当读取到多个备份数据的时候,如何判断哪些数据是最新的这种情况

    转自:http://blog.jqian.net/post/dynamo.html Dynamo是Amazon开发的一款高可用的分布式KV系统,已经在Amazon商店的后端存储有很成熟的应用.它的特点 ...

随机推荐

  1. C++ 动态创建链表

    #define _CRT_SECURE_NO_WARNINGS #include <iostream> struct Node { int data; Node* next; }; Nod ...

  2. Java安装和配置

    一. Java安装和配置 1.JDK下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-21331 ...

  3. 一起了解 .Net Foundation 项目 No.20

    .Net 基金会中包含有很多优秀的项目,今天就和笔者一起了解一下其中的一些优秀作品吧. 中文介绍 中文介绍内容翻译自英文介绍,主要采用意译.如与原文存在出入,请以原文为准. System.Drawin ...

  4. 浅析Redis分布式锁---从自己实现到Redisson的实现

    当我们在单机情况下,遇到并发问题,可以使用juc包下的lock锁,或者synchronized关键字来加锁.但是这俩都是JVM级别的锁,如果跨了JVM这两个锁就不能控制并发问题了,也就是说在分布式集群 ...

  5. Java序列化和反序列化-(新手)

    实例: lx1: import java.io.*; public class xuliehua { public static void main(String[] args) throws Exc ...

  6. 「每天五分钟,玩转 JVM」:对象访问定位

    前言 在「对象内存布局」一节中,我们了解到对象头中包含了一个叫做类型指针的东西,即对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例.但是,并不是所有的虚拟机都是这么去做的.不 ...

  7. 从零开始学习R语言(五)——数据结构之“列表(List)”

    本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/60141740 也同步更新于我的个人博客:https://www.cnblogs.com/nickwu/p/125678 ...

  8. win7 win10 更换电脑盘符的图标

    效果如下 第一步 -> 1.把文件全放到盘符住目录 2.如果需要更换图标 (文件最好是ICO后缀的) 打开 Autorun 文件并编辑 第二步 -> 重启电脑就完了 下载连接  已经放到码 ...

  9. 泛微E-cology OA 远程代码执行漏洞

    分析文章:https://dwz.cn/bYtnsKwa http://127.0.0.1/weaver/bsh.servlet.BshServlet 若存在如上页面,则用下面数据包进行测试. POS ...

  10. jupyter之配置自己喜欢的python环境

    之前安装anaconda,会自动安装jupyer笔记本,但是本人从来没有用过,近期查看github上的一些教程时,发现很多文件都是.ipynb为后缀的jupyter文件,于是自己准备琢磨一下把环境换成 ...