Bienvenue sur mon Internet!

SysAdmin et NetAdmin sous GNU/Linux.
J'aime bidouiller, apprendre et partager mes connaissances.

Un raid 5 en situation critique!

Hello !

Depuis le début du mois d’Avril, je suis de retour sur Marseille et j’ai profité de changer la machine Syno qui me sert de NAS par une autre récupéré sur Nancy. Elle demande encore moins de puissance pour fonctionner notamment au niveau du processeur. Vu que je ne compte pas faire de virtualisation ou d’un quelconque usage poussé, je l’ai prise pour voir sur le long terme comment se comporte un processeur AMD. La machine est donc aujourd’hui composé d’un Sempron LE-1250 dont sa première année de production date de 2009. C’est un peu vieux mais il remplie bien son rôle avec son seul cœur cadencé à une fréquence de 2.2Ghz.

A propos du système, j’utilisais une version cracké de l’OS Synology appelé DSM 5.2. Mais finalement lors de la migration, je suis passé sous Debian 8 pour être libre de personnaliser mon système comme je l’entends. Sous DSM il y avait quelques soucis pour installer correctement des paquets. Par exemple, j’ai eu des soucis de versions pour installer les modules correspondant à la gestion de comptes mails. De plus, l’interface était longue à charger pour le peu que j’en faisais. Son point fort réside sur la compatibilité du raid 1 car je n’ai pas eu besoin de recréer le raid sur la nouvelle machine. Il m’a suffit de déplacer physiquement le raid d’une machine à une autre pour que ça marche. Au boot, mdadm l’a détecté automatiquement et rien de plus à faire. Entrons dans le vif du sujet

Tout se passe bien jusqu’a ce que je m’intéresse enfin (5 mois plus tard…) à ce mail :

This is an automatically generated mail message from mdadm
running on nas.bruno-tatu.com

A SparesMissing event had been detected on md device /dev/md5.

Faithfully yours, etc.

P.S. The /proc/mdstat file currently contains the following :

Personalities : [raid6] [raid5] [raid4]
md5 : active raid5 sda1[0] sdd1[4] sdc1[2] sdb1[1]
1171737600 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
bitmap : 0/3 pages [0KB], 65536KB chunk

unused devices :

Il me rappel que j’ai oublié d’ajouter un disque de rechange (spare) dans le raid. C’était mon 1er RAID5 dont la commande suivante avait été tapé :

# mdadm —create /dev/md5 —level=5 —raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1

Il aurait fallut que je rajoute l’argument suivant pour que la commande soit correcte :

# mdadm —create /dev/md5 —level=5 —raid-devices=3 /dev/sda1 /dev/sdb1 /dev/sdc1 —spare-devices=1 /dev/sdd1

Plus bas je parlerais de l’incidence qui m’a permis de découvrir mdamd plus intelligent que je le pensais. Ce n’est qu’au moment de la récupération de mes données que je me suis aperçu (d’après nmon) que le disque /dev/sdd1 était en fait pas du tout utilisé contrairement aux autres !

En d’autres termes, suite à la lecture de ce mail, j’ai provoqué une catastrophe majeure qui m’a permis d’acquérir des nouvelles petites notions telles que diagnostiquer l’état des disques avec les méta-données SMART, détecter si le système de fichier est corrompus ou pas, etc. Historique des évènements

Quelques minutes plus tard, j’ai trouvé plusieurs fois dans le fichier de log des daemons (/var/log/daemon.log) cet avertissement de la part de smartmontools :

Device : /dev/sdb [SAT], Failed SMART usage Attribute : 184 End-to-End_Error.

L’attribue 184 nommé “End-to-End_Error” est une fonctionnalité des disques de la marque HP. Elle signifie qu’il y a eu des échecs de transfères de données depuis la mémoire tampon vers le disque dur. Cette anomalie a pu être détecté grâce à la gestion de parité. Si le contenu n’est pas identique entre la source et la destination alors il y a un problème. D’après la page kb.acronis.com mon disque indiquait une défaillance imminente !

