1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
---|
2 | <html xmlns="http://www.w3.org/1999/xhtml"> |
---|
3 | <head> |
---|
4 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
---|
5 | <meta http-equiv="Content-Style-Type" content="text/css" /> |
---|
6 | <meta name="generator" content="pandoc" /> |
---|
7 | <title>Ganeti: failures and recovery scenarios</title> |
---|
8 | <style type="text/css">code{white-space: pre;}</style> |
---|
9 | <link href="data:text/css,%2F%2A%0A%20%20%20%20Buttondown%0A%20%20%20%20A%20Markdown%2FMultiMarkdown%2FPandoc%20HTML%20output%20CSS%20stylesheet%0A%20%20%20%20Author%3A%20Ryan%20Gray%0A%20%20%20%20Date%3A%2015%20Feb%202011%0A%20%20%20%20Revised%3A%2021%20Feb%202012%0A%20%20%20%0A%20%20%20%20General%20style%20is%20clean%2C%20with%20minimal%20re%2Ddefinition%20of%20the%20defaults%20or%20%0A%20%20%20%20overrides%20of%20user%20font%20settings%2E%20The%20body%20text%20and%20header%20styles%20are%20%0A%20%20%20%20left%20alone%20except%20title%2C%20author%20and%20date%20classes%20are%20centered%2E%20A%20Pandoc%20TOC%20%0A%20%20%20%20is%20not%20printed%2C%20URLs%20are%20printed%20after%20hyperlinks%20in%20parentheses%2E%20%0A%20%20%20%20Block%20quotes%20are%20italicized%2E%20Tables%20are%20lightly%20styled%20with%20lines%20above%20%0A%20%20%20%20and%20below%20the%20table%20and%20below%20the%20header%20with%20a%20boldface%20header%2E%20Code%20%0A%20%20%20%20blocks%20are%20line%20wrapped%2E%20%0A%20%0A%20%20%20%20All%20elements%20that%20Pandoc%20and%20MultiMarkdown%20use%20should%20be%20listed%20here%2C%20even%20%0A%20%20%20%20if%20the%20style%20is%20empty%20so%20you%20can%20easily%20add%20styling%20to%20anything%2E%0A%20%20%20%20%0A%20%20%20%20There%20are%20some%20elements%20in%20here%20for%20HTML5%20output%20of%20Pandoc%2C%20but%20I%20have%20not%20%0A%20%20%20%20gotten%20around%20to%20testing%20that%20yet%2E%0A%2A%2F%0A%20%0A%2F%2A%20NOTES%3A%0A%20%0A%20%20%20%20Stuff%20tried%20and%20failed%3A%0A%20%20%20%20%0A%20%20%20%20It%20seems%20that%20specifying%20font%2Dfamily%3Aserif%20in%20Safari%20will%20always%20use%20%0A%20%20%20%20Times%20New%20Roman%20rather%20than%20the%20user%27s%20preferences%20setting%2E%0A%20%20%20%20%0A%20%20%20%20Making%20the%20font%20size%20different%20or%20a%20fixed%20value%20for%20print%20in%20case%20the%20screen%20%0A%20%20%20%20font%20size%20is%20making%20the%20print%20font%20too%20big%3A%20Making%20font%2Dsize%20different%20for%20%0A%20%20%20%20print%20than%20for%20screen%20causes%20horizontal%20lines%20to%20disappear%20in%20math%20when%20using%20%0A%20%20%20%20MathJax%20under%20Safari%2E%0A%2A%2F%0A%20%0A%2F%2A%20%2D%2D%2D%2D%20Front%20Matter%20%2D%2D%2D%2D%20%2A%2F%0A%20%0A%2F%2A%20Pandoc%20header%20DIV%2E%20Contains%20%2Etitle%2C%20%2Eauthor%20and%20%2Edate%2E%20Comes%20before%20div%23TOC%2E%20%0A%20%20%20Only%20appears%20if%20one%20of%20those%20three%20are%20in%20the%20document%2E%0A%2A%2F%0A%20%0Adiv%23header%2C%20header%0A%20%20%20%20%7B%0A%20%20%20%20%2F%2A%20Put%20border%20on%20bottom%2E%20Separates%20it%20from%20TOC%20or%20body%20that%20comes%20after%20it%2E%20%2A%2F%0A%20%20%20%20border%2Dbottom%3A%201px%20solid%20%23aaa%3B%0A%20%20%20%20margin%2Dbottom%3A%200%2E5em%3B%0A%20%20%20%20%7D%0A%20%0A%2Etitle%20%2F%2A%20Pandoc%20title%20header%20%28h1%2Etitle%29%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20text%2Dalign%3A%20center%3B%0A%20%20%20%20%7D%0A%20%0A%2Eauthor%2C%20%2Edate%20%2F%2A%20Pandoc%20author%28s%29%20and%20date%20headers%20%28h2%2Eauthor%20and%20h3%2Edate%29%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20text%2Dalign%3A%20center%3B%0A%20%20%20%20%7D%0A%20%0A%2F%2A%20Pandoc%20table%20of%20contents%20DIV%20when%20using%20the%20%2D%2Dtoc%20option%2E%0A%20%20%20NOTE%3A%20this%20doesn%27t%20support%20Pandoc%27s%20%2D%2Did%2Dprefix%20option%20for%20%23TOC%20and%20%23header%2E%20%0A%20%20%20Probably%20would%20need%20to%20use%20div%5Bid%24%3D%27TOC%27%5D%20and%20div%5Bid%24%3D%27header%27%5D%20as%20selectors%2E%0A%2A%2F%0A%20%0Adiv%23TOC%2C%20nav%23TOC%0A%20%20%20%20%7B%0A%20%20%20%20%2F%2A%20Put%20border%20on%20bottom%20to%20separate%20it%20from%20body%2E%20%2A%2F%0A%20%20%20%20border%2Dbottom%3A%201px%20solid%20%23aaa%3B%0A%20%20%20%20margin%2Dbottom%3A%200%2E5em%3B%0A%20%20%20%20%7D%0A%20%0A%40media%20print%0A%20%20%20%20%7B%0A%20%20%20%20div%23TOC%2C%20nav%23TOC%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2A%20Don%27t%20display%20TOC%20in%20print%20%2A%2F%0A%20%20%20%20%20%20%20%20display%3A%20none%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%0A%2F%2A%20%2D%2D%2D%2D%20Headers%20and%20sections%20%2D%2D%2D%2D%20%2A%2F%0A%20%0Ah1%2C%20h2%2C%20h3%2C%20h4%2C%20h5%2C%20h6%0A%7B%0A%20%20%20%20font%2Dfamily%3A%20%22Helvetica%20Neue%22%2C%20Helvetica%2C%20%22Liberation%20Sans%22%2C%20Calibri%2C%20Arial%2C%20sans%2Dserif%3B%20%2F%2A%20Sans%2Dserif%20headers%20%2A%2F%0A%20%0A%20%20%20%20%2F%2A%20font%2Dfamily%3A%20%22Liberation%20Serif%22%2C%20%22Georgia%22%2C%20%22Times%20New%20Roman%22%2C%20serif%3B%20%2F%2A%20Serif%20headers%20%2A%2F%0A%20%0A%20%20%20%20page%2Dbreak%2Dafter%3A%20avoid%3B%20%2F%2A%20Firefox%2C%20Chrome%2C%20and%20Safari%20do%20not%20support%20the%20property%20value%20%22avoid%22%20%2A%2F%0A%7D%0A%20%0A%2F%2A%20Pandoc%20with%20%2D%2Dsection%2Ddivs%20option%20%2A%2F%0A%20%0Adiv%20div%2C%20section%20section%20%2F%2A%20Nested%20sections%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20margin%2Dleft%3A%202em%3B%20%2F%2A%20This%20will%20increasingly%20indent%20nested%20header%20sections%20%2A%2F%0A%20%20%20%20%7D%0A%20%0Ap%20%7B%7D%0A%20%0Ablockquote%0A%20%20%20%20%7B%20%0A%20%20%20%20font%2Dstyle%3A%20italic%3B%0A%20%20%20%20%7D%0A%20%0Ali%20%2F%2A%20All%20list%20items%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0Ali%20%3E%20p%20%2F%2A%20Loosely%20spaced%20list%20item%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20margin%2Dtop%3A%201em%3B%20%2F%2A%20IE%3A%20lack%20of%20space%20above%20a%20%3Cli%3E%20when%20the%20item%20is%20inside%20a%20%3Cp%3E%20%2A%2F%0A%20%20%20%20%7D%0A%20%0Aul%20%2F%2A%20Whole%20unordered%20list%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0Aul%20li%20%2F%2A%20Unordered%20list%20item%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0Aol%20%2F%2A%20Whole%20ordered%20list%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0Aol%20li%20%2F%2A%20Ordered%20list%20item%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0Ahr%20%7B%7D%0A%20%0A%2F%2A%20%2D%2D%2D%2D%20Some%20span%20elements%20%2D%2D%2D%20%2A%2F%0A%20%0Asub%20%2F%2A%20Subscripts%2E%20Pandoc%3A%20H%7E2%7EO%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0Asup%20%2F%2A%20Superscripts%2E%20Pandoc%3A%20The%202%5End%5E%20try%2E%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%20%20%20%0Aem%20%2F%2A%20Emphasis%2E%20Markdown%3A%20%2Aemphasis%2A%20or%20%5Femphasis%5F%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%20%20%20%0Aem%20%3E%20em%20%2F%2A%20Emphasis%20within%20emphasis%3A%20%2AThis%20is%20all%20%2Aemphasized%2A%20except%20that%2A%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20font%2Dstyle%3A%20normal%3B%0A%20%20%20%20%7D%0A%20%0Astrong%20%2F%2A%20Markdown%20%2A%2Astrong%2A%2A%20or%20%5F%5Fstrong%5F%5F%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0A%2F%2A%20%2D%2D%2D%2D%20Links%20%28anchors%29%20%2D%2D%2D%2D%20%2A%2F%0A%20%0Aa%20%2F%2A%20All%20links%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%2F%2A%20Keep%20links%20clean%2E%20On%20screen%2C%20they%20are%20colored%3B%20in%20print%2C%20they%20do%20nothing%20anyway%2E%20%2A%2F%0A%20%20%20%20text%2Ddecoration%3A%20none%3B%0A%20%20%20%20%7D%0A%20%0A%40media%20screen%0A%20%20%20%20%7B%0A%20%20%20%20a%3Ahover%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2A%20On%20hover%2C%20we%20indicate%20a%20bit%20more%20that%20it%20is%20a%20link%2E%20%2A%2F%0A%20%20%20%20%20%20%20%20text%2Ddecoration%3A%20underline%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%0A%40media%20print%0A%20%20%20%20%7B%0A%20%20%20%20a%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2A%20In%20print%2C%20a%20colored%20link%20is%20useless%2C%20so%20un%2Dstyle%20it%2E%20%2A%2F%0A%20%20%20%20%20%20%20%20color%3A%20black%3B%0A%20%20%20%20%20%20%20%20background%3A%20transparent%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20a%5Bhref%5E%3D%22http%3A%2F%2F%22%5D%3Aafter%2C%20a%5Bhref%5E%3D%22https%3A%2F%2F%22%5D%3Aafter%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2A%20However%2C%20links%20that%20go%20somewhere%20else%2C%20might%20be%20useful%20to%20the%20reader%2C%0A%20%20%20%20%20%20%20%20%20%20%20so%20for%20http%20and%20https%20links%2C%20print%20the%20URL%20after%20what%20was%20the%20link%20%0A%20%20%20%20%20%20%20%20%20%20%20text%20in%20parens%0A%20%20%20%20%20%20%20%20%2A%2F%0A%20%20%20%20%20%20%20%20content%3A%20%22%20%28%22%20attr%28href%29%20%22%29%20%22%3B%0A%20%20%20%20%20%20%20%20font%2Dsize%3A%2090%25%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%0A%2F%2A%20%2D%2D%2D%2D%20Images%20%2D%2D%2D%2D%20%2A%2F%0A%20%0Aimg%0A%20%20%20%20%7B%0A%20%20%20%20%2F%2A%20Let%20it%20be%20inline%20left%2Fright%20where%20it%20wants%20to%20be%2C%20but%20verticality%20make%20%0A%20%20%20%20%20%20%20it%20in%20the%20middle%20to%20look%20nicer%2C%20but%20opinions%20differ%2C%20and%20if%20in%20a%20multi%2Dline%20%0A%20%20%20%20%20%20%20paragraph%2C%20it%20might%20not%20be%20so%20great%2E%20%0A%20%20%20%20%2A%2F%0A%20%20%20%20vertical%2Dalign%3A%20middle%3B%0A%20%20%20%20%7D%0A%20%0Adiv%2Efigure%20%2F%2A%20Pandoc%20figure%2Dstyle%20image%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%2F%2A%20Center%20the%20image%20and%20caption%20%2A%2F%0A%20%20%20%20margin%2Dleft%3A%20auto%3B%0A%20%20%20%20margin%2Dright%3A%20auto%3B%0A%20%20%20%20text%2Dalign%3A%20center%3B%0A%20%20%20%20font%2Dstyle%3A%20italic%3B%0A%20%20%20%20%7D%0A%20%0Ap%2Ecaption%20%2F%2A%20Pandoc%20figure%2Dstyle%20caption%20within%20div%2Efigure%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%2F%2A%20Inherits%20div%2Efigure%20props%20by%20default%20%2A%2F%0A%20%20%20%20%7D%0A%20%0A%2F%2A%20%2D%2D%2D%2D%20Code%20blocks%20and%20spans%20%2D%2D%2D%2D%20%2A%2F%0A%20%0Apre%2C%20code%20%0A%20%20%20%20%7B%0A%20%20%20%20background%2Dcolor%3A%20%23fdf7ee%3B%0A%20%20%20%20%2F%2A%20BEGIN%20word%20wrap%20%2A%2F%0A%20%20%20%20%2F%2A%20Need%20all%20the%20following%20to%20word%20wrap%20instead%20of%20scroll%20box%20%2A%2F%0A%20%20%20%20%2F%2A%20This%20will%20override%20the%20overflow%3Aauto%20if%20present%20%2A%2F%0A%20%20%20%20white%2Dspace%3A%20pre%2Dwrap%3B%20%2F%2A%20css%2D3%20%2A%2F%0A%20%20%20%20white%2Dspace%3A%20%2Dmoz%2Dpre%2Dwrap%20%21important%3B%20%2F%2A%20Mozilla%2C%20since%201999%20%2A%2F%0A%20%20%20%20white%2Dspace%3A%20%2Dpre%2Dwrap%3B%20%2F%2A%20Opera%204%2D6%20%2A%2F%0A%20%20%20%20white%2Dspace%3A%20%2Do%2Dpre%2Dwrap%3B%20%2F%2A%20Opera%207%20%2A%2F%0A%20%20%20%20word%2Dwrap%3A%20break%2Dword%3B%20%2F%2A%20Internet%20Explorer%205%2E5%2B%20%2A%2F%0A%20%20%20%20%2F%2A%20END%20word%20wrap%20%2A%2F%0A%20%20%20%20%7D%0A%20%0Apre%20%2F%2A%20Code%20blocks%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%2F%2A%20Distinguish%20pre%20blocks%20from%20other%20text%20by%20more%20than%20the%20font%20with%20a%20background%20tint%2E%20%2A%2F%0A%20%20%20%20padding%3A%200%2E5em%3B%20%2F%2A%20Since%20we%20have%20a%20background%20color%20%2A%2F%0A%20%20%20%20border%2Dradius%3A%205px%3B%20%2F%2A%20Softens%20it%20%2A%2F%0A%20%20%20%20%2F%2A%20Give%20it%20a%20some%20definition%20%2A%2F%0A%20%20%20%20border%3A%201px%20solid%20%23aaa%3B%0A%20%20%20%20%2F%2A%20Set%20it%20off%20left%20and%20right%2C%20seems%20to%20look%20a%20bit%20nicer%20when%20we%20have%20a%20background%20%2A%2F%0A%20%20%20%20margin%2Dleft%3A%20%200%2E5em%3B%0A%20%20%20%20margin%2Dright%3A%200%2E5em%3B%0A%20%20%20%20%7D%0A%20%0A%40media%20screen%0A%20%20%20%20%7B%0A%20%20%20%20pre%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2A%20On%20screen%2C%20use%20an%20auto%20scroll%20box%20for%20long%20lines%2C%20unless%20word%2Dwrap%20is%20enabled%20%2A%2F%0A%20%20%20%20%20%20%20%20white%2Dspace%3A%20pre%3B%0A%20%20%20%20%20%20%20%20overflow%3A%20auto%3B%0A%20%20%20%20%20%20%20%20%2F%2A%20Dotted%20looks%20better%20on%20screen%20and%20solid%20seems%20to%20print%20better%2E%20%2A%2F%0A%20%20%20%20%20%20%20%20border%3A%201px%20dotted%20%23777%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%0Acode%20%2F%2A%20All%20inline%20code%20spans%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0Ap%20%3E%20code%2C%20li%20%3E%20code%20%2F%2A%20Code%20spans%20in%20paragraphs%20and%20tight%20lists%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%2F%2A%20Pad%20a%20little%20from%20adjacent%20text%20%2A%2F%0A%20%20%20%20padding%2Dleft%3A%20%202px%3B%0A%20%20%20%20padding%2Dright%3A%202px%3B%0A%20%20%20%20%7D%0A%20%20%20%20%0Ali%20%3E%20p%20code%20%2F%2A%20Code%20span%20in%20a%20loose%20list%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%2F%2A%20We%20have%20room%20for%20some%20more%20background%20color%20above%20and%20below%20%2A%2F%0A%20%20%20%20padding%3A%202px%3B%0A%20%20%20%20%7D%0A%20%0A%2F%2A%20%2D%2D%2D%2D%20Math%20%2D%2D%2D%2D%20%2A%2F%0A%20%0Aspan%2Emath%20%2F%2A%20Pandoc%20inline%20math%20default%20and%20%2D%2Djsmath%20inline%20math%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%2F%2A%20Tried%20font%2Dstyle%3Aitalic%20here%2C%20and%20it%20messed%20up%20MathJax%20rendering%20in%20some%20browsers%2E%20Maybe%20don%27t%20mess%20with%20at%20all%2E%20%2A%2F%0A%20%20%20%20%7D%0A%20%20%20%20%0Adiv%2Emath%20%2F%2A%20Pandoc%20%2D%2Djsmath%20display%20math%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%20%20%20%0Aspan%2ELaTeX%20%2F%2A%20Pandoc%20%2D%2Dlatexmathml%20math%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%20%0A%20%0Aeq%20%2F%2A%20Pandoc%20%2D%2Dgladtex%20math%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%20%0A%20%0A%2F%2A%20%2D%2D%2D%2D%20Tables%20%2D%2D%2D%2D%20%2A%2F%0A%20%0A%2F%2A%20%20A%20clean%20textbook%2Dlike%20style%20with%20horizontal%20lines%20above%20and%20below%20and%20under%20%0A%20%20%20%20the%20header%2E%20Rows%20highlight%20on%20hover%20to%20help%20scanning%20the%20table%20on%20screen%2E%0A%2A%2F%0A%20%0Atable%0A%20%20%20%20%7B%0A%20%20%20%20border%2Dcollapse%3A%20collapse%3B%0A%20%20%20%20border%2Dspacing%3A%200%3B%20%2F%2A%20IE%206%20%2A%2F%0A%20%0A%20%20%20%20border%2Dbottom%3A%202pt%20solid%20%23000%3B%0A%20%20%20%20border%2Dtop%3A%202pt%20solid%20%23000%3B%20%2F%2A%20The%20caption%20on%20top%20will%20not%20have%20a%20bottom%2Dborder%20%2A%2F%0A%20%0A%20%20%20%20%2F%2A%20Center%20%2A%2F%0A%20%20%20%20margin%2Dleft%3A%20auto%3B%0A%20%20%20%20margin%2Dright%3A%20auto%3B%0A%20%20%20%20%7D%0A%20%20%20%20%0Athead%20%2F%2A%20Entire%20table%20header%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20border%2Dbottom%3A%201pt%20solid%20%23000%3B%0A%20%20%20%20background%2Dcolor%3A%20%23eee%3B%20%2F%2A%20Does%20this%20BG%20print%20well%3F%20%2A%2F%0A%20%20%20%20%7D%0A%20%0Atr%2Eheader%20%2F%2A%20Each%20header%20row%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%20%0A%20%0Atbody%20%2F%2A%20Entire%20table%20%20body%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0A%2F%2A%20Table%20body%20rows%20%2A%2F%0A%20%0Atr%20%20%7B%0A%20%20%20%20%7D%0Atr%2Eodd%3Ahover%2C%20tr%2Eeven%3Ahover%20%2F%2A%20Use%20%2Eodd%20and%20%2Eeven%20classes%20to%20avoid%20styling%20rows%20in%20other%20tables%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20background%2Dcolor%3A%20%23eee%3B%0A%20%20%20%20%7D%0A%20%20%20%20%0A%2F%2A%20Odd%20and%20even%20rows%20%2A%2F%0Atr%2Eodd%20%7B%7D%0Atr%2Eeven%20%7B%7D%0A%20%0Atd%2C%20th%20%2F%2A%20Table%20cells%20and%20table%20header%20cells%20%2A%2F%0A%20%20%20%20%7B%20%0A%20%20%20%20vertical%2Dalign%3A%20top%3B%20%2F%2A%20Word%20%2A%2F%0A%20%20%20%20vertical%2Dalign%3A%20baseline%3B%20%2F%2A%20Others%20%2A%2F%0A%20%20%20%20padding%2Dleft%3A%20%20%200%2E5em%3B%0A%20%20%20%20padding%2Dright%3A%20%200%2E5em%3B%0A%20%20%20%20padding%2Dtop%3A%20%20%20%200%2E2em%3B%0A%20%20%20%20padding%2Dbottom%3A%200%2E2em%3B%0A%20%20%20%20%7D%0A%20%20%20%20%0A%2F%2A%20Removes%20padding%20on%20left%20and%20right%20of%20table%20for%20a%20tight%20look%2E%20Good%20if%20thead%20has%20no%20background%20color%2A%2F%0A%2F%2A%0Atr%20td%3Alast%2Dchild%2C%20tr%20th%3Alast%2Dchild%0A%20%20%20%20%7B%0A%20%20%20%20padding%2Dright%3A%200%3B%0A%20%20%20%20%7D%0Atr%20td%3Afirst%2Dchild%2C%20tr%20th%3Afirst%2Dchild%20%0A%20%20%20%20%7B%0A%20%20%20%20padding%2Dleft%3A%200%3B%0A%20%20%20%20%7D%0A%2A%2F%0A%20%0Ath%20%2F%2A%20Table%20header%20cells%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20font%2Dweight%3A%20bold%3B%20%0A%20%20%20%20%7D%0A%20%0Atfoot%20%2F%2A%20Table%20footer%20%28what%20appears%20here%20if%20caption%20is%20on%20top%3F%29%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0Acaption%20%2F%2A%20This%20is%20for%20a%20table%20caption%20tag%2C%20not%20the%20p%2Ecaption%20Pandoc%20uses%20in%20a%20div%2Efigure%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20caption%2Dside%3A%20top%3B%0A%20%20%20%20border%3A%20none%3B%0A%20%20%20%20font%2Dsize%3A%200%2E9em%3B%0A%20%20%20%20font%2Dstyle%3A%20italic%3B%0A%20%20%20%20text%2Dalign%3A%20center%3B%0A%20%20%20%20margin%2Dbottom%3A%200%2E3em%3B%20%2F%2A%20Good%20for%20when%20on%20top%20%2A%2F%0A%20%20%20%20padding%2Dbottom%3A%200%2E2em%3B%0A%20%20%20%20%7D%0A%20%0A%2F%2A%20%2D%2D%2D%2D%20Definition%20lists%20%2D%2D%2D%2D%20%2A%2F%0A%20%0Adl%20%2F%2A%20The%20whole%20list%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20border%2Dtop%3A%202pt%20solid%20black%3B%0A%20%20%20%20padding%2Dtop%3A%200%2E5em%3B%0A%20%20%20%20border%2Dbottom%3A%202pt%20solid%20black%3B%0A%20%20%20%20%7D%0A%20%0Adt%20%2F%2A%20Definition%20term%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20font%2Dweight%3A%20bold%3B%0A%20%20%20%20%7D%0A%20%0Add%2Bdt%20%2F%2A%202nd%20or%20greater%20term%20in%20the%20list%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20border%2Dtop%3A%201pt%20solid%20black%3B%0A%20%20%20%20padding%2Dtop%3A%200%2E5em%3B%0A%20%20%20%20%7D%0A%20%20%20%20%0Add%20%2F%2A%20A%20definition%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20margin%2Dbottom%3A%200%2E5em%3B%0A%20%20%20%20%7D%0A%20%0Add%2Bdd%20%2F%2A%202nd%20or%20greater%20definition%20of%20a%20term%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20border%2Dtop%3A%201px%20solid%20black%3B%20%2F%2A%20To%20separate%20multiple%20definitions%20%2A%2F%0A%20%20%20%20%7D%0A%20%20%20%20%0A%2F%2A%20%2D%2D%2D%2D%20Footnotes%20%2D%2D%2D%2D%20%2A%2F%0A%20%0Aa%2Efootnote%2C%20a%2EfootnoteRef%20%7B%20%2F%2A%20Pandoc%2C%20MultiMarkdown%20footnote%20links%20%2A%2F%0A%20%20%20%20font%2Dsize%3A%20small%3B%20%0A%20%20%20%20vertical%2Dalign%3A%20text%2Dtop%3B%0A%7D%0A%20%0Aa%5Bhref%5E%3D%22%23fnref%22%5D%2C%20a%2Ereversefootnote%20%2F%2A%20Pandoc%2C%20MultiMarkdown%2C%20%3F%3F%20footnote%20back%20links%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0A%40media%20print%0A%20%20%20%20%7B%0A%20%20%20%20a%5Bhref%5E%3D%22%23fnref%22%5D%2C%20a%2Ereversefootnote%20%2F%2A%20Pandoc%2C%20MultiMarkdown%20%2A%2F%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2A%20Don%27t%20display%20these%20at%20all%20in%20print%20since%20the%20arrow%20is%20only%20something%20to%20click%20on%20%2A%2F%0A%20%20%20%20%20%20%20%20display%3A%20none%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20%0Adiv%2Efootnotes%20%2F%2A%20Pandoc%20footnotes%20div%20at%20end%20of%20the%20document%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%20%20%20%0Adiv%2Efootnotes%20li%5Bid%5E%3D%22fn%22%5D%20%2F%2A%20A%20footnote%20item%20within%20that%20div%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0A%2F%2A%20You%20can%20class%20stuff%20as%20%22noprint%22%20to%20not%20print%2E%20%0A%20%20%20Useful%20since%20you%20can%27t%20set%20this%20media%20conditional%20inside%20an%20HTML%20element%27s%20%0A%20%20%20style%20attribute%20%28I%20think%29%2C%20and%20you%20don%27t%20want%20to%20make%20another%20stylesheet%20that%20%0A%20%20%20imports%20this%20one%20and%20adds%20a%20class%20just%20to%20do%20this%2E%0A%2A%2F%0A%20%0A%40media%20print%0A%20%20%20%20%7B%0A%20%20%20%20%2Enoprint%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20display%3Anone%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A" rel="stylesheet" type="text/css" /> |
---|
10 | </head> |
---|
11 | <body> |
---|
12 | <div id="header"> |
---|
13 | <h1 class="title">Ganeti: failures and recovery scenarios</h1> |
---|
14 | </div> |
---|
15 | <div id="TOC"> |
---|
16 | <ul> |
---|
17 | <li><a href="#scenario-1-loss-of-secondary-node"><span class="toc-section-number">1</span> Scenario 1: loss of Secondary node</a><ul> |
---|
18 | <li><a href="#part-1-loss-of-network-connectivity"><span class="toc-section-number">1.1</span> Part 1: Loss of network connectivity</a><ul> |
---|
19 | <li><a href="#description"><span class="toc-section-number">1.1.1</span> Description</a></li> |
---|
20 | <li><a href="#process"><span class="toc-section-number">1.1.2</span> Process</a></li> |
---|
21 | <li><a href="#recovery"><span class="toc-section-number">1.1.3</span> Recovery</a></li> |
---|
22 | <li><a href="#re-adding-the-failed-node"><span class="toc-section-number">1.1.4</span> Re-adding the failed node</a></li> |
---|
23 | </ul></li> |
---|
24 | <li><a href="#alternate-decisions"><span class="toc-section-number">1.2</span> Alternate decisions</a><ul> |
---|
25 | <li><a href="#completely-removing-h2-from-the-cluster"><span class="toc-section-number">1.2.1</span> Completely removing H2 from the cluster</a></li> |
---|
26 | </ul></li> |
---|
27 | </ul></li> |
---|
28 | <li><a href="#scenario-2-loss-of-master-node"><span class="toc-section-number">2</span> Scenario 2: Loss of Master Node</a><ul> |
---|
29 | <li><a href="#promoting-slave"><span class="toc-section-number">2.1</span> Promoting slave</a></li> |
---|
30 | </ul></li> |
---|
31 | </ul> |
---|
32 | </div> |
---|
33 | <p>We are going to simulate a number of failure situations, and recover from them.</p> |
---|
34 | <p>Try and replicate the scenarios on your hosts.</p> |
---|
35 | <h1 id="scenario-1-loss-of-secondary-node"><a href="#scenario-1-loss-of-secondary-node"><span class="header-section-number">1</span> Scenario 1: loss of Secondary node</a></h1> |
---|
36 | <h2 id="part-1-loss-of-network-connectivity"><a href="#part-1-loss-of-network-connectivity"><span class="header-section-number">1.1</span> Part 1: Loss of network connectivity</a></h2> |
---|
37 | <h3 id="description"><a href="#description"><span class="header-section-number">1.1.1</span> Description</a></h3> |
---|
38 | <ul> |
---|
39 | <li>Cluster with 2 or more Nodes</li> |
---|
40 | <li>Master is up (H1)</li> |
---|
41 | <li>Secondary is up (H2)</li> |
---|
42 | <li>DRBD instance (debian VM) is running on Secondary (H2)</li> |
---|
43 | </ul> |
---|
44 | <h3 id="process"><a href="#process"><span class="header-section-number">1.1.2</span> Process</a></h3> |
---|
45 | <ul> |
---|
46 | <li>Control that <code>debian</code> (or what the name of the DRBD VM you are using is) is running on H2 (gnt-instance list)</li> |
---|
47 | </ul> |
---|
48 | <pre><code># gnt-instance list -o name,pnode,snodes,status</code></pre> |
---|
49 | <pre><code>Instance Primary_node Secondary_Nodes Status |
---|
50 | debian H2.ws.nsrc.org H1.ws.nsrc.org running</code></pre> |
---|
51 | <ul> |
---|
52 | <li>Shut down (halt) H2 (<em>make sure you run this on H2!</em>)</li> |
---|
53 | </ul> |
---|
54 | <pre><code># halt -p</code></pre> |
---|
55 | <ul> |
---|
56 | <li>The VM goes down as a result (control this using ping / console)</li> |
---|
57 | </ul> |
---|
58 | <pre><code># gnt-instance list -o name,pnode,snodes,status |
---|
59 | |
---|
60 | Instance Primary_node Secondary_Nodes Status |
---|
61 | debian H2.ws.nsrc.org H1.ws.nsrc.org ERROR_nodedown</code></pre> |
---|
62 | <ul> |
---|
63 | <li>Run <code>gnt-cluster verify</code> (will take a while), and look at the output.</li> |
---|
64 | </ul> |
---|
65 | <p>As you notice, things are quite slow. Let's start by marking H2 as offline:</p> |
---|
66 | <pre><code># gnt-node modify -O yes H2.ws.nsrc.org |
---|
67 | |
---|
68 | Modified node H2.ws.nsrc.org |
---|
69 | - master_candidate -> False |
---|
70 | - offline -> True</code></pre> |
---|
71 | <p>It will take a little while, but now most commands will run faster as Ganeti stops trying to contact the other nodes in the cluster.</p> |
---|
72 | <p>Try running <code>gnt-instance list</code> and <code>gnt-node list</code> again.</p> |
---|
73 | <p>Also re-run <code>gnt-cluster verify</code></p> |
---|
74 | <h3 id="recovery"><a href="#recovery"><span class="header-section-number">1.1.3</span> Recovery</a></h3> |
---|
75 | <ul> |
---|
76 | <li>We cannot migrate the host (H2 is down), so we need to <em>failover</em></li> |
---|
77 | </ul> |
---|
78 | <p>If you attempt to migrate, you will be told:</p> |
---|
79 | <pre><code># gnt-instance migrate debian |
---|
80 | |
---|
81 | Failure: prerequisites not met for this operation: |
---|
82 | error type: wrong_state, error details: |
---|
83 | Can't migrate, please use failover: Error 7: Failed connect to 10.10.0.X:1811; No route to host</code></pre> |
---|
84 | <ul> |
---|
85 | <li>Attempt failover</li> |
---|
86 | </ul> |
---|
87 | <pre><code># gnt-instance failover debian</code></pre> |
---|
88 | <p>Note: it is possible that the failover will succeed, but in case you see this message:</p> |
---|
89 | <pre><code>Sat Jan 18 20:57:55 2014 Failover instance debian |
---|
90 | Sat Jan 18 20:57:55 2014 * checking disk consistency between source and target |
---|
91 | Failure: command execution error: |
---|
92 | Disk 0 is degraded on target node, aborting failover</code></pre> |
---|
93 | <p>... you will need to <em>force</em> the operation. To do so:</p> |
---|
94 | <ul> |
---|
95 | <li>Read man page on <code>gnt-instance</code>, find the section about <code>failover</code>:</li> |
---|
96 | </ul> |
---|
97 | <blockquote> |
---|
98 | <p>If you are trying to migrate instances off a dead node, this will fail. Use the --ignore-consistency option for this purpose. Note that this option can be dangerous as errors in shutting down the instance will be ignored, resulting in possibly having the instance running on two machines in parallel (on disconnected DRBD drives).</p> |
---|
99 | </blockquote> |
---|
100 | <ul> |
---|
101 | <li><p>This is why we shut down H2, and didn't simply disconnect. You MUST verify that H2 really is down, and not simply disconnected from the management / replication network, otherwise you WILL end up with two running instances of <code>VM</code>, and you will need to force a resolution (we will attempt this later).</p></li> |
---|
102 | <li><p>Re-run <code>gnt-instance failover</code> with the '--ignore-consistency' flag. We are in a situation that requires this (H2 down)</p></li> |
---|
103 | </ul> |
---|
104 | <pre><code># gnt-instance failover --ignore-consistency debian</code></pre> |
---|
105 | <p>There will be much more output this time, pay attention in particular if you see some warnings - these are normal since the H2 node is down, but we did it mark it as offline.</p> |
---|
106 | <pre><code>Sat Jan 18 21:03:15 2014 Failover instance debian |
---|
107 | Sat Jan 18 21:03:15 2014 * checking disk consistency between source and target |
---|
108 | |
---|
109 | [ ... messages ... ] |
---|
110 | |
---|
111 | Sat Jan 18 21:03:27 2014 * activating the instance's disks on target node H1.ws.nsrc.org |
---|
112 | |
---|
113 | [ ... messages ... ] |
---|
114 | |
---|
115 | Sat Jan 18 21:03:33 2014 * starting the instance on the target node H1.ws.nsrc.org</code></pre> |
---|
116 | <ul> |
---|
117 | <li>Control that the VM is now up on H1:</li> |
---|
118 | </ul> |
---|
119 | <pre><code># gnt-instance list -o name,pnode,snodes,status |
---|
120 | |
---|
121 | Instance Primary_node Secondary_Nodes Status |
---|
122 | debian H1.ws.nsrc.org H2.ws.nsrc.org running</code></pre> |
---|
123 | <h3 id="re-adding-the-failed-node"><a href="#re-adding-the-failed-node"><span class="header-section-number">1.1.4</span> Re-adding the failed node</a></h3> |
---|
124 | <p>Ok, let's say H2 has been fixed.</p> |
---|
125 | <ul> |
---|
126 | <li><p>Restart H2.</p></li> |
---|
127 | <li><p>Make sure you can ping it and log in to it</p></li> |
---|
128 | </ul> |
---|
129 | <p>We need to re-add it to the cluster. We do this using the <code>gnt-node add --readd</code> command.</p> |
---|
130 | <p>From the <code>gnt-node</code> man page:</p> |
---|
131 | <blockquote> |
---|
132 | <p>In case you're readding a node after hardware failure, you can use the --readd parameter. In this case, you don't need to pass the secondary IP again, it will reused from the cluster. Also, the drained and offline flags of the node will be cleared before re-adding it.</p> |
---|
133 | </blockquote> |
---|
134 | <pre><code># gnt-node add --readd H2.ws.nsrc.org |
---|
135 | |
---|
136 | [ ... question about SSH ...] |
---|
137 | |
---|
138 | Sat Jan 18 22:09:43 2014 - INFO: Readding a node, the offline/drained flags were reset |
---|
139 | Sat Jan 18 22:09:43 2014 - INFO: Node will be a master candidate</code></pre> |
---|
140 | <p>We're good! It could take a while to re-sync the DRBD data if a lot of disk activity (writing) has taken place on <code>debian</code>, but this will happen in the background.</p> |
---|
141 | <p>Let's try and migrate debian back to H2:</p> |
---|
142 | <pre><code># gnt-instance migrate debian</code></pre> |
---|
143 | <p>Test that the migration has worked.</p> |
---|
144 | <p>Note: if you are certain that the node <code>H2</code> is healthy (let's say it was just a power failure, and no corruption has happened on its filesystem or disks), you could simply do (DON'T DO THIS NOW!):</p> |
---|
145 | <pre><code># gnt-node modify -O no H2.ws.nsrc.org |
---|
146 | |
---|
147 | Sat Jan 18 22:08:45 2014 - INFO: Auto-promoting node to master candidate |
---|
148 | Sat Jan 18 22:08:45 2014 - WARNING: Transitioning node from offline to online state without using re-add. Please make sure the node is healthy!</code></pre> |
---|
149 | <p>But you would be warned about this.</p> |
---|
150 | <h2 id="alternate-decisions"><a href="#alternate-decisions"><span class="header-section-number">1.2</span> Alternate decisions</a></h2> |
---|
151 | <h3 id="completely-removing-h2-from-the-cluster"><a href="#completely-removing-h2-from-the-cluster"><span class="header-section-number">1.2.1</span> Completely removing H2 from the cluster</a></h3> |
---|
152 | <p>If we were <em>certain</em> that H2 cannot be fixed, and won't be back online, we could delete H2 from the cluster. To do this:</p> |
---|
153 | <ul> |
---|
154 | <li>Run <code>gnt-cluster verify</code>, and look at the output, you will see</li> |
---|
155 | </ul> |
---|
156 | <pre><code>Sat Jan 18 21:31:56 2014 - NOTICE: 1 offline node(s) found.</code></pre> |
---|
157 | <ul> |
---|
158 | <li><p>We marked H2 as down - let's assume H2 will be down for a while while it's being fixed.</p></li> |
---|
159 | <li><p>We decide to remove H2 from the cluster:</p></li> |
---|
160 | </ul> |
---|
161 | <pre><code># gnt-node remove H2.ws.nsrc.org |
---|
162 | |
---|
163 | Failure: prerequisites not met for this operation: |
---|
164 | error type: wrong_input, error details: |
---|
165 | Instance debian is still running on the node, please remove first</code></pre> |
---|
166 | <p>Ok, we are not allowed to remove the H2, because Ganeti can see that we still have an instance (debian) associated with H2.</p> |
---|
167 | <p>This is different from simply marking the node offline, as it means we are permanently getting rid of H2, and we need to take a decision about what to do for DRBD instances that were associated with H2.</p> |
---|
168 | <p>So what do we do now ? If we had a third node (H3), we could use the <code>gnt-node evacuate</code>. Read the man page for <code>gnt-node</code> and look for the section about the <code>evacuate</code> subcommand.</p> |
---|
169 | <p><code>gnt-node evacuate</code> is used to move all DRBD instances from one failed node to others. But we don't have a third node for now!</p> |
---|
170 | <p>So we need to first temporarily convert our instance <code>debian</code> from DRBD... Unfortunately this requires shutting down the VM instance first.</p> |
---|
171 | <pre><code># gnt-instance shutdown debian</code></pre> |
---|
172 | <p>Wait until it is down (you will see some WARNINGs again), then:</p> |
---|
173 | <pre><code>gnt-instance modify -t plain -n H1.ws.nsrc.org debian |
---|
174 | |
---|
175 | Sat Jan 18 21:40:54 2014 Converting template to plain |
---|
176 | Sat Jan 18 21:40:54 2014 Removing volumes on the secondary node... |
---|
177 | Sat Jan 18 21:40:54 2014 Removing unneeded volumes on the primary node... |
---|
178 | Modified instance debian |
---|
179 | - disk_template -> plain</code></pre> |
---|
180 | <p>(WARNINGs removed in the output above)</p> |
---|
181 | <p>We shoud now be able to remove the node:</p> |
---|
182 | <pre><code># gnt-node remove H2.ws.nsrc.org</code></pre> |
---|
183 | <p>More WARNINGs! But did it work ?</p> |
---|
184 | <pre><code># gnt-node list |
---|
185 | |
---|
186 | Node DTotal DFree MTotal MNode MFree Pinst Sinst |
---|
187 | H1.ws.nsrc.org 29.1G 12.6G 995M 145M 672M 2 0</code></pre> |
---|
188 | <p>Yes, H2 is gone.</p> |
---|
189 | <p>Note: Ganeti will modify <code>/etc/hosts</code> on your remaining nodes, and remove the line for H2!</p> |
---|
190 | <p>We can restart our debian instance, by the way!</p> |
---|
191 | <pre><code># gnt-instance start debian</code></pre> |
---|
192 | <p>Test that it comes up normally.</p> |
---|
193 | <h1 id="scenario-2-loss-of-master-node"><a href="#scenario-2-loss-of-master-node"><span class="header-section-number">2</span> Scenario 2: Loss of Master Node</a></h1> |
---|
194 | <p>Let's imagine a slightly more critical scenario: the crash of the master node.</p> |
---|
195 | <p>Let's shut down the master node!</p> |
---|
196 | <p>On H1:</p> |
---|
197 | <pre><code># halt -p</code></pre> |
---|
198 | <p>The node is now down. VM still running on other nodes are unaffected, but you are not able to make any changes (stop, start, modify, add VMs, change cluster configuration, etc...)</p> |
---|
199 | <h2 id="promoting-slave"><a href="#promoting-slave"><span class="header-section-number">2.1</span> Promoting slave</a></h2> |
---|
200 | <p>Let's assume that H1 is not coming back right now, and we need to promote a master.</p> |
---|
201 | <p>You will first need to decide which of the remaining nodes will become the master. If you are only running 2 nodes, then it's rather obvious that H2 will become the Master.</p> |
---|
202 | <p>Read about <code>master-failover</code>: <code>man gnt-cluster</code>, find the MASTER-FAILOVER section.</p> |
---|
203 | <p>To promote the slave:</p> |
---|
204 | <ul> |
---|
205 | <li><p>Log on to the node that will become master (in this case, H2):</p></li> |
---|
206 | <li><p>Run the following command:</p></li> |
---|
207 | </ul> |
---|
208 | <pre><code># gnt-cluster master-failover</code></pre> |
---|
209 | <p>Note here that you will NOT be asked to confirm the operation!</p> |
---|
210 | <p>Also note that since we are running in a 2 node configuration, we may have to specify <code>--no-voting</code> as an option: since there is no other remaining node in the cluster, no voting can take place anyway.</p> |
---|
211 | <p>At this point, the slave node (H2) is now master. You can verify this using the <code>gnt-cluster getmaster</code> command.</p> |
---|
212 | <p>From this point, recovering downed machines is similar to what we did in the first scenario. But to be on the safe side:</p> |
---|
213 | <ul> |
---|
214 | <li><p>Restart H1, and log in to it as root</p></li> |
---|
215 | <li><p>Try and run <code>gnt-instance list</code></p></li> |
---|
216 | </ul> |
---|
217 | <p>Normally, even though H1 was down while the promotion of H2 happened, the <code>ganeti-masterd</code> daemon running on H1 was informed, on startup, that H1 was no longer master. The above command should therefore fail with:</p> |
---|
218 | <pre><code>This is not the master node, please connect to node 'H2.ws.nsrc.org' and |
---|
219 | rerun the command</code></pre> |
---|
220 | <p>Which means that H1 is well aware that H2 is the master now.</p> |
---|
221 | </body> |
---|
222 | </html> |
---|