Ceph存储系统(ceph安装,inkscope安装)--未完

Ceph存储系统

概述

ceph是一个Linux PB级别的分布式存储系统,ceph的目标简单地定义为:

可轻松扩展到PB容量

对多种工作负载的高性能(每秒输入/输出操作[IOPS]和带宽)

高可靠性

与常见的集中式存储不同,分布式存储技术并不是将数据存储在某个或多个特定的节点上,而是通过网络使用多台机器上的磁盘空间,并将这些分散的存储资源构成一个虚拟的存储设备,数据分散地存储在这些机器的各个磁盘上

ceph架构

ceph架构大概可以划分为四部分:客户端(数据用户)、元数据服务器(缓存和同步分布式元数据)、一个对象存储集群(将数据和元数据作为对象存储)、集群监视器(执行监视功能)

ceph组件

ceph客户端

Linux显示文件系统的一个公共界面(通过虚拟文件系统VFS),ceph的用户视图就是透明的。管理员的视图肯定是不同的,考虑到很多服务器会包含存储系统这一潜在因素。从用户的角度看,他们访问大容量的存储系统,却不知道下面聚合成一个大容量的存储池的元数据服务器,监视器还有独立的对象存储设备。用户只是简单地看到一个安装点,在这个点上可以执行标准文件I/O

ceph元数据服务器

元数据服务器(cmds)的工作就是管理文件系统的名称空间(pools)。虽然元数据和数据两者都存储在对象存储集群,但两者分别管理,支持可扩展性。事实上,元数据在一个元数据服务器集群上被进一步拆分,元数据服务器能够自适应地复制和分配名称空间,避免出现热点。元数据服务器管理名称空间部分,可以(为冗余和性能)进行重叠。元数据服务器到名称空间的映射在 Ceph 中使用动态子树逻辑分区执行,它允许 Ceph 对变化的工作负载进行调整(在元数据服务器之间迁移名称空间)同时保留性能的位置

元数据服务器管理 inode 空间,将文件名转变为元数据。元数据服务器将文件名转变为索引节点,文件大小,和 Ceph 客户端用于文件 I/O 的分段数据(布局)

ceph监视器

ceph包含实施集群映射管理的监视器,但是故障管理的一些要素是在对象存储本身中执行的。当对象存储设备发生故障或者新设备添加时,监视器就检测和维护一个有效的集群映射。这个功能按一种分布的方式执行,这种方式中映射升级可以和当前的流量通信。Ceph 使用 Paxos,它是一系列分布式共识算法

ceph对象存储集群

和传统的对象存储类似,Ceph 存储节点不仅包括存储,还包括智能。传统的驱动是只响应来自启动者的命令的简单目标。但是对象存储设备是智能设备,它能作为目标和启动者,支持与其他对象存储设备的通信和合作

从存储角度来看,Ceph 对象存储设备执行从对象到块的映射(在客户端的文件系统层中常常执行的任务)。这个动作允许本地实体以最佳方式决定怎样存储一个对象。Ceph 的早期版本在一个名为 EBOFS 的本地存储器上实现一个自定义低级文件系统。这个系统实现一个到底层存储的非标准接口,这个底层存储已针对对象语义和其他特性(例如对磁盘提交的异步通知)调优。今天,B-tree 文件系统(BTRFS)可以被用于存储节点,它已经实了部分必要功能(例如嵌入式完整性)

因为 Ceph 客户实现 CRUSH,而且对磁盘上的文件映射块一无所知,下面的存储设备就能安全地管理对象到块的映射。这允许存储节点复制数据(当发现一个设备出现故障时)。分配故障恢复也允许存储系统扩展,因为故障检测和恢复跨生态系统分配。Ceph 称其为 RADOS

1. ceph安装

ceph的一个好处就是没有中心节点,这样以来任何两个节点在存储系统中都是对等的。官方文档的介绍是使用一个admin节点来部署monitor和osds,如下图

这里我们使用一个简化的方式,admin节点用monitor节点来代替。

1.1 环境准备

(1)准备3台Centos7服务器:

ceph-mon:192.168.123.202

ceph-osd0:192.168.123.203

ceph-osd1:192.168.123.204

(2)软件环境:

# service firewalld stop
# chkconfig firewalld off
# setenforce 0
# vim /etc/selinux/config
修改为:SELINUX=disabled

更新centos的yum源

# rm -rf /etc/yum.repos.d/*.repo
# wget http://mirrors.aliyun.com/repo/Centos-7.repo
# wget http://mirrors.aliyun.com/repo/epel-7.repo

手动添加ceph的安装源

# vim /etc/yum.repos.d/ceph.repo
[ceph]
name=ceph
baseurl=http://download.ceph.com/rpm-hammer/el7/x86_64/
gpgcheck=0
[ceph-noarch]
name=cephnoarch
baseurl=http://download.ceph.com/rpm-hammer/el7/noarch/
gpgcheck=0

执行更新yum源

# yum clean all ; yum makecache

1.2 安装前的准备

(1)为每个节点添加磁盘用于对象存储集群