Naturellement je l’ai donc enlevé :

# mdadm —manage /dev/md5 —set-faulty /dev/sdb1
# mdadm —manage /dev/md5 —remove /dev/sdb1

Les messages en provenance du kernel (/var/log/message.log) témoignent bien mes actions :

Aug 13 18:53:25 nas kernel : [3364000.410213] md : unbind<sdb1>
Aug 13 18:53:25 nas kernel : [3364000.410233] md : export_rdev(sdb1)
Aug 13 19:04:37 nas kernel : [3364671.977243] md : requested-resync of RAID array md5
Aug 13 19:04:37 nas kernel : [3364671.977253] md : minimum _guaranteed_ speed : 1000 KB/sec/disk.
Aug 13 19:04:37 nas kernel : [3364671.977258] md : using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for requested-resync.
Aug 13 19:04:37 nas kernel : [3364671.977266] md : using 128k window, over a total of 390579200k.
Aug 13 19:04:37 nas kernel : [3364671.977281] md : md5 : requested-resync done

L’état du RAID me semblait propre alors une pierre deux coups, je me suis demandé pourquoi ne pas profiter de le redimensionner pour que mdadm comprennent qu’il doit nativement supporter 3 disques et non 4. Ça me permettra par la suite d’ajouter un autre disque en tant que spare.

Quelques minutes de recherches sur Internet m’ont permis de découvrir ce super tutoriel : Reducing the number of devices in a RAID-5.

J’ai donc vérifié la structure du système de fichier, compressé les données et le redimensionné du raid ainsi :

# e2fsck -f /dev/md5
# resize2fs -M -p /dev/md5
# mdadm /dev/md5 —grow —array-size=781158400
# mdadm /dev/md5 —grow —raid-devices=3 —backup-file=/tmp/backup

La suite de ces commandes ont retourné ceci dans le journal du kernel :

Aug 13 21:19:45 nas kernel : [3372780.356336] md5 : detected capacity change from 1199859302400 to 799906201600
Aug 13 21:20:58 nas kernel : [3372852.881333] fuse init (API version 7.23)
Aug 13 21:27:06 nas kernel : [3373220.633925] md : reshape of RAID array md5

Avec près de 350Go de données, j’ai laissé travailler mon serveur toute la nuit. Le lendemain, je découvre que la synchronisation ne s’était pas terminé correctement :

Capture d'écran de l'avancé du daemon mdadm

Non seulement il y avait eu un disque qui a lâché en cours de route, mais en plus elle s’est figée à 93,6% de sa progression !!

Du coup, je ne sais pas comment mdadm a géré les bits de parités vu qu’il en réalité deux disques sur les quatre qui ont réellement fonctionné. Néanmois, le disque sda a pu se reconnecter à la nappe entre temps et par moment il partait. Pas super… Bref, j’ai dû laisser tourner pendant une semaine le temps de trouver une solution.

Voici les messages retrouvés dans /var/log/message.log :

