Modifications entre les versions 1 et 12 (s'étendant sur 11 versions)
Version 1 à la date du 2015-03-12 22:24:50
Taille: 2333
Éditeur: MoussaNombre
Commentaire: Mise à jour
Version 12 à la date du 2015-06-01 16:40:11
Taille: 4466
Éditeur: AlexandreDomont
Commentaire:
Texte supprimé. Texte ajouté.
Ligne 1: Ligne 1:
<<TableOfContents()>>
Ligne 2: Ligne 4:

== Préparation de l'image de disque ==

 * création de la nouvelle image de VM (NB : `kvm-img` est obsolète) : {{{
# qemu-img create -f qcow2 /var/lib/libvirt/images/frontal.img 3G
Formatting '/var/lib/libvirt/images/frontal.img', fmt=qcow2 size=3221225472 encryption=off cluster_size=65536
}}}
 * monter l'image (il faut le module `ndb`) : {{{
# modprobe nbd max_part=8
# qemu-nbd -c /dev/nbd1 frontal.img
}}}
 * partitionner le disque (partition racine) et formater : {{{
# cfdisk /dev/nbd1
# mkfs.ext4 /dev/nbd1p1
}}}

== Copie des données du CT vers le disque image ==

 * monter la racine et y copier les données de notre CT : {{{
# mount /dev/nbd1p1 /mnt/
# rsync -avPHS --numeric-ids vz-www:/vz/root/109/ /mnt/
}}}

== Adaptation de la config de la VM ==

 * `chroot` dans le dossier copié : `chroot /mnt /bin/bash`
 * adapter/vérifier la config : `/etc/hosts`, `/etc/resolv.conf`, `/etc/network/interfaces`, passwd...
 * activer les tty (2 suffiront) en ajoutant dans `/etc/inittab` : {{{
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
}}}
 * configurer `/etc/fstab` : {{{
/dev/vda1 / ext4 errors=remount-ro 0 1
/dev/vda2 none swap sw 0 0
}}}

 * quitter le `chroot`, démonter le `/mnt`, puis détruire le `nbd` avec `qemu-nbd -d /dev/nbd1`

== Finalisation de la conversion (via VIRT-MANAGER) ==

 * sur le serveur hôte : copier le noyau et le initrd système : {{{
# cp /boot/vmlinuz-$(uname -r) /boot/initrd.img-$(uname -r) /var/lib/libvirt/images/
}}}

 * via virt-manager (sous Ubuntu) :
  * créer une nouvelle VM en utilisant l'image créée plus haut
  * réseau : associer la VM au bon bridge
  * une fois la VM créée, dans les "options de boot", dérouler l'option "démarrage direct sur le noyau" et renseigner les champs noyau, initrd (parcourir et sélectionner les fichiers précédemment copiés) et arguments du noyau (préciser le disque root) :
   {{attachment:Sélection_015.png}}
 * démarrer la VM, s'y connecter (via ssh ou sur la console virt-manager) et installer le noyau, grub2, etc. : {{{
