Modifications entre les versions 13 et 14
Version 13 à la date du 2015-06-01 16:40:39
Taille: 4466
Éditeur: AlexandreDomont
Commentaire:
Version 14 à la date du 2015-06-01 22:51:30
Taille: 5311
Commentaire: révision complète, validation en cours…
Texte supprimé. Texte ajouté.
Ligne 8: Ligne 8:
# 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
# qemu-img create -f qcow2 /var/lib/libvirt/images/exemple.img 3G
Formatting 'exemple.img', fmt=qcow2 size=3221225472 encryption=off cluster_size=65536
Ligne 13: Ligne 13:
# qemu-nbd -c /dev/nbd1 frontal.img # qemu-nbd -c /dev/nbd1 /var/lib/libvirt/images/exemple.img
Ligne 15: Ligne 15:
 * partitionner le disque (partition racine) et formater : {{{
# cfdisk /dev/nbd1
# mkfs.ext4 /dev/nbd1p1
 * partitionner le disque (swap et racine) et formater : {{{
# echo -e '2048,,8E,*' | sfdisk -q -f -uS /dev/nbd1 # partition unique de type LVM
# pvcreate /dev/nbd1p1
# vgcreate exemple /dev/nbd1p1
# lvcreate -L 1G -n swap exemple
# lvcreate -l 100%FREE -n root exemple
# mkswap -f /dev/exemple/swap
# mkfs -t ext4 /dev/exemple/root
Ligne 23: Ligne 28:
# mount /dev/nbd1p1 /mnt/
# rsync -avPHS --numeric-ids vz-www:/vz/root/109/ /mnt/
# mount /dev/exemple/root /mnt/
# rsync -avPHS --numeric-ids --exclude lost+found vz-www:/vz/root/109/ /mnt/
Ligne 26: Ligne 31:
 . (!) pour un test on peut utiliser `debootstrap jessie /mnt/`
Ligne 29: Ligne 35:
 * `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` : {{{
 * `chroot` dans le dossier copié : {{{
# chroot /mnt
# su -
}}}
 * adapter/vérifier la config qui change d'une VM à l'autre : `/etc/hosts`, `/etc/resolv.conf`, `/etc/network/interfaces`, …
 * supprimer les éventuelles associations de noms d'interfaces réseau : {{{
# rm -f /etc/udev/rules.d/70-persistent-net.rules
}}}
 * configurer `/etc/fstab` : {{{
/dev/mapper/root / ext4 errors=remount-ro 0 1
/dev/mapper/swap none swap sw 0 0
}}}
 * installer LVM, la gestion ACPI et la gestion des claviers exotiques (= non-US) : {{{
mount -t proc proc /proc
aptitude install lvm2 acpid acpi-support-base console-tools console-data
service acpid stop
umount /proc
}}}
 * activer les tty (2 pour VNC, 1 pour virsh console) en ajoutant dans `/etc/inittab` : {{{
Ligne 34: Ligne 56:
# pour utiliser virsh console
T0:23:respawn:/sbin/getty -L ttyS0 115200 vt102
Ligne 35: Ligne 59:
 * configurer `/etc/fstab` : {{{
/dev/vda1 / ext4 errors=remount-ro 0 1
/dev/vda2 none swap sw 0 0
 * s'assurer un accès root d'une façon ou d'une autre (assigner un mdp à root ou créer un compte sudo et le tester) afin de pouvoir utiliser `virsh console` ensuite

 * terminer : {{{
exit # sortir du su -
exit # sortir du chroot
umount /mnt # démonter la racine
vgchange -a n exemple # désactiver le VG exemple
qemu-nbd -d /dev/nbd1 # déconnecter le disque virtuel
Ligne 40: Ligne 69:
 * quitter le `chroot`, démonter le `/mnt`, puis détruire le `nbd` avec `qemu-nbd -d /dev/nbd1` == Finalisation de la conversion (sans virt-manager) ==
Ligne 42: Ligne 71:
== Finalisation de la conversion (via VIRT-MANAGER) ==  * lancement de la VM (sur l'hôte) : {{{
# kvm -m 512 -kernel /boot/vmlinuz-$(uname -r) -initrd /boot/initrd.img-$(uname -r) -append "root=/dev/exemple/root" -drive file=/var/lib/libvirt/images/exemple.img,if=virtio -net nic,model=virtio -net bridge,br=vmbr0 -nographic
}}}
  * vmbr0 est le bridge sur lequel se connecter dans l'hôte
  * -nographic renvoie l'entrée et l'affichage vers le port série

 * connexion à la VM (depuis l'hôte) : {{{
# virsh console exemple
}}}
  * installer le noyau et ce qu'il faut pour démarrer : {{{
# apt-get install linux-image-amd64 grub-pc
}}}
   * laisser vide pour la ligne de commande (auto-détection des options noyaux)
   * répondre `quiet console=tty0` pour la ligne de commande par défaut
   * cocher `/dev/vda` pour l'endroit où installer `grub-pc`
  * forcer une réinstallation de `udev` (pour les cas où il était déjà là) : {{{
# aptitude reinstall udev
}}}
  * éteindre la VM : {{{
# poweroff
}}}

 * création définitive de la VM : {{{
# virt-install --name=exemple --import --disk path=/var/lib/libvirt/images/exemple.img,format=qcow2,bus=virtio --vcpus=1 --ram=512 --hvm --network bridge:vmbr0,model=virtio --vnc
}}}

== Finalisation de la conversion (via virt-manager) ==
Ligne 45: Ligne 100:
# cp /boot/vmlinuz-$(uname -r) /boot/initrd.img-$(uname -r) /var/lib/libvirt/images/ # cp -a /boot/{vmlinuz,initrd.img}-$(uname -r) /var/lib/libvirt/images/
Ligne 54: Ligne 109:
# apt-get install linux-image-amd64 grub-pc
# apt-get install console-tools console-data acpid acpi-support-base
# aptitude install linux-image-amd64 grub-pc
Ligne 58: Ligne 112:
lire [[http://sysadmin.smile.fr/post/2013/02/20/Migrate-your-OpenVZ-containers-to-KVM|"Fourth step: start the Virtual Machine"]] pour les explications. lire [[http://blog.smile.fr/Cloud/Migrate-your-openvz-containers-to-kvm-openstack|"Fourth step: start the Virtual Machine"]] pour les explications.
Ligne 61: Ligne 115:

== 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/vda1 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

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/exemple.img 3G
    Formatting 'exemple.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 /var/lib/libvirt/images/exemple.img
  • partitionner le disque (swap et racine) et formater :

    # echo -e '2048,,8E,*' | sfdisk -q -f -uS /dev/nbd1 # partition unique de type LVM
    # pvcreate /dev/nbd1p1
    # vgcreate exemple /dev/nbd1p1
    # lvcreate -L 1G -n swap exemple
    # lvcreate -l 100%FREE -n root exemple
    # mkswap -f /dev/exemple/swap
    # mkfs -t ext4 /dev/exemple/root

Copie des données du CT vers le disque image

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

    # mount /dev/exemple/root /mnt/
    # rsync -avPHS --numeric-ids --exclude lost+found vz-www:/vz/root/109/ /mnt/
  • (!) pour un test on peut utiliser debootstrap jessie /mnt/

Adaptation de la config de la VM

  • chroot dans le dossier copié :

    # chroot /mnt
    # su -
  • adapter/vérifier la config qui change d'une VM à l'autre : /etc/hosts, /etc/resolv.conf, /etc/network/interfaces, …

  • supprimer les éventuelles associations de noms d'interfaces réseau :

    # rm -f /etc/udev/rules.d/70-persistent-net.rules
  • configurer /etc/fstab :

    /dev/mapper/root  /  ext4  errors=remount-ro  0  1
    /dev/mapper/swap  none  swap  sw  0  0
  • installer LVM, la gestion ACPI et la gestion des claviers exotiques (= non-US) :

    mount -t proc proc /proc
    aptitude install lvm2 acpid acpi-support-base console-tools console-data
    service acpid stop
    umount /proc
  • activer les tty (2 pour VNC, 1 pour virsh console) en ajoutant dans /etc/inittab :

    1:2345:respawn:/sbin/getty 38400 tty1
    2:23:respawn:/sbin/getty 38400 tty2
    # pour utiliser virsh console
    T0:23:respawn:/sbin/getty -L ttyS0 115200 vt102
  • s'assurer un accès root d'une façon ou d'une autre (assigner un mdp à root ou créer un compte sudo et le tester) afin de pouvoir utiliser virsh console ensuite

  • terminer :

    exit # sortir du su -
    exit # sortir du chroot
    umount /mnt # démonter la racine
    vgchange -a n exemple # désactiver le VG exemple
    qemu-nbd -d /dev/nbd1 # déconnecter le disque virtuel

Finalisation de la conversion (sans virt-manager)

  • lancement de la VM (sur l'hôte) :

    # kvm -m 512 -kernel /boot/vmlinuz-$(uname -r) -initrd /boot/initrd.img-$(uname -r) -append "root=/dev/exemple/root" -drive file=/var/lib/libvirt/images/exemple.img,if=virtio -net nic,model=virtio -net bridge,br=vmbr0 -nographic
    • vmbr0 est le bridge sur lequel se connecter dans l'hôte
    • -nographic renvoie l'entrée et l'affichage vers le port série
  • connexion à la VM (depuis l'hôte) :

    # virsh console exemple
    • installer le noyau et ce qu'il faut pour démarrer :

      # apt-get install linux-image-amd64 grub-pc
      • laisser vide pour la ligne de commande (auto-détection des options noyaux)
      • répondre quiet console=tty0 pour la ligne de commande par défaut

      • cocher /dev/vda pour l'endroit où installer grub-pc

    • forcer une réinstallation de udev (pour les cas où il était déjà là) :

      # aptitude reinstall udev
    • éteindre la VM :

      # poweroff
  • création définitive de la VM :

    # virt-install --name=exemple --import --disk path=/var/lib/libvirt/images/exemple.img,format=qcow2,bus=virtio --vcpus=1 --ram=512 --hvm --network bridge:vmbr0,model=virtio --vnc

Finalisation de la conversion (via virt-manager)

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

    # cp -a /boot/{vmlinuz,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. :

    # aptitude install linux-image-amd64 grub-pc
    # 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)

Documentation


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