Aug 14 05:18:05 nas kernel : [3401479.603045] ata1.00 : configured for UDMA/33
Aug 14 05:18:05 nas kernel : [3401479.603087] sd 1:0:0:0 : [sda] Unhandled sense code
Aug 14 05:18:05 nas kernel : [3401479.603092] sd 1:0:0:0 : [sda]
Aug 14 05:18:05 nas kernel : [3401479.603095] Result : hostbyte=DID_OK driverbyte=DRIVER_SENSE
Aug 14 05:18:05 nas kernel : [3401479.603100] sd 1:0:0:0 : [sda]
Aug 14 05:18:05 nas kernel : [3401479.603103] Sense Key : Medium Error [current] [descriptor]
Aug 14 05:18:05 nas kernel : [3401479.603110] Descriptor sense data with sense descriptors (in hex) :
Aug 14 05:18:05 nas kernel : [3401479.603112] 72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00
Aug 14 05:18:05 nas kernel : [3401479.603127] 02 ef cc 15
Aug 14 05:18:05 nas kernel : [3401479.603134] sd 1:0:0:0 : [sda]
Aug 14 05:18:05 nas kernel : [3401479.603140] Add. Sense : Unrecovered read error - auto reallocate failed
Aug 14 05:18:05 nas kernel : [3401479.603145] sd 1:0:0:0 : [sda] CDB :
Aug 14 05:18:05 nas kernel : [3401479.603148] Read(10) : 28 00 02 ef cc 10 00 00 08 00
Aug 14 05:18:05 nas kernel : [3401479.603723] md/raid:md5 : read error not correctable (sector 49267728 on sda1).
Aug 14 05:18:05 nas kernel : [3401479.603775] ata1 : EH complete
Aug 14 05:34:45 nas kernel : [3402480.077104] md5_reshape D ffff88001b02d888 0 519 2 0x00000000
Aug 14 05:34:45 nas kernel : [3402480.077109] ffff88001b02d430 0000000000000046 0000000000012f40 ffff880000b07fd8
Aug 14 05:34:45 nas kernel : [3402480.077112] 0000000000012f40 ffff88001b02d430 ffff88001b67c810 ffff88001b67c800
Aug 14 05:34:45 nas kernel : [3402480.077115] ffff880000b07b70 ffff88001b67ca18 ffff88001b67c9a8 0000000001f27b10
Aug 14 05:34:45 nas kernel : [3402480.077118] Call Trace :
Aug 14 05:34:45 nas kernel : [3402480.077145] [<ffffffffa0185122>] ? get_active_stripe+0x1d2/0x720 [raid456]

Pour faire court, le kernel dit qu’il y a eu des problèmes de lecture sur le disque sda et que la commande md5_reshape n’a pas pu corriger les erreurs présentes sur les secteurs 49267728 et 49267736 de la partition sda1. Le kernel nous monte également la trace des appels systèmes nous permettant de comprendre explicitement ce qu’il s’est passé. On ne détaillera pas cette partie car on a cerné la plus grosse partie du problème.

Ainsi durant plusieurs soirées, je me suis amusé sur une machine virtuelle à reproduire le problème en simulant diverses pannes. Ça m’a permis de découvrir de nouveaux outils telles que :

  • dumpe2fs = il permet d’afficher les informations relatives au système de fichier utilisé
  • nmon (option d) = pour visualiser en temps réel les écritures et lecture des disques
  • ioping = affiche le temps de latence pour accéder aux disques
  • testdisk = Consulte les informations sur le disque. Il permet également de se déplacer dans les dossiers présents sur le disque si toutefois il y a un système de fichier.
  • smartctl -a = Utile pour visualiser les attribues du disque. On retrouve notamment le code smart 184 que j’ai expliqué plus haut.

Après de nombreuses tentatives théorique, je remarque sur le NAS le processus md5_raid5 qui ne voulait pas se stopper même avec des méthodes brutales (via le signale SIGKILL). Il était toujours actif et continue à utiliser toutes les ressources processeur…. Peu après, le 17 août, j’ai finalement eu le disque sda qui m’a lâché. J’ai donc décidé d’arrêter totalement la machine et le plus proprement possible malgré ces erreurs persistantes que l’on connaît déjà :

Aug 17 22:36:16 nas kernel : [3722971.314521] md/raid:md5 : read error not correctable (sector 262144 on sda1).
[... même erreur plusieurs fois ...]
Aug 17 22:36:16 nas kernel : [3722971.314552] md/raid:md5 : read error not correctable (sector 262216 on sda1).
Aug 17 23:28:59 nas kernel : [3726133.891191] md : md5 in immediate safe mode
Une histoire qui finit bien

Ce n’est que le 18 août soir (après le boulot) où j’ai simplement exécuté cette commande pour forcer l’assemblage du raid sans qu’il puisse reprendre sa tâche précédente (qui était de retailler le raid) :

# mdadm —assemble —force —freeze-reshape /dev/md5 /dev/sda1 /dev/sdc1 /dev/sdd1 —backup-file=/tmp/

