ST Wong (ITSC)
2018-11-23 16:00:52 UTC
Hi all,
We've 8 osd hosts, 4 in room 1 and 4 in room2.
A pool with size = 3 using following crush map is created, to cater for room failure.
rule multiroom {
id 0
type replicated
min_size 2
max_size 4
step take default
step choose firstn 2 type room
step chooseleaf firstn 2 type host
step emit
}
We're expecting:
1.for each object, there are always 2 replicas in one room and 1 replica in other room making size=3. But we can't control which room has 1 or 2 replicas.
2.in case an osd host fails, ceph will assign remaining osds to the same PG to hold replicas on the failed osd host. Selection is based on crush rule of the pool, thus maintaining the same failure domain - won't make all replicas in the same room.
3.in case of entire room with 1 replica fails, the pool will remain degraded but won't do any replica relocation.
4. in case of entire room with 2 replicas fails, ceph will make use of osds in the surviving room and making 2 replicas. Pool will not be writeable before all objects are made 2 copies (unless we make pool size=4?). Then when recovery is complete, pool will remain in degraded state until the failed room recover.
Is our understanding correct? Thanks a lot.
Will do some simulation later to verify.
Regards,
/stwong
We've 8 osd hosts, 4 in room 1 and 4 in room2.
A pool with size = 3 using following crush map is created, to cater for room failure.
rule multiroom {
id 0
type replicated
min_size 2
max_size 4
step take default
step choose firstn 2 type room
step chooseleaf firstn 2 type host
step emit
}
We're expecting:
1.for each object, there are always 2 replicas in one room and 1 replica in other room making size=3. But we can't control which room has 1 or 2 replicas.
2.in case an osd host fails, ceph will assign remaining osds to the same PG to hold replicas on the failed osd host. Selection is based on crush rule of the pool, thus maintaining the same failure domain - won't make all replicas in the same room.
3.in case of entire room with 1 replica fails, the pool will remain degraded but won't do any replica relocation.
4. in case of entire room with 2 replicas fails, ceph will make use of osds in the surviving room and making 2 replicas. Pool will not be writeable before all objects are made 2 copies (unless we make pool size=4?). Then when recovery is complete, pool will remain in degraded state until the failed room recover.
Is our understanding correct? Thanks a lot.
Will do some simulation later to verify.
Regards,
/stwong