Tips & tricks Π² Ρ€Π°Π±ΠΎΡ‚Π΅ с Ceph Π² Π½Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…

Tips & tricks Π² Ρ€Π°Π±ΠΎΡ‚Π΅ с Ceph Π² Π½Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ceph ΠΊΠ°ΠΊ сСтСвоС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π² Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎ нагруТСнности ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ взгляда Π½Π΅ каТутся простыми ΠΈΠ»ΠΈ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ. НапримСр:

  • миграция Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· старого Ceph Π² Π½ΠΎΠ²Ρ‹ΠΉ с частичным использованиСм ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… сСрвСров Π² Π½ΠΎΠ²ΠΎΠΌ кластСрС;
  • Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ распрСдСлСния дискового пространства Π² Ceph.

Π Π°Π·Π±ΠΈΡ€Π°ΡΡΡŒ с Ρ‚Π°ΠΊΠΈΠΌΠΈ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ, ΠΌΡ‹ сталкиваСмся с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ OSD Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎ особСнно Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Об этом ΠΈ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅.

ΠžΠΏΠΈΡΠ°Π½Π½Ρ‹Π΅ Π½ΠΈΠΆΠ΅ способы Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ для Π»ΡŽΠ±Ρ‹Ρ… вСрсий Ceph. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡ‡Ρ‚Π΅Π½ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ Π² Ceph ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ большой объСм Π΄Π°Π½Π½Ρ‹Ρ…: для прСдотвращСния ΠΏΠΎΡ‚Π΅Ρ€ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ дСйствия Π±ΡƒΠ΄ΡƒΡ‚ Β«Π΄Ρ€ΠΎΠ±ΠΈΡ‚ΡŒΡΡΒ» Π½Π° нСсколько Π΄Ρ€ΡƒΠ³ΠΈΡ….

ΠŸΡ€Π΅Π΄ΠΈΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΏΡ€ΠΎ OSD

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΄Π²Π° ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ… рассматриваСмых Ρ€Π΅Ρ†Π΅ΠΏΡ‚ΠΎΠ² посвящСны OSD (Object Storage Daemon), ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠΎΠ³Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π² ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ β€” Π²ΠΊΡ€Π°Ρ‚Ρ†Π΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ это Π²ΠΎΠΎΠ±Ρ‰Π΅ Ρ‚Π°ΠΊΠΎΠ΅ Π² Ceph ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ Ρ‚Π°ΠΊ Π²Π°ΠΆΠ΅Π½.

Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ слСдуСт ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ вСсь Ceph-кластСр состоит ΠΈΠ· мноТСства OSD. Π§Π΅ΠΌ ΠΈΡ… большС, Ρ‚Π΅ΠΌ большС свободный объСм Π΄Π°Π½Π½Ρ‹Ρ… Π² Ceph. ΠžΡ‚ΡΡŽΠ΄Π° Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π³Π»Π°Π²Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ OSD: ΠΎΠ½ сохраняСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ceph Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСмах всСх ΡƒΠ·Π»ΠΎΠ² кластСра ΠΈ прСдоставляСт сСтСвой доступ ΠΊ Π½ΠΈΠΌ (для чтСния, записи ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… запросов).

На этом ΠΆΠ΅ ΡƒΡ€ΠΎΠ²Π½Π΅ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π·Π° счСт копирования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ OSD. И здСсь ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ, ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ рассказано Π΄Π°Π»Π΅Π΅.

КСйс β„–1. БСзопасноС ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ OSD ΠΈΠ· кластСра Ceph Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…

ΠΠ΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠΈ OSD ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Π° Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ сСрвСра ΠΈΠ· кластСра β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для Π·Π°ΠΌΠ΅Π½Ρ‹ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ сСрвСр, β€” Ρ‡Ρ‚ΠΎ ΠΈ ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Ρƒ нас, послуТив ΠΏΠΎΠ²ΠΎΠ΄ΠΎΠΌ ΠΊ написанию ΡΡ‚Π°Ρ‚ΡŒΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, конСчная Ρ†Π΅Π»ΡŒ манипуляций β€” ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ всС OSD ΠΈ mon’ы Π½Π° Π΄Π°Π½Π½ΠΎΠΌ сСрвСрС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ.