Il me restait plus qu’à le remonter dans un point de montage :

# mount /dev/md5 /mnt

Par la suite, j’ai directement copié tout son contenu sur plusieurs machines (Je ne dispose pas assez d’espace de stockage pour toutes les déplacer à un seul endroit). J’ai pu tout récupérer car il était à 93% de son reshape ce qui m’a permis, à ce jour, de ne pas trouver de fichiers corrompus ou une perte de donnée.

Une fois cette étape terminée, le stress est retombé et je me suis posé des questions sur mes futurs besoins en terme d’espace de stockage. Sachant qu’il y a également ma famille qui compte l’utiliser pour divers usage. Je vais sans doute songer à repérer une nouvelle machine en partant sur du matériel neuf qui fera guise de cadeau pour Noël pour mes parents.

En conclusion, j’espère ne pas avoir dit de bêtise (merci de me le faire savoir dans le cas contraire). Beaucoup de nouveautés pour moi et je me rends compte que le succès de ce projet tenais qu’à un cheveu près… Faites donc attentions aux commandes que vous tapez lorsque vous utilisez le compte root !

@+ !

Un Week-end au FOSDEM (2017)

En ce début d’année je me suis rendu au FODEM (Free and Open Source software Developer’s European Meeting). C’est un évènement qui se déroule chaque année à Bruxelles dont l’entrée est gratuite pour assister aux nombreuses conférences et faire des rencontres entre développeurs de logiciels libres (et d’administrateurs systèmes également). Une influence qui grandie d’année en année où 2017, fût remarquable vu que nous étions proches d’un millier de visiteurs sur les deux jours !

Pour accueillir tout le monde, L’Uversité Libre de Bruxelles a libéré les bâtiments suivants :

Illustration d'un plan du fosdem

Pour s’y rendre c’est assez simple car il y a des moyens de transports juste à côté de l’entrée (représenté par la voiture en bas de la carte). Concernant les conférences, il y en avait plus d’une centaine réparties par thématique dans les bâtiments nommés : AW, H, J, U et K. Ces lettres ont été utilisées pour se retrouver rapidement à l’aide de leur programme qui était disponible sur place le jour J.

Il y avait tellement de monde que même 5 minutes avant les présentations, la plupart des salles étaient déjà pleines…

L’une des conférences que j’ai apprécié parlait d’Openstack avec LXD. Openstack est une solution orientée cloud où l’on automatise le déploiement d’infrastructure (IAAS). Les intervenants ont valorisé LXD car il permet une consommation en ressource système moindre tout en respectant les aspects de sécurités et vitesse de mise en place. Durant la démonstration, ils nous ont initiée à l’utilisation de LXD au lieu de KVM. De mon point de vue ce sont deux technologies différentes ; LXD étant pour la conteneurisation de services et KVM pour de la virtualisation d’un système complet. Il est donc logique que LXD soit plus rapide que KVM !

Le planning était très chargé mais j’ai fait quelques intermittents pour récupérer un max de stickers au bâtiment K ! On pouvait trouver des stands de développeurs de logiciels tels que Debian, Fédora, Xen, Tor, … Ainsi que des langages de développement comme Perl, Go, Ruby, Python… Il y avait également au même étage à quelques mètres de distance Owncloud et Nextcloud ! J’ai trouvé ça marrant de les voir car ils étaient chacun dans leur coin comme si de rien n’était.

Au début de cet article, j’ai dit qu’il y avait des adminsys au FOSDEM. Ce fût bien le cas avec une partie de l’équipe Evolix !

Photo de l'équipe Evolix au Fosdem en 2017

C’est d’ailleurs dans cette entreprise que je vais effectuer mon stage de 3 mois pour valider ma licence. Je souhaite ensuite continuer l’aventure avec eux.

Pour conclure cette belle expérience, j’espère que ce partage vous sera utile malgré que je dois admettre que la plupart des conférences n’étaient pas tip-top… Je ne pense pas revenir les années suivantes car certaines d’entre elles étaient préparées à la hâte et d’autres n’avaient pas de démonstrations. Du coup la raison qui me pousserait à y retourner, ça serais le plaisir de revoir les amis du Nord ! :)

