Pour des raisons comme le manque de place ou un changement de matériel, on peut être amené à changer le disque de son installation FreeBSD. J'ai survécu à la manœuvre, voici comment.

Tout d'abord, je refais de la pub pour l'excellent FreeBSD Cheat Sheets, et bien sûr le FreeBSD Handbook. Ces deux docs donnent à peu près toutes les bases pour le système.

Pour l'opération qui nous concerne, je me suis servi de Moving to a Larger Hard Drive de FreeBSD Cheat Sheets. Mais je me suis rendu compte que la "recette" n'est pas tout à fait complète. Je la reprends donc ici, traduite en français, et annotée d'après mon expérience (en italiques dans le texte).

Cet article décrit la méthode pour migrer votre système FreeBSD vers un autre disque dur. Cette procédure suppose que vous utilisez des disques ATA ou SATA (le cas des disques SCSI serait similaire toutefois), et que FreeBSD est le seul système sur le disque dur.

  1. Éteignez la machine et installez le nouveau disque dans l'ordinateur. Dans mon cas, j'ai plutôt installé l'ancien disque dans la nouvelle machine, car je changeais la machine, et le nouveau disque étant de connectique SATA, je n'aurais pas pu le connecter sur l'ancienne machine. J'ai donc compilé un noyau GENERIC (comment compiler un noyau chez FreeBSD Cheat Sheets et dans le Handbook) avant d'installer le disque dans la nouvelle machine. Installer le nouveau disque en maître sur le canal ATA secondaire vous donnera la plus grande bande passante pour le transfert de données, mais vous pouvez installer le nouveau disque en esclave sur le contrôleur ATA primaire. Assurez-vous de paramétrer les cavaliers sur le nouveau disque et le disque existant de façon adéquate. Ces conseils sont inutiles dans le cas des disques SATA, et les nouveaux disques et contrôleurs ne perdent plus tellement de performances lorsqu'ils sont connectés à la même chaîne ATA.

  2. Démarrez en mode single user. Si vous utilisez FreeBSD 5.x ou 6.x, choisissez l'option Boot FreeBSD in single user mode dans le menu de démarrage. Sinon, pendant le décompte du bootloader, appuyez sur une touche quelconque autre que la touche Entrée, et à l'invite de démarrage, entrez la commande :

    ok boot -s

    Acceptez le shell par défaut (/bin/sh), et à l'invite du shell, entrez les commandes suivantes :

    # fsck -p
    # mount -u /
    # mount -a -t ufs
    # swapon -a
    
  3. Lancez sysinstall :

    # /usr/sbin/sysinstall   (Sur FreeBSD 4.x, c'est /stand/sysinstall)
      1. Choisissez Configure, puis Fdisk sur le menu, et sélectionnez votre nouveau disque (pour les disques ATA, le nouveau disque sera ad1 si c'est l'esclave primaire, ou ad2 si c'est le maître secondaire ; pour un disque SATA sur le canal 4, ça sera ad8). Pour la suite de ce document, nous supposerons que le nouveau disque est ad2 (Dans mon cas, c'était en fait ad12).

      2. Dans FDISK Partition Editor, appuyez sur A pour utiliser le disque entier (attention au clavier, QWERTY par défaut, A c'est pour utiliser tout le disque, Q c'est pour quitter !). Appuyez sur W pour écrire les modifications sur disque, confirmez votre choix sur l'avertissement qui vous dit que ce que vous faites ne devrait être fait que sur un système déjà installé où vous ajoutez un disque. Appuyez sur Q pour continuer.

      3. À l'invite Install Boot Manager, choisissez le gestionnaire de démarrage approprié. Ce document suppose que FreeBSD est le seul système installé, donc choisissez le gestionnaire Standard.

      4. De retour au menu sysinstall, choisissez Label.

      5. Dans le Disklabel Editor, créez les partitions suivantes :

        ad2s1a   /mnt       512 Mo en UFS2
        ad2s1b   swap       4 Go en swap  (4x la RAM du système)
        ad2s1d   /mnt/var   8 Go en UFS2 + Softupdates
        ad2s1e   /mnt/tmp   4 Go en UFS2 + Softupdates
        ad2s1f   /mnt/usr   le reste en UFS2 + Softupdates
        

    Ce schéma suppose que votre système de fichiers existant est défini comme l'organisation par défaut de FreeBSD. Si votre schéma est différent, reproduisez-le. De plus, je liste ici les tailles de partitions por mon disque de 160 Go, agrandies par rapport aux valeurs par défaut en adéquation avec mes besoins, adaptez à votre situation.

    Le plus simple pour partitionner est de laisser faire Disklabel Editor. Appuyez sur A pour peupler le disque avec les partitions standard avec les tailles préconisées. Vous pourrez par la suite supprimer celles dont vous voulez changer la taille et les recréer avec vos paramètres.

    Notez que si vous supprimez la première partition (a), la partition que vous créerez aura le nom d au lieu de a (donc ad2s1d dans notre exemple), à moins que vous ne spécifiez que le point de montage est /. Changez ensuite le point de montage en /mnt en utilisant l'option M.

    Écrivez les changements sur le disque par W (confirmez), vous aurez probablement un message d'erreur sur l'impossibilité d'ajouter ad2s1b en partition de swap, mais c'est normal, vous en avez déjà une ! Vous pouvez donc ignorer le message. Appuyez sur Q pour continuer.

    1. Quittez sysinstall.

  4. Les nouvelles partitions devraient êtres montées sur /mnt. Sinon montez-les :

    # mount /dev/ad2s1a /mnt
    # mount /dev/ad2s1d /mnt/var
    # mount /dev/ad2s1f /mnt/usr
    

    /mnt/tmp n'est pas indispensable, ce sont des fichiers temporaires.

  5. Copiez les partitions existantes :

    # tar cf - --one-file-system -C / --exclude='mnt/*' . | tar xpvf - -C /mnt
    # tar cf - --one-file-system -C /var . | tar xpvf - -C /mnt/var
    # tar cf - --one-file-system -C /usr . | tar xpvf - -C /mnt/usr
    
  6. Éteignez la machine et enlevez l'ancien disque. Déplacez le nouveau disque à l'emplacement logique de l'ancien (même canal ATA, même position maître/esclave). Assurez-vous d'avoir replacé les cavaliers de manière adéquate. Si vous passez d'un disque ATA à un disque SATA, changez les entrées du fichier /boot/fstab pour refléter le changement du nom du disque.

    Avant :

     

    # Device                Mountpoint      FStype  Options         Dump    Pass#
    /dev/ad0s1b            none            swap    sw              0       0
    /dev/ad0s1a            /               ufs     rw              1       1
    /dev/ad0s1e            /tmp            ufs     rw              2       2
    /dev/ad0s1f            /usr            ufs     rw              2       2
    /dev/ad0s1d            /var            ufs     rw              2       2
    /dev/acd0               /cdrom          cd9660  ro,noauto       0       0
    

    Après :

     

    # Device                Mountpoint      FStype  Options         Dump    Pass#
    /dev/ad2s1b            none            swap    sw              0       0
    /dev/ad2s1a            /               ufs     rw              1       1
    /dev/ad2s1e            /tmp            ufs     rw              2       2
    /dev/ad2s1f            /usr            ufs     rw              2       2
    /dev/ad2s1d            /var            ufs     rw              2       2
    /dev/acd0               /cdrom          cd9660  ro,noauto       0       0
    

    Attention à ne pas changer la définition du CD-ROM.

  7. Démarrez en mode single user comme indiqué précedemment.

    À l'invite du shell, montez les partitions :

    # fsck -p
    # mount -u /
    # mount -a -t ufs
    # swapon -a
    
  8. Vérifiez que toutes les partitions sont correctement montées :

    # mount
    

    Vous devriez obtenir quelque chose comme :

    /dev/ad0s1a on / (ufs, local)
    devfs on /dev (devfs, local)
    /dev/ad0s1e on /tmp (ufs, local, soft-updates)
    /dev/ad0s1f on /usr (ufs, local, soft-updates)
    /dev/ad0s1d on /var (ufs, local, soft-updates)
    

    Dans le cas d'un disque SATA, le nom du disque devrait être différent et conforme à la modification du /etc/fstab.

  9. Redémarrez et lisez les messages du boot pour vous assurer que le système fonctionne correctement.


 Commentaires