Для удобства ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ситуации, Π³Π΄Π΅ ΠΌΡ‹ Π² процСссС выполнСния ΠΊΠΎΠΌΠ°Π½Π΄ ошибСмся с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ OSD, Π·Π°Π΄Π°Π΄ΠΈΠΌ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ удаляСмой OSD. НазовСм Π΅Ρ‘ ${ID} β€” здСсь ΠΈ Π΄Π°Π»Π΅Π΅ такая пСрСмСнная замСняСт Π½ΠΎΠΌΠ΅Ρ€ OSD, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ.

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° состояниС ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚:

root@hv-1 ~ # ceph osd tree
ID CLASS WEIGHT  TYPE NAME      STATUS REWEIGHT PRI-AFF
-1       0.46857 root default
-3       0.15619      host hv-1
-5       0.15619      host hv-2
 1   ssd 0.15619      osd.1     up     1.00000  1.00000
-7       0.15619      host hv-3
 2   ssd 0.15619      osd.2     up     1.00000  1.00000

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ OSD, потрСбуСтся ΠΏΠ»Π°Π²Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ reweight Π½Π° Π½Π΅ΠΉ Π΄ΠΎ нуля. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ сниТаСм количСство Π΄Π°Π½Π½Ρ‹Ρ… Π² OSD Π·Π° счСт балансировки Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ OSD. Для этого Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

ceph osd reweight osd.${ID} 0.98
ceph osd reweight osd.${ID} 0.88
ceph osd reweight osd.${ID} 0.78

… ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅ Π΄ΠΎ нуля.

Плавная балансировка Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅. Π­Ρ‚ΠΎ особСнно Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ, Ссли Π² OSD находится большой объСм Π΄Π°Π½Π½Ρ‹Ρ…. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ‚ΠΎΡ‡Π½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ послС выполнСния ΠΊΠΎΠΌΠ°Π½Π΄ reweight всС ΠΏΡ€ΠΎΡˆΠ»ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ceph -s ΠΈΠ»ΠΈ ΠΆΠ΅ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΎΠΊΠ½Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ceph -w для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π·Π° измСнСниями Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Когда OSD Β«ΠΎΠΏΡƒΡΡ‚ΠΎΡˆΠ΅Π½Π°Β», ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ стандартной ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ Π΅Π΅ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡŽ. Для этого ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅ΠΌ Π½ΡƒΠΆΠ½ΡƒΡŽ OSD Π² состояниС down:

ceph osd down osd.${ID}

Β«Π’Ρ‹Ρ‚Π°Ρ‰ΠΈΠΌΒ» OSD ΠΈΠ· кластСра:

ceph osd out osd.${ID}

ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΠΌ сСрвис OSD ΠΈ ΠΎΡ‚ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π΅Π³ΠΎ Ρ€Π°Π·Π΄Π΅Π» Π² Π€Π‘:

systemctl stop ceph-osd@${ID}
umount /var/lib/ceph/osd/ceph-${ID}

Π£Π΄Π°Π»ΠΈΠΌ OSD ΠΈΠ· CRUSH map:

ceph osd crush remove osd.${ID}

Π£Π΄Π°Π»ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ OSD:

ceph auth del osd.${ID}

И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΡƒΠ΄Π°Π»ΠΈΠΌ саму OSD:

ceph osd rm osd.${ID}

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π²Π΅Ρ€ΡΠΈΡŽ Ceph Luminous ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅, Ρ‚ΠΎ Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½Ρ‹Π΅ дСйствия ΠΏΠΎ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡŽ OSD ΠΌΠΎΠΆΠ½ΠΎ свСсти ΠΊ Π΄Π²ΡƒΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ:

