{"id":240,"date":"2012-11-07T13:48:37","date_gmt":"2012-11-07T17:48:37","guid":{"rendered":"http:\/\/www.ericmartel.net\/?p=240"},"modified":"2015-09-12T14:36:21","modified_gmt":"2015-09-12T18:36:21","slug":"de-la-gestion-de-raid","status":"publish","type":"post","link":"https:\/\/blogue.ericmartel.net\/?p=240","title":{"rendered":"De la gestion de RAID"},"content":{"rendered":"<p><strong>MAJ 2015-09-12:<\/strong> <em>Avant de penser \u00e0 vous faire un RAID classique avec mdadm, je vous recommande fortement de regarder du c\u00f4t\u00e9 de ZFS. J&rsquo;avais &#8212; comme bien des gens familiers avec l&rsquo;administration de syst\u00e8mes POSIX &#8212; d\u00e9j\u00e0 entendu parler de ZFS, je savais que \u00e7a existait, mais ne m&rsquo;\u00e9tais jamais particuli\u00e8rement arr\u00eat\u00e9 \u00e0 en conna\u00eetre les avantages, \u00e9tant heureux avec XFS que je trouvais ultra-performant dans tous ses aspects (pour l&rsquo;avoir moi-m\u00eame compar\u00e9 dans des cas-types avec d&rsquo;autres syst\u00e8mes), et qui est en plus journalis\u00e9, et je m&rsquo;imaginais ZFS comme simplement un autre syst\u00e8me de fichier, sans plus. Mais voil\u00e0 que dans une discussion r\u00e9cente sur Facebook \u00e0 propos des syst\u00e8mes de stockage redondants, j&rsquo;ai appris que ZFS \u00e9tait bien plus qu&rsquo;un simple syst\u00e8me de fichier et permettait une panoplie de configurations, notamment la cr\u00e9ation de syst\u00e8mes redondants de type RAID, avec le <strong>tr\u00e8s gros avantage<\/strong> que l&rsquo;int\u00e9gralit\u00e9 des donn\u00e9es est garantie en tout temps, ce qui est assez critique de nos jours avec des tailles de disques telles que l&rsquo;apparition d&rsquo;erreurs est statistiquement presque in\u00e9vitable et des temps de reconstruction extr\u00eamement longs en cas de remplacement d&rsquo;un disque dans un RAID. Par contre, un avantage que je trouve encore au RAID est celui de pouvoir en augmenter la taille facilement et \u00e0 volont\u00e9: on ajoute un nouveau disque et hop! on ajoute autant d&rsquo;espace, et aussi d&rsquo;apr\u00e8s quelques lectures il semble que RAID+XFS soit moins gourmand en ressources (RAM+CPU) que ZFS. Mais si vous connaissez d&rsquo;avance la taille que vous souhaitez et que votre machine est performante, alors ZFS me para\u00eet tout indiqu\u00e9.<\/em><\/p>\n<hr \/>\n<p>&nbsp;<\/p>\n<p>Il y a maintenant quelques ann\u00e9es que j&rsquo;ai commenc\u00e9 \u00e0 me b\u00e2tir un RAID personnalis\u00e9 sous Linux \u00e0 la maison. Parti avec 3 x 500 Go (= 1 To RAID 5), j&rsquo;en suis maintenant \u00e0 11 x 500 Go (= 5 To RAID 5), plus 1 disque de secours inactif. Je m&rsquo;en sers essentiellement pour stocker les \u00abrip\u00bb de mes DVDs et Blu-Ray qui vont alimenter mon serveur multim\u00e9dia XBMC. \u00c9videmment, quand tout va bien, tout va bien, et un jour&#8230; \u00e7a ne va plus, et c&rsquo;est l\u00e0 qu&rsquo;on r\u00e9alise qu&rsquo;on n&rsquo;avait pas n\u00e9cessairement tout fait dans les r\u00e8gles de l&rsquo;art, soit par exc\u00e8s de confiance, soit parce qu&rsquo;il nous manquait des connaissances. Donc, pour ma propre gouverne, mais aussi pour toute autre personne int\u00e9ress\u00e9e, voici quelques trucs et conseils que j&rsquo;ai appris au fil du temps.<\/p>\n<p>Pour les curieux, voici une description de mon installation: j&rsquo;ai 12 disques durs externes USB. Six\u00a0d&rsquo;entre eux \u00e9taient vendus comme tel (i.e. vendus comme disques externes mont\u00e9s en usine), alors que les autres sont des disques SATA internes manuellement ins\u00e9r\u00e9s dans des bo\u00eetiers USB externes (la logique pour ces derniers \u00e9tant que si jamais un disque p\u00e8te, j&rsquo;aurai juste le disque interne \u00e0 remplacer, th\u00e9oriquement \u00e0 moindre co\u00fbt). Les ports USB me sont fournis par 3 cartes PCI fournissant 4 ports chacune. Et le tout est branch\u00e9 \u00e0&#8230; (roulement de tambour!!!) un superbe PII 450MHz 128Mo RAM! \ud83d\ude42 Eh oui, pas besoin de plus que \u00e7a! Et il ne sert qu&rsquo;\u00e0 \u00e7a (serveur de fichiers), donc c&rsquo;est amplement suffisant. Oh, et il roule Debian (me souviens plus qu&rsquo;elle version, mais c&rsquo;est pas tellement pertinent au pr\u00e9sent texte anyway).<\/p>\n<p>Le wiki <a href=\"https:\/\/raid.wiki.kernel.org\/index.php\/Linux_Raid\">Linux RAID<\/a> vous donnera toutes les informations de base pour cr\u00e9er et administrer un RAID; ce que je veux ici est pr\u00e9ciser ou mettre en lumi\u00e8re certains points qui ne sont peut-\u00eatre pas \u00e9vidents pour quelqu&rsquo;un qui commence et qui peuvent \u00e9ventuellement nous sauver du p\u00e9trin.<\/p>\n<h2>Conseil 1: Table de partition GPT!!!<\/h2>\n<p>Si vous pr\u00e9voyez partitionner votre RAID (ce qui n&rsquo;est pas n\u00e9cessaire, en passant: vous pouvez le formatter directement, et c&rsquo;est ce que je recommande; \u00e0 l&rsquo;\u00e9poque je n&rsquo;y avais juste pas pens\u00e9&#8230;), \u00e9pargnez-vous des larmes futures en cr\u00e9ant une table de partition de type GPT. \u00a0J&rsquo;\u00e9tais rendu \u00e0 ajouter mon 6e disque dur (pour avoir 2.5 To en RAID 5) lorsque j&rsquo;ai eu la tr\u00e8s mauvaise surprise de d\u00e9couvrir que je n&rsquo;\u00e9tais pas capable d&rsquo;\u00e9tirer ma partition \u00e0 plus de 2 To, tout \u00e7a parce que j&rsquo;avais une table de partition \u00abstandard\u00bb de type MD-DOS. La cr\u00e9ation se fera avec parted (et non fdisk, qui ne supporte pas la cr\u00e9ation de tables GPT) et la commande suivante:<\/p>\n<pre>(parted) <strong>mklabel gpt <\/strong><\/pre>\n<h4>&#8230;ou utiliser LVM?<\/h4>\n<p>Sans doute qu&rsquo;au lieu d&rsquo;utiliser GPT (et de redimensionner la partition \u00e0 chaque ajout de disque), on pourrait utiliser LVM (avec un simple pvresize apr\u00e8s chaque ajout de disque?)&#8230; Mais LVM soul\u00e8ve la question d&rsquo;une couche logicielle suppl\u00e9mentaire: je ne sais pas \u00e0 quel point \u00e7a pourrait ajouter de l&rsquo;instabilit\u00e9 ou diminuer la performance&#8230; Mais certainement que \u00e7a faciliterait la gestion de la croissance du RAID.<\/p>\n<h4><span style=\"font-size: 1.5em;\">Conseil 2: Prenez en note la configuration de vos partitions!!!<\/span><\/h4>\n<p>(Ne s&rsquo;applique pas seulement aux RAID&#8230;) Un \u00abfdisk -ul\u00bb vous donnera les informations importantes \u00e0 conserver si jamais vous deviez vous retrouver en situation de retrouver une partition perdue.<\/p>\n<p>Pour ceux qui se demanderaient quel type de partition utiliser, personnellement j&rsquo;utilise toujours XFS pour ses performances notoires, notamment avec de gros fichiers (comme des \u00abrip\u00bb full-HD de Blu-Ray, p. ex.), mais c&rsquo;est souvent une question de pr\u00e9f\u00e9rence personnelle.<\/p>\n<h2>Conseil 3: Identifiez vos disques!!!<\/h2>\n<p>D&rsquo;un d\u00e9marrage \u00e0 l&rsquo;autre, les disques ne reprendront pas n\u00e9cessairement le m\u00eame identifiant \/dev\/sd?; or, malheureusement, la commande de gestion mdadm ne travaille qu&rsquo;avec les identifiants \/dev\/sd?&#8230; Donc, quand un disque devient d\u00e9faillant (en passant, quand \u00e7a arrive, \u00e7a ne veut pas n\u00e9cessairement dire que le disque est vraiment d\u00e9fectueux: il y a peut-\u00eatre juste eu un \u00abglitch\u00bb dans le contr\u00f4leur ou autre qui a fait d\u00e9barquer le disque du RAID, sans qu&rsquo;il soit pour autant endommag\u00e9), la commande \u00abmdadm &#8211;detail\u00bb vous dira que sd? est d\u00e9faillant, sans plus: alors physiquement, lequel est-ce&#8230;? Truc: \u00e9tiquetez physiquement vos disques avec l&rsquo;identifiant mat\u00e9riel tel que trouv\u00e9 dans \/dev\/disk\/by-id\/, et ajoutez une ligne du genre dans \/etc\/rc.local pour toujours avoir une cartographie \u00e0 jour de vos disques:<\/p>\n<pre>ls -l \/dev\/disk\/by-id | grep sd[^a] &gt; \/root\/disques.txt<\/pre>\n<h2>Conseil 4: Surveillez!!!<\/h2>\n<p>Il est tr\u00e8s important de savoir quand un disque se fait d\u00e9barquer du RAID afin de prendre les mesures de restauration n\u00e9cessaire; \u00e9videmment, vous pouvez manuellement ex\u00e9cuter r\u00e9guli\u00e8rement un \u00abmdadm &#8211;detail\u00bb, mais le mieux est d\u00e9finitivement d&rsquo;ajouter une ligne de ce genre dans \/etc\/rc.local:<\/p>\n<pre>mdadm --monitor --daemonise -f --mail=moi@domaine.com --delay=300 \/dev\/md0<\/pre>\n<p>Assurez-vous par contre que vous pouvez envoyer des courriels depuis l&rsquo;h\u00f4te du RAID, sinon \u00e7a ne donnera pas grand-chose&#8230;<\/p>\n<h2>Conseil 5: Faites des \u00abcheck\u00bb!!!<\/h2>\n<p>Fonction peu connue (et pourtant fortement recommand\u00e9e!!): on peut demander au RAID de v\u00e9rifier son int\u00e9grit\u00e9 et de faire les corrections n\u00e9cessaires avec une commande du genre:<\/p>\n<pre>echo check &gt;  \/sys\/block\/md0\/md\/sync_action<\/pre>\n<p>Pour les plus vieilles versions de RAID (renseignez-vous), il est possible de devoir aussi entrer une commande du genre:<\/p>\n<pre>echo repair &gt;\/sys\/block\/md0\/md\/sync_action<\/pre>\n<p>Il est donc conseill\u00e9 de faire ces v\u00e9rifications r\u00e9guli\u00e8rement, p.ex. avec \u00abcron\u00bb.<\/p>\n<h2>Conseil 6: Disque de secours<\/h2>\n<p>Pas \u00abessentiel\u00bb, mais pratique: si vous pouvez vous permettre un disque suppl\u00e9mentaire de secours qui ne contribuera pas \u00e0 l&rsquo;espace disque disponible, c&rsquo;est bien, car il prendra automatiquement la rel\u00e8ve si jamais un disque devait se faire d\u00e9barquer; quand vous faites un \u00abmdadm &#8211;add\u00bb, le disque est automatiquement ajout\u00e9 en tant que disque de secours (vous pouvez en mettre autant que vous voulez), et il n&rsquo;y a rien d&rsquo;autre \u00e0 faire.<\/p>\n<h2>Conseil 7: Copies de s\u00e9curit\u00e9<\/h2>\n<p>Un RAID n&rsquo;est pas infaillible, donc assurez-vous d&rsquo;avoir des copies de s\u00e9curit\u00e9 de tous vos fichiers importants!<\/p>\n<h2>Conseil 8: En cas de d\u00e9faillance de disques d&rsquo;un RAID 5<\/h2>\n<p>Comme dit pour le conseil 3, \u00e7a ne veut pas dire que vos disques sont vraiment d\u00e9fectueux. La meilleure chose \u00e0 faire est d&rsquo;essayer quelque-chose du genre:<\/p>\n<p>A) si un seul disque d\u00e9barqu\u00e9:<\/p>\n<pre>mdadm --re-add \/dev\/md0 \/dev\/sd?<\/pre>\n<p>B) si plusieurs disques d\u00e9barqu\u00e9s (marchera avec un seul aussi):<\/p>\n<pre>mdadm --stop \/dev\/md0\r\n mdadm --assemble \/dev\/md0 --scan --force<\/pre>\n<p>Ce qui pourrait bien ressusciter votre RAID au moins temporairement, e.g. pour faire des copies de s\u00e9curit\u00e9 de derni\u00e8re minute au besoin. (N&rsquo;oubliez pas de d\u00e9monter votre RAID avant de faire &#8211;stop, ou sinon \u00e7a ne marchera pas! \ud83d\ude42<\/p>\n<h2>Conseil 9: En cas de d\u00e9faillance physique r\u00e9elle d&rsquo;un disque<\/h2>\n<p>Si le disque tourne encore et semble en bonne condition m\u00e9canique de fonctionnement, la commande \u00abbadblocks\u00bb vous permet de d\u00e9terminer si des blocs sont d\u00e9fectueux sur un disque, et si oui lesquels. Par contre, malheureusement, la commande ne les corrige pas. En fait, on ne peut g\u00e9n\u00e9ralement pas \u00abcorriger\u00bb des mauvais blocs; il peut parfois \u00eatre possible de les \u00e9liminer en r\u00e9\u00e9crivant par-dessus, mais ce n&rsquo;est pas certain (Google vous dira comment faire si vous voulez essayer). La m\u00e9thode g\u00e9n\u00e9ralement utilis\u00e9e (\u00e0 part changer le disque) consiste id\u00e9alement \u00e0 indiquer au syst\u00e8me de les contourner. Le \u00abcheck\u00bb du conseil 5 est sens\u00e9 faire exactement cela: s&rsquo;il d\u00e9couvre des mauvais blocs sur un disque, il est sens\u00e9 noter leurs positions et les \u00e9viter.<\/p>\n<h2>Conseil 10: En cas de d\u00e9faillance de 2+ disques du RAID, dont au moins un est d\u00e9faillant physiquement<\/h2>\n<p>\u00c7a m&rsquo;est arriv\u00e9. Voici ce qui s&rsquo;est pass\u00e9 (et l&rsquo;origine du pr\u00e9sent article et de plusieurs conseils ci-dessus): je me suis rendu compte un moment donn\u00e9 avec un \u00abmdadm &#8211;detail\u00bb que j&rsquo;avais un disque d\u00e9barqu\u00e9, depuis je ne sais pas combien de temps. Je croyais avoir suivi le conseil 4 pourtant (mais pas le 6&#8230;), sauf que j&rsquo;avais chang\u00e9 des configs dans mon smtp qui faisaient que le courriel ne fonctionnait plus, de sorte que je n&rsquo;avais jamais re\u00e7u d&rsquo;avertissement&#8230; Bon, alors, je fais un \u00abmdadm &#8211;re-add\u00bb et tout va bien: le RAID se met en restauration. Sauf que&#8230; \u00e0 75% de restauration, le RAID s&rsquo;arr\u00eate avec DEUX disques d\u00e9faillants, soit celui de d\u00e9part, plus un nouveau! Un \u00abbadblocks\u00bb sur le second me confirme le pire: il y a des mauvais blocs sur ce second disque, ce qui rend toute tentative de reconstruction impossible&#8230; Alors, ce que j&rsquo;ai fait: je me suis procur\u00e9 un nouveau disque, et j&rsquo;ai fait un \u00abdd_rescue\u00bb depuis le disque d\u00e9fectueux sur le nouveau disque, et j&rsquo;ai remplac\u00e9 le disque d\u00e9fectueux par le nouveau disque dans le RAID. Et&#8230; BINGO! \ud83d\ude00 (Ensuite j&rsquo;ai suivi le conseil 6&#8230; \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>MAJ 2015-09-12: Avant de penser \u00e0 vous faire un RAID classique avec mdadm, je vous recommande fortement de regarder du c\u00f4t\u00e9 de ZFS. J&rsquo;avais &#8212; comme bien des gens familiers avec l&rsquo;administration de syst\u00e8mes POSIX &#8212; d\u00e9j\u00e0 entendu parler de ZFS, je savais que \u00e7a existait, mais ne m&rsquo;\u00e9tais jamais particuli\u00e8rement arr\u00eat\u00e9 \u00e0 en conna\u00eetre [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[4],"tags":[],"class_list":["post-240","post","type-post","status-publish","format-standard","hentry","category-informatique"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5oQvl-3S","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/blogue.ericmartel.net\/index.php?rest_route=\/wp\/v2\/posts\/240","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogue.ericmartel.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogue.ericmartel.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogue.ericmartel.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogue.ericmartel.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=240"}],"version-history":[{"count":19,"href":"https:\/\/blogue.ericmartel.net\/index.php?rest_route=\/wp\/v2\/posts\/240\/revisions"}],"predecessor-version":[{"id":288,"href":"https:\/\/blogue.ericmartel.net\/index.php?rest_route=\/wp\/v2\/posts\/240\/revisions\/288"}],"wp:attachment":[{"href":"https:\/\/blogue.ericmartel.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=240"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogue.ericmartel.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=240"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogue.ericmartel.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=240"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}