====== Deploying clover ====== ^ Documentation ^| ^Name:| Deploying clover | ^Description:| raw commands of a live CEPH storage cluster deployment | ^Modification date :|29/07/2018| ^Owner:|dodger| ^Notify changes to:|Owner | ^Tags:|ceph, object storage | ^Scalate to:|The_fucking_bofh| ====== RAW ====== ===== CloneWars deploy clover ===== for i in 01 03 05 07 09 11 13 15 17 19 ; do bash /home/bofher/scripts/CloneWars/CloneWars.sh -c nuciberterminal -h AVMLP-OSD-0${i} -i 10.20.54.1${i} -d 2048GB -m 20 -O -r 4096 -v 2 -o 2 -F ; rm -fv /etc/salt/pki/master/minions/avmlp-osd-0${i}.ciberterminal.net ; done for i in 02 04 06 08 10 12 14 16 18 20 ; do bash /home/bofher/scripts/CloneWars/CloneWars.sh -c nuciberterminal2 -h AVMLP-OSD-0${i} -i 10.20.54.1${i} -d 2048GB -m 20 -O -r 4096 -v 2 -o 2 -F ; rm -fv /etc/salt/pki/master/minions/avmlp-osd-0${i}.ciberterminal.net ; done for i in 01 03 ; do bash /home/bofher/scripts/CloneWars/CloneWars.sh -c nuciberterminal -h AVMLP-OSM-0${i} -i 10.20.54.$((${i}+50)) -d 50GB -m 20 -O -r 4096 -v 2 -o 2 -F ; rm -fv /etc/salt/pki/master/minions/avmlp-osm-0${i}.ciberterminal.net ; done for i in 02 04 ; do bash /home/bofher/scripts/CloneWars/CloneWars.sh -c nuciberterminal2 -h AVMLP-OSM-0${i} -i 10.20.54.$((${i}+50)) -d 50GB -m 20 -O -r 4096 -v 2 -o 2 -F ; rm -fv /etc/salt/pki/master/minions/avmlp-osm-0${i}.ciberterminal.net ; done for i in 01 03 ; do bash /home/bofher/scripts/CloneWars/CloneWars.sh -c nuciberterminal -h AVMLP-OSGW-0${i} -i 10.20.54.$((${i}+10)) -d 50GB -m 20 -O -r 4096 -v 2 -o 2 -F ; rm -fv /etc/salt/pki/master/minions/avmlp-osgw-0${i}.ciberterminal.net ; done for i in 02 04 ; do bash /home/bofher/scripts/CloneWars/CloneWars.sh -c nuciberterminal2 -h AVMLP-OSGW-0${i} -i 10.20.54.$((${i}+10)) -d 50GB -m 20 -O -r 4096 -v 2 -o 2 -F ; rm -fv /etc/salt/pki/master/minions/avmlp-osgw-0${i}.ciberterminal.net ; done for i in 01 03 ; do bash /home/bofher/scripts/CloneWars/CloneWars.sh -c nuciberterminal -h AVMLP-OSFS-0${i} -i 10.20.55.$((${i}+10)) -d 50GB -m 20 -O -r 4096 -v 2 -o 2 -F ; rm -fv /etc/salt/pki/master/minions/avmlp-osfs-0${i}.ciberterminal.net ; done for i in 02 04 ; do bash /home/bofher/scripts/CloneWars/CloneWars.sh -c nuciberterminal2 -h AVMLP-OSFS-0${i} -i 10.20.55.$((${i}+10)) -d 50GB -m 20 -O -r 4096 -v 2 -o 2 -F ; rm -fv /etc/salt/pki/master/minions/avmlp-osfs-0${i}.ciberterminal.net ; done ===== salt ===== export THESERVER="avmlp-os*-0*" salt-key -A salt "${THESERVER}" state.apply salt "${THESERVER}" state.apply nsupdate salt "${THESERVER}" test.ping salt "${THESERVER}" pkg.install yum-plugin-priorities salt "${THESERVER}" user.add ceph 1002 salt "${THESERVER}" file.write /etc/sudoers.d/ceph \ "ceph ALL = (root) NOPASSWD:ALL" salt "${THESERVER}" cmd.run "sudo whoami" runas=ceph salt "${THESERVER}" cmd.run \ "ssh-keygen -q -N '' -f /home/ceph/.ssh/id_rsa" \ runas=ceph salt "${THESERVER}" cmd.run "cp /home/ceph/.ssh/id_rsa.pub /home/ceph/.ssh/authorized_keys" export VMNAMESTART="avmlp-os" salt "${THESERVER}" cmd.run "cat /home/ceph/.ssh/id_rsa.pub" |egrep -v "^${VMNAMESTART}" | sed 's/^[[:space:]]\{1,5\}//g' > all_cluster_nodes.txt while read LINE ; do salt "${THESERVER}" file.append /home/ceph/.ssh/authorized_keys "${LINE}" ; done < all_cluster_nodes.txt ===== avmlp-osm-001 ===== cat << EOM > ceph.repo [Ceph] name=Ceph packages for \$basearch baseurl=http://download.ceph.com/rpm-nautilus/el7/\$basearch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc [Ceph-noarch] name=Ceph noarch packages baseurl=http://download.ceph.com/rpm-nautilus/el7/noarch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc [ceph-source] name=Ceph source packages baseurl=http://download.ceph.com/rpm-nautilus/el7/SRPMS enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc EOM export GWSERVERS="avmlp-osgw-004.ciberterminal.net avmlp-osgw-003.ciberterminal.net avmlp-osgw-001.ciberterminal.net avmlp-osgw-002.ciberterminal.net" export OSDSERVERS="avmlp-osd-001.ciberterminal.net avmlp-osd-002.ciberterminal.net avmlp-osd-003.ciberterminal.net avmlp-osd-004.ciberterminal.net avmlp-osd-005.ciberterminal.net avmlp-osd-006.ciberterminal.net avmlp-osd-007.ciberterminal.net avmlp-osd-008.ciberterminal.net avmlp-osd-009.ciberterminal.net avmlp-osd-010.ciberterminal.net avmlp-osd-011.ciberterminal.net avmlp-osd-012.ciberterminal.net avmlp-osd-013.ciberterminal.net avmlp-osd-014.ciberterminal.net avmlp-osd-015.ciberterminal.net avmlp-osd-016.ciberterminal.net avmlp-osd-017.ciberterminal.net avmlp-osd-018.ciberterminal.net avmlp-osd-019.ciberterminal.net avmlp-osd-020.ciberterminal.net" export MONSERVERS="avmlp-osm-002.ciberterminal.net avmlp-osm-001.ciberterminal.net avmlp-osm-004.ciberterminal.net avmlp-osm-003.ciberterminal.net avmlp-osm-005.ciberterminal.net avmlp-osm-006.ciberterminal.net" export MDSSERVERS="avmlp-osfs-002.ciberterminal.net avmlp-osfs-001.ciberterminal.net avmlp-osfs-004.ciberterminal.net avmlp-osfs-003.ciberterminal.net" export ALLSERVERS="${GWSERVERS} ${OSDSERVERS} ${MONSERVERS} ${MDSSERVERS}" for i in ${ALLSERVERS} ; do scp ceph.repo ${i}:/home/ceph/ ; ssh ${i} "sudo cp -pfv /home/ceph/ceph.repo /etc/yum.repos.d/" ; done for i in ${ALLSERVERS} ; do ssh ${i} "sudo chown root. /etc/yum.repos.d/ceph.repo" ; done for i in ${ALLSERVERS} ; do ssh ${i} "sudo ls -l /etc/yum.repos.d/ceph.repo" ; done ===== salt ===== export THESERVER="avmlp-os[mdgf]*-0*" salt "${THESERVER}" cmd.run "yum -y install ceph-deploy" ===== avmlp-osm-001 ===== ceph-deploy install ${ALLSERVERS} --repo-url https://download.ceph.com/rpm-nautilus/el7/ ===== salt ===== CHECK export THESERVER="avmlp-os[mdgf]*-0*" salt "${THESERVER}" cmd.run "rpm -qa |egrep ceph" for i in $(salt "${THESERVER}" test.ping| egrep "^a"|awk -F\: '{print $1}'| sort) ; do salt "${i}" cmd.run "sudo ceph --version" ; done ===== avmlp-osm-001 ===== ceph-deploy new ${MONSERVERS} ceph-deploy mon create-initial for i in ${MONSERVERS} ; do ceph-deploy gatherkeys ${i} ; done ceph-deploy admin ${MONSERVERS} sudo ceph mon enable-msgr2 ceph-deploy mgr create ${MONSERVERS} osd's for THESERVER in ${OSDSERVERS} ; do echo "${THESERVER}"; echo "################### ${THESERVER}: creating disk" ; ceph-deploy osd create ${THESERVER} --data /dev/sdb; echo "################### ${THESERVER}: listing (check) disk" ; ceph-deploy osd list ${THESERVER}; done ===== CRUSH ===== mkdir /home/ceph/crush/mod_20190730 cd /home/ceph/crush/mod_20190730 ceph osd getcrushmap -o crushmap.bin crushtool -d crushmap.bin -o crushmap.txt # begin crush map tunable choose_local_tries 0 tunable choose_local_fallback_tries 0 tunable choose_total_tries 50 tunable chooseleaf_descend_once 1 tunable chooseleaf_vary_r 1 tunable chooseleaf_stable 1 tunable straw_calc_version 1 tunable allowed_bucket_algs 54 # devices device 0 osd.0 class hdd device 1 osd.1 class hdd device 2 osd.2 class hdd device 3 osd.3 class hdd device 4 osd.4 class hdd device 5 osd.5 class hdd device 6 osd.6 class hdd device 7 osd.7 class hdd device 8 osd.8 class hdd device 9 osd.9 class hdd device 10 osd.10 class hdd device 11 osd.11 class hdd device 12 osd.12 class hdd device 13 osd.13 class hdd device 14 osd.14 class hdd device 15 osd.15 class hdd device 16 osd.16 class hdd device 17 osd.17 class hdd device 18 osd.18 class hdd device 19 osd.19 class hdd # types type 0 osd type 1 host type 2 chassis type 3 rack type 4 row type 5 pdu type 6 pod type 7 room type 8 datacenter type 9 zone type 10 region type 11 root # buckets host avmlp-osd-001 { id -3 # do not change unnecessarily id -4 class hdd # do not change unnecessarily # weight 1.999 alg straw2 hash 0 # rjenkins1 item osd.0 weight 1.999 } host avmlp-osd-002 { id -5 # do not change unnecessarily id -6 class hdd # do not change unnecessarily # weight 1.999 alg straw2 hash 0 # rjenkins1 item osd.1 weight 1.999 } host avmlp-osd-003 { id -7 # do not change unnecessarily id -8 class hdd # do not change unnecessarily # weight 1.999 alg straw2 hash 0 # rjenkins1 item osd.2 weight 1.999 } host avmlp-osd-004 { id -9 # do not change unnecessarily id -10 class hdd # do not change unnecessarily # weight 1.999 alg straw2 hash 0 # rjenkins1 item osd.3 weight 1.999 } host avmlp-osd-005 { id -11 # do not change unnecessarily id -12 class hdd # do not change unnecessarily # weight 1.999 alg straw2 hash 0 # rjenkins1 item osd.4 weight 1.999 } host avmlp-osd-006 { id -13 # do not change unnecessarily id -14 class hdd # do not change unnecessarily # weight 1.999 alg straw2 hash 0 # rjenkins1 item osd.5 weight 1.999 } host avmlp-osd-007 { id -15 # do not change unnecessarily id -16 class hdd # do not change unnecessarily # weight 1.999 alg straw2 hash 0 # rjenkins1 item osd.6 weight 1.999 } host avmlp-osd-008 { id -17 # do not change unnecessarily id -18 class hdd # do not change unnecessarily # weight 1.999 alg straw2 hash 0 # rjenkins1 item osd.7 weight 1.999 } host avmlp-osd-009 { id -19 # do not change unnecessarily id -20 class hdd # do not change unnecessarily # weight 1.999 alg straw2 hash 0 # rjenkins1 item osd.8 weight 1.999 } host avmlp-osd-010 { id -21 # do not change unnecessarily id -22 class hdd # do not change unnecessarily # weight 1.999 alg straw2 hash 0 # rjenkins1 item osd.9 weight 1.999 } host avmlp-osd-011 { id -23 # do not change unnecessarily id -24 class hdd # do not change unnecessarily # weight 1.999 alg straw2 hash 0 # rjenkins1 item osd.10 weight 1.999 } host avmlp-osd-012 { id -25 # do not change unnecessarily id -26 class hdd # do not change unnecessarily # weight 1.999 alg straw2 hash 0 # rjenkins1 item osd.11 weight 1.999 } host avmlp-osd-013 { id -27 # do not change unnecessarily id -28 class hdd # do not change unnecessarily # weight 1.999 alg straw2 hash 0 # rjenkins1 item osd.12 weight 1.999 } host avmlp-osd-014 { id -29 # do not change unnecessarily id -30 class hdd # do not change unnecessarily # weight 1.999 alg straw2 hash 0 # rjenkins1 item osd.13 weight 1.999 } host avmlp-osd-015 { id -31 # do not change unnecessarily id -32 class hdd # do not change unnecessarily # weight 1.999 alg straw2 hash 0 # rjenkins1 item osd.14 weight 1.999 } host avmlp-osd-016 { id -33 # do not change unnecessarily id -34 class hdd # do not change unnecessarily # weight 1.999 alg straw2 hash 0 # rjenkins1 item osd.15 weight 1.999 } host avmlp-osd-017 { id -35 # do not change unnecessarily id -36 class hdd # do not change unnecessarily # weight 1.999 alg straw2 hash 0 # rjenkins1 item osd.16 weight 1.999 } host avmlp-osd-018 { id -37 # do not change unnecessarily id -38 class hdd # do not change unnecessarily # weight 1.999 alg straw2 hash 0 # rjenkins1 item osd.17 weight 1.999 } host avmlp-osd-019 { id -39 # do not change unnecessarily id -40 class hdd # do not change unnecessarily # weight 1.999 alg straw2 hash 0 # rjenkins1 item osd.18 weight 1.999 } host avmlp-osd-020 { id -41 # do not change unnecessarily id -42 class hdd # do not change unnecessarily # weight 1.999 alg straw2 hash 0 # rjenkins1 item osd.19 weight 1.999 } rack nuciberterminal { # weight 19.990 alg straw2 hash 0 # rjenkins1 item avmlp-osd-001 weight 1.999 item avmlp-osd-003 weight 1.999 item avmlp-osd-005 weight 1.999 item avmlp-osd-007 weight 1.999 item avmlp-osd-009 weight 1.999 item avmlp-osd-011 weight 1.999 item avmlp-osd-013 weight 1.999 item avmlp-osd-015 weight 1.999 item avmlp-osd-017 weight 1.999 item avmlp-osd-019 weight 1.999 } rack nuciberterminal2 { # weight 19.990 alg straw2 hash 0 # rjenkins1 item avmlp-osd-002 weight 1.999 item avmlp-osd-004 weight 1.999 item avmlp-osd-006 weight 1.999 item avmlp-osd-008 weight 1.999 item avmlp-osd-010 weight 1.999 item avmlp-osd-012 weight 1.999 item avmlp-osd-014 weight 1.999 item avmlp-osd-016 weight 1.999 item avmlp-osd-018 weight 1.999 item avmlp-osd-020 weight 1.999 } datacenter mediapro { # weight 0.000 alg straw2 hash 0 # rjenkins1 item nuciberterminal2 weight 19.990 } datacenter itconic { # weight 0.000 alg straw2 hash 0 # rjenkins1 item nuciberterminal weight 19.990 } root default { id -1 # do not change unnecessarily id -2 class hdd # do not change unnecessarily # weight 39.980 alg straw2 hash 0 # rjenkins1 item mediapro weight 19.990 item itconic weight 19.990 } # rules rule replicated_rule { id 0 type replicated min_size 2 max_size 10 step take default step chooseleaf firstn 0 type datacenter step emit } rule ciberterminalRule { id 1 type replicated min_size 2 max_size 10 # begin iterating in the "root" of the crush tree step take default step choose firstn 4 type datacenter step chooseleaf firstn 2 type host step emit } # end crush map crushtool -c crushmap.txt -o crushmap_new.bin crushtool --test -i crushmap_new.bin --show-utilization --rule 1 --num-rep=4 crushtool --test -i crushmap_new.bin --show-choose-tries --rule 1 --num-rep=4 avmlp-osm-001 /home/ceph/crush/mod_20190730 # ceph osd crush tree ID CLASS WEIGHT TYPE NAME -1 39.97998 root default -46 19.98999 datacenter itconic -43 19.98999 rack nuciberterminal -3 1.99899 host avmlp-osd-001 0 hdd 1.99899 osd.0 -7 1.99899 host avmlp-osd-003 2 hdd 1.99899 osd.2 -11 1.99899 host avmlp-osd-005 4 hdd 1.99899 osd.4 -15 1.99899 host avmlp-osd-007 6 hdd 1.99899 osd.6 -19 1.99899 host avmlp-osd-009 8 hdd 1.99899 osd.8 -23 1.99899 host avmlp-osd-011 10 hdd 1.99899 osd.10 -27 1.99899 host avmlp-osd-013 12 hdd 1.99899 osd.12 -31 1.99899 host avmlp-osd-015 14 hdd 1.99899 osd.14 -35 1.99899 host avmlp-osd-017 16 hdd 1.99899 osd.16 -39 1.99899 host avmlp-osd-019 18 hdd 1.99899 osd.18 -45 19.98999 datacenter mediapro -44 19.98999 rack nuciberterminal2 -5 1.99899 host avmlp-osd-002 1 hdd 1.99899 osd.1 -9 1.99899 host avmlp-osd-004 3 hdd 1.99899 osd.3 -13 1.99899 host avmlp-osd-006 5 hdd 1.99899 osd.5 -17 1.99899 host avmlp-osd-008 7 hdd 1.99899 osd.7 -21 1.99899 host avmlp-osd-010 9 hdd 1.99899 osd.9 -25 1.99899 host avmlp-osd-012 11 hdd 1.99899 osd.11 -29 1.99899 host avmlp-osd-014 13 hdd 1.99899 osd.13 -33 1.99899 host avmlp-osd-016 15 hdd 1.99899 osd.15 -37 1.99899 host avmlp-osd-018 17 hdd 1.99899 osd.17 -41 1.99899 host avmlp-osd-020 19 hdd 1.99899 osd.19 ===== recovery tunning ===== ceph tell 'osd.*' config set osd_recovery_max_single_start 1000 ceph tell 'osd.*' config set osd_max_backfills 100 ceph tell 'osd.*' config set osd_recovery_max_active 300 ceph tell 'osd.*' config set osd_recovery_max_single_start 1000 ceph tell 'osd.*' config set osd_backfill_scan_max 51200 ceph tell 'osd.*' config set osd_backfill_scan_min 6400 ceph tell 'osd.*' config set osd_recovery_sleep_hdd 0 [[linux:ceph:tunning_recovery|Tunning CEPH recovery]] ===== radosgw ===== ceph-deploy rgw create ${GWSERVERS} check: avmlp-osm-001 /home/ceph # ceph -s cluster: id: a3a799ce-f1d3-4230-a915-06e988fee767 health: HEALTH_WARN Degraded data redundancy: 188/564 objects degraded (33.333%), 18 pgs degraded too few PGs per OSD (3 < min 30) services: mon: 6 daemons, quorum avmlp-osm-001,avmlp-osm-002,avmlp-osm-003,avmlp-osm-004,avmlp-osm-005,avmlp-osm-006 (age 3h) mgr: avmlp-osm-002.ciberterminal.net(active, since 4h), standbys: avmlp-osm-004.ciberterminal.net, avmlp-osm-003.ciberterminal.net, avmlp-osm-001.ciberterminal.net, avmlp-osm-005.ciberterminal.net, avmlp-osm-006.ciberterminal.net osd: 20 osds: 20 up (since 4h), 20 in (since 4h) rgw: 4 daemons active (avmlp-osgw-001.ciberterminal.net, avmlp-osgw-002.ciberterminal.net, avmlp-osgw-003.ciberterminal.net, avmlp-osgw-004.ciberterminal.net) data: pools: 4 pools, 32 pgs objects: 188 objects, 2.0 KiB usage: 20 GiB used, 40 TiB / 40 TiB avail pgs: 188/564 objects degraded (33.333%) 18 active+undersized+degraded 14 active+undersized io: client: 60 KiB/s rd, 0 B/s wr, 68 op/s rd, 45 op/s wr avmlp-osm-001 /home/ceph # ceph osd pool ls detail pool 1 '.rgw.root' replicated size 3 min_size 2 crush_rule 0 object_hash rjenkins pg_num 8 pgp_num 8 autoscale_mode warn last_change 85 flags hashpspool stripe_width 0 application rgw pool 2 'default.rgw.control' replicated size 3 min_size 2 crush_rule 0 object_hash rjenkins pg_num 8 pgp_num 8 autoscale_mode warn last_change 87 flags hashpspool stripe_width 0 application rgw pool 3 'default.rgw.meta' replicated size 3 min_size 2 crush_rule 0 object_hash rjenkins pg_num 8 pgp_num 8 autoscale_mode warn last_change 90 flags hashpspool stripe_width 0 application rgw pool 4 'default.rgw.log' replicated size 3 min_size 2 crush_rule 0 object_hash rjenkins pg_num 8 pgp_num 8 autoscale_mode warn last_change 91 flags hashpspool stripe_width 0 application rgw Especial configs: cat >> ceph.conf< Restart gateways: salt "avmlp-osgw-*" service.restart ceph-radosgw.target salt "avmlp-osgw-*" cmd.run "netstat -nap|egrep radosgw|egrep LISTEN" Increase number of pg's per osd: # check ceph tell 'osd.*' config get mon_max_pg_per_osd # change ceph tell 'osd.*' config set mon_max_pg_per_osd ${NEW_PG_PER_OSD_NUMBER} # check again ceph tell 'osd.*' config get mon_max_pg_per_osd Change pool "size": for i in $(ceph osd pool ls) ; do ceph osd pool set ${i} size 4 ; done for i in $(ceph osd pool ls) ; do ceph osd pool set ${i} min_size 4 ; done for i in $(ceph osd pool ls) ; do ceph osd pool set ${i} pg_num 40 ; done for i in $(ceph osd pool ls) ; do ceph osd pool set ${i} pgp_num 40 ; done for i in $(ceph osd pool ls) ; do ceph osd pool set ${i} pg_autoscale_mode on ; done for i in $(ceph osd pool ls) ; do ceph osd pool set ${i} crush_rule ciberterminalRule ; done Create data+index pool: export POOL_NAME="default.rgw.buckets.data" ceph osd pool create ${POOL_NAME} 512 512 replicated ciberterminalRule ceph osd pool set ${POOL_NAME} pg_autoscale_mode on ceph osd pool application enable ${POOL_NAME} rgw ceph osd pool set ${POOL_NAME} compression_algorithm snappy ceph osd pool set ${POOL_NAME} compression_mode aggressive ceph osd pool set ${POOL_NAME} compression_min_blob_size 10240 ceph osd pool set ${POOL_NAME} compression_max_blob_size 4194304 export POOL_NAME="default.rgw.buckets.index" ceph osd pool create ${POOL_NAME} 128 128 replicated ciberterminalRule ceph osd pool set ${POOL_NAME} pg_autoscale_mode on ceph osd pool application enable ${POOL_NAME} rgw ===== Check CRUSH Maps ===== Now that there're pools with PG's, is time to check that the CRUSH map is ok: ceph pg dump | egrep "^[0-9]" | awk '{print $17}'| less avmlp-osm-001 /home/ceph # ceph pg dump | egrep "^[0-9]" | awk '{print $17}'| head dumped all [8,6,19,7] [19,15,18,0] [17,13,10,8] [6,0,7,13] [18,4,13,15] [0,6,15,11] [4,8,17,1] [3,5,6,10] [11,17,12,10] [13,15,6,2] The PG's must be on both CPD's (even/odd OSD's). ===== Deploy MDS's ===== for i in ${MDSSERVERS} ; do ssh ${i} "sudo rm -fv /etc/ceph/ceph.conf" ; done ceph-deploy mds create ${MDSSERVERS} export POOL_NAME="cephfs_data-ftp" ceph osd pool create ${POOL_NAME} 256 256 replicated ciberterminalRule ceph osd pool set ${POOL_NAME} size 4 ceph osd pool set ${POOL_NAME} compression_algorithm snappy ceph osd pool set ${POOL_NAME} compression_mode aggressive ceph osd pool set ${POOL_NAME} compression_min_blob_size 10240 ceph osd pool set ${POOL_NAME} compression_max_blob_size 4194304 ceph osd pool set ${POOL_NAME} pg_autoscale_mode on export POOL_NAME="cephfs_metadata-ftp" ceph osd pool create ${POOL_NAME} 60 60 replicated ciberterminalRule ceph osd pool set ${POOL_NAME} size 4 ceph osd pool set ${POOL_NAME} pg_autoscale_mode on ceph fs new cephfs cephfs_metadata-ftp cephfs_data-ftp ceph fs ls ceph -s ceph mds stat Create client: export CLIENTNAME="avmlp-sftp" ceph auth get-or-create client.cephfs-${CLIENTNAME} mon "allow r" mds "allow r path=/, allow rw path=/ftp" osd "allow class-read object_prefix rbd_children, allow rw pool=cephfs_data-ftp" > /etc/ceph/client.cephfs-${CLIENTNAME}.keyring # ceph auth caps client.cephfs-avmlp-sftp mon "allow r" mds "allow r path=/, allow rw path=/ftp" osd "allow class-read object_prefix rbd_children, allow rw pool=cephfs_data-ftp" ===== radosgw User creation ===== export THEUSERNAME="dodger" radosgw-admin user create --uid="${THEUSERNAME}" --display-name="${THEUSERNAME} user" radosgw-admin subuser create --uid=${THEUSERNAME} --subuser=${THEUSERNAME} --access=full radosgw-admin key create --subuser=${THEUSERNAME}:swift --key-type=swift --gen-secret radosgw-admin user modify --uid=${THEUSERNAME} --max-buckets=1 radosgw-admin user modify --uid=${THEUSERNAME} --max-buckets=10 ===== monitoring ===== export THEUSERNAME="centreon" sudo radosgw-admin user create --uid="${THEUSERNAME}" --display-name="${THEUSERNAME} user" sudo radosgw-admin user modify --uid=${THEUSERNAME} --max-buckets=1 export QUOTASCOPE="user" sudo radosgw-admin quota set --quota-scope=${QUOTASCOPE} --uid=${THEUSERNAME} --max-objects=10 Added mds's to centreon: for ((x=1; x<5; x++)); do HOSTNAME="avmlp-osfs-0$(printf "%02d" ${x})" ; HOSTIP=$(dig ${HOSTNAME}.ciberterminal.net | egrep -v "^;|^$"| awk '{print $5}') ; centreon -u ${CENTUSER} -p ${CENTPASSWORD} -o HOST -a ADD -v "${HOSTNAME};${HOSTNAME}.ciberterminal.net;${HOSTIP};ciberterminal-CEPH-osfs;Central;CEPH-PRO" ; let x++ ; done for ((x=2; x<5; x++)); do HOSTNAME="avmlp-osfs-0$(printf "%02d" ${x})" ; HOSTIP=$(dig ${HOSTNAME}.ciberterminal.net | egrep -v "^;|^$"| awk '{print $5}') ; centreon -u ${CENTUSER} -p ${CENTPASSWORD} -o HOST -a ADD -v "${HOSTNAME};${HOSTNAME}.ciberterminal.net;${HOSTIP};ciberterminal-CEPH-osfs;Central2;CEPH-PRO" ; let x++ ; done for ((x=1; x<5; x++)); do HOSTNAME="avmlp-osfs-0$(printf "%02d" ${x})" ; echo centreon -u ${CENTUSER} -p ${CENTPASSWORD} -o HOST -a applytpl -v "${HOSTNAME}" ; done ===== Dashboard ===== # only for monitors export THESERVER="a*-osm-00*.ciberterminal.net" salt "${THESERVER}" pkg.install ceph-mgr-dashboard ceph mgr module enable dashboard ceph dashboard create-self-signed-cert ceph mgr services ceph dashboard ac-user-create bofher **** administrator radosgw-admin user create --uid=cephdashboard --display-name=cephdashboard --system ceph dashboard set-rgw-api-access-key $(cat access_cephdash) ceph dashboard set-rgw-api-secret-key $(cat secret_cephdash) ceph dashboard set-rgw-api-host ceph_endpoint.ciberterminal.net ceph dashboard set-rgw-api-port 80 ceph mgr module disable dashboard ceph mgr module enable dashboard ===== Enable pg_autoscaler ===== ceph mgr module enable pg_autoscaler ===== Additional modules ===== # only for monitors export THESERVER="a*-osm-00*.ciberterminal.net" for i in ceph-mgr-diskprediction-cloud.noarch ceph-mgr-diskprediction-local.noarch ceph-mgr-rook.noarch ceph-mgr-ssh.noarch ceph-medic ceph-grafana-dashboards.noarch ; do salt "${THESERVER}" pkg.install ${i} ; done Maybe you'll need to performa a hard reset of the systemd service... If you see that: acclm-osm-001 /home/ceph/ceph-deploy # systemctl start ceph-mgr@acclm-osm-001.ciberterminal.net.service Job for ceph-mgr@acclm-osm-001.ciberterminal.net.service failed because start of the service was attempted too often. See "systemctl status ceph-mgr@acclm-osm-001.ciberterminal.net.service" and "journalctl -xe" for details. To force a start use "systemctl reset-failed ceph-mgr@acclm-osm-001.ciberterminal.net.service" followed by "systemctl start ceph-mgr@acclm-osm-001.ciberterminal.net.service" again. I used that line: for i in 1 2 3 4 ; do salt "acclm-osm-00${i}*" cmd.run "systemctl reset-failed ceph-mgr@acclm-osm-00${i}.ciberterminal.net.service" ; salt "acclm-osm-00${i}*" cmd.run "systemctl start ceph-mgr@acclm-osm-00${i}.ciberterminal.net.service" ; done