Оптимизация OSD Ceph на SSD- NVMe

в 12:59, , рубрики: ceph, crush, NVMe, OSD, proxmox ve, SAN, ssd, децентрализованные сети, Облачные вычисления, хранилища данных, метки:

Чтобы полностью использовать полосу пропускания SAS/SATA SSD или NVMe, они должны расщепляться примерно между 5 (для SAS SSD).

Для включения такой возможности вам необходимо удалить OSD, созданные на этих SSD при установке, разделить каждый SSD на пять разделов и создать на них OSD.

Рассмотрим случай с 4мя хостами, каждый из которых имеет 6 дисков Intel s3610 1.6ТБ SSD. Последовательность действий такова:

  1. Определите все номера 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
    

  2. Выпишите соответствия идентификаторов 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'
    

  3. Установите соединение 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. Нам понадобится эта переменная для последующих шагов.

  4. Разметьте заново все 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
    

  5. Создайте и активируйте новые 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
    

  6. Воспользовавшись командой 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
    

  7. Повторите шаги 3-6 для каждого из узлов Ceph.

Подробнее:

Автор: OlegBou

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js