Il est re-RAID

Bon, c’est bien dépassé (genre ça fait pile un mois). Mais mon NAS a retrouvé son RAID. La leçon essentielle est qu’il faut bien lire les messages des différentes commandes Linux, parce qu’en fait, j’avais démonté le mauvais disque dur …

Dès que j’ai pensé à enlever le bon disque dur, ça c’est mis à bien marcher.

Publicités

Il est un peu moins RAID …

Mais ça va s’arranger.

Parce que j’ai reçu aujourd’hui mon disque de remplacement.

J’ai d’abord essayé de remplacer le disque à l’arrache, avant de me souvenir qu’il y a sur le site de Alt-F une page complète sur le changement d’un composant dans un disque RAID.

J’ai donc repris la procédure en suivant méthodiquement les étapes.

Hélas, dès la suppression du composant, c’est le drame :

[root@dlink-6A4EB1]# mdadm --manage /dev/md0 --fail /dev/sda2
mdadm: set device faulty failed for /dev/sda2:  Device or resource busy

Et j’ai passé du temps avant d’avoir l’éclair de lucidité.

En fait, j’ai partitionné mes disques « simplement » : une grosse partition en RAID1 avec tout dedans. Tout … y compris ffp … Lequel ffp fournit évidement les services SSH et compagnie. Du coup, évidement, quand j’essaye d’enlever le composant (enfin, le disque, mais en RAID, apparemment, ça s’appelle un composant), ça ne marche pas … Attendez, c’est du RAID1, donc ça devrait marcher, non ?

Du coup, si c’est pas ça … je fais quoi, moi ? Ben j’en sais rien. Enfin, j’ai bien une idée : je peux toujours copier tout le contenu de mon montage RAID1 sur mon nouveau disque, et le faire évoluer vers un disque RAID1 en reformattant le composant qui reste dans le RAID1.

Bon, en théorie, la solution idéale serait quand même de mettre mon nouveau disque directement dans le conteneur RAID1 … mais je ne sais pas trop comment faire ça, ni dans l’interface d’Alt-F, ni même dans mdadm. Je sens que je vais encore aller écumer ServerFault, moi …

Il est RAID … mort ?

Bon, ça sent pas bon

2017-03-07 19_48_12-

Oui, mon RAID est dégradé.

Mais comment ?

Une première réponse grâce à cet article : How to get the status of a Linux software raid?

Qui donne ce résultat éloquent :

[root@dlink-6A4EB1]# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid6] [raid5] [raid4]
md0 : active raid1 sda2[0]
975585856 blocks [2/1] [U_]

unused devices: 

Effectivement, le U_ est clair : l’un des deux disques semble être dysfonctionnel. Mais lequel ?

En regardant dans l’interface de Alt-F, je peux avoir ces informations là :

/dev/sda2:
          Magic : a92b4efc
        Version : 0.90.00
           UUID : a112692c:cd4ddd32:b98be83a:b8b6c728
  Creation Time : Sun Feb  8 22:22:54 2009
     Raid Level : raid1
  Used Dev Size : 975585856 (930.39 GiB 999.00 GB)
     Array Size : 975585856 (930.39 GiB 999.00 GB)
   Raid Devices : 2
  Total Devices : 1
Preferred Minor : 0

    Update Time : Tue Mar  7 20:15:34 2017
          State : clean
 Active Devices : 1
Working Devices : 1
 Failed Devices : 1
  Spare Devices : 0
       Checksum : 67beb987 - correct
         Events : 12447483


      Number   Major   Minor   RaidDevice State
this     0       8        2        0      active sync   /dev/sda2

   0     0       8        2        0      active sync   /dev/sda2
   1     1       0        0        1      faulty removed