ceph osd out osd.${ID}
ceph osd purge osd.${ID}

Если послС выполнСния описанных Π²Ρ‹ΡˆΠ΅ дСйствий Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ceph osd tree, Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π° сСрвСрС, Π³Π΄Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹, большС Π½Π΅Ρ‚ OSD, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹ΡˆΠ΅:

root@hv-1 ~ # ceph osd tree
ID CLASS WEIGHT  TYPE NAME     STATUS REWEIGHT PRI-AFF
-1       0.46857      root default
-3       0.15619      host hv-1
-5       0.15619      host hv-2
-7       0.15619      host hv-3
 2   ssd 0.15619      osd.2    up     1.00000  1.00000

ΠŸΠΎΠΏΡƒΡ‚Π½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ состояниС кластСра Ceph ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅Ρ‚ Π² HEALTH_WARN, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ количСства OSD ΠΈ объСма доступного дискового пространства.

Π”Π°Π»Π΅Π΅ Π±ΡƒΠ΄ΡƒΡ‚ описаны дСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ сСрвСр ΠΈ, соотвСтствСнно, ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ· Ceph. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ сСрвСра Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ всС OSD Π½Π° этом сСрвСрС.

Если Π½Π° этом сСрвСрС Π½Π΅ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ большС OSD, Ρ‚ΠΎ послС ΠΈΡ… удалСния Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΠ· ΠΊΠ°Ρ€Ρ‚Ρ‹ OSD сСрвСр hv-2, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

ceph osd crush rm hv-2

УдаляСм mon с сСрвСра hv-2, запуская ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π½ΠΈΠΆΠ΅ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ сСрвСрС (Ρ‚.Π΅. Π² Π΄Π°Π½Π½ΠΎΠΌ случаС β€” Π½Π° hv-1):

ceph-deploy mon destroy hv-2

ПослС этого ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ сСрвСр ΠΈ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ дСйствиям (Π΅Π³ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌΡƒ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΡŽ ΠΈ Ρ‚.ΠΏ.).

КСйс β„–2. РаспрСдСлСниС дискового пространства Π² ΡƒΠΆΠ΅ созданном Ceph-кластСрС

Π’Ρ‚ΠΎΡ€ΡƒΡŽ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Π½Π°Ρ‡Π½Ρƒ с прСдисловия ΠΏΡ€ΠΎ PG (Placement Groups). Основная Ρ€ΠΎΠ»ΡŒ PG Π² Ceph Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π² Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ Ceph-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ дальнСйшСй Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² OSD. Π€ΠΎΡ€ΠΌΡƒΠ»Π°, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ количСство PG, находится Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Ceph. Π’Π°ΠΌ ΠΆΠ΅ этот вопрос Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½ ΠΈ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ….

Π’Π°ΠΊ Π²ΠΎΡ‚: ΠΎΠ΄Π½Π° ΠΈΠ· распространСнных ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π²ΠΎ врСмя эксплуатации Ceph β€” нСсбалансированноС количСство OSD ΠΈ PG ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡƒΠ»Π°ΠΌΠΈ Π² Ceph.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΈΠ·-Π·Π° этого ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ситуация, ΠΊΠΎΠ³Π΄Π° указываСтся слишком большоС количСство PG Π² нСбольшом ΠΏΠΎ ΠΎΠ±ΡŠΠ΅ΠΌΡƒ ΠΏΡƒΠ»Π΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎ сути являСтся Π½Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ использованиСм дискового пространства Π² кластСрС. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ получаСтся Π±ΠΎΠ»Π΅Π΅ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Π°Ρ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· OSD. Π­Ρ‚ΠΎ Π²Π»Π΅Ρ‡Π΅Ρ‚ Π·Π° собой ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ кластСра сначала Π² состояниС HEALTH_WARN, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΈ HEALTH_ERR. ВсСму Π²ΠΈΠ½ΠΎΠΉ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ceph ΠΏΡ€ΠΈ расчСтС доступного объСма Π΄Π°Π½Π½Ρ‹Ρ… (ΡƒΠ·Π½Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ MAX AVAIL Π² Π²Ρ‹Π²ΠΎΠ΄Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ceph df для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡƒΠ»Π° ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ) опираСтся Π½Π° объСм доступных Π΄Π°Π½Π½Ρ‹Ρ… Π² OSD. Если хотя Π±Ρ‹ Π² ΠΎΠ΄Π½ΠΎΠΌ OSD Π±ΡƒΠ΄Π΅Ρ‚ нСдостаточно мСста, Ρ‚ΠΎ большС Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ получится, ΠΏΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ распрСдСлСны Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ всСми OSD.

