看ceph文档随手记录的一些点,按自己的理解整合了一下。
五、ceph安装的流水账
一、ceph是什么
Ceph是一套开源的分布式存储系统,它的特点是:
高扩展性:使用普通x86服务器,支持10~1000台服务器,支持TB到PB级的扩展。
高可靠性:没有单点故障,多数据副本,自动管理,自动修复。
高性能:数据分布均衡,并行化度高。对于objects storage和block
storage,不需要元数据服务器。
Ceph支持三种接口访问:
Object:有原生的API,而且也兼容Swift和S3的API
Block:支持精简配置、快照、克隆
File:Posix接口,支持快照
二、ceph不是openstack组件
ceph最常被提到的场景是在openstack中,但ceph并不是openstack的组件。ceph通常是作为glance和cinder组件的backend,提供存储空间给这两个组件。openstack组件如何使用ceph请参考下图:
三、ceph的组成部分
ceph逻辑层次结构如下图所示:
上图最底层的RADOS,是真正实现ceph存储功能的部分。
RADOS是“A reliable, autonomous, distributed object storage”。
RADOS由两个组件组成:
OSD: Object Storage
Device,将数据存储在object中,管理data replication , recovery , rebalancing
,并且负责上报stage信息给Ceph Monitor。
Monitor:维护整个Ceph集群的健康状态,通过维护 Monitor map , OSD map , Placement
Group ( PG ) map 和CRUSH map,
Monitor接收各组件的状态信息,用这些信息维护map,并将这些map再回传给其他的Monitor和OSD节点。
Ceph另外两个组件是:
MDS:用于保存CephFS的元数据。
RADOS Gateway:对外提供REST接口,兼容S3和Swift的API。
四、RADOS的核心-寻址机制
在Ceph中,Object是RADOS组织管理存储的单元,Object最大size由RADOS限定(通常为2MB或4MB)。
因此,当上层应用向RADOS存入size很大的file时,需要将file切分成统一大小的一堆Object(最后一个的大小可以不同)进行存储。
一个ceph集群可以创建多个Pool,一个Pool只是逻辑上的分组,类似于LVM中的 Volume
Group,起到namespace的作用。不同的Pool可以有完全不同的数据处理方式如:Replication
Size(副本数),Placement Groups(PG),CRUSH
Rules,Snapshots,Ownership都是利用Pool进行隔离的。因此,对ceph的任意操作都需要先指定Pool才能进行。
每个Pool有多个PG,每个Object通过计算hash值并取模得到它所对应的PG。PG再映射到一组OSD(OSD的个数由Pool
的副本数决定),第一个OSD是Primary,剩下的都是Replicas。
具体而言, Ceph中的寻址至少要经历以下三次映射:
1. File -> object映射
这次映射的目的是,将用户要操作的file,映射为RADOS能够处理的object。其映射十分简单,本质上就是按照object的最大size对file进行切分,相当于RAID中的条带化过程。这种切分的好处有二:一是让大小不限的file变成最大size一致、可以被RADOS高效管理的object;二是让对单一file实施的串行处理变为对多个object实施的并行化处理。
每一个切分后产生的object将获得唯一的oid,即object
id。其产生方式也是线性映射,极其简单。图中,ino是待操作file的元数据,可以简单理解为该file的唯一id。ono则是由该file切分产生的某个object的序号。而oid就是将这个序号简单连缀在该file
id之后得到的。举例而言,如果一个id为filename的file被切分成了三个object,则其object序号依次为0、1和2,而最终得到的oid就依次为filename0、filename1和filename2。
这里隐含的问题是,ino的唯一性必须得到保证,否则后续映射无法正确进行。
2. Object -> PG映射
在file被映射为一个或多个object之后,就需要将每个object独立地映射到一个PG中去。这个映射过程也很简单,如图中所示,其计算公式是:
hash(oid) & mask -> pgid
由此可见,其计算由两步组成。首先是使用Ceph系统指定的一个静态哈希函数计算oid的哈希值,将oid映射成为一个近似均匀分布的伪随机值。然后,将这个伪随机值和mask按位相与,得到最终的PG序号(pgid)。根据RADOS的设计,给定PG的总数为m(m应该为2的整数幂),则mask的值为m-1。因此,哈希值计算和按位与操作的整体结果事实上是从所有m个PG中近似均匀地随机选择一个。基于这一机制,当有大量object和大量PG时,RADOS能够保证object和PG之间的近似均匀映射。又因为object是由file切分而来,大部分object的size相同,因而,这一映射最终保证了,各个PG中存储的object的总数据量近似均匀。
从介绍不难看出,这里反复强调了“大量”。只有当object和PG的数量较多时,这种伪随机关系的近似均匀性才能成立,Ceph的数据存储均匀性才有保证。为保证“大量”的成立,一方面,object的最大size应该被合理配置,以使得同样数量的file能够被切分成更多的object;另一方面,Ceph也推荐PG总数应该为OSD总数的数百倍,以保证有足够数量的PG可供映射。
3. PG -> OSD映射
第三次映射就是将作为object的逻辑组织单元的PG映射到数据的实际存储单元OSD。如图所示,RADOS采用一个名为CRUSH的算法,将pgid代入其中,然后得到一组共n个OSD。这n个OSD即共同负责存储和维护一个PG中的所有object。前已述及,n的数值可以根据实际应用中对于可靠性的需求而配置,在生产环境下通常为3。具体到每个OSD,则由其上运行的OSD
deamon负责执行映射到本地的object在本地文件系统中的存储、访问、元数据维护等操作。
和“object ->
PG”映射中采用的哈希算法不同,这个CRUSH算法的结果不是绝对不变的,而是受到其他因素的影响。其影响因素主要有二:
一是当前系统状态,也就是上文逻辑结构中曾经提及的cluster map。当系统中的OSD状态、数量发生变化时,cluster
map可能发生变化,而这种变化将会影响到PG与OSD之间的映射。
二是存储策略配置。这里的策略主要与安全相关。利用策略配置,系统管理员可以指定承载同一个PG的3个OSD分别位于数据中心的不同服务器乃至机架上,从而进一步改善存储的可靠性。
因此,只有在系统状态(cluster
map)和存储策略都不发生变化的时候,PG和OSD之间的映射关系才是固定不变的。在实际使用当中,策略一经配置通常不会改变。而系统状态的改变或者是由于设备损坏,或者是因为存储集群规模扩大。好在Ceph本身提供了对于这种变化的自动化支持,因而,即便PG与OSD之间的映射关系发生了变化,也并不会对应用造成困扰。事实上,Ceph正是需要有目的的利用这种动态映射关系。正是利用了CRUSH的动态特性,Ceph可以将一个PG根据需要动态迁移到不同的OSD组合上,从而自动化地实现高可靠性、数据分布re-blancing等特性。
之所以在此次映射中使用CRUSH算法,而不是其他哈希算法,原因之一正是CRUSH具有上述可配置特性,可以根据管理员的配置参数决定OSD的物理位置映射策略;另一方面是因为CRUSH具有特殊的“稳定性”,也即,当系统中加入新的OSD,导致系统规模增大时,大部分PG与OSD之间的映射关系不会发生改变,只有少部分PG的映射关系会发生变化并引发数据迁移。这种可配置性和稳定性都不是普通哈希算法所能提供的。因此,CRUSH算法的设计也是Ceph的核心内容之一。
至此为止,Ceph通过三次映射,完成了从file到object、PG和OSD整个映射过程。通观整个过程,可以看到,这里没有任何的全局性查表操作需求。至于唯一的全局性数据结构cluster
map,在后文中将加以介绍。可以在这里指明的是,cluster
map的维护和操作都是轻量级的,不会对系统的可扩展性、性能等因素造成不良影响。
ceph有好几种map,那么每种map都是做什么用的呢?
monitor map: 包含集群的fsid, position(什么的?),
每个monitor的主机名和IP,当前epoch版本, map创建时间, map最后一次更改的时间。
OSD map: 包含集群的fsid, map创建时间, map最后一次更改的时间, Pool的列表,副本数, PG数量, OSD列表和状态(例如 up, in.)
PG map: 包含PG版本;时间戳; 最新的OSD map epoch; full ratios和PG的详细信息(例如:PG ID, Up Set, Acting Set, PG状态); 每个pool的数据使用情况统计。
CRUSH map: 包含存储设备列表,failure domain的层级分布(例如:device, host, rack, row, room),存储数据时如何遍历failure domain的层级的规则。
OSD map: 包含集群的fsid, map创建时间, map最后一次更改的时间, Pool的列表,副本数, PG数量, OSD列表和状态(例如 up, in.)
PG map: 包含PG版本;时间戳; 最新的OSD map epoch; full ratios和PG的详细信息(例如:PG ID, Up Set, Acting Set, PG状态); 每个pool的数据使用情况统计。
CRUSH map: 包含存储设备列表,failure domain的层级分布(例如:device, host, rack, row, room),存储数据时如何遍历failure domain的层级的规则。
关于ceph更多理论性的研究可以参考"ThinkDiff"老兄的博客,http://www.cnblogs.com/bodhitree/,我上边的文字就是从他文章里扒来的,受益匪浅
,此兄台是专注ceph研发的。
大概理解了ceph的一些概念以后,可以动手做测试了。
安装部分主要参考《Redhat ceph storage installation guide》。
生产环境的ceph集群尽量采用ansible,puppet这类的管理工具安装,而为了学习目的,我希望能清楚知道具体安装都做了什么事情,所以此处是关于手动命令行方式安装的,基于工具安装的请参考redhat文档。
虽然用于生产的ceph集群要考虑的因素非常多,但ceph集群部署简单说就三步:
第一步: 配置第一个Monitor(MON)节点
第二步: 加入Object Storage Device(OSD)节点
第三步: 加入更多的MON,OSD节点
在开始安装之前,要做一些准备工作,比如网络,hostname,ntp等等。
5.1 配置第一个Monitor节点
需要如下信息:
- 集群的"唯一标识符"-->fsid
- 集群"名称"-->cluster name
- Monitor节点的"名称"-->Monitor Name
- Monitor Map
- Monitor Keyring-->用于Mon节点间互相通信使用的密钥
- Administrator Keyring-->用于client.admin用户,使用ceph命令行工具管理使用的密钥
5.1.1 配置ceph官方源,EPEL源
]# vi /etc/yum.repo.d/ceph.repo
[ceph-x86_64]name=Ceph x86_64 packagesbaseurl=https://download.ceph.com/rpm-luminous/el7/x86_64/enabled=1gpgcheck=1type=rpm-mdgpgkey=https://download.ceph.com/keys/release.asc
5.1.2 安装monitor软件
]# yum install ceph-mon
5.1.3 创建配置文件,配置文件的名字就是集群名称,本例中集群名称就是“ceph”,生成fsid,写入配置文件
]# touch /etc/ceph/ceph.conf
]# echo "[global]" > /etc/ceph/ceph.conf
]# echo "fsid = `uuidgen`" >> /etc/ceph/ceph.conf
5.1.4 加入第一个mon节点的名称
]# echo "mon initial members = mon1" >>
/etc/ceph/ceph.conf
5.1.5 加入第一个mon节点的IP地址
]# echo "mon host = 192.168.0.1" >>
/etc/ceph/ceph.conf
5.1.6 生成用于Mon节点间互相通信使用的密钥,文件名为:集群名.mon.keyring
]# ceph-authtool --create-keyring /tmp/ceph.mon.keyring
--gen-key -n mon. --cap mon 'allow *'
5.1.7 生成用于命令行工具使用的密钥,文件名为:集群名.client.admin.keyring
]# ceph-authtool --create-keyring
/etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin
--set-uid=0 --cap mon 'allow *' --cap osd 'allow *' --cap mds
'allow'
5.1.8 将命令行密钥导入到mon通信密钥上
]# ceph-authtool /tmp/ceph.mon.keyring --import-keyring
/etc/ceph/ceph.client.admin.keyring
5.1.9 生成monitor MAP,要用到mon节点的名称和ip,集群的fsid
$ monmaptool --create --add mon1 192.168.0.1 --fsid
a7f64266-0894-4f1e-a635-d0aeaca0e993 /tmp/monmap
5.1.10 创建默认数据目录,目录名为:集群名称-mon节点名称
]# mkdir /var/lib/ceph/mon/ceph-mon1
5.1.11 使用Monitor MAP和Monitor Keyring来populated第一个mon节点
]# ceph-mon --mkfs -i mon1 --monmap /tmp/monmap --keyring
/tmp/ceph.mon.keyring
5.1.12 创建done文件
]# touch /var/lib/ceph/mon/ceph-mon1/done
5.1.13 将上边创建的目录和文件的owner和group更新成ceph用户和组
]# chown -R ceph:ceph /var/lib/ceph/mon
]# chown -R ceph:ceph /var/log/ceph
]# chown -R ceph:ceph /var/run/ceph
]# chown ceph:ceph /etc/ceph/ceph.client.admin.keyring
]# chown ceph:ceph /etc/ceph/ceph.conf
]# chown ceph:ceph /etc/ceph/rbdmap
5.1.14 设置mon服务开机启动,并启动第一个mon服务
]# systemctl enable ceph-mon.target
]# systemctl enable ceph-mon@mon1
]# systemctl start ceph-mon@mon1
5.1.15 校验ceph是否创建了默认的pool
]$ ceph osd lspools
0 rbd,
5.1.16 校验ceph集群的状态,不要慌张,确实是HEALTH_ERR状态,因为我们还没有添加OSD。
]$ ceph -s
cluster a7f64266-0894-4f1e-a635-d0aeaca0e993
health HEALTH_ERR 192 pgs stuck inactive; 192 pgs stuck
unclean; no osds
monmap e1: 1 mons at {mon1=192.168.0.1:6789/0}, election epoch
1, quorum 0 node1
osdmap e1: 0 osds: 0 up, 0 in
pgmap v2: 192 pgs, 3 pools, 0 bytes data, 0 objects
0 kB used, 0 kB / 0 kB avail
192 creating
5.2 配置第一个OSD节点
5.2.1 安装OSD
# yum install ceph-osd
5.2.2 将MON节点上的集群配置文件和clint.admin.keyring复制到OSD节点上
# scp root@node1:/etc/ceph/ceph.conf /etc/ceph
# scp root@node1:/etc/ceph/ceph.client.admin.keyring
/etc/ceph
5.2.3 生成OSD节点的唯一标识符uuid
$ uuidgen
b367c360-b364-4b1d-8fc6-09408a9cda7a
5.2.4 用唯一标识符生成OSD number identifier(osd_id)
# ceph osd create b367c360-b364-4b1d-8fc6-09408a9cda7a
5.2.5 创建新OSD的默认目录,名字为:集群名-osd_id
# mkdir /var/lib/ceph/osd/ceph-0
5.2.6 将一块硬盘创建分区,创建文件系统,mount到上一步创建的默认目录,并修改fstab
# parted /dev/sdb mklabel gpt
# parted /dev/sdb mkpart primary 1 10000
# mkfs -t xfs /dev/sdb1
# mount -o noatime /dev/sdb1 /var/lib/ceph/osd/ceph-0
# echo "/dev/sdb1 /var/lib/ceph/osd/ceph-0
xfs defaults,noatime 1 2" >>
/etc/fstab
5.2.7 初始化OSD数据目录,要用到osd_id和唯一标识符,会创建一个keyring
# ceph-osd -i 0 --mkfs --mkkey --osd-uuid
b367c360-b364-4b1d-8fc6-09408a9cda7a
备注: 如果使用独立的SSD硬盘做journal,请参考后边第八部分。
5.2.8 注册OSD key
# ceph auth add osd.0 osd 'allow *' mon 'allow profile osd' -i
/var/lib/ceph/osd/ceph-0/keyring
5.2.9 将这个OSD节点加入到CRUSH map
# ceph osd crush add-bucket osd_node1 host
5.2.10 将这个OSD节点移动到default CRUSH树
# ceph osd crush move osd_node1 root=default
5.2.11 将OSD的第一块磁盘加入到CRUSH map
# ceph osd crush add osd.0 1.0 host=osd_node1
5.2.12 更新新建的目录owner和group
# chown -R ceph:ceph /var/lib/ceph/osd
# chown -R ceph:ceph /var/log/ceph
# chown -R ceph:ceph /var/run/ceph
# chown -R ceph:ceph /etc/ceph
5.2.13 设置开机启动osd服务,启动osd服务
# systemctl enable ceph-osd.target
# systemctl enable ceph-osd@0
# systemctl start ceph-osd@0
5.2.14 可以观察PG的peering过程
$ ceph -w
5.2.15 可以查看OSD树的结构
$ ceph osd tree
ID WEIGHT
TYPE NAME
UP/DOWN
REWEIGHT PRIMARY-AFFINITY
-1 2
root default
-2 2
host osd_node1
0
1
osd.0
up
1
1
5.3 加入第二个Mon节点
5.3.1 配置ceph官方源
5.3.2 在第二个Mon节点上安装Monitor软件
# yum install ceph-mon
5.3.3 修改配置文件,加入第二个Mon节点相关配置
当前集群中只有一个Mon节点,所以第二个,第三个Mon节点必须都加入到mon initial members和mon
host中。因为生产环境的ceph集群,至少需要有3个Mon节点才能确保高可用。
[global]
mon initial members = mon1 mon2
...
[mon]
mon host = 192.168.0.1:6789 192.168.0.2:6789
...
[mon.mon2]
host = mon2
mon addr = 192.168.0.2
5.3.4 将修改过的ceph配置文件,同步到集群中所有其他的节点和client中
# scp /etc/ceph/ceph.conf mon1:/etc/ceph
5.3.5 创建默认数据目录,目录名为:集群名称-mon节点名称
# mkdir /var/lib/ceph/mon/ceph-mon2
5.3.6 创建一个临时目录,用于保存下边的一些过程文件,配置全部完成后再删除此临时目录
# mkdir /tmp/ceph
5.3.7 从第一个
Mon节点复制client.admin.keyring到第二个Mon节点,以便在第二个Mon节点上使用ceph命令行工具。
# scp mon1:/etc/ceph/ceph.client.admin.keyring
/etc/ceph
5.3.8 获取Monitor keyring到临时目录
# ceph auth get mon. -o /tmp/ceph/ceph_keyring.out
5.3.9 获取Monitor map到临时目录
# ceph mon getmap -o /tmp/ceph/ceph_mon_map.out
5.3.10 准备数据目录(5.3.5创建),需要指定Monitor map和 Monitor keyring
# ceph-mon -i mon2 --mkfs --monmap /tmp/ceph/ceph_mon_map.out
--keyring /tmp/ceph/ceph_keyring.out
5.3.11 更新新建的目录owner和group
# chown -R ceph:ceph /var/lib/ceph/mon
# chown -R ceph:ceph /var/log/ceph
# chown -R ceph:ceph /var/run/ceph
# chown -R ceph:ceph /etc/ceph
5.3.12 设置mon服务开机启动,并启动第二个mon服务
# systemctl enable ceph-mon@mon2
# systemctl start ceph-mon@mon2
5.4 加入第二个OSD节点
5.4.1 创建ceph配置文件目录
# mkdir /etc/ceph
5.4.2 复制第一个mon节点的集群配置文件和 client.admin.keyring
# scp root@mon1:/etc/ceph/ceph.client.admin.keyring
/etc/ceph/
# scp root@mon1:/etc/ceph/ceph.conf /etc/ceph/
5.4.3 安装OSD软件
# yum install ceph-osd
5.4.4 生成新OSD节点的唯一标识符uuid
$ uuidgen
ebd24968-0f3a-499c-a5b7-929c71ac8c1a
5.4.5 用唯一标识符生成OSD number identifier(osd_id)
# ceph osd create ebd24968-0f3a-499c-a5b7-929c71ac8c1a
5.4.5 创建新OSD的默认目录,名字为:集群名-osd_id
# mkdir /var/lib/ceph/osd/ceph-2
5.4.6 将一块硬盘创建分区,创建文件系统,mount到上一步创建的默认目录,并修改fstab
# parted /dev/sdb mklabel gpt
# parted /dev/sdb mkpart primary 1 10000
# mkfs -t xfs /dev/sdb1
# mount -o noatime /dev/sdb1 /var/lib/ceph/osd/ceph-2
# echo "/dev/sdb1 /var/lib/ceph/osd/ceph-2
xfs defaults,noatime 1 2" >>
/etc/fstab
5.4.7 设置正确的分区类型
# sgdisk --typecode=1:4fbd7e29-9d25-41b8-afd0-062c0ceff05d --
/dev/sdb
5.4.8 初始化OSD数据目录,要用到osd_id和唯一标识符,会创建一个keyring
# ceph-osd -i 2 --mkfs --mkkey --osd-uuid
b367c360-b364-4b1d-8fc6-09408a9cda7a
5.4.9 注册OSD key
# ceph auth add osd.2 osd 'allow *' mon 'allow profile osd' -i
/var/lib/ceph/osd/ceph-2/keyring
5.4.10 将这个OSD节点加入到CRUSH map,数字2是osd_id,数字1是weight
# ceph osd crush add 2 1 host=osd_node2
5.4.11 修改相关目录的owner和group
# chown -R ceph:ceph /var/lib/ceph/osd
# chown -R ceph:ceph /var/log/ceph
# chown -R ceph:ceph /var/run/ceph
# chown -R ceph:ceph /etc/ceph
5.4.12 设置开机启动osd服务,启动osd服务
# systemctl enable ceph-osd@2
# systemctl start ceph-osd@2
5.4.13 可以观察数据rebalancing的过程
# ceph -w
六、ceph用于生产环境需要思考的一些问题
一旦决定将ceph用于生产环境,那么可不像上边做测试那样简单了,需要考虑到因素非常多,不但要结合业务模式,预算等,对技术层面,物理部署层面也有诸多约束。我本人也没有大规模应用ceph的经验,所以结合别人的经验纸上谈兵一下。
6.1 业务层面的需求
预算是多少?Ceph集群是24x7x365运转还是有计划停机时间?
6.2 技术层面的需求
多少应用会使用该ceph集群?什么类型的数据会存储在该ceph集群该为性能和容量优化该ceph集群吗?整个集群的可用容量计划是多少?集群的数据增长的规律是什么?集群总共支持多少IOPS?集群总共支持多少吞吐量?集群的数据冗余程度,即数据应该被保存几份?
6.3 物理部署层面
集群需要跨IDC吗?需要跨机柜吗?(影响CRUSH MAP的布局)OSD节点是一致的硬件吗?SSD硬盘是作为journal还是数据盘?需要采用10G甚至40G的网络互联吗?(基于数据量)节点网卡需要做teaming吗?如果做,总共需要多少交换机端口?Monitor节点需要保存log,那么Monitor的本地磁盘需要准备多大?
对这些问题的回答越准确,越能帮助我们用合适的资金建立最合适的集群。
七、监控ceph集群
为确保ceph集群正常运转,需要随时关注集群状态,包括各种节点状态,quorum状态,以及集群容量。
以下是常用的检查命令:
ceph health
ceph osd stat
ceph mon stat
ceph quorum_status
ceph df
ceph osd df
每个Ceph
OSD都会定期执行"scrubbing"操作来检查它自己所存储的数据完整性,轻量scrubbing每天执行,检查object的大小和属;深度scrubbing每周执行,会读取数据,重新计算校验checksum。执行scrubbing是必须的,但是要知道这个操作会影响ceph集群性能,所以应该清楚知道集群何时做scrubbing,可以用如下命令定义:
osd scrub begin hour
osd scrub end hour
八、如何使用ssd硬盘作为OSD的日志磁盘
8.1.1 创建日志分区
假设ssd硬盘是/dev/sde,我们创建1个大小为10GB的分区sde1
# parted /dev/sde mklabel gpt
# parted /dev/sde mkpart primary 1 10000
8.1.2 修改分区类型为ceph OSD journal
用sgdisk修改GPT分区的类型,typecode后边第一个数字是分区编号,后边是GUID类型
Ceph 日志 GUID -> 45B0969E-9B03-4F30-B4C6-B4B80CEFF106
Ceph OSD GUID -> 4FBD7E29-9D25-41B8-AFD0-062C0CEFF05D
# sgdisk --typecode=1:45b0969e-9b03-4f30-b4c6-b4b80ceff106 --
/dev/sde
8.1.3 确定journal磁盘的UUID
$ ls -l /dev/disk/by-partuuid/*
8.1.4 将journal文件软链接到journal磁盘
# ln -s
/dev/disk/by-partuuid/62bc7076-0533-4440-9024-ddaeea4f7a7b
/var/lib/ceph/osd/ceph-0/journal
8.1.5 在journal磁盘上创建journal,-i参数的数字是对应的osd_id
# ceph-osd -i 0 --mkjournal
tips1: 如何重命名一个ceph集群
1) 停止整个集群
2) Unmount所有OSD,修改fstab中的配置
3) 重命名MON和OSD文件夹
4) 重命名配置文件和keyring, 修改配置文件中的keyring路径
5) 重新Mount所有OSD(mount -a)
6) 启动集群
参考文档:
http://www.cnblogs.com/bodhitree/p/4832139.html
关于ceph结构的剖析,非常好的文章
https://access.redhat.com/documentation/en-us/red_hat_ceph_storage/2/html/installation_guide_for_red_hat_enterprise_linux/storage_cluster_installation#installing_red_hat_ceph_storage_by_using_the_command_line_interface
http://www.spinics.net/lists/ceph-users/msg21090.html
如何重命名ceph集群
https://jedipunkz.github.io/blog/2014/02/27/journal-ssd-ceph-deploy/
使用SSD作为journal
https://blog.zhaw.ch/icclab/deploy-ceph-and-start-using-it-end-to-end-tutorial-installation-part-13/
https://www.slideshare.net/mirantis/ceph-talk-vancouver-20
http://xjtunsq.blogspot.jp crushmap算法
http://www.cnblogs.com/chenxianpao/p/5568207.html
crush算法
https://thenewstack.io/software-defined-storage-ceph-way/
https://www.sebastien-han.fr/blog/2014/10/06/ceph-and-enhanceio/
ceph与ssd和与enahnceio
https://ekuric.wordpress.com/tag/ceph/
http://www.stratoscale.com/blog/storage/ceph-monitor-cluster/
监控ceph
https://www.slideshare.net/esimone74/tut18972-unleash-the-power-of-ceph-across-the-data-center。跨机房部署
http://103.205.9.224/2017/01/28/手工部署安装ceph集群/
http://www.ksingh.co.in/blog/2015/05/30/ceph-monitor-ip-change/
处理ceph故障的实例
https://blog.noc.grnet.gr/2016/10/18/surviving-a-ceph-cluster-outage-the-hard-way/
处理ceph故障的实例
https://www.opensource-osijek.org/dokuwiki/wiki:knjige:ceph-storage
一堆杂合文档