/dev/sdb2:
          Magic : a92b4efc
        Version : 0.90.00
           UUID : a112692c:cd4ddd32:b98be83a:b8b6c728
  Creation Time : Sun Feb  8 22:22:54 2009
     Raid Level : raid1
  Used Dev Size : 975585856 (930.39 GiB 999.00 GB)
     Array Size : 975585856 (930.39 GiB 999.00 GB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 0

    Update Time : Wed Feb 15 09:09:56 2017
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0
       Checksum : 67a3a500 - correct
         Events : 12444067


      Number   Major   Minor   RaidDevice State
this     1       8       18        1      active sync   /dev/sdb2

   0     0       8        2        0      active sync   /dev/sda2
   1     1       8       18        1      active sync   /dev/sdb2

Et donc, clairement, mon disque /dev/sda1 a un problème.

Du coup, j’essaye de l’enlever via Alt-F, encore une fois. Et c’est le drame :

Removing the sda2 partition from the md0 RAID device failed:

mdadm: hot remove failed for /dev/sda2: Device or resource busy

Damned ! Comment je fais, maintenant ?

Evidement, un coup d’oeil à ServerFault donne des réponses …comme celle-là, mais par prudence, je ne vais pas l’appliquer tout de suite …

Et je vais surtout (encore) acheter un nouveau disque de 1 To …

J’en profiterai évidement pour faire jouer la garantie, parce que le disque Toshiba n’a quand même qu’un an …

NAS en rémission

Dans les épisodes précédents

  1. J’ai à moitié perdu mon NAS
  2. J’ai encaissé le coup (et mon portefeuille aussi)

Et aujourd’hui, je reprends le chemin du succès.

Hier, par exemple, je suis allé chercher les deux disques dur de 1 To qui, à terme, vont venir remplacer les deux disques initiaux de 500 Go. Ils seront montés en RAID 1 quand je les aurai installé tous les deux.

Parce que pour l’instant, j’ai fait d’autres choses.

J’ai d’abord installé Alt-F. Pas pour son interface, mais parce qu’il supporte nativement Python, minidlna, et bien d’autres choses (même si je ne comprend pas complètement comment ça marche). Et je dois dire que, à ma grande surprise, le flash du firmware s’est passé sans le moindre souci.

Et aujourd’hui, j’ai installé le premier des deux disques, formaté avec juste une partition RAID de 999 Go (plus 1 Go pour le swap). Et j’ai commencé la longue opération de réparation RAID, qui va recopier toutes les données du « vieux » disque dans le nouveau (juste pour rire, j’ai 425 mn d’ETA, soit 7 heures d’attente). Et demain, quand cette opération sera terminée, j’enlèverai le vieux disque que je remplacerai parle deuxième nouveau disque, sur lequel je referai la même opération.

Et si tout se passe bien, j’aurai ce week-end un NAS complètement renouvelé … Et un disque dur SATA de 500 Go inutile. Et ce disque dur, à priori, avec un adaptateur SATA/USB 3, je pourrai peut-être tenter d’en récupérer les données.

Lost in NAS

Souvenez-vous, la semaine dernière, j’ai à moitié perdu mon NAS. Où est-ce que j’en suis aujourd’hui ?

NAS unijambiste

Aujourd’hui, mon NAS n’a plus qu’un seul disque dur, et je flippe. J’ai commandé deux disques durs 1 To pour augmenter sa capacité, mais en attendant qu’ils arrivent, j’ai la trouille. Cela dit, je sais déja que je ne jouerai pas l’économie, et que je les installerai en « vrai » RAID 1 sur tout l’espace disque. ca fait que mon NAS passera de 700 Mo utilisables avec une fiabilité faible à 1 To utilisable de façon plus fiable.

Oui, je sais, le RAID n’est pas un backup, mais en l’occurence, il remplit précisément l’usage pour lequel il est conçu : me permettre de vivre avec des moyens limités pendant un temps limité.

Pas de Raspberry alors ?

Effectivement. J’y avais pensé (ou plutôt à l’ODROID). Mais, quand on ajoute au prix de la machine celui des boîtiers USB3/SATA, ça finit par revenir plus cher qu’un NAS. Donc oui, pas de micromachine. En vérité, je commence à me forger l’opinion que ces machines « light » ne sont que très rarement utiles.

Et alors les sites web hébergés ?

J’en ai profité pour faire un peu de ménage : j’ai viré KrissFeed, Codiad, MiniGalNano (je n’utilisais pas les deux derniers), mais conservé rss-bridge et Shaarli. Bon, j’ai bien essayé de les faire tourner sur ma page perso free.fr, mais free n’en est encore qu’à PHP 5.1 … Du coup, je les ai réinstallé sur mon NAS.

Je dois dire que j’ai essayé de ne pas les réinstaller uniquement parce que je crains que ces outils n’aient provoqué la chute du disque en faisant tourner le disque dur en permanence. Mais comme je n’en suis pas du tout sûr … et que j’ai pris des disques avec 18 Mo de cache, j’espère éviter le même problème.

Plus de Krissfeed ?

Mouaip. J’étais assez insatisfait de l’application : je le trouvais lent, je trouvais pénible le besoin de me logger pour que les pages soient rechargées, et encore pire le fait que je sois trop rapidement déloggé. Donc je l’ai remplacé par … rss2imap (version Rui Carno).

Et ma vie a changé.

J’ai pendant longtemps été allergique aux clients RSS lourds (genre RSSOwl), et je ne savais pas pourquoi. Maintenant, je sais : ils réinventent en fait le client mail. Et avoir mes flux RSS bien classés dans des dossiers de mon Thunderbird ou de mon K9-Mail est en fait invraissemblablement chouette. Sauf peut-être pour les messages Twitter … mais c’est un cas particulier. Oh, j’ai bien sûr quelques flux qui foirent (typiquement les bridges RSS de Freenews et The Oatmeal), mais ça va se régler. Et bientôt, j’aurais les images, je le sais.

En bonus, comme c’est du Python et que, tel un Neo de bas étage (moi, citer Matrix, franchement), « je connais le Python« , j’ai déja pu hacker un petit truc.

L’immortalité dans le web

Au passage, Catherine Dufour avait raison de parler des fantômes du web : je lisais le code de rss2imap quand je suis tombé sur cet entête

2016-03-14 15_53_10-rss2imap_html2text.py at master · rcarmo_rss2imap

Aux martyrs, le web reconnaissant

Laissez-moi vous dire que ça fait bizarre pour un fan des flux RSS comme moi de tomber sur du code de l’auteur de la spec, tombé pour la lutte contre le paywall universitaire. Et vous voyez, ce type est peut-être mort, mais son code lui rend hommage. C’est beau.

Et maintenant ?

Oh, je vais sans doute passer à alt-f, le firmware alternatif. Il me permettra d’installer la commande at, qui me permettra à son tour d’exécuter rss2imap directement sur le NAS, ce qui sera un peu plus intelligent que de le faire tourner sur ma machine professionnelle (en y laissant donc la conf IMAP de mon compte)

J’ai bien failli lâcher krissfeed, vous savez …

En ce moment, chaque semaine, je ne sais ni pourquoi ni comment, le fichier data.php se corrompt assez facilement. Et du coup, krissfeed ne marche plus.

Du coup, ça m’a donné une excuse pour faire mon voyage traditionnel dans le monde des lecteurs RSS en ligne. En ligne, parce que je lis mes flux depuis mon portable de bureau, le portable de ma femme, mon ordinateur fixe, et même mon téléphone portable, enfin pas avec krissfeed, puisque les réglages sont partagés entre tous les appareils.

Bref …

J’ai donc jeté un oeil à quelques concurrents

  • commafeed a un look assez sympa, mais certains flux ne se mettaient jamais à jour
  • readerself a l’air chouette, sauf que le paquet de redirections empêche de l’utiliser avec lighttpd (sauf à connaître la syntaxe des redirections dans ce langage, ce qui n’est pas mon cas)

Et puis je suis revenu à krissfeed, qui est juste suffisant pour mon besoin …

Bref, une non-histoire 🙂

Ré-réinstaller fonz_fun_plug

Parce que j’ai rebooté mon NAS, et depuis, j’ai perdu

  • l’accès SSH
  • Lighttpd
  • minidlna

Heureusement, je peux toujours y accéder en « vrai » FTP et consulter le ffp.log qui me dit des choses aussi absconses que

* /ffp/start/uwcron.sh ...
wc: can't resolve symbol 'posix_fadvise64'

ou

* /ffp/start/sshd.sh ...

/ffp/bin/ssh-keygen: symbol '_res': can't resolve symbol

/ffp/bin/ssh-keygen: symbol '__stack_chk_guard': can't resolve symbol
tr: can't resolve symbol 'posix_fadvise64'
Starting /ffp/sbin/sshd 

/ffp/sbin/sshd: symbol '__stack_chk_guard': can't resolve symbol
* /ffp/start/rsyncd.sh inactive

Préferrant la brutalité à la subtilité, je vais donc réinstaller fonz_fun_plug 0.7. Heureusement que j’ai déja détaillé les étapes.

Donc allons-y …

(je démarre à 11H00)

Au passage, je lis dans mon article de référence

You may select to upgrade system package by packages from other repositories, but it may bring some system instability. Do it at your own risk …

Ouais, ben j’aurais dû le mettre dans une espèce de welocme message …

(et à 11H22, ffp est réinstallé, et je redémarre pour vérifier que les modifs fonctionnent – et oui, ça marche).

Par contre, dans la partie

Installer ensuite toutes les libs de minidlna, puis minidlna

Bêtement, je n’ai pas noté la liste des « libs de minidlna » … heureusement, une rapide recherche sur « kylek minidlna » me donne cette liste :

  • libjpeg-8c (system)
  • flac (kylek)
  • ogg (kylek)
  • vorbis (kylek)
  • libid3tag-0.15.1b (kylek)
  • sqlite-3.7.9 (system)
  • libexif-0.6.2 (system)

Et ça ira !

Avec ça, minidlna redémarre correctement.

J’ai en revanche un petit souçi avec lighttpd … mais je vais arranger ça rapidement …

Donc, si après le démarrage de lighttpd, je ne vois rien dans mon navigateur internet, je dois aller jeter un oeil dans /mnt/HD_b2/www/logs/error.log pour y trouver des erreurs comme par exemple

2015-01-10 18:36:22: (mod_fastcgi.c.1103) the fastcgi-backend /ffp/bin/php-cgi failed to start:
2015-01-10 18:36:22: (mod_fastcgi.c.1107) child exited with status 16 /ffp/bin/php-cgi
2015-01-10 18:36:22: (mod_fastcgi.c.1110) If you're trying to run your app as a FastCGI backend, make sure you're using the FastCGI-enabled version.
If this is PHP on Gentoo, add 'fastcgi' to the USE flags.
2015-01-10 18:36:22: (mod_fastcgi.c.1397) [ERROR]: spawning fcgi failed.

Et donc, je n’ai pas dû installer la bonne version de PHP …

Bon, en fait, c’est pas ça : quand je tape php -v, j’obtiens ça

php: can't load library 'libcurl.so.4'

Normal, puisque curl n’est pas installé.

Donc il faut installer curl avant de tenter d’utiliser du php !

J’ai donc maintenant un lighttpd+php qui marche à peu près (suffisament en tout cas pour jtartQage). En revanche, pour krissfeed ou Shaarli, j’ai toujours des erreurs

Fatal error: Call to undefined function gzinflate() in /mnt/HD_b2/www/pages/Shaarli/index.php on line 773

Qui sont liées, d’après internet à … des problèmes curieux de zlib (que j’ai pourtant installée).

Bon, en fait non, c’est juste parce qu’il ne faut pas oublier de copier le php.ini qui est sauvegardé sur GitHub !

Et alors elles en sont où ces photos ?

Hein ?

Parce que bon, c’est bien beau d’annoncer des scripts et des bidules et des machins pour trier les photos. Mais depuis que j’en parle, ça devrait être fini, non ? Eh bien non !

En fait j’ai rencontré sur cet ensemble de projets un certain nombres de … difficultés. En effet, mon dernier plan était,

  1. Tagger mes photos via iView Media Pro (et son descendant de chez Microsoft)
  2. Renommer les photos avec  XnView
  3. Et enfin créer à partir de ces images un ensemble de dossiers reprenant des éléments clés

J’avais réussi. J’avais même dans ma branche de MiniGalNano, un script (habilement nommé reload.php) qui créait des paquets de dossiers à partir des images de ma bibliothèque.

Hélas, c’est parti en sucette à cause d’une histoire débile : autant mon NAS, sur lequel tourne ce script, est lamentablement lent pour créer des vignettes de mes images (dont la résolution native est quelque chose du genre 3600×2400 pixels). J’ai même dû arrêter d’utiliser ce script tellement c’était pathétiquement lent.

Du coup, j’ai réfléchi. Réfléchi longtemps. En gros, j’avais l’outil pour héberger les fichiers, mais je n’avais pas la puissance de calcul … Ou alors, je l’avais peut-être … partiellement.

Vous savez peut-être que j’ai un iBook G4 qui traîne dans ma cave. Alors qu’est-ce qui m’empêche de mettre en place un démarrage planifié de cet iBook, pour qu’il fasse des vignettes de mes photos et les uploade ? Hein, qu’est-ce qui m’en empêche ? Rien d’autre que le temps que ça va prendre. Cela dit, ça risque d’aller vite :

  • Je peux utiliser fuse pour monter mon NAS en SFTP
  • Et je peux utiliser phatch pour faire le redimenssionement. (et comme c’est du Python, j’imagine sans problème que ça va marcher sur l’iBook).
  • Par contre, pour démarrer/arrêter automatiquement l’iBook, je ne sais pas trop comment faire … Et surtout comment faire pour que l’iBook s’arrête dès qu’il a fini de bosser.

Allez pouf un krissfeed

Je dois bien reconnaître que Selfoss présentait bien.

Je dois bien reconnaître que son côté Responsive flattait l’oeil.

Mais franchement, 45 minutes pour mettre à jour mes flux RSS, c’est un peu abusé.

Donc, je l’ai remplacé par un krissfeed, qui présente l’avantage d’avoir un bouton « partager sur mon shaarli ».

Et, pour peu que je mémorise les raccourcis clavier, j’ai bien l’impression que j’arriverai à m’en servir de façon efficace.

Bon, je sais pas encore si je dois remercier SebSauvage pour son commentaire, mais on verra.

Il y a toutefois un problème « classique » : comme mon NAS a son propre serveur web, mon lighttpd tourne sur le port 8080 et est redirigé à la sortie de mon réseau local vers le vrai port HTTP. Et, de temps en temps, certains s’oublient et ajoutent un numéro de port … ce qui fait que, évidement, je n’arrive jamais à accéder à la bonne page. Et ne croyez pas que je vais ouvrir un autre port dans ma freebox !

J’ai pas fini de pester contre la fin de GReader

Parce que bon, Selfoss est un bon lecteur de flux RSS.

Mais la mise à jour marche mal : j’ai régulièrement des blocages du process php qui fait la mise à jour.

Et comme je suis un bien piètre administrateur système Linux, je ne suis pas non plus sûr que le script shell que j’ai écrit pour éviter les exécutions parallèles fonctionne. Du coup j’ai désactivé le cronjob pour revenir à des mises à jour depuis un navigateur web. Je vais peut-être louper des articles de Lifehacker, par exemple … (vu le nombre d’articles qu’ils sortent). Mais au moins, je n’aurai plus à rebooter mon NAS à chaque fois qu’il y a un plantage dans la mise à jour des flux RSS.

Cela dit, si quelqu’un veut m’aider à améliorer le script, je suis preneur 😉