{"id":77266,"date":"2020-04-09T13:42:08","date_gmt":"2020-04-09T11:42:08","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/tips-tricks-v-rabote-s-ceph-v-nagruzhennyh-proektah"},"modified":"2020-04-09T13:42:08","modified_gmt":"2020-04-09T11:42:08","slug":"tips-tricks-v-rabote-s-ceph-v-nagruzhennyh-proektah","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/tips-tricks-v-rabote-s-ceph-v-nagruzhennyh-proektah","title":{"rendered":"Tipy a triky p\u0159i pr\u00e1ci s Ceph v n\u00e1ro\u010dn\u00fdch projektech","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Tipy &amp; triky pro pr\u00e1ci s Ceph v zat\u00ed\u017een\u00fdch projektech\" src=\"\/wp-content\/uploads\/2020\/04\/1d60f91e55b20a5dc4346bd8087bc11e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPou\u017e\u00edv\u00e1n\u00edm Ceph jako s\u00ed\u0165ov\u00e9ho \u00falo\u017ei\u0161t\u011b v r\u016fzn\u011b zat\u00ed\u017een\u00fdch projektech se m\u016f\u017eeme setkat s r\u016fzn\u00fdmi \u00fakoly, kter\u00e9 se na prvn\u00ed pohled nemus\u00ed zd\u00e1t jednoduch\u00e9 nebo trivi\u00e1ln\u00ed. Nap\u0159\u00edklad:<\/p>\n<ul>\n<li> migrace dat ze star\u00e9ho Ceph do nov\u00e9ho s \u010d\u00e1ste\u010dn\u00fdm vyu\u017eit\u00edm p\u0159edchoz\u00edch server\u016f v nov\u00e9m clusteru;<\/li>\n<li> \u0159e\u0161en\u00ed probl\u00e9mu distribuce diskov\u00e9ho prostoru v Ceph.<\/li>\n<\/ul>\n<p>\nP\u0159i \u0159e\u0161en\u00ed takov\u00fdch \u00fakol\u016f se setk\u00e1v\u00e1me s nutnost\u00ed spr\u00e1vn\u011b odebrat OSD bez ztr\u00e1ty dat, co\u017e je obzvl\u00e1\u0161\u0165 d\u016fle\u017eit\u00e9 p\u0159i velk\u00fdch objemech dat. O tom bude pojedn\u00e1vat tento \u010dl\u00e1nek.<\/p>\n<p>Zp\u016fsoby uveden\u00e9 n\u00ed\u017ee jsou aktu\u00e1ln\u00ed pro jak\u00e9koli verze Ceph. D\u00e1le bude zohledn\u011bno, \u017ee v Ceph m\u016f\u017ee b\u00fdt ulo\u017een velk\u00fd objem dat: pro zaji\u0161t\u011bn\u00ed ochrany p\u0159ed ztr\u00e1tou dat a dal\u0161\u00edmi probl\u00e9my budou n\u011bkter\u00e9 \u00fakony \u201erozd\u011bleny\u201c na v\u00edce jin\u00fdch.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>\u00davod o OSD<\/h3>\n<p>\nJeliko\u017e dva z t\u0159\u00ed zva\u017eovan\u00fdch recept\u016f se t\u00fdkaj\u00ed OSD (<noindex><a rel=\"nofollow\" href=\"https:\/\/docs.ceph.com\/docs\/master\/man\/8\/ceph-osd\/\">Object Storage Daemon<\/a><\/noindex>), p\u0159ed pono\u0159en\u00edm do praktick\u00e9 \u010d\u00e1sti \u2014 stru\u010dn\u011b o tom, co to v\u016fbec je v Ceph a pro\u010d je to tak d\u016fle\u017eit\u00e9.<\/p>\n<p>V prvn\u00ed \u0159ad\u011b je t\u0159eba \u0159\u00edci, \u017ee cel\u00fd Ceph cluster se skl\u00e1d\u00e1 z mnoha OSD. \u010c\u00edm v\u00edce jich je, t\u00edm v\u011bt\u0161\u00ed je voln\u00fd prostor pro data v Ceph. Odtud je snadn\u00e9 pochopit <b>hlavn\u00ed funkci OSD<\/b>: ukl\u00e1d\u00e1 objekty Ceph na souborov\u00e9 syst\u00e9my v\u0161ech uzl\u016f clusteru a poskytuje k nim s\u00ed\u0165ov\u00fd p\u0159\u00edstup (pro \u010dten\u00ed, z\u00e1pis a dal\u0161\u00ed po\u017eadavky).<\/p>\n<p>Na t\u00e9to \u00farovni jsou tak\u00e9 nastaveny parametry replikace kop\u00edrov\u00e1n\u00edm objekt\u016f mezi r\u016fzn\u00fdmi OSD. A zde se mohou vyskytnout r\u016fzn\u00e9 probl\u00e9my, o jejich\u017e \u0159e\u0161en\u00ed bude d\u00e1le \u0159e\u010d.<\/p>\n<h2>P\u0159\u00edpad \u010d. 1. Bezpe\u010dn\u00e9 odebr\u00e1n\u00ed OSD z clusteru Ceph bez ztr\u00e1ty dat<\/h2>\n<p>\nPot\u0159eba odebr\u00e1n\u00ed OSD m\u016f\u017ee b\u00fdt zp\u016fsobena vy\u0159azen\u00edm serveru z clusteru \u2014 nap\u0159\u00edklad za \u00fa\u010delem jeho v\u00fdm\u011bny za jin\u00fd server, co\u017e se stalo i u n\u00e1s a slou\u017eilo jako podn\u011bt pro naps\u00e1n\u00ed tohoto \u010dl\u00e1nku. C\u00edlem t\u011bchto manipulac\u00ed je tedy odebrat v\u0161echna OSD a mony na tomto serveru, aby bylo mo\u017en\u00e9 jej zastavit.<\/p>\n<p>Pro pohodl\u00ed a vylou\u010den\u00ed situace, kdy bychom se p\u0159i prov\u00e1d\u011bn\u00ed p\u0159\u00edkaz\u016f spletli v ur\u010den\u00ed po\u017eadovan\u00e9ho OSD, nastav\u00edme samostatnou prom\u011bnnou, jej\u00ed\u017e hodnota bude odpov\u00eddat \u010d\u00edslu odstra\u0148ovan\u00e9ho OSD. Nazveme ji <code>${ID}<\/code> \u2014 tato prom\u011bnn\u00e1 zde a d\u00e1le nahrazuje \u010d\u00edslo OSD, se kter\u00fdm pracujeme.<\/p>\n<p>Pod\u00edv\u00e1me se na stav p\u0159ed za\u010d\u00e1tkem prac\u00ed:<\/p>\n<pre><code class=\"bash\">root@hv-1 ~ # ceph osd tree\nID CLASS WEIGHT  TYPE NAME      STATUS REWEIGHT PRI-AFF\n-1       0.46857 root default\n-3       0.15619      host hv-1\n-5       0.15619      host hv-2\n 1   ssd 0.15619      osd.1     up     1.00000  1.00000\n-7       0.15619      host hv-3\n 2   ssd 0.15619      osd.2     up     1.00000  1.00000<\/code><\/pre>\n<p>\nPro iniciaci odstran\u011bn\u00ed OSD je t\u0159eba prov\u00e9st postupn\u00e9 <code>p\u0159ev\u00e1\u017een\u00ed<\/code> na nulu. T\u00edmto zp\u016fsobem sni\u017eujeme mno\u017estv\u00ed dat v OSD p\u0159erozd\u011blen\u00edm na jin\u00e9 OSD. Pro tento \u00fakol se vykon\u00e1vaj\u00ed n\u00e1sleduj\u00edc\u00ed p\u0159\u00edkazy:<\/p>\n<pre><code class=\"bash\">ceph osd reweight osd.${ID} 0.98\nceph osd reweight osd.${ID} 0.88\nceph osd reweight osd.${ID} 0.78<\/code><\/pre>\n<p>\n\u2026 a tak d\u00e1le a\u017e k nule.<\/p>\n<p><b>Postupn\u00e9 vyv\u00e1\u017een\u00ed je nezbytn\u00e9<\/b>, aby nedo\u0161lo ke ztr\u00e1t\u011b dat. To plat\u00ed zejm\u00e9na v p\u0159\u00edpad\u011b, \u017ee OSD obsahuje velk\u00e9 mno\u017estv\u00ed dat. Abychom se ujistili, \u017ee po proveden\u00ed p\u0159\u00edkaz\u016f <code>p\u0159ev\u00e1\u017een\u00ed<\/code> v\u0161e prob\u011bhlo \u00fasp\u011b\u0161n\u011b, lze prov\u00e9st <code>ceph -s<\/code> nebo v samostatn\u00e9m okn\u011b termin\u00e1lu spustit <code>ceph -w<\/code> abychom mohli sledovat zm\u011bny v re\u00e1ln\u00e9m \u010dase.<\/p>\n<p>Kdy\u017e je OSD \"vypr\u00e1zdn\u011bn\u00e1\", m\u016f\u017eeme p\u0159istoupit k standardn\u00edmu procesu jej\u00edho odstran\u011bn\u00ed. Pro tento \u00fa\u010del p\u0159evedeme po\u017eadovan\u00e9 OSD do stavu <code>down<\/code>:<\/p>\n<pre><code class=\"bash\">ceph osd down osd.${ID}<\/code><\/pre>\n<p>\n\"Vyt\u00e1hneme\" OSD z clusteru:<\/p>\n<pre><code class=\"bash\">ceph osd out osd.${ID}<\/code><\/pre>\n<p>\nZastav\u00edme slu\u017ebu OSD a odpoj\u00edme jej p\u0159ipraven\u00fd syst\u00e9m:<\/p>\n<pre><code class=\"bash\">systemctl stop ceph-osd@${ID}\numount \/var\/lib\/ceph\/osd\/ceph-${ID}<\/code><\/pre>\n<p>\nOdstran\u00edme OSD z <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.ceph.com\/docs\/nautilus\/rados\/operations\/crush-map\/\">CRUSH mapy<\/a><\/noindex>:<\/p>\n<pre><code class=\"bash\">ceph osd crush remove osd.${ID}<\/code><\/pre>\n<p>\nSma\u017eeme u\u017eivatele OSD:<\/p>\n<pre><code class=\"bash\">ceph auth del osd.${ID}<\/code><\/pre>\n<p>\nA nakonec odstran\u00edme samotn\u00e9 OSD:<\/p>\n<pre><code class=\"bash\">ceph osd rm osd.${ID}<\/code><\/pre>\n<p>\n<b>Pozn\u00e1mka<\/b>: pokud pou\u017e\u00edv\u00e1te verzi Ceph Luminous nebo nov\u011bj\u0161\u00ed, v\u00fd\u0161e uveden\u00e9 \u00fakony pro odstran\u011bn\u00ed OSD lze shrnout do dvou p\u0159\u00edkaz\u016f:<\/p>\n<pre><code class=\"bash\">ceph osd out osd.${ID}\nceph osd purge osd.${ID}\n<\/code><\/pre>\n<p>\nPokud po proveden\u00ed v\u00fd\u0161e uveden\u00fdch akc\u00ed vykon\u00e1te p\u0159\u00edkaz <code>ceph osd tree<\/code>, m\u011blo by b\u00fdt vid\u011bt, \u017ee na serveru, kde byly operace provedeny, ji\u017e nejsou \u017e\u00e1dn\u00e9 OSD, na kter\u00fdch se prov\u00e1d\u011bly v\u00fd\u0161e uveden\u00e9 operace:<\/p>\n<pre><code class=\"bash\">root@hv-1 ~ # ceph osd tree\nID CLASS WEIGHT  TYPE NAME     STATUS REWEIGHT PRI-AFF\n-1       0.46857      root default\n-3       0.15619      host hv-1\n-5       0.15619      host hv-2\n-7       0.15619      host hv-3\n 2   ssd 0.15619      osd.2    up     1.00000  1.00000<\/code><\/pre>\n<p>\nSou\u010dasn\u011b poznamen\u00e1me, \u017ee stav clusteru Ceph p\u0159ejde do <code>HEALTH_WARN<\/code>, a tak\u00e9 uvid\u00edme pokles po\u010dtu OSD a objemu dostupn\u00e9ho diskov\u00e9ho prostoru. <\/p>\n<p>D\u00e1le budou pops\u00e1ny \u00fakony, kter\u00e9 budou pot\u0159eba, pokud chcete zcela zastavit server a t\u00edm p\u00e1dem jej odstranit z Ceph. V takov\u00e9m p\u0159\u00edpad\u011b je d\u016fle\u017eit\u00e9 pamatovat, \u017ee <b>p\u0159ed vypnut\u00edm serveru je nutn\u00e9 vyjmout v\u0161echny OSD<\/b> na tomto serveru.<\/p>\n<p>Pokud na tomto serveru ji\u017e nejsou \u017e\u00e1dn\u00e9 OSD, pak po jejich odstran\u011bn\u00ed je t\u0159eba vylou\u010dit ze seznamu OSD server <code>hv-2<\/code>, proveden\u00edm n\u00e1sleduj\u00edc\u00edho p\u0159\u00edkazu:<\/p>\n<pre><code class=\"bash\">ceph osd crush rm hv-2<\/code><\/pre>\n<p>\nOdstra\u0148ujeme <code>mon<\/code> ze serveru <code>hv-2<\/code>, spu\u0161t\u011bn\u00edm n\u00ed\u017ee uveden\u00e9ho p\u0159\u00edkazu na jin\u00e9m serveru (tedy v tomto p\u0159\u00edpad\u011b na <code>hv-1<\/code>):<\/p>\n<pre><code class=\"bash\">ceph-deploy mon destroy hv-2<\/code><\/pre>\n<p>\nPo tom je mo\u017en\u00e9 zastavit server a p\u0159istoupit k dal\u0161\u00edm akc\u00edm (jeho op\u011btovn\u00e9mu nasazen\u00ed a podobn\u011b).<\/p>\n<h2>P\u0159\u00edpad \u010d. 2. Rozd\u011blen\u00ed diskov\u00e9ho prostoru v ji\u017e vytvo\u0159en\u00e9m clustere Ceph<\/h2>\n<p>\nDruhou historii za\u010dnu s \u00favodem o PG (<noindex><a rel=\"nofollow\" href=\"https:\/\/docs.ceph.com\/docs\/mimic\/rados\/operations\/placement-groups\/\">Placement Groups<\/a><\/noindex>). Hlavn\u00ed \u00falohou PG v Ceph je p\u0159edev\u0161\u00edm agregace objekt\u016f Ceph a jejich dal\u0161\u00ed replikace v OSD. Vzorec, pomoc\u00ed n\u011bho\u017e lze vypo\u010d\u00edtat pot\u0159ebn\u00fd po\u010det PG, se nach\u00e1z\u00ed v <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.ceph.com\/docs\/mimic\/rados\/operations\/placement-groups\/#choosing-the-number-of-placement-groups\">p\u0159\u00edslu\u0161n\u00e9 sekci<\/a><\/noindex> dokumentaci Ceph. Tam je tato ot\u00e1zka tak\u00e9 podrobn\u011b rozebr\u00e1na na konkr\u00e9tn\u00edch p\u0159\u00edkladech.<\/p>\n<p>Tak\u017ee: jedn\u00edm z b\u011b\u017en\u00fdch probl\u00e9m\u016f b\u011bhem provozu Ceph je nevyv\u00e1\u017een\u00fd po\u010det OSD a PG mezi pooly v Ceph.<\/p>\n<p>Za prv\u00e9, m\u016f\u017ee vzniknout situace, kdy je uvedeno p\u0159\u00edli\u0161 velk\u00e9 mno\u017estv\u00ed PG v mal\u00e9 velikosti poolu, co\u017e je v podstat\u011b neefektivn\u00edm vyu\u017eit\u00edm diskov\u00e9ho prostoru v clustere. Za druh\u00e9, v praxi vznik\u00e1 v\u00e1\u017en\u011bj\u0161\u00ed probl\u00e9m: p\u0159ete\u010den\u00ed dat v jednom z OSD. To vede k tomu, \u017ee cluster nejprve p\u0159ejde do stavu <code>HEALTH_WARN<\/code>, a pot\u00e9 i <code>HEALTH_ERR<\/code>. P\u0159\u00ed\u010dinou je, \u017ee Ceph p\u0159i v\u00fdpo\u010dtu dostupn\u00e9ho objemu dat (ten je mo\u017en\u00e9 zjistit podle <code>MAX AVAIL<\/code> ve v\u00fdstupu p\u0159\u00edkazu <code>ceph df<\/code> pro ka\u017ed\u00fd pool zvl\u00e1\u0161\u0165) se op\u00edr\u00e1 o objem dostupn\u00fdch dat v OSD. Pokud v jednom OSD nebude dostatek m\u00edsta, pak ji\u017e nebude mo\u017en\u00e9 zapisovat data, dokud nebudou data spr\u00e1vn\u011b rozd\u011blena mezi v\u0161echna OSD.<\/p>\n<p>Je dobr\u00e9 up\u0159esnit, \u017ee tyto probl\u00e9my <b>se v v\u011bt\u0161\u00ed m\u00ed\u0159e \u0159e\u0161\u00ed ji\u017e v etap\u011b konfigurace clustere Ceph<\/b>. Jedn\u00edm z n\u00e1stroj\u016f, kter\u00e9ho lze vyu\u017e\u00edt, je <noindex><a rel=\"nofollow\" href=\"http:\/\/blog.easter-eggs.org\/index.php\/post\/2013\/09\/27\/%5BLibvirt%5D-Migrating-from-on-disk-raw-images-to-RBD-storage\">Ceph PGCalc<\/a><\/noindex>. Pomoc\u00ed n\u011bj lze n\u00e1zorn\u011b vypo\u010d\u00edtat pot\u0159ebn\u00fd po\u010det PG. Nicm\u00e9n\u011b, m\u016f\u017eete ho vyu\u017e\u00edt i v situaci, kdy je cluster Ceph <i>ji\u017e<\/i> \u0161patn\u011b nastaven. Je dobr\u00e9 k tomu dodat, \u017ee v r\u00e1mci oprav v\u00e1m pravd\u011bpodobn\u011b bude pot\u0159eba sn\u00ed\u017eit po\u010det PG, a tato mo\u017enost nen\u00ed k dispozici ve star\u00fdch verz\u00edch Ceph (objevila se a\u017e ve verzi <noindex><a rel=\"nofollow\" href=\"https:\/\/ceph.com\/rados\/new-in-nautilus-pg-merging-and-autotuning\/\">Nautilus<\/a><\/noindex>).<\/p>\n<p>P\u0159edstavme si tedy n\u00e1sleduj\u00edc\u00ed obraz: cluster m\u00e1 stav <code>HEALTH_WARN<\/code> kv\u016fli tomu, \u017ee v jednom z OSD doch\u00e1z\u00ed m\u00edsto. O tom bude sv\u011bd\u010dit chyba <code>HEALTH_WARN: 1 near full osd<\/code>. N\u00ed\u017ee je uveden algoritmus, jak se dostat z t\u00e9to situace.<\/p>\n<p>Nejprve je t\u0159eba rozd\u011blit existuj\u00edc\u00ed data mezi zbytek OSD. Podobnou operaci jsme ji\u017e provedli v prvn\u00edm p\u0159\u00edpad\u011b, kdy jsme \"vysu\u0161ovali\" uzel \u2014 s t\u00edm rozd\u00edlem, \u017ee nyn\u00ed bude t\u0159eba nepatrn\u011b sn\u00ed\u017eit <code>p\u0159ev\u00e1\u017een\u00ed<\/code>. Nap\u0159\u00edklad na 0.95:<\/p>\n<pre><code class=\"bash\">ceph osd reweight osd.${ID} 0.95<\/code><\/pre>\n<p>\nT\u00edmto se uvoln\u00ed diskov\u00fd prostor v OSD a oprava chyb v ceph health. Jak ji\u017e bylo \u0159e\u010deno, tento probl\u00e9m v\u011bt\u0161inou vznik\u00e1 z d\u016fvodu nespr\u00e1vn\u00e9ho nastaven\u00ed Ceph na po\u010d\u00e1tku: je velmi d\u016fle\u017eit\u00e9 prov\u00e9st rekonstrukci, aby se v budoucnu neobjevoval.<\/p>\n<p>V na\u0161em konkr\u00e9tn\u00edm p\u0159\u00edpad\u011b to v\u0161e spo\u010d\u00edvalo v:<\/p>\n<ul>\n<li> p\u0159\u00edli\u0161 vysok\u00e9 hodnot\u011b <code>replication_count<\/code> v jednom z pool\u016f,<\/li>\n<li> p\u0159\u00edli\u0161 vysok\u00e9m po\u010dtu PG v jednom poolu a p\u0159\u00edli\u0161 n\u00edzk\u00e9m \u2014 v druh\u00e9m. <\/li>\n<\/ul>\n<p>\nVyjdeme z ji\u017e zm\u00edn\u011bn\u00e9ho kalkul\u00e1toru. Je v n\u011bm n\u00e1zorn\u011b uk\u00e1z\u00e1no, co je pot\u0159eba zadat, a v z\u00e1sad\u011b nen\u00ed nic slo\u017eit\u00e9ho. Zadan\u00edm po\u017eadovan\u00fdch parametr\u016f dostaneme n\u00e1sleduj\u00edc\u00ed doporu\u010den\u00ed:<\/p>\n<p><i><b>Pozn\u00e1mka<\/b>: pokud nastavujete Ceph cluster od nuly, dal\u0161\u00ed u\u017eite\u010dnou funkc\u00ed kalkul\u00e1toru bude generace p\u0159\u00edkaz\u016f, kter\u00e9 vytvo\u0159\u00ed pooly od nuly s parametry uveden\u00fdmi v tabulce.<\/i><\/p>\n<p>Pom\u00e1h\u00e1 se orientovat posledn\u00ed sloupec \u2014 <i>Suggested PG Count<\/i>. V na\u0161em p\u0159\u00edpad\u011b je u\u017eite\u010dn\u00fd tak\u00e9 druh\u00fd, ve kter\u00e9m je uveden parameter replikace, proto\u017ee jsme se rozhodli zm\u011bnit i n\u00e1sobitel replikace.<\/p>\n<p>Tak\u017ee nejprve bude t\u0159eba zm\u011bnit parametry replikace \u2014 to by se m\u011blo d\u011blat na prvn\u00edm m\u00edst\u011b, proto\u017ee sn\u00ed\u017een\u00edm n\u00e1sobitele uvoln\u00edme diskov\u00fd prostor. V pr\u016fb\u011bhu prov\u00e1d\u011bn\u00ed p\u0159\u00edkazu bude vid\u011bt, \u017ee hodnota dostupn\u00e9ho diskov\u00e9ho prostoru se bude zvy\u0161ovat:<\/p>\n<pre><code class=\"bash\">ceph osd pool $pool_name set $replication_size<\/code><\/pre>\n<p>\nA po jeho dokon\u010den\u00ed \u2014 zm\u011bn\u00edme hodnoty parametr\u016f <code>pg_num<\/code> a <code>pgp_num<\/code> n\u00e1sleduj\u00edc\u00edm zp\u016fsobem:<\/p>\n<pre><code class=\"bash\">ceph osd pool set $pool_name pg_num $pg_number\nceph osd pool set $pool_name pgp_num $pg_number<\/code><\/pre>\n<p>\n<b>Je d\u016fle\u017eit\u00e9<\/b>: mus\u00edme postupn\u011b ka\u017ed\u00e9m poolu zm\u011bnit po\u010det PG a nem\u011bnit hodnoty v jin\u00fdch poolech, dokud nezmiz\u00ed varov\u00e1n\u00ed <i>\"Degraded data redundancy\"<\/i> a <i>\"n-number of pgs degraded\"<\/i>.<\/p>\n<p>Zkontrolovat, \u017ee v\u0161e prob\u011bhlo \u00fasp\u011b\u0161n\u011b, lze tak\u00e9 podle v\u00fdstup\u016f p\u0159\u00edkaz\u016f <code>ceph health detail<\/code> a <code>ceph -s<\/code>.<\/p>\n<h2>P\u0159\u00edpad \u010d. 3. Migrace virtu\u00e1ln\u00edho stroje z LVM do Ceph RBD<\/h2>\n<p>\nV situaci, kdy se v projektu pou\u017e\u00edvaj\u00ed virtu\u00e1ln\u00ed stroje nainstalovan\u00e9 na pronajat\u00fdch serverech bare-metal, se \u010dasto objevuje ot\u00e1zka o spolehliv\u00e9m \u00falo\u017ei\u0161ti. Tak\u00e9 by bylo velmi \u017e\u00e1douc\u00ed, aby bylo v tomto \u00falo\u017ei\u0161ti dostatek m\u00edsta... Jin\u00e1 b\u011b\u017en\u00e1 situace: existuje virtu\u00e1ln\u00ed stroj s lok\u00e1ln\u00edm \u00falo\u017ei\u0161t\u011bm na serveru a je nutn\u00e9 roz\u0161\u00ed\u0159it disk, ale nen\u00ed kam, proto\u017ee na serveru nezb\u00fdv\u00e1 voln\u00e9 m\u00edsto.<\/p>\n<p>Probl\u00e9m lze vy\u0159e\u0161it r\u016fzn\u00fdmi zp\u016fsoby \u2014 nap\u0159\u00edklad migrac\u00ed na jin\u00fd server (pokud n\u011bjak\u00fd existuje) nebo p\u0159id\u00e1n\u00edm nov\u00fdch disk\u016f na server. Ale ne v\u017edy je to mo\u017en\u00e9, proto m\u016f\u017ee b\u00fdt migrace z LVM do Ceph skv\u011bl\u00fdm \u0159e\u0161en\u00edm tohoto probl\u00e9mu. V\u00fdb\u011brem t\u00e9to varianty tak\u00e9 zjednodu\u0161ujeme dal\u0161\u00ed proces migrace mezi servery, proto\u017ee nen\u00ed t\u0159eba p\u0159esouvat lok\u00e1ln\u00ed \u00falo\u017ei\u0161t\u011b z jednoho hypervizoru na druh\u00fd. Jedinou komplikac\u00ed je, \u017ee bude nutn\u00e9 zastavit VM na dobu pot\u0159ebnou k proveden\u00ed pr\u00e1ce.<\/p>\n<p>Jako n\u00e1sleduj\u00edc\u00ed recept je pou\u017eita <noindex><a rel=\"nofollow\" href=\"http:\/\/blog.easter-eggs.org\/index.php\/post\/2013\/09\/27\/%5BLibvirt%5D-Migrating-from-on-disk-raw-images-to-RBD-storage\">\u010dl\u00e1nek z tohoto blogu<\/a><\/noindex>, jeho\u017e pokyny byly vyzkou\u0161eny v praxi. Mimochodem, <b>tam tak\u00e9 popisuj\u00ed zp\u016fsob bezprobl\u00e9mov\u00e9 migrace<\/b>, ale v na\u0161em p\u0159\u00edpad\u011b to jednodu\u0161e nebylo pot\u0159eba, proto jsme to neprov\u011b\u0159ovali. Pokud je to v\u0161ak kritick\u00e9 pro v\u00e1\u0161 projekt \u2014 r\u00e1di se dozv\u00edme o v\u00fdsledc\u00edch v koment\u00e1\u0159\u00edch.<\/p>\n<p>P\u0159ejdeme k praktick\u00e9 \u010d\u00e1sti. V p\u0159\u00edkladu pou\u017e\u00edv\u00e1me virsh a podle toho libvirt. Nejprve se ujist\u011bte, \u017ee je p\u0159ipojen\u00fd Ceph pool, do kter\u00e9ho budou data migrac\u00ed, k libvirt:<\/p>\n<pre><code class=\"bash\">virsh pool-dumpxml $ceph_pool<\/code><\/pre>\n<p>\nV popisu poolu by m\u011bly b\u00fdt \u00fadaje o p\u0159ipojen\u00ed k Ceph s \u00fadaji pro autorizaci. <\/p>\n<p>Dal\u0161\u00edm krokem je, \u017ee se LVM obr\u00e1zek p\u0159evede na Ceph RBD. Doba proveden\u00ed z\u00e1vis\u00ed p\u0159edev\u0161\u00edm na velikosti obrazu:<\/p>\n<pre><code class=\"bash\">qemu-img convert -p -O rbd \/dev\/main\/$vm_image_name rbd:$ceph_pool\/$vm_image_name<\/code><\/pre>\n<p>\nPo konverzi z\u016fstane LVM obr\u00e1zek, kter\u00fd bude u\u017eite\u010dn\u00fd v p\u0159\u00edpad\u011b, \u017ee se migrace VM do RBD nezda\u0159\u00ed a bude nutn\u00e9 se vr\u00e1tit k p\u0159edchoz\u00edm zm\u011bn\u00e1m. Tak\u00e9 \u2014 pro mo\u017enost rychl\u00e9ho n\u00e1vratu zm\u011bn \u2014 ud\u011bl\u00e1me z\u00e1lohu konfigura\u010dn\u00edho souboru virtu\u00e1ln\u00edho stroje:<\/p>\n<pre><code class=\"bash\">virsh dumpxml $vm_name &gt; $vm_name.xml\ncp $vm_name.xml $vm_name_backup.xml<\/code><\/pre>\n<p>\n\u2026 a uprav\u00edme origin\u00e1l (<code>vm_name.xml<\/code>). Najdeme blok s popisem disku (za\u010d\u00edn\u00e1 \u0159\u00e1dkem <code>&lt;disk type='file' device='disk'&gt;<\/code> a kon\u010d\u00ed na <code>&lt;\/disk&gt;<\/code>) a p\u0159evedeme ho do n\u00e1sleduj\u00edc\u00ed podoby:<\/p>\n<pre><code class=\"xml\"><address \/><\/code><\/pre>\n<p>\nPod\u00edv\u00e1me se na n\u011bkter\u00e9 detaily:<\/p>\n<ol>\n<li> V protokolu <code>source<\/code> se uv\u00e1d\u00ed adresa \u00falo\u017ei\u0161t\u011b v Ceph RBD (jedn\u00e1 se o adresu s n\u00e1zvem Ceph-pool a RBD obrazu, kter\u00e1 byla ur\u010dena v prvn\u00edm kroku).<\/li>\n<li> V bloku <code>secret<\/code> se uv\u00e1d\u00ed typ <code>ceph<\/code>, stejn\u011b jako UUID tajn\u00e9ho kl\u00ed\u010de pro p\u0159ipojen\u00ed k n\u011bmu. Jeho uuid lze zjistit pomoc\u00ed p\u0159\u00edkazu <code>virsh secret-list<\/code>.<\/li>\n<li> V bloku <code>host<\/code> se uv\u00e1d\u011bj\u00ed adresy monitor\u016f Ceph.<\/li>\n<\/ol>\n<p>\nPo \u00faprav\u011b konfigura\u010dn\u00edho souboru a dokon\u010den\u00ed konverze LVM na RBD lze pou\u017e\u00edt upraven\u00fd konfigura\u010dn\u00ed soubor a spustit virtu\u00e1ln\u00ed stroj:<\/p>\n<pre><code class=\"bash\">virsh define $vm_name.xml\nvirsh start $vm_name<\/code><\/pre>\n<p>\nJe nejvy\u0161\u0161\u00ed \u010das zkontrolovat, zda virtu\u00e1ln\u00ed stroj spr\u00e1vn\u011b nab\u011bhl: to lze zjistit nap\u0159\u00edklad p\u0159ipojen\u00edm p\u0159es SSH nebo prost\u0159ednictv\u00edm <code>virsh<\/code>. <\/p>\n<p>Pokud virtu\u00e1ln\u00ed stroj funguje spr\u00e1vn\u011b a neobjevili jste dal\u0161\u00ed probl\u00e9my, m\u016f\u017eete odstranit LVM obraz, kter\u00fd ji\u017e nen\u00ed pou\u017e\u00edv\u00e1n:<\/p>\n<pre><code class=\"bash\">lvremove main\/$vm_image_name<\/code><\/pre>\n<p><\/p>\n<h2>Z\u00e1v\u011br<\/h2>\n<p>\nSe v\u0161emi uveden\u00fdmi p\u0159\u00edpady jsme se setkali v praxi \u2013 douf\u00e1me, \u017ee instrukce pomohou i dal\u0161\u00edm administr\u00e1tor\u016fm vy\u0159e\u0161it podobn\u00e9 probl\u00e9my. Pokud m\u00e1te jak\u00e9koliv pozn\u00e1mky nebo dal\u0161\u00ed podobn\u00e9 p\u0159\u00edb\u011bhy z pou\u017e\u00edv\u00e1n\u00ed Ceph \u2013 budeme r\u00e1di, kdy\u017e je uvid\u00edme v koment\u00e1\u0159\u00edch!<\/p>\n<h2>P.S.<\/h2>\n<p>\nP\u0159e\u010dt\u011bte si tak\u00e9 n\u00e1\u0161 blog:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/477680\/\">Na\u0161e ruce nejsou na nic: obnova clustru Rook v K8s<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/451818\/\">Rook nebo ne Rook \u2013 to\u0165 ot\u00e1zka<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/348044\/\">Rook \u2013 \u201esebeobslu\u017en\u00e9\u201c \u00falo\u017ei\u0161t\u011b dat pro Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/329666\/\">Vytv\u00e1\u0159\u00edme trval\u00e9 \u00falo\u017ei\u0161t\u011b s provisioningem v Kubernetes na b\u00e1zi Ceph<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/495870\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Ceph \u043a\u0430\u043a \u0441\u0435\u0442\u0435\u0432\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043e \u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0437\u0430\u0434\u0430\u0447\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0432\u0437\u0433\u043b\u044f\u0434\u0430 \u043d\u0435 \u043a\u0430\u0436\u0443\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0438\u043b\u0438 \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u044b\u043c\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0441\u0442\u0430\u0440\u043e\u0433\u043e Ceph \u0432 \u043d\u043e\u0432\u044b\u0439 \u0441 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u044b\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0432 \u043d\u043e\u0432\u043e\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435; \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0434\u0438\u0441\u043a\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0432 Ceph. \u0420\u0430\u0437\u0431\u0438\u0440\u0430\u044f\u0441\u044c \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u0437\u0430\u0434\u0430\u0447\u0430\u043c\u0438, \u043c\u044b \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0435\u043c\u0441\u044f \u0441 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":77267,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-77266","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Ceph \u043a\u0430\u043a \u0441\u0435\u0442\u0435\u0432\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0432.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/tips-tricks-v-rabote-s-ceph-v-nagruzhennyh-proektah\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Tips &amp; tricks \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 Ceph \u0432 \u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Ceph \u043a\u0430\u043a \u0441\u0435\u0442\u0435\u0432\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0432.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/tips-tricks-v-rabote-s-ceph-v-nagruzhennyh-proektah\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-04-09T11:42:08+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-04-09T11:42:08+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Tipy &amp; triky pro pr\u00e1ci s Ceph v zat\u00ed\u017een\u00fdch projektech | ProHoster","description":"Pou\u017eit\u00ed Ceph jako s\u00ed\u0165ov\u00e9ho \u00falo\u017ei\u0161t\u011b v.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/tips-tricks-v-rabote-s-ceph-v-nagruzhennyh-proektah","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Tips &amp; tricks \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 Ceph \u0432 \u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 | ProHoster","og:description":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Ceph \u043a\u0430\u043a \u0441\u0435\u0442\u0435\u0432\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0432.","og:url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/tips-tricks-v-rabote-s-ceph-v-nagruzhennyh-proektah","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-04-09T11:42:08+00:00","article:modified_time":"2020-04-09T11:42:08+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"77266","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 17:20:51","updated":"2022-10-02 10:23:09","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/77266","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=77266"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/77266\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/77267"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=77266"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=77266"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=77266"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}