Les disques durs SSD c’est fragile

0 Flares 0 Flares ×

Après seulement 1 an d’utilisation, mon disque SSD à vraiment commencé à merdoyer. Il avait pleins de secteurs illisibles et mon système était vraiment pas stable. Je ne pouvais plus passer en root car le clavier tapait des touches tout seul comme un grand, ..

Les puces mémoires SSD ont un certains nombre de cycles de lecture et d’écriture, après quoi a marche pu ! Je pense que c’est la cause de mon problème.
Je me suis donc empresser de faire un backup du système avant qu’il ne soit trop tard, car bien sur c’est arrivé à un moment ou j’avais pleins de choses à faire (c’est souvent comme ça). J’utilise Deja Dup pour mes sauvegardes du /home mais je n’en avait pas de mon système.

J’ai quand même tenté une vérification de disque avec fsck mais aucune erreur détectée.
Pour lancer une vérification au démarrage du système :

sudo shutdown -rF now

ou mettre un fichier nommé forcefsck à la racine.

Clonage du disque

En consultant, dmesg il y avait énormément d’erreurs d’accès au disque, donc je me suis décidé à tout réinstaller.

Tout d’abord j’ai acheté un nouveau disque SSD. j’ai hésité mais c’est quand même extrêmement rapide et il a des solutions pour optimiser la durée de vie des SSD. J’ai pris un samsung 120 GO, la même taille que le précédent.

J’ai d’abord tenté de faire une image clonezilla du disque, puis des partitions, de disques à disques, de disque/partition à image, … mais ça plantait lamentablement à chaque fois. Il aurait été plus judicieux de faire des sauvegardes régulières avec un disque sain. Oui mais bon… on a jamais le temps.

J’ai ensuite démarré sur une clé USB avec Ubuntu 12.04. Là j’ai utilisé la commande dd qui est très puissante. j’ai essayé de copier l’ensemble de l’ancien disque (/dev/sdd) sur le nouveau (/dev/sdb) :

dd if=/dev/sdd of=/dev/sdb conv=notrunc,noerror

Malheureusement ça n’a pas fonctionné à cause des erreurs sur le premier disque (je pense). C’est arrivé au bout, en 3 h mais le nouveau disque n’était pas identique.

Donc nouvel essai, en recréant les mêmes partitions sur le nouveau disque, trois partitions : / en ext4 de 30 Go, un swap de 2 Go, et /home en ext4 de 80Go. J’ai utilisé GParted pour ça.

Ensuite, nouveau test avec dd :

dd if=/dev/sdd1 of=/dev/sdb1 bs=4096 conv=notrunc,noerror
dd if=/dev/sdd3 of=/dev/sdb3 bs=4096 conv=notrunc,noerror

avec le paramètre bs=4096 c’est nettement plus rapide.

Encore des erreurs, encore raté. J’aurai peut-être dû utiliser conv=noerror,sync mais je n’ai vu cette option que plus tard.

Nouvel essai, cette fois en utilisant une fonction plus haut niveau. J’ai recréé les partitions pour que ça soit bien propre. j’ai monté les partitions puis un simple cp :

sudo cp -a /mnt/sdd1/* /mnt/sdb1
sudo cp -a /mnt/sdd3/* /mnt/sdb3

Bon, ça dure un petit moment quand même. Mais malgré quelques erreurs lors de la copie, ça semble s’être passé comme il faut. j’avais un peu peur au niveau de certains répertoires comme /proc, /run, … mais c’est passé.

Réinstallation de Grub

J’ai fait ça toujours sous Ubuntu Live, grâce à des doc du site ubuntu-fr. Ce site est vraiment top, on trouve vraiment beaucoup d’infos.

Mon disque système contenant le /boot était monté en /mnt/sdb1 :

sudo mount /dev/sdb1 /mnt/sdb1
cd /mnt/sdb1
sudo mount --bind /dev dev
sudo mount --bind /sys sys
sudo mount --bind /proc proc
sudo chroot .
sudo update-grub
sudo grub-install /dev/sdb
exit
sudo umount proc
sudo umount dev
sudo umount sys
cd ..
sudo umount /dev/sdb1

Modification de /etc/fstab

Ensuite j’ai dû mettre à jour mon fichier /etc/fstab car les UUID n’était plus bon.

pour voir les UUID des partitions il faut faire :

sudo blkid

ce qui donne quelque chose comme ça :

/dev/sda1: LABEL="TRANSCEND" UUID="fb0a8d3c-849f-4726-ba38-83945c9bc799" TYPE="ext4" 
/dev/sdb1: UUID="f217927f-17ad-4506-a981-f2adc5b17ee4" TYPE="ext4" 
/dev/sdb2: UUID="fa42ebb5-711f-49d4-8d72-063e06f99bf3" TYPE="swap" 
/dev/sdb3: UUID="c2319b26-b159-4ebf-abf1-1d6d3c0a0842" TYPE="ext4"

on a plus qu’a réaffecter les bons UUID dans /etc/fstab

Maintenant, on croise les doigts, et on redémarre.

Et là magie, ça reboot, et tout est là. Je verrais peut-être plus tard certains trucs qui bug mais pour l’instant c’est tout bon.

Optimisations

Pour que mon disque tienne un peu plus longtemps, j’ai essayé quelques optimisations proposées sur cette page : http://doc.ubuntu-fr.org/ssd_solid_state_drive (parties 4 et 5)

Mes optimisations :

  • ajout de l’option noatime au options de montages de / et /home. Ça permet de ne pas enregistrer la date de dernier accès d’un fichier.
  • J’ai placé les fichiers temporaires (/tmp) en mémoire vive
  • le dossier .cache de mon dossier utilisateur aussi. c’est effacé à chaque démarrage, mais comme les disques SSD sont très rapides.
  • la cache de Firefox en mémoire également. En fait, j’ai configuré Firefox pour qu’il enregistre son cache dans /tmp. Une conséquence, c’est que Firefox est beaucoup plus rapide maintenant. Il faudrait faire la même chose pour tous les logiciels utilisés régulièrement.
  • j’ai déplacé certains dossier de cache assez gros sur un 2éme disque (pas SSD, qui me sert maintenant pour les sauvegardes), par exemple spotify.
  • j’ai modifié une option pour que le swap disque ne soit utilisé que lorsque qu’il n’y a plus du tout de RAM.
  • j’ai désactivé certains services comme nginx, php-fpm, mysql, mongo (en modifiant les fichiers de config upstart ou init.d) … je les lance maintenant à la main (via des scripts) quand j’en ai besoin. D’ailleurs je n’ai pas trouvé de bon soft pour gérer les services sur Ubuntu (Elementary). C’est fou quand même qu’il n’y ai pas un truc intégré au système.
  • je ne laisse plus allumé mon PC même pour 15 min. Je met en veille directement. Ou si c’est plus long j’éteins.

Voila je pense qu’il y a d’autres possibilités mais c’est déjà pas mal.

Bon maintenant, je vais me mettre des alertes pour faire des images clonezilla du disque système. C’est rapide à faire et la restauration, en cas de gros problèmes, a quand même plus de chance de fonctionner.

0 Flares Twitter 0 Facebook 0 Google+ 0 Buffer 0 0 Flares ×

« »