très utile

 Posted by michel at 17/10/2008 09:30
hello chong-woo

me voici de retour au travail après une semaine de congés [(il me reste encore 169 heures "à prendre",
avant le 31 décembre) (c'est good, n'est-ce pas ?)]...
donc ton article tombe à propos parce que je vais devoir changer un de mes DD qui pose des problèmes et je me servirais de cet article...
***************************************
au fait, j'ai 2 maxtor et un western digital... mais, quand je démarre avec f8, comme je suis un peu tête en l'air, je peux installer un linux ou un bsd sur le disque réservé à xp et tout écraser...
donc, je voudrais connecter un DD d'une marque différente de maxtor et w.d. :
quelle marque me conseilles-tu ?

à toi

michel

Hou là !

 Posted by Paig Chong Woo at 17/10/2008 09:54
Les marques de disque dur, c'est proche de la guerre de religion ! :)

Perso, je n'aime pas Maxtor, parce que dans le temps ils faisaient des disques de merde, mais depuis qu'ils ont bouffé Quantum, ils sont meilleurs. Mais vu qu'ils ont bouffé ma marque de disque préférée, je n'achète pas de Maxtor. :)

Western Digital, c'est de bons disques en général. Mais pareil, dans le temps ils faisaient des disques un peu bof, donc j'ai pas suivi leurs évolutions, à part pour leur séries Raptor et Velociraptor, seuls disques SATA grand public à 10000 tpm (tout juste un brin moins rapide que les hélicos, en tous cas le bruit est le même :p).

