问题标签 [crush]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
rules - ceph 粉碎图 - 复制
仍然有些困惑 Ceph 迷恋地图的工作原理,并希望有人能提供一些启示。这是我的 osd 树:
我只是想确保在复制值为 2 或更大的情况下,一个对象的所有副本都不在同一个数据中心。我的规则(取自互联网)是:
但是,如果我转储归置组,我会直接看到来自同一个数据中心的两个 osd。osd的5,0
如何确保至少一个副本始终在另一个 dc 中?
ceph - 有人能解释一下 Ceph CRUSH 图中奇怪的剩余 OSD 设备——从 osd.N 重命名为 deviceN 吗?
不久前,我们从 Ceph 集群中移除了两个损坏的 OSD,osd.0 和 osd.8。它们现在已从大多数 Ceph 命令中消失,但仍以奇怪的设备名称出现在 CRUSH 地图中:
有人可以解释为什么 device0 和 device8 仍然存在,如果它们对集群有任何影响,以及我们是否应该删除它们?
device0 和 device8 不会出现在 CRUSH 地图的其他任何地方。
我们在这里使用了网站上的程序:
http://docs.ceph.com/docs/jewel/rados/operations/add-or-rm-osds/#removing-osds-manual
基本上:
我主要是问,因为我们正在处理一些卡住的 PG(不完整),它们仍在各个地方引用 id “8”。想知道这是否相关?
否则,“ceph osd 树”看起来是我所期望的(没有 osd.8 也没有 osd.0):
谢谢,
——丹
kubernetes - Rookv1.2 没有在 CrushMap 上添加标签
我目前正在使用 Rook v1.2.2 在我的 Kubernetes 集群(v1.16.3)上创建一个 Ceph 集群,但我未能在我的 CrushMap 上添加机架级别。
我想从:
类似于:
就像官方 rook 文档 ( https://rook.io/docs/rook/v1.2/ceph-cluster-crd.html#osd-topology ) 中解释的那样。
我遵循的步骤:
我有一个 v1.16.3 Kubernetes 集群,其中有 1 个主服务器(test-m1)和两个工作人员(test-w1 和 test-w2)。我使用 Kubespray 的默认配置(https://kubespray.io/#/docs/getting-started)安装了这个集群。
我将我的节点标记为:
我添加了标签role=storage-node
和污点storage-node=true:NoSchedule
以强制 Rook 在特定存储节点上执行,以下是一个存储节点的标签和污点的完整示例:
我开始部署 Rook 的 common.yml :https://github.com/rook/rook/blob/master/cluster/examples/kubernetes/ceph/common.yaml
我应用了一个自定义的 operator.yml 文件,以便能够在标记为“role=storage-node”的节点上运行操作员、csi-plugin 和代理:
然后我应用了我自己的自定义 ceph-cluster.yml 文件以允许 pod 在标记为“role=storage-node”的节点上运行
使用此配置,Rook 不会在 Crush Map 上应用标签。如果我安装 toolbox.yml ( https://rook.io/docs/rook/v1.2/ceph-toolbox.html ),进入并运行
我有以下输出:
如您所见,没有定义机架。即使我正确标记了我的节点。
令人惊讶的是,pod prepare-osd 可以检索以下日志第一行的信息:
您知道问题出在哪里,我该如何解决?
ceph - 为什么 Ceph 通过对象哈希而不是 CRUSH 算法计算 PG ID?
Ceph 使用 CRUSH 算法进行 PG->OSD 映射,它适用于增加/减少 OSD 节点。
但是对于 obj->PG 映射,Ceph 仍然使用传统的哈希,即pgid = hash(obj_name) % pg_num
. 如果我们改变 PG 的数量,这种方法可能会导致大量的数据迁移,甚至会降低系统的可用性。
为什么 Ceph 不使用 CRUSH algirhtm(比如稻草 2)进行 obj->PG 映射,当 PG 的数量发生变化时,它可能具有最佳的数据迁移量?
linux - ceph crushtool 管道命令不起作用
我在 ceph 监视器容器中运行此命令
它向我展示了反编译的粉碎贴图的输出。当我尝试
我收到错误,输入文件 - 未找到
有什么想法可以让我完成这项工作吗?
linux - 了解ceph中crush规则的机制
我想知道这两条规则之间的区别:
和
据我了解,第一条规则 rack_rule 将 rack 作为故障域,因此在每个 PG 中,我们都会有来自不同机架的 osd。例如,如果我有 2 个机架并且复制大小 = 2,我将有一个 PG [osd.1,osd.2],这 2 个 osd 应该来自不同的机架。
在第二条规则中,我认为它应该选择 2 个不同的机架,并且对于每个机架,它将选择 2 个不同的主机。所以,如果我有 2 个机架并且复制大小 = 2,我将有一个 PG [osd.1,osd.2],这 2 个 osd 应该来自不同的机架。
这在理论上是我所理解的,但我在实践中看不到这些预期的结果。使用这两个规则,我在同一个机架中为 PG 在复制大小为 2 的池中设置了 osd
swift - 有时 layoutIfNeeded 会导致 UITableView 内部不一致
Firebase 日志告诉我,有时应用程序在第一个 layoutIfNeeded() 上崩溃,UITableView 内部不一致:_visibleRows 和 _visibleCells 必须具有相同的长度。_visibleRows: {0, 2}; _visibleCells.count:4
我花了很多时间来重现这个错误,但没有结果。任何人都可以建议我找到问题的方法吗?没有任何 beginUpdates()/endUpdates() 调用。但是表格通过分页加载数据。