Comment conserver son débit Internet avec son smartphone ?

Salut à toutes et à tous !

Pour ceux qui ne le savent pas encore, je suis sur Nancy depuis fin Juillet pour obtenir la licence ASRALL (Administration de Systèmes, Réseaux et Applications à base de Logiciels Libres). Malheureusement je suis confronté à une difficulté : j’ai que 50Go de données Internet par mois ! Par contre je suis en 4G avec une moyenne de 30Mbps montant et descendant, je n’ai donc pas de quoi me plaindre.

Mais nous savons bien que l’Homme veut toujours plus. Du coup lors de ma première semaine sur Nancy je voulais voir au bout de combien de temps je parviendrai à atteindre cette limite. Vu le débit je me suis permis de regarder des vidéos Youtube, consulter beaucoup de pages web et suivre en direct les informations sur BTFTV. En moins de 7 Jours j’ai utilisé ces 50Go de données…

Certes je pourrais prendre un abonnement Internet pour éviter de changer mes habitudes mais dans mon logement il me manque la boucle de raccordement (donc des frais supplémentaires pour la mettre en place) et d’après degrouptest.com je n’aurais que 2Mbps en descendant. Soit payer environ plus de 180€ l’année juste pour regarder des vidéos Youtube en 144p ? C’est peu. Tellement peu que j’ai testé ça dans un cas réel avec mon smartphone sous Android et mon PC portable sous Windows. J’ai eu besoin :

  • Installer l’application “Internet Speed Meter Lite” (optionnel).
  • Brider la connexion avec l’option “Utilisation de la bande passante” lors du partage de connexion via le WIFI.
  • Désactivation des mises à jours Windows (ça pompe facilement 300Mo dans le mois).
  • Installer l’application “FilterProxy”.
  • Utiliser le navigateur Brave qui bloque les Pubs et les scripts écrit en JS.

J’expliquerais plus bas en détails les configurations que j’ai apportées.

Donc pour le mois d’Août, je suis arrivé à la limite de mes données Internet en 26 jours. C’est pas mal et je vais m’y tenir vu que les mois prochains je serais en cours. Je devrais logiquement utiliser encore moins l’accès Internet.

Sérieusement se déplacer dans le Nord pour suivre une licence Informatique sans avoir de débit. C’est d’un certain point de vue ironique… Mais au contraire ! Je viens d’avoir mon BTS SIO avec l’option réseau alors la capture de trames Ethernet ne me pose pas de problème. Je découvre ainsi que Microsoft discute avec ses serveurs, un autre programme qui met à jour son indexation et un autre vérifie s’il n’y a pas de nouveau messages. Toutes ces requêtes qui ne me sont pas réellement utiles, je les bloque.

On commence par bloquer les mises à jour de Windows :

Tapez sur la touche windows (dessin du drapeau à gauche de la barre d’espace) + r puis entrez “services.msc”

Ouverture de la fenetre affichant les services

Une fenêtre s’ouvre et rechercher en bas de page le nom de ce service “Windows Update”. Entrez dans les propriétés via un clic droit et sélectionner l’option “Désactivé” du champ “Type de démarrage”. Vous obtenez ainsi ce résultat :

Ligne indiquant que le service est stoppé

Bien sûr cette méthode est à proscrire car elle représentera une potentielle faille de sécurité mais vu que l’on va utiliser un navigateur qui ne lance pas les scripts ni charge les pubs. Il n’y a plus grand chose à craindre.

On désactive les programmes qui ne sont pas nécessaires :

Liste des logiciels désactivés

Les étapes à suivre sont :

  1. Clic droit sur la barre des tâches
  2. Cliquer sur “Gestionnaire des tâches”
  3. Se rendre dans l’onglet “Démarrage”
  4. Sélectionner les programmes qui semble inutiles
  5. Puis applique les modifications

