Tips & tricks for working with Ceph in occupatus projects

Tips & tricks for working with Ceph in occupatus projects

Ceph uti retis repositione cum diversis oneribus inceptis, incurrere possumus varia munera quae primo aspectu non videntur simplicia aut levia. Exempli gratia:

  • migratio notitiarum ex veteri Ceph ad novam cum usu partiali priorum servientium in novo botro;
  • solutionem problematis de destinatio spatii orbis in Ceph.

Talibus quaestionibus tractantes, coram necessitate sumus OSD removendi sine notitia amittenda, quod maxime interest cum magna copia rerum datarum agitur. Hoc in articulo dicetur.

Modi infrascripti pertinentes ad aliquam versionem Ceph. Praeterea, quod Ceph thesaurizare possit magnam copiam notitiarum, ratio erit: ne damnum notitiae aliaeque quaestiones, quaedam actiones "scindendae" in plures alios erunt.

Praefatio de OSD

Cum duo ex tribus felis discussis OSD dicati sunt (Object PRAECLUSIO PRAECLUSIO) , antequam tribuo in partem practicam - breviter quid sit in Ceph et cur tanti momenti sit.

Inprimis dicendum est totum Ceph botrum ex multis OSDs constare. Quo plura, eo major gratis datae voluminis in Ceph. Hinc facile est intelligere principalis OSD munus: Ceph objectum notitias in tabula systemata omnium nodis gregariorum reponit et aditum retis praebet (legendi, scribendi, et alias petitiones).

In eodem gradu, replicatio parametri constituitur per obiecta describendo inter diversas OSDs. Et hic varias difficultates invenire potes, de quibus infra dicetur solutiones.

Causa No. 1 . OSD a Ceph botrus sine amissis notitia tuto removere

Necessitas OSD removendi causari potest a servo e botro removendo, verbi gratia, repone cum alio servo - quod evenit nobis, scribendo articuli huius. Sic finis manipulationis ultimus est extrahi omnes OSDs et mons in servo dato ut obstruatur.

Ad commodum et condicionem vitandam ubi, dum mandata exequentes erramus in indicando inquisita OSD, singula variabilia ponemus, cuius valor numerus OSD delendus erit. Vocemus eam ${ID} β€” hic et infra, talis variabilis substituit numerum OSD cum quo operamur.

Intueamur conditionem antequam opus incipiens:

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

Inchoare OSD remotionem, necesse est ut teres facias reweight in dictum nulla. Hoc modo quantitatem notitiarum in OSD reducimus, eam aliis OSDs conpensando. Ad hoc currite ut haec mandata faciamus;

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

Donec et nulla in... et sic.

Smooth aequatis requiraturut non perdat data. Hoc imprimis verum est si magnam copiam notitiarum OSD continet. Fac ut imperata facere reweight omnia bene potes implere ceph -s aut in singulis terminis fenestra run " ceph -w ut observentur mutationes in tempore reali.

Cum OSD "evacuetur", procedere potes cum operatione regulae ut eam removeat. Ad hoc faciendum, optatum OSD ad rempublicam transferendum down:

ceph osd down osd.${ID}

Eamus OSD e botro:

ceph osd out osd.${ID}

Obsecro ut OSD operas et eius partitionem in FS transcendas;

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

Remove OSD a CRASSUS map:

ceph osd crush remove osd.${ID}

Lets delere OSD user:

ceph auth del osd.${ID}

Ac denique ipsum OSD removeamus:

ceph osd rm osd.${ID}

illud: Si versionem luminosam Ceph adhibes vel superiorem, tunc gradus superiores OSD remotionis reduci possunt ad duo mandata;

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

Si, perfectis gradibus supra scriptis, curris mandatum ceph osd treetunc sciendum est, quod ministranti ubi opus fiebat, non sunt amplius OSDs pro quibus praedicta opera fiebant;

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

Per viam, nota quod status botri Ceph ibit HEALTH_WARNet etiam diminutionem videbimus in numero OSDs et quantitatem orbis tractus praesto.

