博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ceph官方文档笔记(一)
阅读量:6152 次
发布时间:2019-06-21

本文共 5997 字,大约阅读时间需要 19 分钟。

hot3.png

1. 如果kernel版本<2.6.33,且将journal存储于一块单独的硬盘上,需要关闭写缓存:

sudo hdparm -W 0 /dev/hda 0
新内核问题不大。

2. osd daemon依赖Extended Attributes (XATTRs)存储内部对象状态和元数据,

You should always add the following line to the[osd]section of yourceph.conffile for ext4 file systems; you can optionally use it for btrfs and XFS.:

filestore xattr use omap = true
3. 配置域
[global]Description:	Settings under [global] affect all daemons in a Ceph Storage Cluster.Example:	auth supported = cephx[osd]Description:	Settings under [osd] affect all ceph-osd daemons in the Ceph Storage Cluster, and override the same setting in [global].Example:	osd journal size = 1000[mon]Description:	Settings under [mon] affect all ceph-mon daemons in the Ceph Storage Cluster, and override the same setting in [global].Example:	mon addr = 10.0.0.101:6789[mds]Description:	Settings under [mds] affect all ceph-mds daemons in the Ceph Storage Cluster, and override the same setting in [global].Example:	host = myserver01[client]Description:	Settings under [client] affect all Ceph Clients (e.g., mounted Ceph Filesystems, mounted Ceph Block Devices, etc.).Example:	log file = /var/log/ceph/radosgw.log
带认证配置:
[global]#Enable authentication between hosts within the cluster.#v 0.54 and earlierauth supported = cephx#v 0.55 and afterauth cluster required = cephxauth service required = cephxauth client required = cephx
不带认证配置:
[global]auth cluster required = noneauth service required = noneauth client required = noneauth supported = none
4. admin socket默认路径:
/var/run/ceph/$cluster-$name.asok
例如:
ceph --admin-daemon /var/run/ceph/ceph-osd.0.asok config show | less

24114345_5eMy.png

2. osd至少需要3个端口

24115053_NK1l.png

3. 内外网配置

外网:

[global]        ...        public network = {public-network/netmask}
内网:
[global]        ...        cluster network = {cluster-network/netmask}
If you declare a cluster network, OSDs will route heartbeat, object replication and recovery traffic over the cluster network.

4. 每个daemon必须设置主机名

[mon.a]        host = {hostname}        mon addr = {ip-address}:6789[osd.0]        host = {hostname}
为host设定ip不是必须的,如果设置了内网,ip的配置如下:

[osd.0]        public addr = {host-public-ip-address}        cluster addr = {host-cluster-ip-address}

1. Ceph Monitors maintain a “master copy” of the , which means a can determine the location of all Ceph Monitors, Ceph OSD Daemons, and Ceph Metadata Servers just by connecting to one Ceph Monitor and retrieving a current cluster map.

ceph客户端首先会链接ceph monitor,拷贝一份cluster map and the CRUSH algorithm,然后在本地就可以计算出每一个object的位置了,这也是ceph的可扩展性和高效的体现。

The primary role of the Ceph Monitor is to maintain a master copy of the cluster map. Ceph Monitors also provide authentication and logging services. Ceph Monitors write all changes in the monitor services to a single Paxos instance, and Paxos writes the changes to a key/value store for strong consistency. Ceph Monitors can query the most recent version of the cluster map during sync operations. Ceph Monitors leverage the key/value store’s snapshots and iterators (using leveldb) to perform store-wide synchronization.

24141947_tygR.png

2. Cluster Maps

The cluster map is a composite of maps, including the monitor map, the OSD map, the placement group map and the metadata server map.

[global] [mon]  [mon.a] [mon.b]  [mon.c]
[mon] mon host = hostname1,hostname2,hostname3 mon addr = 10.0.0.10:6789,10.0.0.11:6789,10.0.0.12:6789
[mon.a] host = hostname1  mon addr = 10.0.0.10:6789

我们建议在生产环境下最少部署 3 个监视器,以确保高可用性。运行多个监视器时,你可以指定为形成法定人数成员所需的初始监视器,这能减小集群上线时间。

[mon] mon initial members = a,b,c

利用ceph-deploy安装后已经被设置好:

[root@mon0 ceph]# ceph --admin-daemon /var/run/ceph/ceph-mon.mon0.asok config show|grep mon_initial_members  "mon_initial_members": "mon0, osd1, osd2",

ceph 集群利用率接近最大容量时(如 mon osd full ratio),作为防止数据丢失的安全措施,它会阻止你读写OSD。因此,让生产集群用满可不是好事,因为牺牲了高可用性。full ratio 默认值是.95 或容量的 95%。对小

型测试集群来说这是非常激进的设置。

[global]  mon osd full ratio = .80  mon osd nearfull ratio = .70

leader 可以给 provider 委派同步任务,这会避免同步请求压垮 leader、影响性能。在下面的图示中,requester 已经知道它落后于其它监视器,然后向 leader 请求同步,leader 让它去和 provider 同步。

30165454_k56c.png

