Comments (6)
I suppose this is because "default~ssd" != "ssd" (but that seems too obvious)
from rook.
exec "ceph osd tree" to see the type of osd ; is have ssd ?
from rook.
exec "ceph osd tree" to see the type of osd ; is have ssd ?
Yes, they are all ssd
in this test cluster
ceph osd tree | grep osd
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
2 ssd 0.93149 osd.2 up 1.00000 1.00000
1 ssd 0.93149 osd.1 up 1.00000 1.00000
0 ssd 0.93149 osd.0 up 1.00000 1.00000
3 ssd 0.93149 osd.3 up 1.00000 1.00000
from rook.
I suppose this is because "default~ssd" != "ssd" (but that seems too obvious)
This looks like the root cause.
With no deviceClass set in the Pool, I have following crush rule:
{
"rule_id": 1,
"rule_name": "replicapool",
"type": 1,
"steps": [
{
"op": "take",
"item": -1,
"item_name": "default"
},
{
"op": "choose_firstn",
"num": 0,
"type": "osd"
},
{
"op": "emit"
}
]
},
The rook operator is comparing "default" != ""
over here for the deviceClass.
Thoughts @subhamkrai ?
from rook.
We do have deviceClass set on all of our pools, so maybe that is unusual. We had to do that to avoid overlapping roots with multiple device classes.
This probably ought to extract the deviceClass after the "~" character in ItemName
?
rook/pkg/daemon/ceph/client/pool.go
Line 544 in 4a12234
Here are the decompiled crush rules in case that is helpful:
rule ceph-ops1-block-pool-1 {
id 11
type replicated
step take default class ssd
step chooseleaf firstn 0 type host
step emit
}
rule ceph-ops1-block-pool-1_host_ssd {
id 12
type replicated
step take default class ssd
step chooseleaf firstn 0 type host
step emit
}
from rook.
Thanks for all the clues.
I have not tested this but I guess below sample code will fix
func extractPoolDetails(rule ruleSpec) (string, string) {
---
for i, step := range rule.Steps {
---
if step.ItemName != "default" {
deviceClass = step.ItemName
}
---
}
if strings.Contains(deviceClass, "default~") && len(strings.Split(deviceClass, "~")) == 2 {
deviceClass = strings.Split(deviceClass, "~")[1]
}
return failureDomain, deviceClass
}
from rook.
Related Issues (20)
- pylint github action failing on the master builds HOT 2
- Add Minimum and Maximum kubernetes version for the releases. HOT 6
- Cannot make use of RADOS namespace for external cluster with EC block pool HOT 27
- Adding another OSD to an lvm metadata device fails HOT 15
- how to fix pg incomplete HOT 4
- broken rook-ceph-osd-prepare job when used metadata device with osdsPerDevice more that 1 HOT 1
- rook-ceph-exporter ServiceMonitor deleted during reconcile for wrong ceph cluster (more than one ceph cluster) HOT 1
- Ceph mds myfs is on crashloopbackoff HOT 3
- osd pods or osd-prepared pods are not creating HOT 8
- non of osd is healthy HOT 3
- kubelet stopped then rook-ceph osd pod still deleted HOT 3
- Rook Dashboard hangs/times out HOT 17
- How do I use rook-ceph outside the k8s cluster
- daemon_id used for RGW pods is not unique in case of multiple instances HOT 2
- General inquiry : cephfs does not support mount option discard ? HOT 1
- The StorageClass "cephfs" is invalid: provisioner: Invalid value: "rook-ceph=.cephfs.csi.ceph.com": HOT 3
- Ceph External docs create buggy storage classes and toolbox ot working HOT 1
- Integration tests broken: wipefs: error: 1: probing initialization failed: No such file or directory HOT 8
- Default user get unlinked after linking new user to the S3 bucket using radosgw-admin
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rook.