$ parted /dev/sdb
(parted) mklable gpt    #使用gpt分区表
(parted) mkpart primary xfs 0 100%
(parted) quit

$ mkfs.xfs /dev/sdb1    #使用xfs文件系统,单个文件大小没有上限

(2)安装ceph部署工具

# yum install -y ceph-deploy

(3)添加hosts信息

在所有节点hosts文件中添加如下信息

# vim /etc/hosts
192.168.123.202 ceph-mon
192.168.123.203 ceph-osd0
192.168.123.204 ceph-osd1

(4)同步时间

在管理节点admin(mon)上安装ntp服务器 ,更新本地时间,启动ntp服务

# yum install -y ntpdate ntp
# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# ntpdate 0.centos.pool.ntp.org
# service ntpd start

设定其他节点与管理节点admin(mon)进行时间同步

# ntpdate ceph-mon

(5)在所有节点添加ceph专用用户

# useradd ceph
# passwd ceph

(6)添加sudo权限

# echo "ceph ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/ceph
# chmod 0440 /etc/sudoers.d/ceph
# visudo
修改Defaults requiretty 为Defaults:ceph    !requiretty

(7)设置管理节点admin(mon)与osds节点ssh互通

# su - ceph
# ssh-keygen
# ssh-copy-id [email protected]
# ssh-copy-id [email protected]

(8)配置ssh的config文件

编辑管理节点admin(mon)的 /home/ceph/.ssh/config文件添加如下信息

# vim /home/ceph/.ssh/config
Host ceph-mon
   Hostname ceph-mon
   User ceph
Host ceph-osd0
   Hostname ceph-osd0
   User ceph
Host ceph-osd1
   Hostname ceph-osd1
   User ceph

如果不添加此文件,每次在执行ceph-deploye命令的时候需要指定 –username选项

修改文件权限

# chown 600 /home/ceph/.ssh/config

1.3 部署对象存储集群

在这个过程中,我们创建一个对象存储集群,包括一个ceph monitor和三个ceph osd daemon。

当这个集群达到 active+clean 的状态时,再扩展这个集群,添加一个元数据服务器(metadate server)和更多的ceph monitor

ceph-deploy命令会输出文件到当前目录下,并且会利用输出的文件。在整个执行的过程中,我们都是用ceph用户

(1)切换到ceph 用户

# su – ceph

(2)创建命令执行目录并授权给ceph

$ sudo mkdir /my-cluster
$ sudo chown ceph:ceph /my-cluster
$ cd /my-cluster

(3)创建集群

$ ceph-deploy new ceph-mon

(4)为所有节点安装部署ceph

$ ceph-deploy install ceph-mon ceph-osd0 ceph-osd1
此步骤可以所有节点单独离线安装:
# yum install -y redhat-lsb
# yum -y install ceph ceph-radosgw

(5)添加ceph monitor

$ ceph-deploy mon create-initial

(6)添加osds

$ ceph-deploy osd prepare ceph-mon:/dev/sdb1 ceph-osd0:/dev/sdb1 ceph-osd1:/dev/sdb1
$ ceph-deploy osd activate ceph-mon:/dev/sdb1 ceph-osd0:/dev/sdb1 ceph-osd1:/dev/sdb1

(7)拷贝配置文件和admin key到admin节点和其他节点

$ ceph-deploy admin ceph-mon ceph-osd0 ceph-osd1
$ sudo chmod +r /etc/ceph/ceph.client.admin.keyring

拷贝之后可以使用ceph命令行而不用指定monitor地址和ceph.client.admin.keyring

(8)查看ceph状态

$ ceph health
$ ceph status (或者$ ceph -s)

(9)添加元数据服务器(mds)

$ ceph-deploy mds create ceph-mon

接下来就可以使用ceph了

1.4 添加存储

ceph可以用作文件存储、块存储、对象存储。这里以块存储来演示ceph的使用

(1)创建存储池(pools)

[ceph@ceph-osd1 ~]$ ceph osd pool create ceph-pool 256 256

(2)创建块存储设备

[[email protected]-osd1 ~]$ rbd create ceph-block --size 200 --pool ceph-pool

(3)将块存储设备映射到本地并挂载使用

[ceph@ceph-osd1 ~]$ sudo modprobe rbd
[ceph@ceph-osd1 ~]$ sudo rbd map ceph-block --pool ceph-pool
/dev/rbd0
[ceph@ceph-osd1 ~]$ rbd showmapped
id pool      image      snap device
0  ceph-pool ceph-block -    /dev/rbd0

(4)格式化存储设备,并挂载

[ceph@ceph-osd1 ~]$ sudo mkfs.ext4 /dev/rbd0
mke2fs 1.42.9 (28-Dec-2013)
Discarding device blocks: done
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=4096 blocks, Stripe width=4096 blocks
51200 inodes, 204800 blocks
10240 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=33816576
25 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
 8193, 24577, 40961, 57345, 73729
Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
[ceph@ceph-osd1 ~]$ sudo mount /dev/rbd0 /mnt
[ceph@ceph-osd1 ~]$ ls /mnt
lost+found