Π‘Ρ‚ΠΎΠΈΡ‚ ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ эти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² большСй стСпСни Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ Π½Π° этапС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Ceph-кластСра. Один ΠΈΠ· инструмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ, β€” Ceph PGCalc. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ наглядно рассчитываСтся Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ количСство PG. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, ΠΊ Π½Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ±Π΅Π³Π½ΡƒΡ‚ΡŒ ΠΈ Π² ситуации, ΠΊΠΎΠ³Π΄Π° кластСр Ceph ΡƒΠΆΠ΅ настроСн Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. Π—Π΄Π΅ΡΡŒ стоит ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ€Π°Π±ΠΎΡ‚ ΠΏΠΎ ΠΈΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ Π²Π°ΠΌ, вСроятнСС всСго, понадобится ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ количСство PG, Π° эта Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ нСдоступна Π² старых вСрсиях Ceph (ΠΎΠ½Π° появилась Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с вСрсии Nautilus).

Π˜Ρ‚Π°ΠΊ, прСдставим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ: Ρƒ кластСра β€” статус HEALTH_WARN ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· OSD заканчиваСтся мСсто. Об этом Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ошибка HEALTH_WARN: 1 near full osd. НиТС прСдставлСн Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Ρƒ ΠΈΠ· Ρ‚Π°ΠΊΠΎΠΉ ситуации.

Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ трСбуСтся Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ OSD. ΠŸΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΌΡ‹ ΡƒΠΆΠ΅ выполняли Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ кСйсС, ΠΊΠΎΠ³Π΄Π° Β«ΠΎΡΡƒΡˆΠ°Π»ΠΈΒ» ΡƒΠ·Π΅Π» β€” с Ρ‚ΠΎΠΉ лишь Ρ€Π°Π·Π½ΠΈΡ†Π΅ΠΉ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ потрСбуСтся Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ reweight. НапримСр, Π΄ΠΎ 0.95:

ceph osd reweight osd.${ID} 0.95

Π’Π°ΠΊ освобоТдаСтся дисковоС пространство Π² OSD ΠΈ исправляСтся ошибка Π² ceph health. Однако, ΠΊΠ°ΠΊ ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ, данная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° прСимущСствСнно Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ настройки Ceph Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… этапах: ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π΅ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° Π½Π΅ ΠΏΡ€ΠΎΡΠ²Π»ΡΠ»Π°ΡΡŒ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

Π’ нашСм ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ случаС всС ΡƒΠΏΠΈΡ€Π°Π»ΠΎΡΡŒ Π²:

  • слишком большоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ replication_count Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΏΡƒΠ»ΠΎΠ²,
  • слишком высокоС количСство PG Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡƒΠ»Π΅ ΠΈ слишком Π² малСнькоС β€” Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ.

Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΡƒΠΆΠ΅ упомянутым ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ΠΎΠΌ. Π’ Π½Π΅ΠΌ наглядно ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈ, Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ слоТного. Π—Π°Π΄Π°Π² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ:

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Ссли Π²Ρ‹ настраиваСтС Ceph-кластСр с нуля, Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π° окаТСтся гСнСрация ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ создадут ΠΏΡƒΠ»Ρ‹ с нуля с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

