Le 24/11/2015 21:48, Gregory Farnum a écrit :
>
> Yeah, this is the old "two copies in one rack, a third copy elsewhere"
> replication scheme that lots of stuff likes but CRUSH doesn't really
> support. Assuming new enough clients and servers (some of the older
> ones barf when you do this), you can do
>
> rule replicate_three_times {
> ruleset 1
> type replicated
> min_size 3
> max_size 3
> step take default
> step choose firstn 2 type rack
> step chooseleaf firstn 2 type host
> step emit
> }
>
> That will pick 2 racks and emit 2 OSDs (on separate hosts) in each,
> but the list will get truncated down to three OSDs.
>
thanks it's exactly what I need and it works !
$ ceph osd tree
ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY
-1 43.67999 root default
-7 21.84000 rack N3
-2 10.92000 host ceph1
0 5.45999 osd.0 up 1.00000 0.79999
7 5.45999 osd.7 up 1.00000 0.79999
-4 10.92000 host ceph3
3 5.45999 osd.3 up 1.00000 0.79999
4 5.45999 osd.4 up 1.00000 0.79999
-6 21.84000 rack N6
-3 10.92000 host ceph2
1 5.45999 osd.1 up 1.00000 1.00000
2 5.45999 osd.2 up 1.00000 1.00000
-5 10.92000 host ceph4
5 5.45999 osd.5 up 1.00000 1.00000
6 5.45999 osd.6 up 1.00000 1.00000
-8 0 rack N-1
$ ceph osd dump | grep libvirt-pool
pool 7 'libvirt-pool' replicated size 3 min_size 1 crush_ruleset 1
object_hash rjenkins pg_num 256 pgp_num 256 last_change 49548 flags
hashpspool stripe_width 0
$ rados put -p libvirt-pool initrd.img-3.16.0-4-amd64
/boot/initrd.img-3.16.0-4-amd64
$ ceph osd map libvirt-pool initrd.img-3.16.0-4-amd64
osdmap e49549 pool 'libvirt-pool' (7) object 'initrd.img-3.16.0-4-amd64'
-> pg 7.59805ed7 (7.d7) -> up ([5,1,3], p5) acting ([5,1,3], p5)
:)
thought I do not understand what you mean by "but the list will get
truncated down to three OSDs", can you explain this?
_______________________________________________
ceph-users mailing list
[email protected]
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com