Ensuite j'ai beaucoup acheté Seagate, d'abord pour le silence (incroyable à l'époque), ensuite pour leur garantie de 5 ans. Mais dernièrement, le silence n'était plus de leur côté, parce que les concurrents ont évolué, et qu'eux-mêmes ont lâché le créneau pour les performances pures. Maintenant ils reviennent sur le devant de la scène, avec leurs derniers modèles. Ils sont un léger plus chers que la moyenne, toutefois.

Après, il a eu Hitachi, qui après une mauvaise période avec beaucoup de disques défectueux, ont sorti une lignée de disques rapides et silencieux, et ils tenu bon. Ils sont de plus toujours parmi les premiers dans l'évolution, les premiers à utiliser l'enregistrement perpendiculaire, les premiers à sortir le To, etc, mais ça fait aussi que leurs produits sont obsolètes un peu plus vite, vu qu'ils utilisent des technologies pas forcément bien stabilisées. Mais c'est un choix toujours irréprochable de prendre Hitachi.

Enfin, mon nouveau coup de cœur, Samsung. D'abord parce que c'est de la fine manufacture coréenne ;), ensuite parce qu'à partir des séries T166, ils ont rattrapé et même parfois dépassé les performances des ténors du domaine. Et tout ça pour un prix inférieur ! Toutefois, un nombre significatif de personnes s'interrogent sur la fiabilité à long terme de ces disques. Moi j'utilise maintenant des Samsung dans toutes mes machines, pour leur rapport performances/prix imbattable.

Et je ne regarde pas les disques durs en dehors de ces marques. Je le disais au début, c'est une guerre de religion, il y a un peu de logique et de raison tout au fond, mais c'est englué dans des tonnes de mauvaise foi et d'affinités sélectives. ;)

Fais ton choix, choisis ton camp. ;)