Xce*_*cer 3 ceph kubernetes minikube rook-storage kubernetes-rook
我正在将 rook-ceph 部署到 minikube 集群中。一切似乎都正常。我向虚拟机添加了 3 个未格式化的磁盘并已连接。我遇到的问题是,当我运行 ceph status 时,我收到一条健康温暖消息,告诉我“1 pg 尺寸不足”。我到底该如何解决这个问题?
文档(https://docs.ceph.com/docs/mimic/rados/troubleshooting/troubleshooting-pg/)指出“如果您尝试在单个节点上创建集群,则必须更改 osdrush 的默认值在创建监视器和 OSD 之前,在 Ceph 配置文件中将选择叶类型设置从 1(表示主机或节点)到 0(表示 osd)。 ” 我不知道在哪里进行此配置,但是否有其他方法可以解决此问题我应该知道的,请告诉我。谢谢!
我在使用 rook (v1.5.7) 和具有多个 OSD 的单个数据承载主机安装 ceph 时遇到了这个问题。
安装附带了默认CRUSH 规则 replicated_rule
,该规则具有host
默认故障域:
$ ceph osd crush rule dump replicated_rule
{
"rule_id": 0,
"rule_name": "replicated_rule",
"ruleset": 0,
"type": 1,
"min_size": 1,
"max_size": 10,
"steps": [
{
"op": "take",
"item": -1,
"item_name": "default"
},
{
"op": "chooseleaf_firstn",
"num": 0,
"type": "host"
},
{
"op": "emit"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我必须找出与 pg 1 相关的“尺寸过小”的池名称,幸运的是在默认的 rook-ceph 安装中,只有一个:
$ ceph osd pool ls
device_health_metrics
$ ceph pg ls-by-pool device_health_metrics
PG OBJECTS DEGRADED ... STATE
1.0 0 0 ... active+undersized+remapped
Run Code Online (Sandbox Code Playgroud)
并确认 pg 使用默认规则:
$ ceph osd pool get device_health_metrics crush_rule
crush_rule: replicated_rule
Run Code Online (Sandbox Code Playgroud)
我没有修改默认的 CRUSH 规则,而是选择创建一个新的复制规则,但这次指定osd
(又名device
)类型(文档:CRUSH 映射类型和存储桶),还假设默认 CRUSH 根为default
:
# osd crush rule create-replicated <name> <root> <type> [<class>]
$ ceph osd crush rule create-replicated replicated_rule_osd default osd
$ ceph osd crush rule dump replicated_rule_osd
{
"rule_id": 1,
"rule_name": "replicated_rule_osd",
"ruleset": 1,
"type": 1,
"min_size": 1,
"max_size": 10,
"steps": [
{
"op": "take",
"item": -1,
"item_name": "default"
},
{
"op": "choose_firstn",
"num": 0,
"type": "osd"
},
{
"op": "emit"
}
]
}
Run Code Online (Sandbox Code Playgroud)
然后将新规则分配给现有池:
$ ceph osd pool set device_health_metrics crush_rule replicated_rule_osd
set pool 1 crush_rule to replicated_rule_osd
$ ceph osd pool get device_health_metrics crush_rule
crush_rule: replicated_rule_osd
Run Code Online (Sandbox Code Playgroud)
最后确认pg状态:
$ ceph pg ls-by-pool device_health_metrics
PG OBJECTS DEGRADED ... STATE
1.0 0 0 ... active+clean
Run Code Online (Sandbox Code Playgroud)
小智 5
正如您在问题中提到的,您应该将您的rush failure-domain-type更改为OSD,这意味着它将在OSD而不是主机之间复制您的数据。默认情况下,它是主机,当您只有一台主机时,它没有任何其他主机来复制您的数据,因此您的 pg 将始终尺寸不足。
您应该在创建监视器和 OSD 之前进行osd crush chooseleaf type = 0
设置。ceph.conf
这将在 OSD 之间而不是主机之间复制您的数据。
归档时间: |
|
查看次数: |
4801 次 |
最近记录: |