# apt-get install linux-image-amd64 grub-pc
# apt-get install console-tools console-data acpid acpi-support-base
# aptitude reinstall udev
}}}
lire [[http://sysadmin.smile.fr/post/2013/02/20/Migrate-your-OpenVZ-containers-to-KVM|"Fourth step: start the Virtual Machine"]] pour les explications.
 * arrêter la VM, supprimer les options de "démarrage direct sur le noyau" (noyau, initrd et disque root)
 * démarrer la VM sur son propre noyau (démarrage normal)

== Finalisation de la conversion (sans VIRT-MANAGER) ==

'''Sur le Hôte : Lancement de la VM'''

 {{{
# kvm -m 512 -kernel /boot/vmlinuz-$(uname -r) -initrd /boot/initrd.img-$(uname -r) -append "root=/dev/vda1" -drive file=/var/lib/libvirt/images/proxy.img,if=virtio -net nic,model=virtio -net bridge,br=vmbr1 -vnc :20
}}}

  * -net bridge,br=vmbr1 (bridge) hôte
  * -k fr ne semble pas fonctionne...à revoir !
  * -vnc :20 port 20 ouvert pour vnc distant

'''Sur le client : connexion à la VM'''

 {{{
$ gvncviewer serveur-kvm:20
}}}

  * Attention le clavier est en qwerty !
 
 {{{
# apt-get install linux-image-amd64 grub-pc
}}}
 
 * Sur un '''squeeze''' :
  * Il demande la ligne de commande grub. J'ai mis `kopt=root=/dev/sda1 ro` (à confirmer).
  * Vérifier aussi eth qui est passé de eth0 à eth1

 {{{
# apt-get install console-tools console-data acpid acpi-support-base
# aptitude reinstall udev
}}}

 * Il peut être intéressant de mettre les sources '''non-free''' pour le matériel propriétaire.


'''Sur le Hôte : création de la VM'''

 {{{
# virt-install --import --disk path=/var/lib/libvirt/images/proxy.img --vcpus=2 --ram=1024 --name=proxy --hvm --vnc --network bridge:vmbr1
}}}

 * A tester '''virtio''' : virt-install --import --disk path=/var/lib/libvirt/images/proxy.img,format=qcow2,bus=virtio --vcpus=1 --ram=1024 --name=proxy --hvm --vnc --network bridge:vmbr1,model=virtio
Ligne 6: Ligne 110:
 * http://www.pither.com/simon/blog/2011/09/20/convert-an-openvz-vm-to-kvm (celle mise en œuvre ici)

== Premier essai ==
 * création de la nouvelle image de VM {{{
root@super-auforg:/var/lib/libvirt/images# qemu-img create -f qcow2 frontal.img 3G
Formatting 'frontal.img', fmt=qcow2 size=3221225472 encryption=off cluster_size=65536
root@super-auforg:/var/lib/libvirt/images#
}}}
'''NB''' : kvm-img est obsolète {{{
root@super-auforg:/var/lib/libvirt/images# kvm-img create -f qcow2 frontal.img 3G
W: /usr/bin/kvm-img: this binary is deprecated, use qemu-img instead
}}}

 * monter l'image {{{
root@super-auforg:/var/lib/libvirt/images# qemu-nbd -c /dev/nbd1 frontal.img
Failed to open /dev/nbd1: No such file or directoryroot@super-auforg:/var/lib/libvirt/images#
}}}
Il faut le module ndb {{{
root@super-auforg:/var/lib/libvirt/images# modprobe nbd max_part=8
root@super-auforg:/var/lib/libvirt/images# qemu-nbd -c /dev/nbd1 frontal.img
root@super-auforg:/var/lib/libvirt/images#
}}}
 * partitionner le disque {{{
root@super-auforg:/var/lib/libvirt/images# cfdisk /dev/nbd1
root@super-auforg:/var/lib/libvirt/images# mkfs.ext4 /dev/nbd1p2
}}}
un swap et une racine.
 * monter la racine et y copier les données de notre CT {{{
root@super-auforg:/var/lib/libvirt/images# mount /dev/nbd1p2 /mnt/
root@super-auforg:/var/lib/libvirt/images# rsync -avPHS --numeric-ids vz-www:/var/lib/vz/root/109/ /mnt/
}}}
 * chroot dans le dossier copie `chroot /mnt /bin/bash`
 * adapter/vérifier la config : hosts, interfaces, resolv.conf
 * activer les tty : ajouter dans `/etc/inittab` {{{
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6
}}}
 * configurer `/etc/fstab` {{{
# /
/dev/vda2 / ext4 errors=remount-ro 0 1
# swap
/dev/vda1 none swap sw 0 0
}}}
 * quitter le chroot, démonter le /mnt et détruire le ndb `qemu-nbd -d /dev/nbd1`
 * Start the VM using KVM command .....
 * http://www.pither.com/simon/blog/2011/09/20/convert-an-openvz-vm-to-kvm
 * http://blog.smile.fr/Cloud/Migrate-your-openvz-containers-to-kvm-openstack

KVMLibvirt/OpenvzToKVM

Préparation de l'image de disque

  • création de la nouvelle image de VM (NB : kvm-img est obsolète) :

    # qemu-img create -f qcow2 /var/lib/libvirt/images/frontal.img 3G
    Formatting '/var/lib/libvirt/images/frontal.img', fmt=qcow2 size=3221225472 encryption=off cluster_size=65536
  • monter l'image (il faut le module ndb) :

    # modprobe nbd max_part=8
    # qemu-nbd -c /dev/nbd1 frontal.img
  • partitionner le disque (partition racine) et formater :

    # cfdisk /dev/nbd1
    # mkfs.ext4 /dev/nbd1p1