Sequentia describet gradus qui requirentur si vis servo omnino sistere et proinde remove a Ceph. In hoc casu, refert, meminisse Priusquam servo claudas, omnia OSDs removere debes in hoc servo.

Si plures OSDs in hac servo relicti non sunt, iis remotis debes servo OSD tabulae excludere. hv-2per hoc mandatum currit;

ceph osd crush rm hv-2

Delete mon ex servo hv-2infra in alio servo currit mandatum (i.e. in hoc casu, on hv-1):

ceph-deploy mon destroy hv-2

Post hoc, servo desinere potes et actiones subsequentes incipe (re-instruendo, etc.).

Casus N. II. Distributio orbis tractus per prius creatum Ceph botrum portassent

Secundam fabulam incipiam cum praefatione de PG (Placement Groups). Praecipuum munus PG in Ceph principaliter est obiectare Ceph aggregare et ulterius replicare in OSD. Formula, qua quantitatem debitam PG computare potes pertinet sectionem Litterarum Ceph. De hac re etiam cum certis exemplis disputatur.

Ita: una problematum communis cum utens Ceph est inaequalis numerus OSD et PG inter piscinas in Ceph.

Uno modo, propter hoc, condicio oriri potest cum etiam plures PGs specificantur in parva piscina, quae essentialiter usus est irrationalis spatii orbis in botro. Secundo in usu gravioris quaestionis est: in uno OSDs notitia redundat. Hoc est botrum primum transitioning ad statum HEALTH_WARN, tum HEALTH_ERR. Cuius ratio est, quia Ceph, cum notitiarum copia supputando (invenire potes per MAX AVAIL in imperio output ceph df pro unaquaque piscina separatim) fundatur in copia notitiarum promptarum in OSD. Si spatium saltem unius OSD non est, nulla notitia plura scribi potest donec notitia inter omnes OSDs recte distribuatur.

Valet declarare has difficultates maxime placuit in Ceph botri configuratione scaena. Una instrumenta uti potes is Ceph PGCalc. Eius ope, summa PG summa clare computata est. Tamen ad eam etiam conferre potes ubi Ceph botrus iam set male. Valet hic declarare quod in parte operis fixi verisimiliter opus erit numerum PGs minuere, et haec notatio in antiquioribus versionibus Ceph praesto non est (modo in versione apparuit. Nautilus).

Ita hanc imaginem fingamus: botrus habet statum HEALTH_WARN ob unum OSD excurrente spatio. Hoc per errorem demonstrabitur HEALTH_WARN: 1 near full osd. Infra algorithmus est de hoc situ exire.

Imprimis, notitia prompta inter reliquos OSDs distribuere debes. Similem operationem in primo casu iam fecimus, cum nodo "exhausi" - ea sola differentia quam nunc leviter reducere debebimus. reweight. Exempli gratia usque ad 0.95;

ceph osd reweight osd.${ID} 0.95

Hoc spatium orbis in OSD liberat et errorem in ceph sanitate figit. Attamen, ut iam dictum est, quaestio haec maxime obvenit ob falsam figuram Ceph in exordiis: magni refert facere reconfigurationem ut in futuro non appareat.

In speciali casu omnes ad nos descenderunt;

  • valorem Excelsa replication_count in una stagnis;
  • nimium PG in uno stagno et parum in alio.

Utamur iam dicto calculatore. Aperte ostendit quid in principio sit notandum ac nihil implicatum. Positis parametris necessariis, sequentes commendationes consequimur:

illud: Si Ceph botrum de nouo instituas, aliud calculatoris munus utile est generatio mandatorum quae piscinas ex integro creabit cum parametris in tabula determinatis.

Ultima columna adiuvat te navigare - Suggessit PG Comes. In nobis, alterum quoque utile est, ubi moduli replicatio indicatur, cum replicationem multiplicatoris mutare decrevimus.