新监视器加入集群时总要同步。在运行中,监视器会不定时收到集群运行图的更新,这就意味着 leader 和provider 角色可能在监视器间漂移。如果这事发生在同步期间(如 provider 落后于 leader),provider 能终结

和 requester 间的同步。

各 OSD 每 6 秒会与其他 OSD 进行心跳检查,用[osd]下的 osd heartbeat interval 可更改此间隔、或运行时更改。如果一个 OSD 20 秒都没有心跳,集群就认为它 down 了,用[osd]下的 osd heartbeat grace 可更改宽限期、或者运行时更改。

30165455_1PjQ.png

默认情况下,一个 OSD 必须向监视器报告三次另一个 OSD down 的消息,监视器才会认为那个被报告的 OSDdown 了;配置文件里[mon]段下的 mon osd min down reports 选项(v0.62 之前是 osd min down reports)可更改这个最少 osd down 消息次数,或者运行时设置。默认情况下,只要有一个 OSD 报告另一个 OSD 挂的消息即可,配置文件里[mon]段下的 mon osd min down reporters 可用来更改必需 OSD 数(v0.62 之前的 osd min downreporters),或者运行时更改。

30165455_HxY8.png

实际环境中我配置了mon osd down out interval = 1800(在osd停止响应多少秒后把它标记为down,默认300),手动停止一个osd,等待了1802秒后,ceph开始迁移数据。

如果一 OSD 至少 120 秒没向监视器报告过,监视器就认为它 down 了,你可以设置[osd]下的 osd mon reportinterval max 来更改此报告间隔,或者运行时更改。OSD 每 30 秒会报告它自己的状态,在[osd]段下设置 osd mon report interval min 可更改 OSD 报告间隔,或运行时更改。

30165455_Q6OY.png

可以在配置文件里配置 OSD,但它可以用默认值和最小化配置。最简 OSD 配置需设置 osd journal size 和osd host,其他几乎都能用默认值。

osd journal size 默认值是 0,所以你得在 ceph.conf 里设置。此值应该是 filestore max sync interval 和期望吞吐量的乘积再乘以 2.

osd journal size = {2 * (expected throughput * filestore max sync interval)}
例如默认interval为5:
[root@osd1 ceph]# ceph --admin-daemon /var/run/ceph/ceph-mon.osd1.asok config show|grep filestore_max_sync_interval  "filestore_max_sync_interval": "5",
我的sata盘为7200rpm大概是100M/s,根据以上公式osd journal size就是2*100*5=1G。硬盘和网络吞吐量中较小的一个是相对合理的吞吐量,有的用户则以 10GB 日志尺寸起步,设置大一点是有好处的。

除了为对象保存多个副本外,ceph 还靠洗刷归置组来保证数据完整性。这种洗刷类似对象存储层的 fsck,对每个归置组,ceph 生成一个所有对象的目录,并比对每个主对象及其副本以确保没有对象丢失或错配。轻微

洗刷(每天)检查对象尺寸和属性,深层洗刷(每周)会读出数据并用校验和保证数据完整性。
osd op threads=4
osd disk threads=2

当你增加或移除 OSD 时,CRUSH 算法将要求重新均衡集群,它会把一些归置组移出或移入多个 OSD 以回到均衡状态。归置组和对象的迁移过程会明显降低集群运营性能,为维持运营性能,ceph 用 backfilling 来执行此迁移,它可以使得 ceph 的回填操作优先级低于用户读写请求。(通过优先级来区分读写请求,这个做法很好!)

如果某 OSD 崩溃并重生,通常和其他 OSD 不同步,没有同归置组内最新版本的对象。这时,OSD 进入恢复模式并且搜索最新数据副本,并更新运行图。根据 OSD 挂的时间长短,OSD 的对象和归置组可能明显过期,另外,如果一个失效域挂了(如一个机柜),多个 OSD 会同时重生,这样恢复时间更长、更耗资源。

ceph 扩展属性用底层文件系统(如果没有尺寸限制)的 XATTR 存储为 inline xattr。

转载于:https://my.oschina.net/renguijiayi/blog/336917

你可能感兴趣的文章
app内部H5测试点总结
查看>>
[TC13761]Mutalisk
查看>>
Data Wrangling文摘:Non-tidy-data
查看>>
while()
查看>>
常用限制input的方法
查看>>
IIS7下使用urlrewriter.dll配置
查看>>
并行程序设计学习心得1——并行计算机存储
查看>>
JAVA入门到精通-第86讲-半双工/全双工
查看>>
bulk
查看>>
js document.activeElement 获得焦点的元素
查看>>
C++ 迭代器运算
查看>>
【支持iOS11】UITableView左滑删除自定义 - 实现多选项并使用自定义图片
查看>>
JavaWeb学习笔记(十四)--JSP语法
查看>>
【算法笔记】多线程斐波那契数列
查看>>
java8函数式编程实例
查看>>
jqgrid滚动条宽度/列显示不全问题
查看>>
在mac OS10.10下安装 cocoapods遇到的一些问题
查看>>
angularjs表达式中的HTML内容,如何不转义,直接表现为html元素
查看>>
css技巧
查看>>
Tyvj 1728 普通平衡树
查看>>