FreeBSD : la saga continue - de 8.2 à 8.3
=========================================

Date: 2012-07-04 19:27
Author: jdn06
Category: Distributions
Tags: FreeBSD, ZFS

Vous vous souvenez peut-être de mes déboires lors de la dernière mise
à  jour de  FreeBSD.  J’ai  réussi à  faire  encore  plus fort  cette
fois-ci… Pourtant, tout avait bien  commencé. J’avais tenu mes bonnes
résolutions  d’alors et  avais  répété la  manœuvre  sur une  machine
virtuelle.  Cette machine  ne servait  pas d’ailleurs  qu’à répéter :
grâce au système des jails – dont je ne dirais jamais assez de bien –
il s’agissait de transférer tous les services en ligne sur la machine
virtuelle pendant que je mettais à  jour le serveur en dur. Comme ça,
même en  cas de pépin, pas  d’interruption de service et  donc pas de
coup de stress. Eh bien, j’ai rudement bien fait de procéder ainsi.

Comme je suis joueur, je décide de réutiliser freebsd-update et lance
la procédure sur ma machine virtuelle :

- Copier le /etc et vérifier la copie (ne pas faire deux fois la même
bêtise…)
- Remettre un noyau générique dans /boot/GENERIC
- Lancer un petit nextboot -k GENERIC et redémarrer
- freebsd-update -r 8.3-RELEASE upgrade
- La machine répond par _Preparing to download files… done.- Fetching
27286 patches_ - Prévoir donc un bon moment

- Puis se lance le merge  des fichiers de config : _21 files changed,
119  insertions(+),  117   deletions(-)_  L’instrument  est  toujours
aussi  mal  fait, surtout  en  comparaison  de mergemaster  que  j’ai
appris  à  utiliser entre  temps.  Pourquoi  n’est-il pas  intégré  à
freebsd-update ?  Cela me  dépasse… et  donne très  envie de  ne plus
mettre à jour que par les sources ; mais je m’obstine.

- freebsd-update install

- nextboot -k GENERIC à nouveau puis reboot

- freebsd-update install

-  Ensuite, je  mets à  jour  les ports  puis je  recompile tous  les
logiciels tiers avec portmaster -afd

- nextboot -k GENERIC à nouveau puis reboot

- Je recompile ensuite mon noyau  perso allégé et qui intègre ALTQ et
redémarre

- J’arrête les  jails et lance un ezjail-admin  update -s 8.3-RELEASE
-u

- Ensuite  il ne reste plus  qu’à effectuer un mergemaster  de chaque
jail :

   mount_nullfs /usr/src /usr/jails/jail1/mnt #Depuis l’extérieur de
   la jail
   echo "IGNORE_FILES='/boot/device.hints /etc/motd /etc/hosts'" >\
   /etc/mergemaster.rc #Depuis l’intérieur de la jail
   mergemaster -iFU -m /mnt

- et une recompilation des logiciels tiers avec portmaster -afd après
un ezjail-admin update -P

L’ensemble est  assez long, mais  se déroule parfaitement.  Je prends
note du détail de la procédure,  transfère le routage vers le serveur
virtuel et me  lance dans la mise à jour  du véritable serveur. Comme
j’ai pu  mesurer la  longueur du  téléchargement et  de l’application
des  patches,  je  le  laisse  tourner  la  nuit  suivante  pour  s’y
employer. Au  matin, je  retrouve la  machine méchamment  plantée. Au
redémarrage le fsck de la partition qui contient /var bloque. Il faut
dire  que la  partition  est  pleine à  109%.  J’ai  oublié de  vider
/var/db/freebsd-update/files  et les  patches téléchargés  ont rempli
la  partition  à  bloc.  Lorsque j’essaie  de  libérer  de  l’espace,
l’opération plante, comme si  l’écriture des métadonnées n’était plus
possible tant  le disque  était plein. Je  redémarre en  single user,
puis même  avec la  clé USB  d’installation pour  un fixit.  Rien n’y
fait : je descends à 105%, mais  le disque finit toujours par planter
et le fsck qui suit réécrit dans lost+found les fichiers effacés.

Je suis assez agacé, et cette fois, le problème paraît paradoxalement
plus compliqué à  régler que la dernière fois :  je pourrais formater
la partition et  la réinstaller depuis une sauvegarde,  mais je finis
par me  dire que c’est  peut-être le  bon moment pour  réinstaller le
système  et régler  les problèmes  d’alignement que  j’avais sur  les
systèmes de fichiers présents sur des supports SSD et faire passer ma
partition /var de 6 Go à 12 Go.

La  mise à  jour se  transforme donc  en installation  de 8.3.  Comme
je  veux  utiliser des  partitions  gpt,  je  renonce à  utiliser  le
traditionnel sysinstall et me lance  dans une installation à la main,
qui rappelle beaucoup OpenBSD, en suivant un tutoriel.

L’installation se déroule très bien  et je peux utiliser mergemaster,
pour mettre  à jour  mes anciens fichiers  de configuration.  Mais le
disque dur USB sur lequel se trouvent mes jails n’est plus reconnu au
démarrage, pour une raison  qui je crois m’échappera définitivement :
si je le débranche et le  rebranche, alors tout rentre dans l’ordre :
pas  très pratique  pour un  serveur, même  si les  redémarrages sont
rares !

Je  vais donc  pousser plus  loin l’expérimentation  et remplacer  ce
disque dur  par deux autres  installés en miroir : en  effet, j’avais
connu un  vilain crash en janvier  et ce disque dur  alimenté par USB
reste le  point faible  de mon  serveur. Quant  à faire,  puisque mes
services  sont  toujours  sur  machine virtuelle,  passons  donc  ces
disques dédiés aux  jails en ZFS et testons la  fiabilité : ce serait
quand même sympathique d’utiliser ça sur  mon vieux eeePC 900 32 bits
avec 1Go de  ram. En prenant quelques  précautions, l’ensemble semble
tout à fait opérationnel. En lançant plusieurs grosses copies en même
temps,  le  serveur semble  tenir  la  charge.  Après 2  semaines  en
utilisation  réelle, je  n’ai pas  constaté de  problème. Et  le gain
d’administration dépasse encore mes attentes. Mais laissons cela pour
un prochain article.

Mes conclusions restent à peu près inchangées depuis la dernière mise
à jour :

- Éviter freebsd-update upgrade
- Répéter l’opération en virtuel
- Disposer de pas mal de temps devant soi