分类 默认分类 下的文章

这里的 IO,是指的读取外存(硬盘)的次数。

数据库使用树做索引是因为可以范围查找,而搜索树中, IO 的次数跟树的高度相关,为什么这么说呢?

通常树中的一个节点大小和数据库中的 page 大小存在关联, 而数据库是按 page 读取数据的,可以简单理解,数据库可以一次 IO 读取一个节点的数据。在搜索树的查找中, 要查询多少个节点就是多少次 IO, 为 log(h), h 是树的高度。

由于 page 的大小有限,我们希望每个节点,可以多存储一些 key (分割点)的个数, 节点中的 key 多了, 代表子树可以有更多的分支, 这就会降低树的高度。B 树中节点不仅保存了 key 还保存了节点的 Value , 而 B+ 树中非叶子节点只保存 key, 所以能存储更多的 key。

如此这样减少高度, 减少 IO 次数。

另外,B+树的叶子节点形成了一个有序链表,这使得范围查询变得更加高效,因为可以顺着叶子节点的链表进行遍历,而不需要回溯非叶子节点。

前言

我们的 ceph 集群里面的节点存在两种不同硬件配置规格的节点, 一种是老机器: 由之前的其他用途的服务器移过来。二种是新机器:专门为存储集群规划配置的。

ceph 最佳实践是存储节点使用同样的硬件配置,对硬件配置不一样的集群,叫做异构集群。
异构集群的应对一直是业界难点。对 ceph 而言,如果是异构集群,无法在性能和空间利用率上取得平衡。(尽管可以利用 osd 权重解决空间利用率的问题,却会影响性能)

而我们的集群通过一个巧妙的方法,规避了该问题,现在做一下说明,需要以后在维护的时候注意一下。

硬件情况

老机器配置:除系统盘外,有 7 块数据盘(其中 6 块机械盘, 1 块 ssd),共四台机器。

新机器配置:除系统盘外,有12 块 机械盘, 1 块 ssd。 剩下的节点都是统一的新配置,如果需要扩容,没有特殊情况也建议都统一按着新机器配置来采购硬件。

老机器的 cpu 配置比新机器的 cpu 配置略强。

- 阅读剩余部分 -

ceph 对象存储兼容两种接口(协议)S3 和 swift. S3 最常用, 这里仅介绍如何连接(使用)S3存储接口。

  1. 命令行的方式(s3cmd)
  2. 熟悉的文件挂载方式 (s3fs)
  3. GUI
  4. SDK (最常用的方式)

访问 S3, 你需要 S3 的:

  • 访问地址(endpoint)如:http://192.168.1.100/
  • 用户密钥,包含:access_id 和 secret_key. access_id是整个集群唯一的,可以根据access_id确定一个用户
  • 具体的桶名(或者你有自己新建桶的权限) 桶名也是整个集群唯一的。(也就是你的桶不能和自己以及其他用户的桶重名)
开始使用前请确保你已经拥有以上信息

- 阅读剩余部分 -

名词

DS : 负载均衡器的节点

RS: 后端真实节点

准备硬件节点

因为LVS RS节点需要修改内核参数, DS不需要。所以实际上RS 和DS的内核参数配置必须是不一样的, 所以我理解DS 和RS 不能在同一点节点。加上还要做高可以用的话, 你必须准备4个节点才有意义,即两个RS节点, 两个DS节点。

- 阅读剩余部分 -