{"id":958,"date":"2009-08-07T15:53:45","date_gmt":"2009-08-07T14:53:45","guid":{"rendered":"http:\/\/www.zarrelli.org\/blog\/?p=958"},"modified":"2009-08-07T16:49:44","modified_gmt":"2009-08-07T15:49:44","slug":"giochiamo-con-label-e-uuid","status":"publish","type":"post","link":"https:\/\/www.zarrelli.org\/blog\/giochiamo-con-label-e-uuid\/","title":{"rendered":"Giochiamo con Label e UUID"},"content":{"rendered":"<p>Mettiamo il caso che si stia lavorando su un server, un lavoro delicato, eh, e che la <a href=\"http:\/\/www.urbandictionary.com\/define.php?term=fuck%20up%20fairy\" target=\"_blank\">fuckup fairy<\/a> decida proprio in quel momento di venire a trovarvi&#8230;<\/p>\n<p>Mettiamo il caso che per una botta incredibile di fortuna, vi interrompano mentre state eseguendo un <code>echo<\/code> su <code>\/etc\/fstab<\/code> e invece di un bel <code>&gt;&gt;<\/code> vi ritroviate con <code>&gt;<\/code>.<\/p>\n<p>Ok, in questo caso fate ciao ciao con la manina a <code>\/etc\/fstab<\/code> e pensate intensamente al fatto che, genialmente, chi si occupa dei backup se n&#8217;\u00e8 andato in vacanza una settimana prima di voi.<\/p>\n<p>Ora, proprio per non rendere le cose facili, tenete conto che il vostro <code>\/etc\/fstab<\/code> monti i filesystem indicandoli con una volume label che, ovviamente, ora non ricordate, del tipo :<\/p>\n<p><code>LABEL=SW-cciss\/c0d0p2\u00a0\u00a0 swap\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 swap\u00a0\u00a0\u00a0 defaults\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0 0<\/code><\/p>\n<p>Questo \u00e8 un caso classico, una swap referenziata da label, e cancellata la riga chi si ricorda pi\u00f9 dove, come, quando, perch\u00e9? Volendo ripristinare un mount via label, una via semplice per recuperare l&#8217;etichetta mancante consiste nell&#8217;utilizzare <code>bklid<\/code>:<\/p>\n<p><code>#: blkid \/dev\/cciss\/c0d0p2<br \/>\n\/dev\/cciss\/c0d0p2: TYPE=\"swap\" <strong>LABEL=\"SW-cciss\/c0d0p2<\/strong>\" UUID=\"1b2e35d0-8321-4d5b-bed0-647b862cbc88\"<\/code><\/p>\n<p>Fatto. La label \u00e8<\/p>\n<p><code>SW-cciss\/c0d0p2<\/code><\/p>\n<p>Incidentalmente, ma nemmeno troppo, blkid vi mostra anche la <a href=\"http:\/\/en.wikipedia.org\/wiki\/Universally_Unique_Identifier\" target=\"_blank\">UUID<\/a> del filesystem. Infatti, potreste volere montare il filesystem usando il suo UUID e quindi la precedente istruzione in <code>\/etc\/fstab<\/code> potrebbe essere riscritta come:<\/p>\n<p><code><strong>UUID=1b2e35d0-8321-4d5b-bed0-647b862cbc88<\/strong> swap                    swap    defaults        0 0<\/code><\/p>\n<p>Ci\u00f2 vale per qualsiasi filesystem. Per esempio, questa regola di mount per il filesystem contenente i database di MySQL, da cos\u00ec<\/p>\n<p><code>\/dev\/VolGroup00\/LogVol03 \/var\/lib\/mysql          ext3    defaults        1 2<\/code><\/p>\n<p>passando per<\/p>\n<p><code>#: blkid \/dev\/VolGroup00\/LogVol03<br \/>\n\/dev\/VolGroup00\/LogVol03: UUID=\"fb5050a9-6641-4ec8-a1dc-5365b326d9bd\" TYPE=\"ext3\"<\/code><\/p>\n<p>Pu\u00f2 essere riscritta come:<\/p>\n<p><code>UUID=fb5050a9-6641-4ec8-a1dc-5365b326d9bd \/var\/lib\/mysql          ext3    defaults        1 2<\/code><\/p>\n<p>Avete notato nulla? Il filesystem \u00e8 sprovvisto di una volume label. Rimediamo applicando una etichetta che ci consenta di capire al volo la funzione del filesystem montato:<\/p>\n<p><code>tune2fs -L \"MySQL DB\" \/dev\/VolGroup00\/LogVol03<\/code><\/p>\n<p>Controlliamo che il filesystem abbia preso l&#8217;etichetta in maniera corretta:<\/p>\n<p><code><br \/>\n#: blkid \/dev\/VolGroup00\/LogVol03<br \/>\n\/dev\/VolGroup00\/LogVol03: UUID=\"fb5050a9-6641-4ec8-a1dc-5365b326d9bd\" TYPE=\"ext3\" LABEL=\"MySQL DB\"<\/code><\/p>\n<p>Ora non rimane che modificare <code>\/etc\/fstab<\/code> per rimontare il filesystem usando la nuova label:<\/p>\n<p><code>LABEL=MySQL\\040DB \/var\/lib\/mysql          ext3    defaults        1 2<\/code><\/p>\n<p>Notato qualcosa? Forse quello<\/p>\n<p><code>\\040<\/code><\/p>\n<p>messo fra MySQL e DB? Esatto. Serve per eseguire l&#8217;escape dello spazio fra le due parole che compongono la label. Se date un&#8217;occhiata al <code>man 5<\/code> di <code>fstab<\/code> noterete  che gli spazi vanno sottoposti a escape se si trovano all&#8217;interno di una etichetta o nel percorso del mount point. Quindi, corollario molto semplice, potete anche creare dei mount point il cui percorso sia composto da pi\u00f9 termni separati da uno spazio.<\/p>\n<p>Proviamoci:<\/p>\n<p><code>mkdir \"\/Spazio per i file database di MySQL\"<\/code><\/p>\n<p>Quindi modifichiamo in questo modo <code>\/etc\/fstab<\/code>:<\/p>\n<p><code>LABEL=MySQL\\040DB \/Spazio\\040per\\040i\\040file\\040database\\040di\\040MySQL          ext3    defaults        1 2<\/code><\/p>\n<p>Ora non rimane che smontare e rimontare il filesystem:<\/p>\n<p><code>umount \/var\/lib\/mysql\/ ; mount -a<\/code><\/p>\n<p>e infine, verifichiamo la buona riuscita dell&#8217;operazione:<\/p>\n<p><code>#: mount | grep Spazio<br \/>\n\/dev\/mapper\/VolGroup00-LogVol03 on \/Spazio per i file database di MySQL type ext3 (rw)<\/code><\/p>\n<p>e poi:<\/p>\n<p><code>ls \/Spazio\\ per\\ i\\ file\\ database\\ di\\ MySQL\/<br \/>\ncontrollo  ib_logfile0  ib_logfile1  ibdata1  lost+found  mysql  nagios_data<br \/>\n<\/code><\/p>\n<p>Bene, direi che tutto \u00e8 a posto. Non vi rimane che fare qualche esperimento, giusto?<\/p>\n<p>P.S.<\/p>\n<p>Nel caso aveste giocato con la directory dei db di MySQL (ma siete pazzi come me?), rimettete tutto a posto, oppure modificate il puntamento in <code>my.cnf<\/code>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mettiamo il caso che si stia lavorando su un server, un lavoro delicato, eh, e che la fuckup fairy decida proprio in quel momento di venire a trovarvi&#8230; Mettiamo il caso che per una botta incredibile di fortuna, vi interrompano mentre state eseguendo un echo su \/etc\/fstab e invece di un bel &gt;&gt; vi ritroviate &hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[31],"tags":[343,475,341,486,344,340,342],"class_list":["post-958","post","type-post","status-publish","format-standard","hentry","category-gnulinux","tag-fstab","tag-gnulinux","tag-label","tag-sysadmin","tag-tune2fs","tag-uuid","tag-volume-label","without-featured-image"],"_links":{"self":[{"href":"https:\/\/www.zarrelli.org\/blog\/wp-json\/wp\/v2\/posts\/958","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zarrelli.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.zarrelli.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.zarrelli.org\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.zarrelli.org\/blog\/wp-json\/wp\/v2\/comments?post=958"}],"version-history":[{"count":0,"href":"https:\/\/www.zarrelli.org\/blog\/wp-json\/wp\/v2\/posts\/958\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.zarrelli.org\/blog\/wp-json\/wp\/v2\/media?parent=958"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.zarrelli.org\/blog\/wp-json\/wp\/v2\/categories?post=958"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zarrelli.org\/blog\/wp-json\/wp\/v2\/tags?post=958"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}