参考资料:

http://my.oschina.net/JerryBaby/blog/331803?fromerr=Y03IQX56

时间: 2024-08-02 12:30:45

Ceph存储系统(ceph安装,inkscope安装)--未完的相关文章

k8s简单安装使用(未完)

目录 环境: 前提: 1.基于主机名通信: /etc/hosts; 2.时间同步: 3.暂时关闭firewalld和iptables.service 4.k8s尽量装最新版,版本更新太快,旧版本说不定有bug OS:Centos 7.3.1611,Extras仓库中: 安装配置步骤: 1.etcd cluster,仅master节点: 2.flanner,集群的所有节点: 3.配置k8s的master:仅master节点: kubernetes-master 启动的服务:kube-apiserv

centos7.2安装mysql5.5.32(未完待续)

红帽7以上系统默认数据库不再是mysql了,rpm和yum方式安装的都是mariadb,但也不是不能装mysql,可以使用编译安装的方式来装mysql. 实验环境:centos7.2 实验目标:安装并配置mysql5.5.32 新增分区 先通过fdisk创建一个新分区,配额,用来存放mysql的数据: 刷新硬盘信息: #partprobe devices 格式化新增分区: # mkfs.xfs /dev/vdb3 根目录创建mysql数据挂载点(根据实际情况) # mkdir /data 编辑/

编译安装MariaDB 未完待续

二进制格式 下载mariadb lftp 172.16.0.1:/pub/Sources/6.x86_64/mariadb>get mariadb-5.5.36-linux-x86_64.tar.gz 解压mariadb tar xvf mariadb-5.5.36-linux-x86_64.tar.gz -C /usr/local 创建软链接 创建系统用户 创建mysql目录 初始化脚本 查看初始化后的脚本 创建配置文件脚本 复制配置文件脚本 复制服务类脚本 修改配置文件 datadir =

Lamp 编译安装 (未完待续)

顺序安装:linux apache mysql php Linux 这个就不多说明了... CentOS 6.5 镜像 虚拟机安装 一次性安装开发工具: # yum groupinstall "Development tools" or: # yum -y groupinstall "Development tools" 查看已安装的: # yum grouplist | more # yum grouplist | grep Develpment # yum gr

ceph 存储系统

概述 ceph是一个Linux PB级别的分布式存储系统,ceph的目标简单地定义为:     可轻松扩展到PB容量     对多种工作负载的高性能(每秒输入/输出操作[IOPS]和带宽)     高可靠性 与常见的集中式存储不同,分布式存储技术并不是将数据存储在某个或多个特定的节点上,而是通过网络使用多台机器上的磁盘空间,并将这些分散的存储资源构成一个虚拟的存储设备,数据分散地存储在这些机器的各个磁盘上 ceph架构 ceph架构大概可以划分为四部分:客户端(数据用户).元数据服务器(缓存和同

win7 安装oracle 10g 未生成监听文件 导致配置监听时无法保存

最近这两天一直在为安装 的oracle 配置监听无法保存 再找各种解决方案,最后自己居然自己配置出来了. 因为缺少监听文件,拷贝别人的放到自己的目录下C:\oracle\product\10.2.0\client_1\NETWORK\ADMIN   listener.ora.tnsnames.ora和 sqlnet.ora 1.修改 tnsnames.ora  中的 # tnsnames.ora Network Configuration File:  c:\oracle\product\10.

Android菜鸟笔记- 获取未安装的APK图标、版本、包名、名称、是否安装、安装、打开

周末闲来无事,把Android的基础知识拿出来复习复习,今天主题是<获取未安装的APK图标.版本.包名.名称.是否安装.跳转安装.打开> 一.获取APK图标 通常读取APK的图标可以用,PackageManager里面的getApplicationIcon(ApplicationInfo)来得到一个drawable.但实际使用的时候经常只能得到一个默认的图标,根本不是APK的图标. 参考小米开源文件管理器,结合实践,代码如下: /* * 采用了新的办法获取APK图标,之前的失败是因为andro

linux下安装codeblocks及写完程序之后编译成功但无法运行的原因

一:在软件中心输入codeblocks,然后点击安装,等着装完就行了. 再按ctrl+alt+t 打开终端 输入 sudo apt-get install gcc 而后再输入sudo apt-get install g++ 最后打开codeblocks写个 helloworld 试试吧. 二:helloworld小程序写完后,也编译通过了,但是却无法运行,那么你再看看保存的地方吧,要是不是保存在linux下的文档了,而是保存在磁盘里的话就是造成不能运行的结果了,更改保存位置试试看呗. 以上仅是我

Ubuntu16安装mysql5.7未提示输入密码,安装后修改mysql密码默认密码

mysql默认密码为空 但是使用mysql -uroot -p 命令连接mysql时,报错 ERROR 1045 (28000): Access denied for user 'root'@'localhost' 此时修改root的默认密码即可 ------------------------------------------------------------------------------------------------------------------------------