Чтобы полностью использовать полосу пропускания SAS/SATA SSD или NVMe, они должны расщепляться примерно между 5 (для SAS SSD).
Для включения такой возможности вам необходимо удалить OSD, созданные на этих SSD при установке, разделить каждый SSD на пять разделов и создать на них OSD.
Рассмотрим случай с 4мя хостами, каждый из которых имеет 6 дисков Intel s3610 1.6ТБ SSD. Последовательность действий такова:
- Определите все номера OSD, которые вы хотите заменить. Отобразите все OSD сгруппировав их по хостам, на которых они находятся воспользовавшись командой
ceph osd tree
на любом Контроллере или узле Ceph. Все узлы имеют веса близкие к их размерам в ТБ. В отображаемом примере вес равен 1.45 (для OSD 1.5ТБ):root@node-12:~# ceph osd tree ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY -6 34.79999 root root -7 8.70000 host node-7 0 1.45000 osd.0 up 1.00000 1.00000 1 1.09000 osd.1 up 1.00000 1.00000 2 1.09000 osd.2 up 1.00000 1.00000 3 1.09000 osd.3 up 1.00000 1.00000 4 1.09000 osd.4 up 1.00000 1.00000 5 1.45000 osd.5 up 1.00000 1.00000 6 1.09000 osd.6 up 1.00000 1.00000 7 1.09000 osd.7 up 1.00000 1.00000 8 1.45000 osd.8 up 1.00000 1.00000
- Выпишите соответствия идентификаторов host к osd. В нашем случае мы сохраняем их в качестве переменных оболочки:
host7_osd='0 5 8 15 19 20' host8_osd='21 22 27 29 31 39' host9_osd='26 41 44 48 54 64' host10_osd='33 63 70 72 77 79'
- Установите соединение SSH к самому первому узлу OSD Ceph. Остановите и удалите все OSD на нём:
osd="$host7_osd" for i in $osd; do service ceph-osd stop id=$i sleep 1 ceph osd crush remove osd.$i ceph auth del osd.$i ceph osd rm $i done disks=$(mount|egrep "ceph-(${osd// /|}) "|cut -d' ' -f1|cut -d/ -f3|tr ' ' ' '|tr -d3)for i in $osd; do umount /var/lib/ceph/osd/ceph-$i; done
Отметим, что у вас имеется переменная оболочки с названием
disks
, которая содержит имена дисков SSD, используемых этими OSD. Нам понадобится эта переменная для последующих шагов. - Разметьте заново все SSD, перечисленные в имеющейся переменной
disks
. Создайте пять эквивалентных разделов XFS на каждом SSD:for i in $disks; do parted /dev/$i rm 3 parted /dev/$i mkpart ceph xfs 237MB 320253MB parted /dev/$i mkpart ceph xfs 320253MB 640269MB parted /dev/$i mkpart ceph xfs 640269MB 960285MB parted /dev/$i mkpart ceph xfs 960285MB 1280301MB parted /dev/$i mkpart ceph xfs 1280301MB 1600321MB done
- Создайте и активируйте новые OSD в этих новых разделах:
for d in $disks; do for i in 3 4 5 6 7; do ceph-disk -v prepare --fs-type xfs --cluster ceph -- $d$i; done; done for d in $disks; do for i in 3 4 5 6 7; do ceph-disk -v activate --mark-init upstart --mount $d$i; done; done
- Воспользовавшись командой
ceph status
проверьте состояние Ceph. Дождитесь пока весь кластер Ceph вновь станет полностью жизнеспособным и все OSD перейдут в состояниеactive+clean
:root@node-12:~# ceph status cluster ee126587-f638-484f-a23a-7aac7e931c12 health HEALTH_OK monmap e3: 3 mons at {node-14=192.168.3.14:6789/0,node-15=192.168.3.15:6789/0,node-22=192.168.3.17:6789/0} election epoch 14, quorum 0,1,2 node-14,node-15,node-22 osdmap e4426: 180 osds: 178 up, 178 in pgmap v738789: 8960 pgs, 13 pools, 36966 MB data, 9582 objects 373 GB used, 100929 GB / 101302 GB avail 8960 active+clean
- Повторите шаги 3-6 для каждого из узлов Ceph.
Подробнее:
Автор: OlegBou