Copie des données du CT vers le disque image

  • monter la racine et y copier les données de notre CT :

    # mount /dev/nbd1p1 /mnt/
    # rsync -avPHS --numeric-ids vz-www:/vz/root/109/ /mnt/

Adaptation de la config de la VM

  • chroot dans le dossier copié : chroot /mnt /bin/bash

  • adapter/vérifier la config : /etc/hosts, /etc/resolv.conf, /etc/network/interfaces, passwd...

  • activer les tty (2 suffiront) en ajoutant dans /etc/inittab :

    1:2345:respawn:/sbin/getty 38400 tty1
    2:23:respawn:/sbin/getty 38400 tty2
  • configurer /etc/fstab :

    /dev/vda1  /  ext4  errors=remount-ro  0  1
    /dev/vda2  none  swap  sw  0  0
  • quitter le chroot, démonter le /mnt, puis détruire le nbd avec qemu-nbd -d /dev/nbd1

Finalisation de la conversion (via VIRT-MANAGER)

  • sur le serveur hôte : copier le noyau et le initrd système :

    # cp /boot/vmlinuz-$(uname -r) /boot/initrd.img-$(uname -r) /var/lib/libvirt/images/
  • via virt-manager (sous Ubuntu) :
    • créer une nouvelle VM en utilisant l'image créée plus haut
    • réseau : associer la VM au bon bridge
    • une fois la VM créée, dans les "options de boot", dérouler l'option "démarrage direct sur le noyau" et renseigner les champs noyau, initrd (parcourir et sélectionner les fichiers précédemment copiés) et arguments du noyau (préciser le disque root) :
      • Sélection_015.png

  • démarrer la VM, s'y connecter (via ssh ou sur la console virt-manager) et installer le noyau, grub2, etc. :

    # apt-get install linux-image-amd64 grub-pc
    # apt-get install console-tools console-data acpid acpi-support-base
    # aptitude reinstall udev

lire "Fourth step: start the Virtual Machine" pour les explications.

  • arrêter la VM, supprimer les options de "démarrage direct sur le noyau" (noyau, initrd et disque root)
  • démarrer la VM sur son propre noyau (démarrage normal)

Finalisation de la conversion (sans VIRT-MANAGER)

Sur le Hôte : Lancement de la VM

  • # kvm -m 512 -kernel /boot/vmlinuz-$(uname -r) -initrd /boot/initrd.img-$(uname -r) -append "root=/dev/vda1" -drive file=/var/lib/libvirt/images/proxy.img,if=virtio -net nic,model=virtio -net bridge,br=vmbr1 -vnc :20
    • -net bridge,br=vmbr1 (bridge) hôte
    • -k fr ne semble pas fonctionne...à revoir !
    • -vnc :20 port 20 ouvert pour vnc distant

Sur le client : connexion à la VM

  • $ gvncviewer serveur-kvm:20
    • Attention le clavier est en qwerty !
    # apt-get install linux-image-amd64 grub-pc
  • Sur un squeeze :

    • Il demande la ligne de commande grub. J'ai mis kopt=root=/dev/sda1 ro (à confirmer).

    • Vérifier aussi eth qui est passé de eth0 à eth1
    # apt-get install console-tools console-data acpid acpi-support-base
    # aptitude reinstall udev
  • Il peut être intéressant de mettre les sources non-free pour le matériel propriétaire.

Sur le Hôte : création de la VM

  • # virt-install --import --disk path=/var/lib/libvirt/images/proxy.img --vcpus=2 --ram=1024 --name=proxy --hvm --vnc --network bridge:vmbr1 
  • A tester virtio : virt-install --import --disk path=/var/lib/libvirt/images/proxy.img,format=qcow2,bus=virtio --vcpus=1 --ram=1024 --name=proxy --hvm --vnc --network bridge:vmbr1,model=virtio

Documentation


KVMLibvirt/OpenvzToKVM (dernière édition le 2016-02-22 16:23:13 par JeanChristopheAndré)