Primum ergo debes mutare replicationem parametri - hoc primum facere valet, quoniam reducendo multiplicatorem orbis tractus liberabimus. Prout mandatum exequitur, videbis quod in promptu orbis tractus crescet;

ceph osd pool $pool_name set $replication_size

Et post eius completionem mutamur valores moduli pg_num ΠΈ pgp_num ut sequitur:

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

maximus: necesse est numerum PGs successiue in unaquaque piscina mutare nec valores in aliis stagnis mutare donec monita evanescant. "Degradation data redundantia" ΠΈ "N numerus pgs degradatus".

Etiam reprehendo omnia bene utens imperio outputs ceph health detail ΠΈ ceph -s.

Casus N. III. Commigratio virtualis apparatus ab LVM ad Ceph RBD

In casu ubi consilium machinarum virtualium utitur in conductis servientibus nudo metallo constitutis, saepe exitus repositionis culpae tolerantior oritur. Optandum etiam est ut satis spatii sit in hac repositione... Alius locus communis: est virtualis machina cum repositione locali in calculonis et opus est ut disco expandat, sed nusquam est, quia nullus est. liberum orbis tractus servo relictum est.

Problema diversimode solvi potest - exempli gratia, migrando ad alium servo (si adsit) vel novos orbis addendo servo. Sed hoc facere non semper potest, ut migrans e LVM ad Ceph solutionem huius problematis optimam esse possit. Hanc optionem eligendo, etiam ulteriorem migrationis processum inter ministrantium simpliciorem reddimus, cum nihil opus sit ab uno hypervisore ad alium transferre. Sola captura est te prohibere VM debebis dum opus exercetur.

Sequenti recipe ex articulus ex hoc blogcuius instructiones sunt probati in actu. Viam methodus hassle liberorum migrationis etiam ibi describiturin nobis autem nihil nisi opus fuit, ut nec coerceremus. Si hoc criticum ad propositum tuum attinet, de eventibus in commentis audire gaudebimus.

Ad partem practicam transeamus. In exemplo utimur virsh ac proinde libvirt. Primum fac Ceph piscinam, cui data erit migrandum, annexa libvirt;

virsh pool-dumpxml $ceph_pool

Piscinae descriptio nexum data ad Ceph cum auctoritate data continere debet.

Proximum est ut imago LVM convertatur in Ceph RBD. Executio temporis praecipue a magnitudine imaginis dependet;

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

Post conversionem, imago LVM manebit, quod utile erit si migrans VM ad RBD desit et mutationes revolvere debebis. Item, mutationes cito revolvere posse, faciamus tergum limae machinae virtualis:

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

... et originale (vm_name.xml). Sit scriptor invenire obstructionum cum descriptione orbis (incipit cum linea <disk type='file' device='disk'> desinitque </disk>) et reduc ad hanc formam;

<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>

Intueamur singula singula:

  1. Ad protocol source inscriptio ad repositionem in Ceph RBD (haec inscriptio indicans nomen Ceph piscinae et imaginis RBD, quae primo statu definita est).
  2. In obstructionum secret genus significatur cephac etiam UUID arcani annexas. Eius uuid inveniri potest per mandatum virsh secret-list.
  3. In obstructionum host inscriptiones monitores Ceph indicantur.

Post limam lineam conformationem emenda et conversionem LVM ad RBD peractam, limam configurationem mutatam applica et apparatus virtualis committitur:

virsh define $vm_name.xml
virsh start $vm_name

Tempus est ad reprimendam machinam virtualem recte incepisse: invenire potes, exempli gratia, cum ea per SSH vel per coniungendo. virsh.

Si machina virtualis recte laborat et alias difficultates non invenisti, imaginem LVM delere potes quae iam non est:

lvremove main/$vm_image_name

conclusio,

Omnes casus in praxi descriptos offendimus - speramus instructiones alios administratores iuvaturos problemata similia solvendi. Si commentarios vel alias similes fabulas habes ex experientia tua utens Ceph, gaudebimus eas in commentationibus videre!

PS

Lege etiam in nostro diario:

Source: www.habr.com