Π‘ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ послСдний столбСц β€” Suggested PG Count. Π’ нашСм случаС ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π΅Ρ‰Π΅ ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠΉ, Π³Π΄Π΅ ΡƒΠΊΠ°Π·Π°Π½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈ ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

Π˜Ρ‚Π°ΠΊ, сначала потрСбуСтся ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ β€” это стоит Π΄Π΅Π»Π°Ρ‚ΡŒ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ, ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΠ² ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒ, ΠΌΡ‹ освободим дисковоС пространство. Π’ процСссС выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ доступного дискового объСма Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ:

ceph osd pool $pool_name set $replication_size

А послС Π΅Ρ‘ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ β€” измСняСм значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² pg_num ΠΈ pgp_num ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ceph osd pool set $pool_name pg_num $pg_number
ceph osd pool set $pool_name pgp_num $pg_number

Π’Π°ΠΆΠ½ΠΎ: ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡƒΠ»Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ количСство PG ΠΈ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ значСния Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡƒΠ»Π°Ρ…, ΠΏΠΎΠΊΠ° Π½Π΅ исчСзнут прСдупрСТдСния Β«Degraded data redundancyΒ» ΠΈ Β«n-number of pgs degradedΒ».

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС ΠΏΡ€ΠΎΡˆΠ»ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎ Π²Ρ‹Π²ΠΎΠ΄Π°ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ ceph health detail ΠΈ ceph -s.

КСйс β„–3. ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΡ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ с LVM Π² Ceph RBD

Π’ ситуации, ΠΊΠΎΠ³Π΄Π° Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, установлСнныС Π½Π° Π°Ρ€Π΅Π½Π΄ΠΎΠ²Π°Π½Π½Ρ‹Π΅ сСрвСры bare-metal, часто встаСт вопрос с отказоустойчивым Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ. А Π΅Ρ‰Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ мСста Π² этом Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π±Ρ‹Π»ΠΎ достаточно… Другая распространСнная ситуация: Π΅ΡΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина с Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ Π½Π° сСрвСрС ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ диск, Π½ΠΎ Π½Π΅ΠΊΡƒΠ΄Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π° сСрвСрС Π½Π΅ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ свободного дискового пространства.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ способами β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ сСрвСр (Ссли Ρ‚Π°ΠΊΠΎΠ²ΠΎΠΉ имССтся) ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π½ΠΎΠ²Ρ‹Ρ… дисков Π½Π° сСрвСр. Но Π½Π΅ всСгда получаСтся это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, поэтому миграция ΠΈΠ· LVM Π² Ceph ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π’Ρ‹Π±Ρ€Π°Π² Ρ‚Π°ΠΊΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅ΠΌ дальнСйший процСсс ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвСрами, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ локальноС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ с ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π° Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ. ЕдинствСнная Π·Π°Π³Π²ΠΎΠ·Π΄ΠΊΠ° β€” придСтся ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π’Πœ Π½Π° врСмя провСдСния Ρ€Π°Π±ΠΎΡ‚.

Π’ качСствС ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ Π΄Π°Π»Π΅Π΅ Ρ€Π΅Ρ†Π΅ΠΏΡ‚Π° взята ΡΡ‚Π°Ρ‚ΡŒΡ с этого Π±Π»ΠΎΠ³Π°, инструкции ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±Ρ‹Π»ΠΈ ΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π½Ρ‹ Π² дСйствии. К слову, Ρ‚Π°ΠΌ ΠΆΠ΅ описан ΠΈ способ бСспростойной ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² нашСм случаС ΠΎΠ½ просто Π½Π΅ потрСбовался, поэтому ΠΌΡ‹ Π΅Π³ΠΎ Π½Π΅ провСряли. Если ΠΆΠ΅ это ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ для вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° β€” Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π΄Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Ρ… Π² коммСнтариях.

ΠŸΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΠΌ ΠΊ практичСской части. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ virsh ΠΈ, соотвСтствСнно, libvirt. Для Π½Π°Ρ‡Π°Π»Π° ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡƒΠ» Ceph’а, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄ΡƒΡ‚ ΠΌΠΈΠ³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊ libvirt:

virsh pool-dumpxml $ceph_pool

Π’ описании ΠΏΡƒΠ»Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Ceph с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ для Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ этап Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ LVM-ΠΎΠ±Ρ€Π°Π· конвСртируСтся Π² Ceph RBD. ВрСмя выполнСния зависит Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΎΠ±Ρ€Π°Π·Π°:

qemu-img convert -p -O rbd /dev/main/$vm_image_name rbd:$ceph_pool/$vm_image_name

ПослС ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ останСтся LVM-ΠΎΠ±Ρ€Π°Π·, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π² случаС, Ссли ΠΌΠΈΠ³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π’Πœ Π² RBD Π½Π΅ получится ΠΈ придСтся ΠΎΡ‚ΠΊΠ°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ измСнСния. Π’Π°ΠΊΠΆΠ΅ β€” для возмоТности быстро ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ измСнСния β€” сдСлаСм бэкап ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹:

virsh dumpxml $vm_name > $vm_name.xml
cp $vm_name.xml $vm_name_backup.xml

… ΠΈ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π» (vm_name.xml). НайдСм Π±Π»ΠΎΠΊ с описаниСм диска (начинаСтся со строки <disk type='file' device='disk'> ΠΈ заканчиваСтся Π½Π° </disk>) ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ Π΅Π³ΠΎ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π²ΠΈΠ΄Ρƒ:

<disk type='network' device='disk'>
<driver name='qemu'/>
<auth username='libvirt'>
  <secret type='ceph' uuid='sec-ret-uu-id'/>
 </auth>
<source protocol='rbd' name='$ceph_pool/$vm_image_name>
  <host name='10.0.0.1' port='6789'/>
  <host name='10.0.0.2' port='6789'/>
</source>
<target dev='vda' bus='virtio'/> 
<alias name='virtio-disk0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>

Π Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈ:

  1. Π’ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» source указываСтся адрСс Π΄ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π² Ceph RBD (это адрСс с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ названия Ceph-ΠΏΡƒΠ»Π° ΠΈ RBD-ΠΎΠ±Ρ€Π°Π·Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСлялся Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ этапС).
  2. Π’ Π±Π»ΠΎΠΊΠ΅ secret указываСтся Ρ‚ΠΈΠΏ ceph, Π° Ρ‚Π°ΠΊΠΆΠ΅ UUID сСкрСта для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Π½Π΅ΠΌΡƒ. Π•Π³ΠΎ uuid ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ virsh secret-list.
  3. Π’ Π±Π»ΠΎΠΊΠ΅ host ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ адрСса Π΄ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΎΠ² Ceph.

ПослС рСдактирования ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ LVM Π² RBD ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ:

virsh define $vm_name.xml
virsh start $vm_name

Π‘Π°ΠΌΠΎΠ΅ врСмя ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Π·Π°ΠΏΡƒΡΡ‚ΠΈΠ»Π°ΡΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ: это ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ²ΡˆΠΈΡΡŒ ΠΊ Π½Π΅ΠΉ ΠΏΠΎ SSH ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· virsh.

Если Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΈ Π²Ρ‹ Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ LVM-ΠΎΠ±Ρ€Π°Π·, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ большС Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ:

lvremove main/$vm_image_name

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π‘ΠΎ всСми описанными случаями ΠΌΡ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ β€” надССмся, Ρ‡Ρ‚ΠΎ инструкции ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ администраторам Ρ€Π΅ΡˆΠΈΡ‚ΡŒ схоТиС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Если Ρƒ вас Π΅ΡΡ‚ΡŒ замСчания ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ истории ΠΈΠ· ΠΎΠΏΡ‹Ρ‚Π° эксплуатации Ceph β€” Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π΄Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈΡ… Π² коммСнтариях!

P.S.

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π² нашСм Π±Π»ΠΎΠ³Π΅:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com