OpenBSD : p2v
Classé dans : Serveur, Virtualisation, Astuces, OS, Planet-Libre | 3 commentaires | publié le 19 juin 2012

Voici une petite bidouille pour transférer un serveur OpenBSD physique vers une machine virtuelle (VMware dans mon cas, mais cela devrait fonctionner avec tous).

A moins de faire une mauvaise commande, il n'y a aucun risque pour le serveur car on ne modifie rien dessus.

Etape 1 : installation de la VM

Ici, rien de particulier. Récupérez une ISO d'OpenBSD et effectuez l'installation dans une machine virtuelle. Configurez le réseau afin d'avoir un accès SSH.

Etape 2 : lister l'essentiel sur le serveur physique

Si je liste ce que contient mon serveur, voilà ce que j'obtiens :

$ ls /
altroot boot    bsd.mp  dev     home    obsd    sbin    sys     usr
bin     bsd     bsd.rd  etc     mnt     root    stand   tmp     var

Mon serveur fait tourner OpenSMTPD dont la config se trouve dans /etc et les messages dans /home. Vient ensuite dovecot installé à partir des ports, ses fichiers se situent dans /usr (et la config dans /etc). Et pour finir, prosody qui vient lui aussi des ports et exploite une base de données située dans /var. La liste des répertoires à transférer est donc :

  • /etc
  • /home
  • /usr
  • /var

Etape 3 : sauvegarde des répertoires

On utilise un bon vieux tar (vous pouvez utiliser la compression en rajoutant l'argument z) :

# tar -pcvf etc.tar /etc/
# tar -pcvf home.tar /home/
# tar -pcvf usr.tar /usr/
# tar -pcvf var.tar /var/

Attention à ne pas travailler dans le répertoire /home lorsque vous faites la deuxième commande ! Sinon cela ne terminera jamais (il va archiver le fichier d'archive nouvellement créé, etc).

Etape 4 : transfert des archives sur la VM

Le plus simple est d'utiliser le protocole sftp (actif du moment que sshd est actif sur vos systèmes). Cela peut-être fait depuis Filezilla sur une tierce machine (avec les comptes root).

Etape 5 : Rétablissement des utilisateurs

Pour des raisons de sécurité, le fichier contenant les utilisateurs du système et leurs mots de passe est en lecture seule, même pour root (voir cette page). Vous devez utiliser l'outil vipw pour les importer.

Ouvrez vipw sur l'ordinateur hôte, copiez toutes les lignes situées après la ligne "nobody", et collez-là à la suite dans le vipw de la VM (vous pouvez faire cette opération depuis un ordinateur tiers et des connexions SSH).

Etape 6 : installation sur la VM

La procédure est classique, sauf qu'il faut penser à sauvegarder le fichier fstab car le partitionnement peut différer :

# tar -pxvf var.tar -C /
# tar -pxvf usr.tar -C /
# tar -pxvf home.tar -C /
# cp /etc/fstab /root/
# tar -pxvf etc.tar -C /
# cp /root/fstab /etc/
# reboot

Pensez à revoir la configuration du rc.conf, notamment le nom d'hôte et le réseau qui peuvent différer.

3 commentaires

Nono 20/06/2012 @ 16:50 #1

Salut,

ce n'est ABSOLUMENT pas contre toi, et excuse moi l'expression, mais je trouve cette méthode dégueulasse ...
Est-ce qu'il n'y a pas mieux ? ou plus "propre" ?

Perdre du temps à tarer l'ensemble, alors qu'un rsync (ou un scp) pourrait le faire ?

Je me trompe peut-être (je ne suis pas familier avec bsd), donc je cherche à comprendre, plus qu'à faire un critique (qui ne me semble pas gratuite).

Xavier 20/06/2012 @ 23:45 #2

Impropre, oui et non, car les procédures de mise à jour d'OpenBSD se déroulent comme ça, tu télécharge des tgz et tu les décompresse là où il faut. Comme autre méthode, si tu peux arrêter le serveur, il y a possibilité d'utiliser la commande dd pour créer une image du disque dur et l'importer dans la machine virtuelle. J'ai aussi vu des méthodes avec netcat (ce qui revient à faire un dd par le réseau).

Nono 21/06/2012 @ 08:40 #3

OK !

Merci de ta réponse.

Ajouter un commentaire










Quelle est la première lettre du mot uikw ? :