Petite info plutôt cool : plus vous désactivez de programmes, plus votre ordinateur démarrera vite.

On installe et configure le navigateur Brave :

Lancez-le et appliquez la configuration présenté ci-dessous en allant à cette url : about:preferences#shields

Preuve que les pubs sont désactivés

Si l’on utilise FaceBook ou Twitter par exemple, ces sites utilisent des scripts. Pour les activer, en haut à droite de la barre de recherche il y a un bouton d’interaction pour les activer sur le site en question :

Activation temporaire des scripts

On utilise l’application “Internet Speed Meter Lite” (optionnel) :

Cette application disponible sur le Play Store va juste servir de métrologie pour connaître l’utilisation de son débit Internet en temps réel.

Voici un exemple :

Statistique d'usage des données du mois

Donc avec 50 (data) /30 (nombre de jours dans le mois) = 1,6Go par Jour. Soit si je dépasse ce nombre alors c’est un abus. ça va, j’ai fais juste un abus le 6 septembre !

On utilise et configure l’application “FilterProxy” :

Disponible également sur le Play Store, elle être très utile pour bloquer les requêtes inutiles. Par exemple lorsque l’on demande la page “google.fr” (celle-ci est une requête), en réalité le site va charger des scripts, des polices d’écran, des images situé sur d’autres sites (donc des sous requêtes). Mais ces derniers ne se sont pas toujours nécessaires à notre navigation.

Je recommande grandement de rajouter au moins ces filtres :

*.google.com
*.facebook.com
*.twitter.com
*.google-analytics.com
*.googleapis.com

Voici pour ma part les filtres que j’utilises :

Liste des filtres utilisés

Pour que cette configuration soit prise en compte, il faut dire à notre PC d’utiliser ce proxy. Mais avant, il faut connaître son IP. Dès que la connexion par wifi est établie, comme tout à l’heure, tapez sur la touche windows + r puis entrez “cmd”

Lancez ensuite cette commande :

ipconfig | findstr Passerelle

Une suite de chiffres sera affiché (ex : 192.168.0.1). Elle correspond à l’adresse souhaitée. Conservez la dans un coin car on va l’utiliser juste après ouvert l’interface de “Propriétés de : Internet”.

Pour s’y rendre, Tapez encore sur la touche windows + r puis entrez “inetcpl.cpl”.

Preuve de la configuration du proxy sur la machine hôte

Les étapes à suivre sont :

  1. Aller dans l’onglet “Connexions”
  2. Cliquer sur le bouton “Paramètres réseau”
  3. Cocher les cases et renseigner l’adresse trouvé précédemment et le port 8000 (utilisé par défaut par l’application)

Et enfin valider cette configuration en cliquant sur OK.

On se bride la connexion :

Adieu les vidéos Youtube en HD et bienvenue aux vidéos 144p… Vous n’êtes pas obligé de vous brider autant que moi mais pour ma part max 200KBps (revient à 200Kilo-octets) me suffisent.

Preuve du bridage de la connexion depuis mon smartphone

Encore un truc cool : Savez-vous quel est le réel débit du modem 56K ? Mettez 7Ko vous allez voir !

On réalise ceci depuis les “paramètres” du smartphone puis dans “Plus” (dans le menu Sans fil et réseaux) puis “Partage de connexion” puis “Hotspot Wi-fi” et enfin dans “Utilisation de la bande passante”. (Cette procédure peut varier en fonction de la version d’Android. Perso j’ai la 5.1).

Pour terminer, si vous remarquez qu’a la prochaine connexion ça ne fonctionne plus, c’est que votre smartphone a changé d’IP. Dans ce cas, vous pouvez toujours tester l’application “StatisIp” qui semble fonctionner dans mon cas. Maintenant, j’ai plus qu’a croiser les doits pour avoir du rab’ au mois de Septembre !

Ceux qui sont arrivé à me lire jusqu’ici, merci et n’ésitez pas à me poser des questions. Je ferais de mon mieux pour y répondre. :)