Édition 5.8
1801 Varsity Drive
Raleigh, NC 27606-2072 USA
Phone: +1 919 754 3700
Phone: 888 733 4281
Fax: +1 919 754 3701
ftpdCaractères gras à espacement fixe
Pour consulter le contenu du fichiermon_nouvel_ouvrage_littérairequi se situe dans votre dossier courant, saisissez la commandecat mon_nouvel_ouvrage_littéraireà la demande du terminal et appuyez sur Entrée pour exécuter la commande.
Appuyez sur Entrée pour exécuter la commande.Appuyez sur Ctrl+Alt+F2 pour passer au premier terminal virtuel. Appuyer sur Ctrl+Alt+F1 pour retournez à votre session X-Windows.
caractères gras à espacement fixe. Par exemple :
Les classes de fichiers comprennent le nom de classefilesystempour les noms de fichier,filepour les fichiers etdirpour les dossiers. Chaque classe correspond à un ensemble de permissions associées.
Sélectionnez → → à partir de la barre du menu principal pour lancer les Préférences de la souris. À partir de l'onglet Boutons, cliquez sur la case à cocher Pour gaucher puis cliquez sur pour faire passer le bouton principal de la souris de la gauche vers la droite (ce qui permet l'utilisation de la souris par la main gauche).Pour insérer un caractère spécial dans un fichier gedit, choisissez → → à partir de la barre du menu principal. Ensuite, sélectionnez → à partir de la barre de menu de Table de caractères, saisissez le nom du caractère dans le champ Rechercher puis cliquez sur . Le caractère que vous recherchez sera surligné dans la Table de caractères. Double-cliquez sur le caractère surligné pour l'insérer dans le champ Texte à copier, puis cliquez sur le bouton . Maintenant, revenez à votre document et sélectionnez → à partir de la barre de menu de gedit.
Italique gras à espacement fixe ou Italique gras proportionnel
Pour se connecter à une machine distante en utilisant ssh, saisissezsshaprès l'invite de commande de la console. Si la machine distante estnom d'utilisateur@domain.name (nom.domaine)exemple.comet que votre nom d'utilisateur pour cette machine est john, saisissezssh john@example.com.La commandemount -o remountmonte le système de fichiers nommé. Ainsi, pour montersystème de fichiers/homedans le système de fichiers, la commande estmount -o remount /home.Pour connaître la version d'un paquet actuellement installé, utilisez la commanderpm -q. Elle vous permettra de retourner le résultat suivant :paquet.version-de-paquet
Publican est un système de publication DocBook.
Romains à espacement fixe et présentées ainsi :
books Desktop documentation drafts mss photos stuff svn books_tests Desktop1 downloads images notes scripts svgs
romains à espacement fixe mais sont présentés et surlignés comme suit :
package org.jboss.book.jca.ex1; import javax.naming.InitialContext; public class ExClient { public static void main(String args[]) throws Exception { InitialContext iniCtx = new InitialContext(); Object ref = iniCtx.lookup("EchoBean"); EchoHome home = (EchoHome) ref; Echo echo = home.create(); System.out.println("Created Echo"); System.out.println("Echo.echo('Hello') = " + echo.echo("Hello")); } }
5.
NFS, FTP ou HTTP.
/var/lib/libvirt/images/ directory by default. If you use a different directory you must label the new directory according to SELinux policy. Refer to Section 18.2, « SELinux et virtualisation » for details.
yum for more information.
grub.conf file.
virtio sont des périphériques PCI. Actuellement, les invités sont limités à un maximum de 32 périphériques PCI. certains périphériques PCI sont critiques à l'exécution de l'invité et ne peuvent donc pas être supprimés. Les périphériques nécessaires par défaut sont :
fstab file, the initrd file or used by the kernel command line. If less privileged users, especially virtualized guests, have write access to whole partitions or LVM volumes the host system could be compromised.
/dev/sdb). Virtualized guests with access to block devices may be able to access other block devices on the system or modify volume labels which can be used to compromise the host system. Use partitions (for example, /dev/sdb1) or LVM volumes to prevent this issue.
phy qu'il peut contenir s'il possède suffisamment de ressources.
/etc/modprobe.conf, ajouter la ligne suivante :
options loop max_loop=64
# rmmod loop # modprobe loop
Table des matières
yum et le Red Hat Network (RHN).

virt-manager, libvirt et virt-viewer, ainsi que toutes les dépendances pour l'installation.

Personnaliser les paquetages (si nécessaire)

%packages de votre fichier Kickstart, ajouter le groupe de paquetages suivant :
%packages @xen
xen-ia64-guest-firmware
rhn_register et suivre les invites.
yumxen et kernel-xen. Le paquetage xen contient l'hyperviseur ainsi que des outils basiques de virtualisation. Le paquetage kernel-xen comprend un noyau linux modifié qui opère comme un invité de machine virtuelle sur l'hyperviseur.
xen et kernel-xen , exécuter:
# yum install xen kernel-xen
xen-ia64-guest-firmware) du DVD d'installation supplémentaire. Ce paquetage peut aussi être installé à partir de RHN à l'aide de la commande yum :
# yum install xen-ia64-guest-firmware
python-virtinstvirt-install pour créer des machines virtuelles.
libvirtlibvirt est une bibliothèque API pour interagir avec les hyperviseurs. libvirt utilise le framework de virtualisation xm et l'outil de ligne de commande virsh afin de gérer et de contrôler les machines virtuelles.
libvirt-pythonlibvirt.
virt-managervirt-manager, aussi connu sous le nom de Gestionnaire de machines virtuelles(de l'anglais, Virtual Machine Manager), offre un outil graphique pour administrer les machines virtuelles. Il utilise la bibliothèque libvirt pour la gestion d'API.
# yum install virt-manager libvirt libvirt-python python-virtinst

virt-manager, libvirt et virt-viewer pour l'installation.

Personnaliser les paquetages (si nécessaire)

%packages de votre fichier Kickstart, ajouter le groupe de paquetages suivant :
%packages @kvm
rhn_register et suivre les invites.
yumkvm. Le paquetage kvm contient le module du noyau KVM offrant l'hyperviseur KVM sur le noyau par défaut de Red Hat Enterprise Linux.
kvm, exécuter :
# yum install kvm
python-virtinstvirt-install pour créer des machines virtuelles.
libvirtlibvirt est une bibliothèque API pour interagir avec les hyperviseurs. libvirt utilise le framework de virtualisation xm et l'outil de ligne de commande virsh afin de gérer et de contrôler les machines virtuelles.
libvirt-pythonlibvirt.
virt-managervirt-manager, aussi connu sous le nom de Gestionnaire de machines virtuelles(de l'anglais, Virtual Machine Manager), offre un outil graphique pour administrer les machines virtuelles. Il utilise la bibliothèque libvirt pour la gestion d'API.
# yum install virt-manager libvirt libvirt-python python-virtinst
virt-install. Ces deux méthodes sont couvertes dans ce chapitre.
virt-install pour créer des invités virtualisés depuis la ligne de commande. virt-install peut être utilisée de manière interactive, ou avec un script, pour automatiser la création des machines virtuelles. En utilisant virt-install avec les fichiers Kickstart, on peut réaliser une installation de machines virtuelles automatisée.
virt-install offre un certain nombre d'options que l'on peut passer sur la ligne de commande. Pour voir une liste complète des options, exécutez :
$ virt-install --help
virt-install documente toutes les options de commande et les variables importantes.
qemu-img est une commande apparentée qui peut être utilisée avant virt-install afin de configurer les options de stockage.
--vnc option which opens a graphical window for the guest's installation.
rhel3support. L'exemple utilise l'hyperviseur KVM.
# virt-install --accelerate --hvm --connect qemu:///system \ --network network:default \ --name rhel3support --ram=756\ --file=/var/lib/libvirt/images/rhel3support.img \ --file-size=6 --vnc --cdrom=/dev/sr0
# virt-install --name fedora11 --ram 512 --file=/var/lib/libvirt/images/fedora11.img \ --file-size=3 --vnc --cdrom=/var/lib/libvirt/images/fedora11.iso
virt-manager, aussi connu sous le nom de Virtual Machine Manager, est un outil graphique pour la création et la gestion d'invités virtualisés.
Open virt-manager
virt-manager. Launch the application from the menu and submenu. Alternatively, run the virt-manager command as root.
Optional: Open a remote hypervisor

Create a new guest

New guest wizard

Name the virtual machine

Choose virtualization method
kernel-xen n'est pas le noyau en cours d'exécution.

Select the installation method
.iso file).
HTTP, FTP or NFS.

HTTP, FTP or NFS. The installation media URL must contain a Red Hat Enterprise Linux installation tree. This tree is hosted using NFS, FTP or HTTP.
Installation media selection
ISO image or physical media installation

Network install tree installation
NFS, FTP or HTTP. Optionally, a kickstart file can be specified to automated the installation. Kernel parameters can also be specified if required.

Network boot (PXE)
Storage setup
/var/lib/libvirt/images/ directory by default. In the default configuration, other directory locations for file-based images are prohibited by SELinux. If you use a different directory you must label the new directory according to SELinux policy. Refer to Section 18.2, « SELinux et virtualisation » for details.

/var/lib/libvirt/images/. If you are using a different location (such as /images/ in this example) make sure it is added to your SELinux policy and relabeled before you continue with the installation (later in the document you will find information on how to modify your SELinux policy).
Network setup

Memory and CPU allocation

Verify and start guest installation

virt-manager. Chapitre 8, Procédure d'installation du système d'exploitation des invités contains step-by-step instructions to installing a variety of common operating systems.
Création d'un nouveau pont
/etc/sysconfig/network-scripts/. Cet exemple crée un fichier nommé ifcfg-installation qui fait un pont nommé installation.
# cd /etc/sysconfig/network-scripts/ # vim ifcfg-installation DEVICE=installation TYPE=Bridge BOOTPROTO=dhcp ONBOOT=yes
TYPE=Bridge, is case-sensitive. It must have uppercase 'B' and lower case 'ridge'.
ifup installation command can start the individual bridge but it is safer to test the entire network restarts properly.
# service network restart
brctl show pour voir les détails sur les ponts réseau du système.
# brctl show bridge name bridge id STP enabled interfaces installation 8000.000000000000 no virbr0 8000.000000000000 yes
virbr0 est le pont par défaut utilisé par libvirt pour le NAT (de l'anglais, Network Address Translation) sur le périphérique Ethernet par défaut.
Ajouter une interface au nouveau pont
BRIDGE au fichier de configuration avec le nom du pont créé lors des étapes précédentes.
# Intel Corporation Gigabit Network Connection DEVICE=eth1 BRIDGE=installation BOOTPROTO=dhcp HWADDR=00:13:20:F7:6E:8E ONBOOT=yes
# service network restart
brctl show :
# brctl show bridge name bridge id STP enabled interfaces installation 8000.001320f76e8e no eth1 virbr0 8000.000000000000 yes
Configuration de la sécurité
iptables afin de permettre à tout le trafic d'être transféré à travers le pont.
# iptables -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT # service iptables save # service iptables restart
iptables. Ajouter les lignes suivantes dans /etc/sysctl.conf :
net.bridge.bridge-nf-call-ip6tables = 0 net.bridge.bridge-nf-call-iptables = 0 net.bridge.bridge-nf-call-arptables = 0
sysctl.
# sysctl -p /etc/sysctl.conf
Redémarrer libvirt avant l'installation
libvirt.
# service libvirtd reload
virt-install, ajouter le paramètre d'installation --network=bridge:installation, où installation est le nom de votre pont. Pour des installation PXE, utiliser le paramètre --pxe.
# virt-install --accelerate --hvm --connect qemu:///system \
--network=bridge:installation --pxe\
--name EL10 --ram=756 \
--vcpus=4
--os-type=linux --os-variant=rhel5
--file=/var/lib/libvirt/images/EL10.img \
Sélectionner PXE

Sélectionner le pont

Démarrer l'installation

virsh update-device Guest1 ~/Guest1.xml (substituting your guest's name and XML file), and select OK to continue past this step.
kernel-xen.
virt-manager, refer to the procedure in Section 7.2, « Création d'invités avec virt-manager ».
virt-install. L'option --vncmontre l'installation graphique. Le nom de l'invité dans l'exemple est rhel5PV, le fichier de l'image de disque est rhel5PV.dsk et le miroir local de l'arbre d'installation est ftp://10.1.1.1/trees/RHEL5-B2-Server-i386/. Remplacer ces valeurs par des valeurs précises pour votre système et pour votre réseau.
# virt-install -nrhel5PV-r 500 \ -f /var/lib/libvirt/images/rhel5PV.dsk-s 3 --vnc -p \ -lftp://10.1.1.1/trees/RHEL5-B2-Server-i386/



DHCP (as shown below) or a static IP address:







Installation Number :

rhn_register. La commande rhn_register nécessite d'avoir un accès super-utilisateur.












virt-install in Section 8.1, « Installer Red Hat Enterprise Linux 5 en tant qu'invité partiellement virtualisé. ». If you used the default example the name is rhel5PV.
virsh pour redémarrer l'invité :
# virsh reboot rhel5PVvirt-manager, sélectionnez le nom de votre invité, cliquez sur , puis sur .








kdump. The use of kdump is unsupported on para-virtualized guests.







yum command or RHN. Click .




Ouvrir virt-manager
virt-manager. Lancer l'application à partir du menu et du sous-menu . Sinon, exécuter la commande virt-manager en tant que super-utilisateur.
Sélectionner l'hyperviseur
qemu.
Démarrer l'assistant de nouvelle machine virtuelle

Nommer la machine virtuelle

Choisir une méthode de virtualisation

Sélectionner la méthode d'installation

Trouver le média d'installation

/var/lib/libvirt/images/ directory. Any other location may require additional configuration for SELinux, refer to Section 18.2, « SELinux et virtualisation » for details.
Installation du stockage
/var/lib/libvirt/images/ directory. Assign sufficient space for your virtualized guest and any applications the guest requires.

Installation de réseau

Allocation de mémoire et CPU

Vérifier et démarrer l'installation de l'invité

Installation de Red Hat Enterprise Linux
Démarrage de virt-manager
Nommer votre système virtuel

Choisir une méthode de virtualisation

Choisir une méthode d'installation

/var/lib/libvirt/images/ directory. Any other location may require additional configuration for SELinux, refer to Section 18.2, « SELinux et virtualisation » for details.
Choose installation image

/var/lib/libvirt/images/ directory by default. In the default configuration, other directory locations for file-based images are prohibited by SELinux. If you use a different directory you must label the new directory according to SELinux policy. Refer to Section 18.2, « SELinux et virtualisation » for details.

/var/lib/libvirt/images/ . Si vous utilisez une location différente (comme /images/ dans cet exemple), veillez à ce qu'elle soit ajoutée à votre politique SELinux et qu'elle soit renommée avant de continuer l'installation (vous trouverez plus loin dans le document des informations sur la façon de modifier la politique SELinux)
Installation du réseau



HAL, once you get the dialog box in the Windows install select the 'Generic i486 Platform' tab. Scroll through selections with the Up and Down arrows.








# virsh start WindowsGuestWindowsGuest est le nom de votre machine virtuelle.

virsh reboot WindowsGuestName. Quand vous redémarrerez la machine virtuelle, vous verrez le message Setup is being restarted :




virt-install command. virt-install can be used instead of virt-manager This process is similar to the Windows XP installation covered in Section 8.3, « Installer Windows XP en tant qu'invité totalement virtualisé ».
virt-install for installing Windows Server 2003 as the console for the Windows guest opens the virt-viewer window promptly. The examples below installs a Windows Server 2003 guest with the virt-install command.
Xen virt-install
# virt-install --virt-type=xen -hvm \ --name windows2003sp1 --file=/var/lib/libvirt/images/windows2003sp2.img \ --file-size=6 \ --cdrom=/var/lib/libvirt/images/ISOs/WIN/en_windows_server_2003_sp1.iso \ --vnc --ram=1024
KVM virt-install
# virt-install --accelerate --hvm --connect qemu:///system \ --name rhel3support \ --network network:default \ --file=/var/lib/libvirt/images/windows2003sp2.img \ --file-size=6 \ --cdrom=/var/lib/libvirt/images/ISOs/WIN/en_windows_server_2003_sp1.iso \ --vnc --ram=1024
Standard PC pour le Type d'ordinateur. Changer le Type d'ordinateur est nécessaire pour les invités virtualisés Windows Server 2003.




Ouvrir virt-manager
virt-manager. Lancer l'application à partir du menu , et du sous-menu . Autrement, exécuter la commande virt-manager en tant que super-utilisateur.
Sélectionner l'hyperviseur
qemu.
Lancer l'assistant de nouvelle machine virtuelle

Nommer la machine virtuelle

Choisir une méthode de virtualisation

Sélectionner la méthode d'installation

Localiser le média d'installation


/var/lib/libvirt/images/ directory. Any other location may require additional configuration for SELinux, refer to Section 18.2, « SELinux et virtualisation » for details.
Installation du stockage
/var/lib/libvirt/images/ directory. Assign sufficient space for your virtualized guest and any applications the guest requires.

Installation du réseau

Allocation mémoire et CPU

Vérifier et démarrer l'installation de l'invitéXen

Installation de Windows

Table des matières
/dev/xvd[a to z][1 to 15]
/dev/xvdb13
/dev/xvd[a to i][a to z][1 to 15]
/dev/xvdbz13
/dev/sd[a to p][1 to 15]
/dev/sda1
/dev/hd[a to t][1 to 63]
/dev/hdd3
dd command. Replace /dev/fd0 with the name of a floppy device and name the disk appropriately.
# dd if=/dev/fd0 of=~/legacydrivers.img
virt-manager exécutant une installation Red Hat Enterprise Linux totalement virtualisée avec une image située dans /var/lib/libvirt/images/rhel5FV.img. L'hyperviseur Xen est utilisé dans cet exemple.
virsh sur un invité en cours d'exécution.
# virsh dumpxml rhel5FV > rhel5FV.xml
# dd if=/dev/zero of=/var/lib/libvirt/images/rhel5FV-floppy.img bs=512 count=2880
<disk type='file' device='floppy'> <source file='/var/lib/libvirt/images/rhel5FV-floppy.img'/> <target dev='fda'/> </disk>
virsh shutdown command instead.
# virsh destroy rhel5FV# virsh create rhel5FV.xml
dd. Les fichiers dispersés ne sont pas recommandés suite à des problèmes liés à l'intégrité des données et à la performance. Les fichiers dispersés sont créés bien plus rapidement et peuvent être utilisés en tant que tests mais pas ne devraient pas être utilisés dans un environnement de production.
# dd if=/dev/zero of=/var/lib/libvirt/images/FileName.img bs=1M seek=4096 count=0
# dd if=/dev/zero of=/var/lib/libvirt/images/FileName.img bs=1M count=4096
Guest1 et le fichier est sauvegardé dans le répertoire de base de l'utilisateur.
# virsh dumpxmlGuest1> ~/Guest1.xml
Guest1.xml) dans un éditeur de texte. Puis trouvez les éléments <disk>. Voici un exemple d'élément de disque :
<disk type='file' device='disk'>
<driver name='tap' type='aio'/>
<source file='/var/lib/libvirt/images/Guest1.img'/>
<target dev='xvda'/>
</disk>
<disk>. Veillez à bien spécifier un nom de périphérique pour les attributs du périphérique virtuel de traitement par blocs. Ces attributs doivent être uniques pour chaque fichier de configuration d'invité. L'exemple suivant est une section d'un fichier de configuration qui contient un conteneur de stockage basé sur fichiers supplémentaire nommé FileName.img.
<disk type='file' device='disk'>
<driver name='tap' type='aio'/>
<source file='/var/lib/libvirt/images/Guest1.img'/>
<target dev='xvda'/>
</disk>
<disk type='file' device='disk'>
<driver name='tap' type='aio'/>
<source file='/var/lib/libvirt/images/FileName.img'/>
<target dev='hda'/>
</disk>
# virsh create Guest1.xml
FileName.img as the device called /dev/sdb. This device requires formatting from the guest. On the guest, partition the device into one primary partition for the entire device then format the device.
n pour une nouvelle partition.
# fdisk /dev/sdb Command (m for help):
p pour une partition primaire.
Command action e extended p primary partition (1-4)
1.
Partition number (1-4): 1
Enter.
First cylinder (1-400, default 1):
Enter.
Last cylinder or +size or +sizeM or +sizeK (2-400, default 400):
t.
Command (m for help): t
1.
Partition number (1-4): 1
83 pour une partition linux.
Hex code (type L to list codes): 83
Command (m for help):wCommand (m for help):q
ext3.
# mke2fs -j /dev/sdb1
# mount /dev/sdb1 /myfiles
fstab file, the initrd file or used by the kernel command line. If less privileged users, especially virtualized guests, have write access to whole partitions or LVM volumes the host system could be compromised.
/dev/sdb). Virtualized guests with access to block devices may be able to access other block devices on the system or modify volume labels which can be used to compromise the host system. Use partitions (for example, /dev/sdb1) or LVM volumes to prevent this issue.
multipath et persistance sur l'hôte si nécessaire.
virsh attach command. Replace: myguest with your guest's name, /dev/sdb1 with the device to add, and sdc with the location for the device on the guest. The sdc must be an unused device name. Use the sd* notation for Windows guests as well, the guest will recognize the device correctly.
--type cdrom parameter to the command for CD-ROM or DVD devices.
--type floppy à la commande pour les lecteurs de disquettes.
# virsh attach-diskmyguest/dev/sdb1sdc--driver tap --mode readonly
/dev/sdb on Linux or D: drive, or similar, on Windows. This device may require formatting.
multipath must use Configuration de chemin d'accès unique. Systems running multipath can use Configuration chemins d'accès-multiples.
udev. Only use this procedure for hosts which are not using multipath.
/etc/scsi_id.config.
options=-b est bien mise en commentaire.
# options=-b
options=-g
udev pour assumer que tous les périphériques SCSI attachés retourneront un UUID (UID unique).
scsi_id -g -s /block/sd*. Par exemple :
# scsi_id -g -s /block/sd* 3600a0b800013275100000015427b625e
/dev/sdc.
scsi_id -g -s /block/sd* est identique à celle de l'ordinateur qui accède au périphérique.
20-names.rules dans le répertoire /etc/udev/rules.d. Ajoutez de nouvelles règles à ce fichier. Toutes les règles sont ajoutées au même fichier en utilisant le même format. Les règles suivent ce format :
KERNEL=="sd[a-z]", BUS=="scsi", PROGRAM="/sbin/scsi_id -g -s /block/%k", RESULT="UUID", NAME="devicename"
UUID et devicename avec le UUID extrait ci-dessus, et le nom désiré pour le périphérique. Dans l'exemple ci-dessus, la règle ressemblerait à ce qui suit :
KERNEL="sd*", BUS="scsi", PROGRAM="/sbin/scsi_id -g -s", RESULT="3600a0b800013275100000015427b625e", NAME="rack4row16"
udev cherche maintenant tous les périphériques nommés /dev/sd* pour l'UUID dans la règle. Une fois qu'un périphérique correspondant est connecté au système, le nom de la règle lui est assigné. Un périphérique avec un UUID de 3600a0b800013275100000015427b625e apparaîtrait comme /dev/rack4row16.
/etc/rc.local :
/sbin/start_udev
/etc/scsi_id.config, /etc/udev/rules.d/20-names.rules, et /etc/rc.local sur tous les hôtes correspondants.
/sbin/start_udev
multipath est utilisé pour les systèmes ayant plus d'un chemin d'accès physique depuis l'ordinateur vers les périphériques de stockage. multipath offre un certaine tolérance aux défauts, des basculements ainsi qu'une performance améliorée pour les périphériques attachés aux systèmes Red Hat Enterprise Linux.
multipath environment requires defined alias names for your multipath devices. Each storage device has a UUID which acts as a key for the aliased names. Identify a device's UUID using the scsi_id command.
# scsi_id -g -s /block/sdc
/dev/mpath. Dans l'exemple ci-dessous, 4 périphériques sont définis dans /etc/multipath.conf :
multipaths {
multipath {
wwid 3600805f30015987000000000768a0019
alias oramp1
}
multipath {
wwid 3600805f30015987000000000d643001a
alias oramp2
}
mulitpath {
wwid 3600805f3001598700000000086fc001b
alias oramp3
}
mulitpath {
wwid 3600805f300159870000000000984001c
alias oramp4
}
}
/dev/mpath/oramp1, /dev/mpath/oramp2, /dev/mpath/oramp3 and /dev/mpath/oramp4. Once entered, the mapping of the devices' WWID to their new names are now persistent after rebooting.
virsh with the attach-disk parameter.
# virsh attach-disk [domain-id] [source] [target] --driver file --type cdrom --mode readonly
The source and target parameters are paths for the files and devices, on the host and guest respectively. The source parameter can be a path to an ISO file or the device from the /dev directory.
libvirt installation provides NAT based connectivity to virtual machines out of the box. This is the so called 'default virtual network'. Verify that it is available with the virsh net-list --all command.
# virsh net-list --all Name State Autostart ----------------------------------------- default active yes
# virsh net-define /usr/share/libvirt/networks/default.xml
/usr/share/libvirt/networks/default.xml
# virsh net-autostart default Network default marked as autostarted
# virsh net-start default Network default started
libvirt est en cours d'exécution, vous remarquerez un périphérique de pont isolé. Il n'y a aucune interface ajoutée à ce périphérique, car celui-ci utilise les transferts NAT et IP pour se connecter au monde extérieur. N'ajoutez pas de nouvelles interfaces.
# brctl show bridge name bridge id STP enabled interfaces virbr0 8000.000000000000 yes
libvirt ajoute des règles iptables qui permettent le mouvement en provenance et en direction des invités attachés au périphérique virbr0 dans les chaînes INPUT, FORWARD, OUTPUT et POSTROUTING. libvirt tente ensuite d'activer le paramètre ip_forward. Certaines autres applications peuvent désactiver ip_forward, ainsi la meilleure solution est d'ajotuer la ligne suivante à /etc/sysctl.conf.
net.ipv4.ip_forward = 1
<interface type='network'> <source network='default'/> </interface>
<interface type='network'> <source network='default'/> <mac address='00:16:3e:1a:b3:4a'/> </interface>
/etc/xen/xend-config.sxp et en changeant la ligne :
(network-script network-bridge)
(network-script /bin/true)
/etc/sysconfig/network-scripts/ directory):
# chkconfig NetworkManager off # chkconfig network on # service NetworkManager stop # service network start
NM_CONTROLLED=no" to the ifcfg-* scripts used in the examples. If you do not either set this parameter or disable NetworkManager entirely, any bridge configuration will be overwritten and lost when NetworkManager next starts.
/etc/sysconfig/network-scripts :
# cd /etc/sysconfig/network-scripts
ifcfg-eth0 définit l'interface réseau physique qui est paramétrée comme faisant partie d'un pont :
DEVICE=eth0 # change the hardware address to match the hardware address your NIC uses HWADDR=00:16:76:D6:C9:45 ONBOOT=yes BRIDGE=br0
MTU variable to the end of the configuration file.
MTU=9000
/etc/sysconfig/network-scripts appelé ifcfg-br0 ou autre nom similaire. Le br0 est le nom du pont, ceci peut être ce que l'on veut, tant que le nom du fichier est le même que celui du paramètre DEVICE.
DEVICE=br0 TYPE=Bridge BOOTPROTO=dhcp ONBOOT=yes DELAY=0
ifcfg-br0 file). Network access will not function as expected if IP address details are configured on the physical interface that the bridge is connected to.
TYPE=Bridge, is case-sensitive. It must have uppercase 'B' and lower case 'ridge'.
# service network restart
iptables afin de permettre à la totalité du trafic d'être transféré à travers le pont.
# iptables -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT # service iptables save # service iptables restart
iptables, ajoutez les lignes suivantes dans /etc/sysctl.conf :
net.bridge.bridge-nf-call-ip6tables = 0 net.bridge.bridge-nf-call-iptables = 0 net.bridge.bridge-nf-call-arptables = 0
sysctl.
# sysctl -p /etc/sysctl.conf
libvirt.
# service libvirtd reload
# brctl show bridge name bridge id STP enabled interfaces virbr0 8000.000000000000 yes br0 8000.000e0cb30550 no eth0
virbr0. Ne tentez pas d'attacher un périphérique physique à virbr0. Le pont virbr0 ne sert que pour la connectivité NAT (de l'anglais, Network Address Translation).
virsh (Chapitre 25, Gestion d'invités au moyen de virsh) and virt-manager (Chapitre 26, Gestion des invités avec le gestionnaire de machines virtuelles (virt-manager)). Those chapters provide a detailed description of the networking configuration tasks using both tools.
system-config-network. Sinon, vous pouvez aussi créer un nouveau fichier de configuration nommé ifcfg-ethX dans le répertoire /etc/sysconfig/network-scripts/, dans lequel X sera n'importe quel chiffre qui n'est pas déjà en cours d'utilisation. Vous trouverez ci-dessous un exemple de fichier de configuration pour la seconde interface de réseau intitulée eth1
$ cat /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 BOOTPROTO=static ONBOOT=yes USERCTL=no IPV6INIT=no PEERDNS=yes TYPE=Ethernet NETMASK=255.255.255.0 IPADDR=10.1.1.1 GATEWAY=10.1.1.254 ARP=yes
/etc/xen/scripts/network-bridgevers /etc/xen/scripts/network-bridge.xen.
/etc/xen/xend-config.sxp and add the line (network-xen-multi-bridge). A typical xend-config.sxp file should have the following line. Comment this line out. Use the # symbol to comment out lines.
network-script network-bridge
network-xen-multi-bridge parameter to enable multiple network bridges.
#network-script network-bridge network-script network-xen-multi-bridge
network-xen-multi-bridge.sh in the /etc/xen/scripts/ directory. A sample scripts is below, this example script will create two Xen network bridges (xenbr0 and xenbr1) one will be attached to eth1 and the other one to eth0. If you want to create additional bridges just follow the example in the script and copy nad paste the lines as required:
#!/bin/sh
# network-xen-multi-bridge
# Exit if anything goes wrong.
set -e
# First arg is the operation.
OP=$1
shift
script=/etc/xen/scripts/network-bridge.xen
case ${OP} in
start)
$script start vifnum=1 bridge=xenbr1 netdev=eth1
$script start vifnum=0 bridge=xenbr0 netdev=eth0
;;
stop)
$script stop vifnum=1 bridge=xenbr1 netdev=eth1
$script stop vifnum=0 bridge=xenbr0 netdev=eth0
;;
status)
$script status vifnum=1 bridge=xenbr1 netdev=eth1
$script status vifnum=0 bridge=xenbr0 netdev=eth0
;;
*)
echo 'Unknown command: ' ${OP}
echo 'Valid commands are: start, stop, status'
exit 1
esac
# chmod +x /etc/xen/scripts/network-xen-multi-bridge.sh
# service network restart
virt-manager. NetworkManager fonctionne avec des périphériques de réseaux virtuels par défaut sur Red Hat Enterprise Linux 5.1 et autres versions plus récentes.
<interface type='network'> <mac address='AA:AA:AA:AA:AA:AA'/> <source network='default'/> <target dev='vnet0'/> <model type='virtio'/> </interface>
xm, les périphériques de réseau virtuels sont étiquettés "vif".
ifup or ifdown calls to the network interface it is using. In addition wireless network cards do not work well in a virtualization environment due to Xen's (default) bridged network usage.
dummy0. This will also allow you to use a hidden IP address space for your guests.
/etc/modprobe.conf
alias dummy0 dummy options dummy numdummies=1
/etc/sysconfig/network-scripts/ifcfg-dummy0:
DEVICE=dummy0 BOOTPROTO=none ONBOOT=yes USERCTL=no IPV6INIT=no PEERDNS=yes TYPE=Ethernet NETMASK=255.255.255.0 IPADDR=10.1.1.1 ARP=yes
xenbr0 à dummy0, de façon à pouvoir utiliser le réseau même lorsque vous n'êtes pas connecté à un réseau physique. Modifiez /etc/xen/xend-config.sxp pour inclure la saisie /etc/xen/xend-config.sxp :
(network-script 'network-bridge bridge=xenbr0 netdev=dummy0')
/etc/sysconfig/network in the guest and modify the default gateway to point to dummy0. If you are using a static IP, set the guest's IP address to exist on the same subnet as dummy0.
NETWORKING=yes HOSTNAME=localhost.localdomain GATEWAY=10.1.1.1 IPADDR=10.1.1.10 NETMASK=255.255.255.0
/etc/init.d/xenLaptopNAT et créer un lien symbolique dans /etc/rc3.d/S99xenLaptopNAT. Cela a pour effet de démarrer NAT automatiquement pendant la phase de lancement.
#!/bin/bash
PATH=/usr/bin:/sbin:/bin:/usr/sbin
export PATH
GATEWAYDEV=`ip route | grep default | awk {'print $5'}`
iptables -F
case "$1" in
start)
if test -z "$GATEWAYDEV"; then
echo "No gateway device found"
else
echo "Masquerading using $GATEWAYDEV"
/sbin/iptables -t nat -A POSTROUTING -o $GATEWAYDEV -j MASQUERADE
fi
echo "Enabling IP forwarding"
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "IP forwarding set to `cat /proc/sys/net/ipv4/ip_forward`"
echo "done."
;;
*)
echo "Usage: $0 {start|restart|status}"
;;
esac
dnsmasq sur un ordinateur portable exécutant une virtualisation :
dnsmasq.tgz. The tar archive includes the following files:
nm-dnsmasq peut être utilisé comme script de répartition pour le NetworkManager (gestionnaire de réseau). Il sera exécuté à chaque fois que le NetworkManager détecte un changement de connexité et force un redémarrage/rechargement de dnsmasq. Il peut être copié dans /etc/NetworkManager/dispatcher.d/nm-dnsmasq
xenDNSmasq peut être utilisé comme script principal de démarrage ou de fermeture de /etc/init.d/xenDNSmasq
dnsmasq.conf est un exemple de fichier de configuration pour/etc/dnsmasq.conf
dnsmasq est une image binaire de /usr/local/sbin/dnsmasq
/usr/local/sbin/dnsmasq), vous devrez modifier votre fichier de configuration dnsmasq. Le fichier est situé dans /etc/dnsmaqs.conf
interface permet à dnsmasq d'écouter les demandes DHCP et DNS sur des interfaces spécifiques uniquement. Il peut s'agir d'interfaces fictives mais pas de vos interfaces publiques en plus de votre interface locale de bouclage. Répétez la ligne interface pour plus d'une interface. interface=dummy0 est une exemple qui écoute l'interface dummy0.
dhcp-range pour activer le serveur intégré DHCP, vous devez fournir le groupe d'adresses disponibles à louer et éventuellement la durée de location. Si vous avez plus d'un réseau, vous devrez répéter l'opération pour chaque réseau pour lequel vous souhaitez offrir le service DHCP. Par exemple (pour le réseau 10.1.1.* et une durée de 12h): dhcp-range=10.1.1.10,10.1.1.50,255.255.255.0,12h
dhcp-option pour remplacer la route par défaut fournie par dnsmasq, qui assume que le router est la même machine que celle qui exécute dnsmasq. Un exemple serait dhcp-option=3,10.1.1.1
xenDNSmasq vers /etc/init.d
chkconfig --add xenDNSmasq
chkconfig --levels 345 xenDNSmasq on
dnsmasq de façon à ce qu'il redémarre à chaque fois que NetworkManager détecte un changement de connexité, vous pouvez utiliser le script nm-dnsmasq.
nm-dnsmasq dans /etc/NetworkManager/dispatcher.d/
dnsmasq détectera aussi les changements dans votre fichier /etc/resolv.conf et les rechargera automatiquement (par exemple, lorsque vous démarrez une session VNP).
nm-dnsmasq et xenDNSmasq installeront également NAT si vos invités virtuels sont placés dans un réseau caché afin de leur permettre d'accéder au réseau public.
pv-on-hvm, dans le paquetage du noyau par défaut. Cela signifie que les pilotes paravirtualisés sont disponibles pour Red Hat Enterprise Linux 4.7 et versions plus récentes ou pour Red Hat Enterprise Linux5.3 et versions plus récentes.
kmod-xenpv.
kmod-xenpv,
modules-init-tools (for versions prior to Red Hat Enterprise Linux 4.6z you require modules-init-tools-3.1-0.pre5.3.4.el4_6.1 or greater), and
modversions.
kmod-xenpv.
/lib file system.
# rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' kernel
| Architecture de noyau | Red Hat Enterprise Linux 3 | Red Hat Enterprise Linux 4 | Red Hat Enterprise Linux 5 |
|---|---|---|---|
| athlon | Supporté (AMD) | ||
| athlon-SMP | Supporté (AMD) | ||
| i32e | Supporté (Intel) | ||
| i686 | Supporté (Intel) | Supporté | Supporté |
| i686-PAE | Supporté | ||
| i686-SMP | Supporté (Intel) | Supporté | |
| i686-HUGEMEM | Supporté (Intel) | Supporté | |
| x86_64 | Supporté (AMD) | Supporté | Supporté |
| x86_64-SMP | Supporté (AMD) | Supporté | |
| x86_64-LARGESMP | Supporté | ||
| Itanium (IA64) | Supporté |
# rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' kernel
kernel-PAE-2.6.18-53.1.4.el5.i686
GRUB.GRUB), ou un disque qui contient les images du noyau initrd. Donc, tout disque qui contient un répertoire ou une partition /boot ne peut pas utiliser les pilotes de périphériques en bloc paravirtualisés.
xen-pci-platform échouera.
| Type de noyau d'hôte | Type de noyau d'hôte requis |
|---|---|
| ia32e (UP et SMP) | x86_64 |
| i686 | i686 |
| i686-SMP | i686 |
| i686-HUGEMEM | i686 |
| Type de noyau d'hôte | Type de noyau d'hôte requis |
|---|---|
| athlon | i686 |
| athlon-SMP | i686 |
| x86_64 | x86_64 |
| x86_64-SMP | x86_64 |
MBR, le chargeur d'amorçage (GRUB), et pour la partition /boot. Cette partition peut être très petite, car elle ne nécessite seulement d'avoir la capacité de contenir la partition /boot.
/, /usr) ou bien pour les volumes logiques.
/boot.
rpm ou yum pour installer les paquetages. L'utilitaire rpm installera les quatre nouveaux modules de noyaux suivants dans /lib/modules/[%kversion][%kvariant]/extra/xenpv/%release :
xen_platform_pci.ko,
xen_balloon.ko,
xen_vbd.ko,
xen_vnif.ko.
xen-vbd) disk driver.
<disk type='file' device='disk'> <driver name='file'/> <source file='/dev/hda6'/> <target dev='hda'/> </disk>
<disk type='file' device='disk'> <driver name='tap' type='aio'/> <source file='/dev/hda6'/> <target dev='xvda'/> </disk>
# xm start YourGuestNameYourGuestName is the name of the configuration file or the guest operating system's name as defined in its configuration file in the name = "os_name" parameter.
kernel-2.4.21-60.EL for all the required headers.
kmod-xenpv correspondant à l'architecture de votre matériel et à la variante de noyau du système d'exploitation de votre invité.
rpm pour installer les paquetages RPM. Veillez d'avoir bien identifié le paquetage dont vous avez besoin pour la variante et l'architecture du système d'exploitation de votre invité.
[root@rhel3]# rpm -ivh kmod-xenpv*
[root@rhel3]# mkdir -p /lib/modules/'uname -r'/extra/xenpv [root@rhel3]# cp -R /lib/modules/2.4.21-52.EL[%kvariant]/extra/xenpv/%release \ /lib/modules/'uname -r'/extra/xenpv [root@rhel3]# depmod -ae [root@rhel3]# modprobe xen-vbd [root@rhel3]# modprobe xen-vnif
insmod au moment de l'installation des modules binaires du pilote, dû au fait que l'application MODVERSIONS de Red Hat Enterprise Linux 3 est activée. Ces avertissements peuvent être ignorés.
/etc/modules.conf et assurez-vous que vous avez un alias pour eth0 comme celui qui figure ci-dessous. Si vous envisagez de configurer plusieurs interfaces, ajouter une ligne supplémentaire pour chaque interface.
alias eth0 xen-vnif
/etc/rc.local et ajouter la ligne de commande:
insmod /lib/modules/'uname -r'/extra/xenpv/%release/xen-vbd.o
#shutdown -h now” dans l'invité).
/etc/xen/YourGuestName with a text editor, performing the following changes:
type=ioemu” de “vif=”.
xen-vbd) .
<disk type='file' device='disk'> <driver name='file'/> <source file='/dev/hda6'/> <target dev='hda'/> </disk>
<disk type='file' device='disk'> <driver name='tap' type='aio'/> <source file='/dev/hda6'/> <target dev='xvda'/> </disk>
# xm start YourGuestNameYourGuestName is the name of the configuration file or the guest operating system's name as defined in its configuration file in the name = "os_name" parameter.
weak-modules et modversions n'est pas offert pour Red Hat Enterprise Linux 3. Pour insérrer le module, exécuter la commande ci-dessous.
insmod xen_vbd.ko
xen-vbd. Les étapes suivantes expliquent comment créer et enregistrer les périphériques en bloc virtualisés.
#!/bin/sh
module="xvd"
mode="664"
major=`awk "\\$2==\"$module\" {print \\$1}" /proc/devices`
# < mknod for as many or few partitions on xvd disk attached to FV guest >
# change/add xvda to xvdb, xvbd, etc. for 2nd, 3rd, etc., disk added in
# in xen config file, respectively.
mknod /dev/xvdb b $major 16
mknod /dev/xvdb1 b $major 17
mknod /dev/xvdb2 b $major 18
chgrp disk /dev/xvd*
chmod 0660 /dev/xvd*
# mknod /dev/xvdc b $major 16 # mknod /dev/xvdc1 b $major 17
# mknod /dev/xvdd b $major 32 # mknod /dev/xvdd1 b $major 33
[root@rhel3]# cat /proc/partitions major minor #blocks name 3 0 10485760 hda 3 1 104391 hda1 3 2 10377990 hda2 202 16 64000 xvdb 202 17 32000 xvdb1 202 18 32000 xvdb2 253 0 8257536 dm-0 253 1 2031616 dm-1
xvdb” est disponible pour le système.
[root@rhel3]# mkdir /mnt/pvdisk_p1 [root@rhel3]# mkdir /mnt/pvdisk_p2
[root@rhel3]# mount /dev/xvdb1 /mnt/pvdisk_p1 [root@rhel3]# mount /dev/xvdb2 /mnt/pvdisk_p2
[root@rhel3]# df /mnt/pvdisk_p1 Filesystem 1K-blocks Used Available Use% Mounted on /dev/xvdb1 32000 15 31985 1% /mnt/pvdisk_p1
/etc/fstab dans l'invité pour monter les périphériques lors de la séquence de démarrage. Ajouter les lignes suivantes :
/dev/xvdb1 /mnt/pvdisk_p1 ext3 defaults 1 2 /dev/xvdb2 /mnt/pvdisk_p2 ext3 defaults 1 2
dom0), the "noapic" parameter should be added to the kernel boot line in your virtual guest's /boot/grub/grub.conf entry as seen below. Keep in mind your architecture and kernel version may be different.
kernel /vmlinuz-2.6.9-67.EL ro root=/dev/VolGroup00/rhel4_x86_64 rhgb noapic
kmod-xenpv, modules-init-tools et modversions correspondants à l'architecture de votre matériel et à la variante de noyau du système d'exploitation de votre invité.
rpm pour installer les paquetages RPM. Veillez d'avoir bien identifié les paquetages dont vous avez besoin pour la variante et l'architecture de votre système d'exploitation invité. Il est nécessaire de faire une mise à jour du module-init-tools, disponible dans le noyau Red Hat Enterprise Linux 4-6-z et au delà.
[root@rhel4]# rpm -ivh modversions [root@rhel4]# rpm -Uvh module-init-tools [root@rhel4]# rpm -ivh kmod-xenpv*
cat /etc/modprobe.conf to verify you have an alias for eth0 like the one below. If you are planning to configure multiple interfaces add an additional line for each interface. If it does not look like the entry below change it.
alias eth0 xen-vnif
#shutdown -h now” dans l'invité).
/etc/xen/YourGuestsName des manières suivantes:
type=ioemu” de “vif=”.
xen-vbd) .
disk=” du fichier de configuration de l'invité. L'entrée de départ “disk=” pourrait également ressembler à l'entrée suivante.
disk = [ "file:/var/lib/libvirt/images/rhel4_64_fv.dsk,hda,w"]
disk = [ "file:/var/lib/libvirt/images/rhel3_64_fv.dsk,hda,w", "tap:aio:/var/lib/libvirt/images/UserStorage.dsk,xvda,w" ]
tap:aio” pour le périphérique paravirtualisé si une image basée-fichier est utilisée.
virsh :
# virsh start YourGuestNamekudzu vous demandera "Conserver ou supprimer le périphérique Realtek Network " et "Configure le xen-bridge ". Vous devez configurer xen-bridge et effacer le périphérique de réseau Realtek.
dom0), the "noapic" parameter should be added to the kernel boot line in your virtual guest's /boot/grub/grub.conf entry as seen below. Keep in mind your architecture and kernel version may be different.
kernel /vmlinuz-2.6.9-67.EL ro root=/dev/VolGroup00/rhel4_x86_64 rhgb noapic
[root@rhel4]# cat /proc/partitions major minor #blocks name 3 0 10485760 hda 3 1 104391 hda1 3 2 10377990 hda2 202 0 64000 xvdb 202 1 32000 xvdb1 202 2 32000 xvdb2 253 0 8257536 dm-0 253 1 2031616 dm-1
xvdb” est disponible pour le système.
[root@rhel4]# mkdir /mnt/pvdisk_p1 [root@rhel4]# mkdir /mnt/pvdisk_p2
[root@rhel4]# mount /dev/xvdb1 /mnt/pvdisk_p1 [root@rhel4]# mount /dev/xvdb2 /mnt/pvdisk_p2
[root@rhel4]# df /mnt/pvdisk_p1 Filesystem 1K-blocks Used Available Use% Mounted on /dev/xvdb1 32000 15 31985 1% /mnt/pvdisk_p1
/etc/fstab dans l'invité pour monter les périphériques lors de la séquence de démarrage. Ajouter les lignes suivantes :
/dev/xvdb1 /mnt/pvdisk_p1 ext3 defaults 1 2 /dev/xvdb2 /mnt/pvdisk_p2 ext3 defaults 1 2
xen-vbd n'est pas chargé automatiquement, lancer la commande suivante dans l'invité. Substituer %version par la version qui convient pour les pilotes paravirtualisés.
# insmod /lib/modules/'uname -r'/weak-updates/xenpv/%release/xen_vbd.ko
#shutdown -h now” dans l'invité).
/etc/xen/YourGuestsName des manières suivantes:
type=ioemu” de “vif=”.
xen-vbd) .
disk=” du fichier de configuration de l'invité. L'entrée de départ “disk=” pourrait également ressembler à l'entrée suivante.
disk = [ "file:/var/lib/libvirt/images/rhel4_64_fv.dsk,hda,w"]
disk = [ "file:/var/lib/libvirt/images/rhel3_64_fv.dsk,hda,w", "tap:aio:/var/lib/libvirt/images/UserStorage.dsk,xvda,w" ]
tap:aio” pour le périphérique paravirtualisé si une image basée-fichier est utilisée.
virsh :
# virsh start YourGuestName
[root@rhel5]# ifconfig eth0
[root@rhel5]# cat /proc/partitions major minor #blocks name 3 0 10485760 hda 3 1 104391 hda1 3 2 10377990 hda2 202 0 64000 xvdb 202 1 32000 xvdb1 202 2 32000 xvdb2 253 0 8257536 dm-0 253 1 2031616 dm-1
xvdb” est disponible pour le système.
[root@rhel5]# mkdir /mnt/pvdisk_p1 [root@rhel5]# mkdir /mnt/pvdisk_p2
[root@rhel5]# mount /dev/xvdb1 /mnt/pvdisk_p1 [root@rhel5]# mount /dev/xvdb2 /mnt/pvdisk_p2
[root@rhel5]# df /mnt/pvdisk_p1 Filesystem 1K-blocks Used Available Use% Mounted on /dev/xvdb1 32000 15 31985 1% /mnt/pvdisk_p1
/etc/fstab dans l'invité pour monter les périphériques lors de la séquence démarrage. Ajouter les lignes suivantes :
/dev/xvdb1 /mnt/pvdisk_p1 ext3 defaults 1 2 /dev/xvdb2 /mnt/pvdisk_p2 ext3 defaults 1 2
dom0), the "noapic" parameter should be added to the kernel boot line in your virtual guest's /boot/grub/grub.conf entry as seen below. Keep in mind your architecture and kernel version may be different.
kernel /vmlinuz-2.6.9-67.EL ro root=/dev/VolGroup00/rhel4_x86_64 rhgb noapic
/etc/modprobe.d/blacklist file. Blacklist 8139cp and 8139too for the RealTek 8139 and e1000 for the virtualized Intel e1000 NIC.
8139cp8139tooe1000
/etc/sysconfig/network-scripts directory.
xen_emul_unplug=never
virt-manager , ouvrir la fenêtre de la console pour l'invité et connectez en tant que root.
/etc/modprobe.conf contienne la ligne de commande “alias eth0 xen-vnif”.
# cat /etc/modprobe.conf alias eth0 xen-vnif
eth0 execute “# ifconfig eth0”. If you receive an error about the device not existing you should load the modules manually as outlined in Section 36.4, « Charger manuellement les pilotes paravirtualisés ».
ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:00:00:6A:27:3A
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:630150 errors:0 dropped:0 overruns:0 frame:0
TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:109336431 (104.2 MiB) TX bytes:846 (846.0 b)
# system-config-network”. Click on the “” button to start the network card configuration.





ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:16:3E:49:E4:E0
inet addr:192.168.78.180 Bcast:192.168.79.255 Mask:255.255.252.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:630150 errors:0 dropped:0 overruns:0 frame:0
TX packets:501209 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:109336431 (104.2 MiB) TX bytes:46265452 (44.1 MiB)
/etc/xen/YourGuestName en remplaçant YourGuestName par le nom de votre invité.
vif = [ "mac=00:16:3e:2e:c5:a9,bridge=xenbr0" ]
vif=” dans la section du fichier de configuration.
vif = [ "mac=00:16:3e:2e:c5:a9,bridge=xenbr0",
"mac=00:16:3e:2f:d5:a9,bridge=xenbr0" ]
# echo 'import virtinst.util ; print virtinst.util.randomMAC()' | python
/etc/modules.conf dans Red Hat Enterprise Linux 3 ou /etc/modprobe.conf dans Red Hat Enterprise Linux 4 et Red Hat Enterprise Linux 5. Ajouter un nouvel alias pour chaque interface que vous avez ajoutée.
alias eth1 xen-vnif
# ifconfig eth1
redhat-config-network sur Red Hat Enterprise Linux 3 ou system-config-network sur Red Hat Enterprise Linux 4 et Red Hat Enterprise Linux 5.
/etc/xen/YourGuestName en remplaçant YourGuestName par le nom de votre invité. La saisie d'origine ressemble certainement à celle qui suit.
disk = [ "file:/var/lib/libvirt/images/rhel5_64_fv.dsk,hda,w"]
disk=” du fichier de configuration. La saisie de mise à jour de l'entité de stockage du pilote paravirtualisé ressemblerait à ce qui suit. Noter l'utilisation de “tap:aio”.pour le périphérique paravirtualisé si une image basée fichier est utilisée.
disk = [ "file:/var/lib/libvirt/images/rhel5_64_fv.dsk,hda,w",
"tap:aio:/var/lib/libvirt/images/UserStorage1.dsk,xvda,w" ]
disk=” dans une liste avec une virgule de séparation.
xvd' device, that is for your second storage entity it would be 'xvdb' instead of 'xvda'.
disk = [ "file:/var/lib/libvirt/images/rhel5_64_fv.dsk,hda,w",
"tap:aio:/var/lib/libvirt/images/UserStorage1.dsk,xvda,w",
"tap:aio:/var/lib/libvirt/images/UserStorage2.dsk,xvdb,w" ]
# cat /proc/partitions major minor #blocks name 3 0 10485760 hda 3 1 104391 hda1 3 2 10377990 hda2 202 0 64000 xvda 202 1 64000 xvdb 253 0 8257536 dm-0 253 1 2031616 dm-1
/etc/fstab dans les invités pour monter les périphériques et les partitions en cours d'initialisation.
# mkdir /mnt/pvdisk_xvda # mkdir /mnt/pvdisk_xvdb # mount /dev/xvda /mnt/pvdisk_xvda # mount /dev/xvdb /mnt/pvdisk_xvdb # df /mnt Filesystem 1K-blocks Used Available Use% Mounted on /dev/xvda 64000 15 63985 1% /mnt/pvdisk_xvda /dev/xvdb 64000 15 63985 1% /mnt/pvdisk_xvdb
Téléchargez les pilotes
yum command.
# yum install virtio-win
virtio-win.iso, dans le répertoire /usr/share/virtio-win/.
Installez les pilotes paravirtualisés
virt-manager pour monter une image CD-ROM pour un invité Windows » to add a CD-ROM image with virt-manager and then install the drivers.
virt-manager pour monter une image CD-ROM pour un invité WindowsOpen virt-manager and the virtualized guest
virt-manager, select your virtualized guest from the list by double clicking the guest name.
Open the hardware tab

Select the device type

Select the ISO file
/usr/share/virtio-win/virtio-win.iso.

Disc assigned

Reboot
Open My Computer

Select the correct installation files
RHEV-Block.msi for 32-bit guests or RHEV-Block64.msi for 64-bit guests),
RHEV-Network.msi for 32-bit guests or RHEV-Block64.msi for 64-bit guests),
Install the block device driver
Start the block device driver installation
RHEV-Block.msi or RHEV-Block64.msi.

Confirm the exception

Finish

Install the network device driver
Start the network device driver installation
RHEV-Network.msi or RHEV-Network64.msi.

Performance setting
| Value | Action |
|---|---|
| 0 | Disable TCP timestamps and window scaling. |
| 1 | Enable TCP window scaling. |
| 2 | Enable TCP timestamps. |
| 3 | Enable TCP timestamps and window scaling. |

Confirm the exception

Finish

Reboot
viostor.vfd en tant que disquette.
Windows Server 2003
Windows Server 2008
virtio driver instead of virtualized IDE driver. This example edits libvirt configuration files. Alternatively, virt-manager, virsh attach-disk or virsh attach-interface can add a new device using the para-virtualized drivers Section 13.4, « Utilisation de pilotes paravirtualisés KVM pour de nouveaux périphériques. ».
<disk type='file' device='disk'> <source file='/var/lib/libvirt/images/disk1.img'/> <target dev='vda' bus='ide'/> </disk>
virtio.
<disk type='file' device='disk'>
<source file='/var/lib/libvirt/images/disk1.img'/>
<target dev='vda' bus='virtio'/>
</disk>
virt-manager.
virsh attach-disk ou virsh attach-interface peuvent être utilisées pour attacher des périphériques en utilisant les pilotes paravirtualisés.
virt-manager.



Enable the Intel VT-d extensions
Activate Intel VT-d in the kernel
intel_iommu=on parameter to the kernel line of the kernel line in the /boot/grub/grub.conf file.
grub.conf file with Intel VT-d activated.
default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title Red Hat Enterprise Linux Server (2.6.18-190.el5) root (hd0,0) kernel /vmlinuz-2.6.18-190.el5 ro root=/dev/VolGroup00/LogVol00 intel_iommu=on initrd /initrd-2.6.18-190.el5.img
Ready to use
Enable AMD IOMMU extensions
iommu=on parameter to the hypervisor command line. Modify the /boot/grub/grub.conf file as follows to enable PCI passthrough:
default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title Red Hat Enterprise Linux Server (2.6.18-192.el5) root (hd0,0) kernel /xen.gz-2.6.18-192.el5 iommu=on module /vmlinuz-2.6.18-192.el5xen ro root=/dev/VolGroup00/LogVol00 module /initrd-2.6.18-190.el5xen.img
pci_8086_3a6c, and a fully virtualized guest named win2k3.
Identify the device
virsh nodedev-list command lists all devices attached to the system. The --tree option is useful for identifying devices attached to the PCI device (for example, disk controllers and USB controllers).
# virsh nodedev-list --tree
# virsh nodedev-list | grep pci
**** is a four digit hexadecimal code):
pci_8086_****
lspci output to lspci -n (which turns off name resolution) output can assist in deriving which device has which device identifier code.
virsh nodedev-dumpxml command:
# virsh nodedev-dumpxml pci_8086_3a6c
<device>
<name>pci_8086_3a6c</name>
<parent>computer</parent>
<capability type='pci'>
<domain>0</domain>
<bus>0</bus>
<slot>26</slot>
<function>7</function>
<id='0x3a6c'>82801JD/DO (ICH10 Family) USB2 EHCI Controller #2</product>
<vendor id='0x8086'>Intel Corporation</vendor>
</capability>
</device># virsh nodedev-dettach pci_8086_3a6c Device pci_8086_3a6c dettached
$ printf %x 0 0 $ printf %x 26 1a $ printf %x 7 7
bus='0x00' slot='0x1a' function='0x7'
virsh edit (or virsh attach device) and add a device entry in the <devices> section to attach the PCI device to the guest. Only run this command on offline guests. Red Hat Enterprise Linux does not support hotplugging PCI devices at this time.
# virsh edit win2k3
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x00' slot='0x1a' function='0x7'/>
</source>
</hostdev>ehci driver is loaded by default for the USB PCI controller.
$ readlink /sys/bus/pci/devices/0000\:00\:1d.7/driver ../../../bus/pci/drivers/ehci_hcd
$ virsh nodedev-dettach pci_8086_3a6c
$ readlink /sys/bus/pci/devices/0000\:00\:1d.7/driver ../../../bus/pci/drivers/pci-stub
# setsebool -P virt_use_sysfs 1
# virsh start win2k3
virt-manager tool. The following procedure adds a 2 port USB controller to a virtualized guest.
Identify the device
virsh nodedev-list command lists all devices attached to the system. The --tree option is useful for identifying devices attached to the PCI device (for example, disk controllers and USB controllers).
# virsh nodedev-list --tree
# virsh nodedev-list | grep pci
**** is a four digit hexadecimal code):
pci_8086_****
lspci output to lspci -n (which turns off name resolution) output can assist in deriving which device has which device identifier code.
Detach the PCI device
# virsh nodedev-dettach pci_8086_3a6c Device pci_8086_3a6c dettached
Power off the guest
Open the hardware settings

Add the new device

Select a PCI device

Confirm the new device

--host-device parameter.
Identify the PCI device
virsh nodedev-list command lists all devices attached to the system. The --tree option is useful for identifying devices attached to the PCI device (for example, disk controllers and USB controllers).
# virsh nodedev-list --tree
# virsh nodedev-list | grep pci
**** is a four digit hexadecimal code):
pci_8086_****
lspci output to lspci -n (which turns off name resolution) output can assist in deriving which device has which device identifier code.
Add the device
virsh nodedev command as the value for the --host-device parameter.
# virt-install \
-n hostdev-test -r 1024 --vcpus 2 \
--os-variant fedora11 -v --accelerate \
-l http://download.fedoraproject.org/pub/fedora/linux/development/x86_64/os \
-x 'console=ttyS0 vnc' --nonetworks --nographics \
--disk pool=default,size=8 \
--debug --host-device=pci_8086_10bd
Complete the installation
/etc/modprobe.conf hides the device from dom0. Either the bnx2 module must be reloaded or the host must be restarted.
install bnx2 /sbin/modprobe pciback; /sbin/modprobe --first-time --ignore-install bnx2 options pciback hide=(0000:09:00.0)
/etc/modprobe.conf to hide multiple devices.
options pciback hide=(0000:09:00.0)(0000:0a:04.1)
virsh (Section 14.1, « Adding a PCI device with virsh » - Step 5);
virt-manager (Section 14.2, « Adding a PCI device with virt-manager »); or
virt-install (Section 14.3, « PCI passthrough with virt-install »)
/boot/grub/grub.conf file to enable SR-IOV. To enable SR-IOV with Xen for Intel systems append the pci_pt_e820_access=on parameter to the kernel.
default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title Red Hat Enterprise Linux Server (2.6.18-192.el5xen) root (hd0,0) kernel /xen.gz-2.6.18-192.el5 iommu=1 module /vmlinuz-2.6.18-192.el5xen ro root=/dev/VolGroup00/LogVol00 pci_pt_e820_access=on module /initrd-2.6.18-192.el5xen.img
Enable Intel VT-d in BIOS and in the kernel
Verify support
lspci command to verify if the device was detected.
# lspci 03:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01) 03:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
Start the SR-IOV kernel modules
modprobe command. The Intel 82576 network interface card uses the igb driver kernel module.
# modprobe igb [<option>=<VAL1>,<VAL2>,] # lsmod |grep igb igb 87592 0 dca 6708 1 igb
Activate Virtual Functions
max_vfs parameter of the igb module allocates the maximum number of Virtual Functions. The max_vfs parameter causes the driver to spawn, up to the value of the parameter in, Virtual Functions. For this particular card the valid range is 0 to 7.
# modprobe -r igb
max_vfs set to 1 or any number of Virtual Functions up to the maximum supported by your device.
# modprobe igb max_vfs=1
Inspect the new Virtual Functions
lspci command, list the newly added Virtual Functions attached to the Intel 82576 network device.
# lspci | grep 82576 03:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01) 03:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01) 03:10.0 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01) 03:10.1 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
-n parameter of the lspci command.
# lspci -n | grep 03:00.0 03:00.0 0200: 8086:10c9 (rev 01) # lspci -n | grep 03:10.0 03:10.0 0200: 8086:10ca (rev 01)The Physical Function corresponds to
8086:10c9 and the Virtual Function to 8086:10ca.
Find the devices with virsh
virsh nodedev-list command to list available host devices.
# virsh nodedev-list | grep 8086
pci_8086_10c9
pci_8086_10c9_0
pci_8086_10ca
pci_8086_10ca_0
[output truncated]
Get advanced details
pci_8086_10c9 is one of the Physical Functions and pci_8086_10ca_0 is the first corresponding Virtual Function for that Physical Function. Use the virsh nodedev-dumpxml command to get advanced output for both devices.
# virsh nodedev-dumpxml pci_8086_10ca
# virsh nodedev-dumpxml pci_8086_10ca_0
<device>
<name>pci_8086_10ca_0</name>
<parent>pci_8086_3408</parent>
<driver>
<name>igbvf</name>
</driver>
<capability type='pci'>
<domain>0</domain>
<bus>3</bus>
<slot>16</slot>
<function>1</function>
<product id='0x10ca'>82576 Virtual Function</product>
<vendor id='0x8086'>Intel Corporation</vendor>
</capability>
</device>
pci_8086_10ca_0 to the guest in Étape 8. Note the bus, slot and function parameters of the Virtual Function, these are required for adding the device.
Add the Virtual Function to the guest
virsh nodedev-dumpxml pci_8086_10ca_0 command to calculate the values for the configuration file. Convert slot and function values to hexadecimal values (from decimal) to get the PCI bus addresses. Append "0x" to the beginning of the output to tell the computer that the value is a hexadecimal number.
printf utility to convert decimal values to hexadecimal values.
$ printf %x 3 3 $ printf %x 16 10 $ printf %x 1 1
bus='0x03' slot='0x10' function='0x01'
virsh edit command. This example edits a guest named MyGuest.
# virsh edit MyGuest
devices section of the XML configuration file.
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address bus='0x03' slot='0x10' function='0x01'/>
</source>
</hostdev>
Restart
# virsh start MyGuest
# virsh start test error: Failed to start domain test error: internal error unable to start guest: char device redirected to /dev/pts/2 get_real_device: /sys/bus/pci/devices/0000:03:10.0/config: Permission denied init_assigned_device: Error: Couldn't get real device (03:10.0)! Failed to initialize assigned device host=03:10.0
ntpd :
# service ntpd start
# chkconfig ntpd on
ntpd devrait minimiser les effets des variations de l'horloge dans tous les cas de figure.
constant_tsc est présente. Pour déterminer si votre CPU possède la balise constant_tsc, exécutez la commande suivante :
$ cat /proc/cpuinfo | grep constant_tsc
constant_tsc. Si aucune sortie ne vous est retournée, veuillez suivre les instructions ci-dessous.
constant_tsc, veuillez désactiver toutes les fonctionnalités de gestion de l'alimentation (BZ#513138). Chaque système possède un certain nombre de compteurs pour garder trace de l'heure. Le TSC n'est pas toujours stable sur l'hôte, ce qui peut parfois être causé par les changements de cpufreq, par un état deep C, ou par une migration vers un hôte ayant un TSC plus rapide. Pour arrêter les états deep C, qui peuvent provoquer l'arrêt du TSC, ajoutez "processor.max_cstate=1" aux options de démarrage du noyau dans le fichier grub.conf sur l'hôte :
term Red Hat Enterprise Linux Server (2.6.18-159.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-159.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet processor.max_cstate=1
cpufreq (seulement nécessaire sur les hôtes n'ayant pas constant_tsc) en modifiant le fichier de configuration /etc/sysconfig/cpuspeed et en réglant les variables MIN_SPEED et MAX_SPEED sur les plus hautes fréquences disponibles. Les limites valides peuvent être trouvées dans les fichiers /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies.
| Red Hat Enterprise Linux | Paramètres noyau supplémentaires de l'invité |
|---|---|
| 5.4 AMD64/Intel 64 avec horloge paravirtualisée | Paramètres supplémentaires non-requis |
| 5.4 AMD64/Intel 64 sans horloge paravirtualisée | divider=10 notsc lpj=n |
| 5.4 x86 avec horloge paravirtualisée | Paramètres supplémentaires non-requis |
| 5.4 x86 sans horloge paravirtualisée | divider=10 clocksource=acpi_pm lpj=n |
| 5.3 AMD64/Intel 64 | divider=10 notsc |
| 5.3 x86 | divider=10 clocksource=acpi_pm |
| 4.8 AMD64/Intel 64 | notsc divider=10 |
| 4.8 x86 | clock=pmtmr divider=10 |
| 3.9 AMD64/Intel 64 | Paramètres supplémentaires non-requis |
| 3.9 x86 | Paramètres supplémentaires non-requis |
boot.ini :
/use pmtimer
boot.ini file is no longer used from Windows Vista and newer. Windows Vista, Windows Server 2008 and Windows 7 use the Boot Configuration Data Editor (bcdedit.exe) to modify the Windows boot parameters.
{default} in the example below) should be changed if the system UUID is different than the default boot device.
C:\Windows\system32>bcdedit /set {default} USEPLATFORMCLOCK on
The operation completed successfully# setenforce 1
AutoFS, NFS, FTP, HTTP, NIS, telnetd, sendmail etc...
/var/lib/libvirt/images/. Si vous utilisez un répertoire distinct pour vos images de machines virtuelles, veillez à inclure votre répertoire dans votre politique SELinux et n'oubliez pas d'en changer le nom avant de démarrer l'installation.
vsftpd.
fstab file, the initrd file or used by the kernel command line. If less privileged users, especially virtualized guests, have write access to whole partitions or LVM volumes.
/dev/sdb). Use partitions (for example, /dev/sdb1) or LVM volumes.
virt_image_t label applied to them. The /var/lib/libvirt/images directory has this label applied to it and its contents by default. This does not mean that images must be stored in this directory; images can be stored anywhere, provided they are labeled with virt_image_t.
NewVolumeName sur le groupe de volumes nommé volumegroup.
# lvcreate -nNewVolumeName-L5G volumegroup
NewVolumeName avec un système de fichiers qui supporte les attributs étendus, tel que ext3.
# mke2fs -j /dev/volumegroup/NewVolumeName
/etc, /var, /sys) ou dans les répertoires de base (/home ou /root). Cet exemple utilise un répertoire nommé /virtstorage
# mkdir /virtstorage
# mount /dev/volumegroup/NewVolumeName /virtstoragesemanage fcontext -a -t xen_image_t "/virtstorage(/.*)?"
semanage fcontext -a -t virt_image_t "/virtstorage(/.*)?"
/etc/selinux/targeted/contexts/files/file_contexts.local, rendant ainsi le changement persistant. La ligne ajoutée peut ressembler à ce qui suit :
/virtstorage(/.*)? system_u:object_r:xen_image_t:s0
/dev/volumegroup/NewVolumeName with the correct label:
# semanage fcontext -a -t xen_image_t /dev/volumegroup/NewVolumeName # restorecon /dev/volumegroup/NewVolumeName
# semanage fcontext -a -t xen_image_t -f -b /dev/sda2 # restorecon /dev/sda2
xend_disable_t place xend dans un mode non confiné après le redémarrage du démon. Il est recommandé de désactiver la protection pour un démon unique plutôt que pour tout le système. De même il vaut mieux ne pas ré-étiqueter les répertoires comme xen_image_t que vous utiliserez ailleurs.
| SELinux Boolean | Description |
|---|---|
| allow_unconfined_qemu_transition | Default: off. This boolean controls whether KVM guests can be transitioned to unconfined users. |
| qemu_full_network | Default: on. This boolean controls full network access to KVM guests. |
| qemu_use_cifs | Default: on. This boolean controls KVM's access to CIFS or Samba file systems. |
| qemu_use_comm | Default: off. This boolean controls whether KVM can access serial or parallel communications ports. |
| qemu_use_nfs | Default: on. This boolean controls KVM's access to NFS file systems. |
| qemu_use_usb | Default: on. This boolean allows KVM to access USB devices. |
net.ipv4.ip_forward = 1) is required for virtual bridge devices. Note that installing libvirt enables this variable so it will be enabled when the virtualization packages are installed unless it was manually disabled.
xend/etc/xen/xend-config.sxp.Voici les paramètres que vous pouvez activer ou désactiver dans le fichier de configuration xend-config.sxp:
| Élément | Description |
|---|---|
|
(console-limit)
|
Determines the console server's memory buffer limit and assigns that limit on a per domain basis.
|
|
(min-mem)
|
Détermine le nombre minimum de mégaoctets réservés au domain0 (si vous entrez 0, la valeur ne change pas).
|
|
(dom0-cpus)
|
Détermine le nombre de CPU utilisés par domain0 (par défaut, au moins 1 CPU est assigné).
|
|
(enable-dump)
|
Si activé, Xen crée un fichier de vidage lorsqu'un échec se produit (la valeur par défaut est 0).
|
|
(external-migration-tool)
|
Détermine le script ou l'application qui s'occupe de la migration de périphériques externes. Les scripts doivent se trouver dans le répertoire
/etc/xen/scripts/external-device-migrate.
|
|
(logfile)
|
Détermine l'emplacement du fichier journal (la valeur par défaut est
/var/log/xend.log).
|
|
(loglevel)
|
Filtre les valeurs du mode de journalisation: DEBUG, INFO, WARNING, ERROR ou CRITICAL (la valeur par défaut est DEBUG).
|
|
(network-script)
|
Détermine le script qui active l'environnement de mise en réseau. Les scripts doivent se trouver dans le répertoire
/etc/xen/scripts/.
|
|
(xend-http-server)
|
Active le serveur de gestion des paquets de flux http (par défaut ce paramètre est désactivé).
|
|
(xend-unix-server)
|
Active le serveur de sockets de domaine Unix. Un serveur de sockets est un point d'accès de communication qui traite les connexions réseau de bas niveau et accepte ou rejette les connexions entrantes. La valeur par défaut est réglée sur "Yes".
|
|
(xend-relocation-server)
|
Active le serveur de réadressage pour les migrations entre-machines (par défaut ce paramètre est désactivé).
|
|
(xend-unix-path)
|
Détermine l'emplacement où la commande
xend-unix-server envoie les données (la valeur par défaut est /var/lib/xend/xend-socket)
|
|
(xend-port)
|
Détermine le port utilisé par le serveur de gestion http (la valeur par défaut est 8000).
|
|
(xend-relocation-port)
|
Détermine le port utilisé par le serveur de réadressage (la valeur par défaut est 8002).
|
|
(xend-relocation-address)
|
Détermine les adresses de l'hôte qui sont autorisées pour la migration. La valeur par défaut est la valeur de l'adresse
xend-address.
|
|
(xend-address)
|
Détermine l'adresse à laquelle le serveur de sockets de domaine est lié. La valeur par défaut autorise toutes les connexions.
|
service xend start
service xend stop
service xend restart
service xend status
xend au démarrage.chkconfig pour ajouter le xend au fichier initscript.
chkconfig --level 345 xend
xend va maintenant démarrer aux niveaux d'exécution 3, 4 et 5.
virsh migrate.
# virsh migrateGuestNamelibvirtURI
--live pour la commande virsh migrate.
# virsh migrate--liveGuestNamelibvirtURI
/etc/xen/xend-config.sxp. Par défaut, la migration est désactivée en raison des effets potentiellement indésirables affectant la sécurité en cas de mauvaise configuration. L'ouverture du port de migration permettrait à des hôtes non autorisés d'initier une migration ou une connexion à des ports de migration. Comme il n'existe pas de système d'authentification et d'autorisation spécifique aux requêtes de migration, et que le seul mécanisme de contrôle est basé sur les noms d'hôte et les adresses IP, il faut faire attention à ce que les ports de migration ne soient pas accessibles aux hôtes non autorisés.
/etc/xen/xend-config.sxp pour permettre la migration. Modifier les valeurs si nécessaire, et supprimer les commentaires (avec le symbole #) précédant les paramètres suivants :
(xend-relocation-server yes)no. Changer la valeur de xend-relocation-server sur yes afin d'activer la migration.
(xend-relocation-port 8002)(xend-relocation-port), spécifie le port xend qui doit être utilisé pour l'interface de relocation, si xend-relocation-server est configuré avec yes
xend-relocation-port doit être ouvert sur les deux systèmes.
(xend-relocation-address '')(xend-relocation-address), le xend écoute les commande de migrations sur la connexion relocation-socket pour voir si xend-relocation-server est installé.
(xend-relocation-address) parameter restricts the migration server to only listen to a specific interface. The default value in /etc/xen/xend-config.sxp is an empty string(''). This value should be replaced with a single, valid IP address. For example:
(xend-relocation-address '10.0.0.1')
(xend-relocation-hosts-allow '')(xend-relocation-hosts-allow 'hosts') parameter controls which hostnames can communicate on the relocation port.
xend-relocation-hosts-allow option to restrict access to the migration server.
xend-relocation-port et xend-relocation-address.
(xend-relocation-hosts-allow) doit être une séquence d'expressions régulières séparées par des espaces. Tout hôte qui possède un nom de domaine totalement qualifié ou une adresse IP qui correspond à l'une de ces expressions régulières, sera accepté.
(xend-relocation-hosts-allow) :
(xend-relocation-hosts-allow '^localhost$ ^localhost\\.localdomain$')
# service xend restart
et-virt07 et et-virt08), utilisant tous les deux eth1 comme interface de réseau par défaut, et donc qui utilisent xenbr1 comme pont de réseau Xen. Nous utilisons un disque SCSI attaché localement (/dev/sdb) sur et-virt07 pour le stockage partagé en utilisant NFS.
# mkdir /var/lib/libvirt/images # mount /dev/sdb /var/lib/libvirt/images
/var/lib/libvirt/images/, faites bien attention d'uniquement exporter /var/lib/libvirt/images/ et non pas /var/lib/xen/, car ce répertoire est utilisé par le démon xend ainsi que par d'les autoutils Xen. Partager /var/lib/xen/ risque d'entraîner un comportement ivisiictible.
# cat /etc/exports /var/lib/libvirt/images *(rw,async,no_root_squash)
# showmount -e et-virt07 Export list for et-virt07: /var/lib/libvirt/images *
# virt-install -p -f /var/lib/libvirt/images/testvm1.dsk -s 5 -n\testvm1--vnc -r 1024 -l http://example.com/RHEL5-tree\ Server/x86-64/os/ -b xenbr1
[et-virt08 ~]# brctl show bridge name bridge id STP enabled interfaces xenbr1 8000.feffffffffff no peth1 vif0.1
[et-virt07 ~]# brctl show bridge name bridge id STP enabled interfaces xenbr1 8000.feffffffffff no peth1 vif0.1
[et-virt07 ~]# grep xend-relocation /etc/xen/xend-config.sxp |grep -v '#' (xend-relocation-server yes) (xend-relocation-port 8002) (xend-relocation-address '') (xend-relocation-hosts-allow '')
[et-virt08 ~]# grep xend-relocation /etc/xen/xend-config.sxp |grep -v '#' (xend-relocation-server yes) (xend-relocation-port 8002) (xend-relocation-address '') (xend-relocation-hosts-allow '')
[et-virt07 ~]# lsof -i :8002 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME python 3445 root 14u IPv4 10223 TCP *:teradataordbms (LISTEN)
[et-virt08 ~]# lsof -i :8002 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME python 3252 root 14u IPv4 10901 TCP *:teradataordbms (LISTEN)
/var/lib/libvirt/images directory is available and mounted with networked storage on both hosts. Shared, networked storage is required for migrations.
[et-virt08 ~]# df /var/lib/libvirt/images Filesystem 1K-blocks Used Available Use% Mounted on et-virt07:/var/lib/libvirt/images 70562400 2379712 64598336 4% /var/lib/libvirt/images
[et-virt08 ~]# file /var/lib/libvirt/images/testvm1.dsk /var/lib/libvirt/images/testvm1.dsk: x86 boot sector; partition 1: ID=0x83, active, starthead 1, startsector 63, 208782 sectors; partition 2: ID=0x8e, starthead 0, startsector 208845, 10265535 sectors, code offset 0x48
[et-virt08 ~]# touch /var/lib/libvirt/images/foo [et-virt08 ~]# rm -f /var/lib/libvirt/images/foo
[et-virt07 ~]# virsh list Id Name State ---------------------------------- Domain-0 running
[et-virt07 ~]# virsh starttestvm1Domaintestvm1started
[et-virt07 ~]# virsh list
Id Name State
----------------------------------
Domain-0 running
testvm1 blocked
[et-virt07 images]# time virsh savetestvm1testvm1.sav real 0m15.744s user 0m0.188s sys 0m0.044s
[et-virt07 images]# ls -lrttestvm1.sav -rwxr-xr-x 1 root root 1075657716 Jan 12 06:46testvm1.sav
[et-virt07 images]# virsh list Id Name State ---------------------------------- Domain-0 running
[et-virt07 images]# virsh restore testvm1.sav
[et-virt07 images]# virsh list
Id Name State
----------------------------------
Domain-0 running
testvm1 blocked
domain-id from et-virt08 to et-virt07. The hostname you are migrating to and <domain-id> must be replaced with valid values. This example uses the et-virt08 host which must have SSH access to et-virt07
[et-virt08 ~]# xm migrate --live testvm1 et-virt07
et-virt08
[et-virt08 ~]# virsh list Id Name State ---------------------------------- Domain-0 running
et-virt07:
[et-virt07 ~]# virsh list
Id Name State
----------------------------------
Domain-0 running
testvm1 running
#!/bin/bash while true do touch /var/tmp/$$.log echo `hostname` >> /var/tmp/$$.log echo `date` >> /var/tmp/$$.log cat /var/tmp/$$.log df /var/tmp ls -l /var/tmp/$$.log sleep 3 done
et-virt07:
[et-virt08 ~]# virsh list
Id Name State
----------------------------------
Domain-0 running
testvm1 blocked
et-virt07. Vous pouvez ajouter la commande time pour voir combien de temps la migration dure:
[et-virt08 ~]# xm migrate --live testvm1 et-virt07
# ./doit dhcp78-218.lab.boston.redhat.com Fri Jan 12 02:26:27 EST 2007 Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 2983664 2043120 786536 73% / -rw-r--r-- 1 root root 62 Jan 12 02:26 /var/tmp/2279.log dhcp78-218.lab.boston.redhat.com Fri Jan 12 02:26:27 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 02:26:30 EST 2007 Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 2983664 2043120 786536 73% / -rw-r--r-- 1 root root 124 Jan 12 02:26 /var/tmp/2279.log dhcp78-218.lab.boston.redhat.com Fri Jan 12 02:26:27 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 02:26:30 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 02:26:33 EST 2007 Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 2983664 2043120 786536 73% / -rw-r--r-- 1 root root 186 Jan 12 02:26 /var/tmp/2279.log Fri Jan 12 02:26:45 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 02:26:48 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 02:26:51 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:54:57 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:55:00 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:55:03 EST 2007 Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 2983664 2043120 786536 73% / -rw-r--r-- 1 root root 744 Jan 12 06:55 /var/tmp/2279.log dhcp78-218.lab.boston.redhat.com Fri Jan 12 02:26:27 EST 2007
et-virt08:
[et-virt08 ~]# virsh list Id Name State ---------------------------------- Domain-0 running
et-virt07:
[et-virt07 images]# virsh list
Id Name State
----------------------------------
Domain-0 running
testvm1 blocked
et-virt07 vers et-virt08. Initiater une migration de et-virt07 vers et-virt08:
[et-virt07 images]# xm migrate --live testvm1 et-virt08
[et-virt07 images]# virsh list Id Name State ---------------------------------- Domain-0 running
# ./doit dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:57:53 EST 2007 Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 2983664 2043120 786536 73% / -rw-r--r-- 1 root root 62 Jan 12 06:57 /var/tmp/2418.log dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:57:53 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:57:56 EST 2007 Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 2983664 2043120 786536 73% / -rw-r--r-- 1 root root 124 Jan 12 06:57 /var/tmp/2418.log dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:57:53 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:57:56 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:58:00 EST 2007 Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 2983664 2043120 786536 73% / -rw-r--r-- 1 root root 186 Jan 12 06:57 /var/tmp/2418.log dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:57:53 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:57:56 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:58:00 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 02:30:00 EST 2007 Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 2983664 2043120 786536 73% / -rw-r--r-- 1 root root 248 Jan 12 02:30 /var/tmp/2418.log dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:57:53 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:57:56 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:58:00 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 02:30:00 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 02:30:03 EST 2007 Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 2983664 2043120 786536 73% / -rw-r--r-- 1 root root 310 Jan 12 02:30 /var/tmp/2418.log dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:57:53 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:57:56 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:58:00 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 02:30:00 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 02:30:03 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 02:30:06 EST 2007 Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 2983664 2043120 786536 73% / -rw-r--r-- 1 root root 372 Jan 12 02:30 /var/tmp/2418.log
et-virt07 vérifiez sur et-virt08 que la machine virtuelle a bien demarré:
[et-virt08 ~]# virsh list
Id Name State
----------------------------------
Domain-0 running
testvm1 blocked
[et-virt08 ~]# time virsh migrate --live testvm1 et-virt07
real 0m10.378s
user 0m0.068s
sys 0m0.052s
xm migrate command). Une migration en direct peut être effectuée à partir de la même commande. Toutefois, il y a quelques modifications à apporter au fichier de configuration xend-config . Cet exemple identifie les entrées à modifier afin que la migration soit réussie :
(xend-relocation-server yes)(xend-relocation-port 8002)xend utilise pour migrer. Utiliser cette valeur sauf si l'environnement réseau requiert une valeur personnalisée. Supprimer le symbole de commentaire pour l'activer.
(xend-relocation-address )xend-relocation-server . L'hyperviseur Xen n'écoute que le trafic réseau sur l'interface spécifiée.
(xend-relocation-hosts-allow )(xend-relocation-hosts-allow- '^localhost\\.localdomain$' )>
virsh. La commande migrate accepte les paramètres dans le format suivant :
# virsh migrate --live GuestName DestinationURLGuestName représente le nom de l'invité que vous souhaitez migrer.
DestinationURL est l'URL ou le nom d'hôte du système destinataire. Le système destinataire doit exécuter la même version de Red Hat Enterprise Linux, utiliser le même hyperviseur, et doit avoir libvirt en cours d'exécution.
test1.example.com à test2.example.com. Changez les noms d'hôtes pour votre environnement. Cet exemple migre une machine virtuelle nommée RHEL4test.
Vérifier que l'invité est en cours d'exécution :
test1.example.com, vérifiez que RHEL4test est bien en cours d'exécution :
[root@test1 ~]# virsh list Id Name State ---------------------------------- 10 RHEL4 running
Migrez l'invité
test2.example.com. Ajoutez ensuite /system à la fin de l'URL de destination afin de dire à libvirt que vous avez besoin d'un accès total.
# virsh migrate --live RHEL4test qemu+ssh://test2.example.com/systemAttendez
virsh ne rapporte que les erreurs. L'invité continue de s'exécuter sur l'hôte source jusqu'à ce que la migration soit complète.
Vérifiez si l'invité est sur l'hôte destinataire
test2.example.com, vérifiez que RHEL4test est bien en cours d'exécution :
[root@test2 ~]# virsh list Id Name State ---------------------------------- 10 RHEL4 running
virt-manager.













ssh ou TLS et SSL.
ssh offre un protocole de réseau crypté qui peut procurer des fonctions de gestion sécurisées vers des serveurs de virtualisation à distance. Cette méthode utilise la connexion de gestion libvirt traitée par transmission tunnel sur une connexion SSH pour gérer les machines distantes. L'authentification est réalisée en utilisant la cryptographie de clé publique SSH ainsi que des mots de passe ou phrases passe rassemblés par votre agent SSH local. En addition, la console VNC de chaque machine virtuelle invitée est traitée par transmission tunnel sur SSH.
virt-manager virt-manager must run as the user who owns the keys to connect to the remote host. That means, if the remote systems are managed by a non-root user virt-manager must be run in unprivileged mode. If the remote systems are managed by the local root user then the SSH keys must be own and created by root.
virt-manager.
Optional: Changing user
$ su -
Generating the SSH key pair
virt-manager is used. This example uses the default key location, in the ~/.ssh/ directory.
$ ssh-keygen -t rsa
Coping the keys to the remote hosts
root@example.com).
# ssh-copy-id -i ~/.ssh/id_rsa.pub root@example.com root@example.com's password: Now try logging into the machine, with "ssh 'root@example.com'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting
Optional: Add the passphrase to the ssh-agent
ssh-agent, if required. On the local host, use the following command to add the passphrase (if there was one) to enable password-less login.
# ssh-add ~/.ssh/id_rsa.pub
libvirt (libvirtd)libvirt daemon provide an interface for managing virtual machines. You must have the libvirtd daemon installed and running on every remote host that needs managing.
$ ssh root@somehost
# chkconfig libvirtd on
# service libvirtd start
libvirtd et SSH soient configurés, vous devrez pouvoir accéder ou gérer à distance vos machines virtuelles. Vous devriez également pouvoir accéder à vos invités par la commande VNC à ce niveau.
libvirt management connection opens a TCP port for incoming connections, which is securely encrypted and authenticated based on x509 certificates. In addition the VNC console for each guest virtual machine will be setup to use TLS with x509 certificate authentication.
libvirt /etc/xen/xend-config.sxp. Supprimer le commentaire sur le paramètre de configuration (vnc-tls 1) dans le fichier de configuration.
/etc/xen/vnc directory needs the following 3 files:
ca-cert.pem - The CA certificate
server-cert.pem - The Server certificate signed by the CA
server-key.pem - The server private key
(vnc-x509-verify 1) parameter.
virt-manager et virsh libvirt de TLS, les certificats client et CA doivent être placés dans /etc/pki. Pour davantage d'informations sur ce sujet veuillez consulter http://libvirt.org/remote.html
virt-manager user interface, use the '' transport mechanism option when connecting to a host.
virsh, l'URI a le format suivant :
qemu://hostname.guestname/system pour KVM.
xen://hostname.guestname/ pour Xen.
$HOME/.pki, c'est à dire les trois fichiers suivants:
ca-cert.pem - Le certificate CA.
libvirt-vnc ou clientcert.pem - Le certificat client signé par le CA.
libvirt-vnc ou clientkey.pem - La clé privée du client.
libvirt prend en charge les modes de transports suivants :
/var/run/libvirt/libvirt-sock et /var/run/libvirt/libvirt-sock-ro (pour les connections à lecture-seule).
libvirtd) doit être en cours d'exécution sur la machine distante. Le port 22 doit être ouvert pour permettre l'accès SSH. Vous devriez utiliser une sorte de gestion de clés ssh (par exemple, l'utilitaire ssh-agent), sinon vous devrez saisir un mot de passe.
ext est utilisé pour tout programme externe qui peut se connecter aux machines distantes en utilisant des moyens autres que ceux de libvirt. Ce paramètre n'est pas pris en charge.
virsh et libvirt pour se connecter à un hôte distant. Les URI peuvent aussi être utilisés avec le paramètre --connect pour la commande virsh afin d'exécuter des commandes ou migrations uniques sur des hôtes distants.
driver[+transport]://[username@][hostname][:port]/[path][?extraparameters]
towada, à l'aide du transport SSH et du nom d'utilisateur SSH ccurran.
xen+ssh://ccurran@towada/
towada à l'aide de TLS.
xen://towada/
towada using TLS. The no_verify=1 tells libvirt not to verify the server's certificate.
xen://towada/?no_verify=1
towada à l'aide de SSH.
qemu+ssh://towada/system
qemu+unix:///system?socket=/opt/libvirt/run/libvirt/libvirt-sock
test+tcp://10.1.1.10:5000/default
| Nom | Mode de transport | Description | Exemple d'utilisation |
|---|---|---|---|
| name | tous les modes | Nom passé à la fonction à distance virConnectOpen. Le nom est normalement formé en supprimant le transport, le nom d'hôte, le numéro du port, le nom d'utilisateur ainsi que d'autres paramètres supplémentaires depuis l'URI distant, mais dans certains cas très complexes, il peut s'avérer qu'il vaille mieux de fournir le nom de manière explicite. | name=qemu:///system |
| commande | ssh et ext | Commande externe. Ceci est requis pour le transport ext. Pour ssh, il s'agit par défaut de ssh. La commande est cherchée dans le PATH. | command=/opt/openssh/bin/ssh |
| socket | unix et ssh | Chemin d'accès au socket de domaine UNIX, qui remplace celui par défaut. Pour le transport ssh, ceci est passé à la commande à distance netcat (voir netcat). | socket=/opt/libvirt/run/libvirt/libvirt-sock |
| netcat | ssh |
La commande
netcat peut être utilisée afin de se connecter à des systèmes distants. Le paramètre netcat par défaut utilise la commande nc. Pour le transport SSH, libvirt construit une commande SSH en utilisant la forme ci-dessous :
Les paramètres
port, username et hostname peuvent être spécifiés comme faisant partie de l'URI distant. command, netcat et socket proviennent d'autres paramètres supplémentaires.
| netcat=/opt/netcat/bin/nc |
| no_verify | tls | If set to a non-zero value, this disables client checks of the server's certificate. Note that to disable server checks of the client's certificate or IP address you must change the libvirtd configuration. | no_verify=1 |
| no_tty | ssh | Si réglé sur une valeur différente de zéro, ceci empêche ssh de demander un mot de passe si la connexion automatique à une machine distante n'est pas possible (pour l'utilisation de ssh-agent ou similaire). Utiliser ceci lorsque vous n'avez pas accès à un terminal - par exemple dans un programme graphique utilisant libvirt. | no_tty=1 |
Table des matières
vmstat
iostat
lsof
# lsof -i :5900 xen-vncfb 10635 root 5u IPv4 218738 TCP grumble.boston.redhat.com:5900 (LISTEN)
qemu-img
systemTap
crash
xen-gdbserver
sysrq
sysrq t
sysrq w
sysrq c
brtcl
# brctl show
bridge name bridge id STP enabled interfaces
xenbr0 8000.feffffffffff no vif13.0
pdummy0
vif0.0
# brctl showmacs xenbr0 port no mac addr is local? aging timer 1 fe:ff:ff:ff:ff:ff yes 0.00
# brctl showstp xenbr0 xenbr0 bridge id 8000.feffffffffff designated root 8000.feffffffffff root port 0 path cost 0 max age 20.00 bridge max age 20.00 hello time 2.00 bridge hello time 2.00 forward delay 0.00 bridge forward delay 0.00 aging time 300.01 hello timer 1.43 tcn timer 0.00 topology change timer 0.00 gc timer 0.02 flags vif13.0 (3) port id 8003 state forwarding designated root 8000.feffffffffff path cost 100 designated bridge 8000.feffffffffff message age timer 0.00 designated port 8003 forward delay timer 0.00 designated cost 0 hold timer 0.43 flags pdummy0 (2) port id 8002 state forwarding designated root 8000.feffffffffff path cost 100 designated bridge 8000.feffffffffff message age timer 0.00 designated port 8002 forward delay timer 0.00 designated cost 0 hold timer 0.43 flags vif0.0 (1) port id 8001 state forwarding designated root 8000.feffffffffff path cost 100 designated bridge 8000.feffffffffff message age timer 0.00 designated port 8001 forward delay timer 0.00 designated cost 0 hold timer 0.43 flags
ifconfig
tcpdump
ps
pstree
top
kvmtrace
kvm_stat
xentop
xm dmesg
xm log
virsh est un outil d'interface de ligne de commande utilisé pour gérer les invités et l'hyperviseur.
libvirt et opère comme une alternative à la commande xm et au gestionnaire graphique d'invités (virt-manager). virshpeut être utilisé en mode lecture seule par les utilisateurs non-privilégiés. Vous pouvez aussi utiliser virsh pour exécuter des scripts pour les machines invitées.
| Commande | Description |
|---|---|
help
| Impression des informations d'aide de base. |
list
| Liste tous les invités. |
dumpxml
| Affichage des fichiers de configuration pour l'invité. |
create
| Création d'un invité depuis un fichier de configuration XML et démarrage du nouvel invité. |
start
| Démarrage d'un invité inactif. |
destroy
| Force un invité à s'arrêter. |
define
| Affichage d'un fichier de configuration XML pour un invité. |
domid
| Displays the guest's ID. |
domuuid
| Displays the guest's UUID. |
dominfo
| Affichage des informations des invités. |
domname
| Displays the guest's name. |
domstate
| Affichage de l'état d'un invité. |
quit
| Quitter le terminal interactif. |
reboot
| Redémarrage d'un invité. |
restore
| Restauration d'un invité précédemment enregistré stocké dans un fichier. |
resume
| Reprise d'un invité mis sur pause. |
save
| Enregistre l'état présent d'un invité sur un fichier. |
shutdown
| Arrêt gracieux d'un invité. |
suspend
| Mise sur pause d'un invité. |
undefine
| Supprime tous les fichiers associés à un invité. |
migrate
| Migration d'un invité vers un autre hôte. |
virsh suivantes gèrent l'invité et les ressources des hyperviseurs :
| Commande | Description |
|---|---|
setmem
| Paramètre la mémoire allouée pour un invité. |
setmaxmem
| Limite la quantité de mémoire maximum pour l'hyperviseur. |
setvcpus
| Change le nombre de CPU virtuels assignés à un invité. |
vcpuinfo
| Affichage des informations de CPU virtuels d'un invité. |
vcpupin
| Configure l'affinité des CPU virtuels d'un invité. |
domblkstat
| Affichage des statistiques de périphérique de traitement par blocs pour un invité en cours d'exécution. |
domifstat
| Affichage des statistiques d'interface réseau pour un invité en cours d'exécution. |
attach-device
| Attache un périphérique à un invité en utilisant une définition de périphérique dans un fichier XML. |
attach-disk
| Attache un nouveau périphérique de disque à un invité. |
attach-interface
| Attache une nouvelle interface réseau à un invité. |
detach-device
|
Détache un périphérique d'un invité, nécessite le même tyoe de description XML que la commande attach-device.
|
detach-disk
| Détache un périphérique de disque d'un invité. |
detach-interface
| Détache une interface réseau d'un invité. |
virsh :
| Commande | Description |
|---|---|
version
|
Affiche la version de virsh :
|
nodeinfo
| Affiche les informations relatives à l'hyperviseur |
virsh :
# virsh connect {hostname OR URL}<name> est le nom de la machine de l'hyperviseur. Si vous voulez initier une connexion en lecture-seule, exécutez la commande ci-dessus avec -readonly.
virsh:
# virsh dumpxml {domain-id, domain-name or domain-uuid}stdout). You can save the data by piping the output to a file. An example of piping the output to a file called guest.xml:
# virsh dumpxmlThis fileGuestID>guest.xml
guest.xml can recreate the guest (refer to Editing a guest's configuration file. You can edit this XML configuration file to configure additional devices or to deploy additional guests. Refer to Section 33.1, « Utilisation de fichiers de configuration XML à l'aide de virsh » for more information on modifying files created with virsh dumpxml.
virsh dumpxml :
# virsh dumpxml r5b2-mySQL01
<domain type='xen' id='13'>
<name>r5b2-mySQL01</name>
<uuid>4a4c59a7ee3fc78196e4288f2862f011</uuid>
<bootloader>/usr/bin/pygrub</bootloader>
<os>
<type>linux</type>
<kernel>/var/lib/libvirt/vmlinuz.2dgnU_</kernel>
<initrd>/var/lib/libvirt/initrd.UQafMw</initrd>
<cmdline>ro root=/dev/VolGroup00/LogVol00 rhgb quiet</cmdline>
</os>
<memory>512000</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<interface type='bridge'>
<source bridge='xenbr0'/>
<mac address='00:16:3e:49:1d:11'/>
<script path='vif-bridge'/>
</interface>
<graphics type='vnc' port='5900'/>
<console tty='/dev/pts/4'/>
</devices>
</domain>
dumpxml option (refer to Création d'un vidage XML de machine virtuelle (fichier de configuration)). To create a guest with virsh from an XML file:
# virsh create configuration_file.xmldumpxml option (refer to Création d'un vidage XML de machine virtuelle (fichier de configuration)) guests can be edited either while they run or while they are offline. The virsh edit command provides this functionality. For example, to edit the guest named softwaretesting:
# virsh edit softwaretesting$EDITOR (réglé par défaut sur vi).
virsh :
# virsh suspend {domain-id, domain-name or domain-uuid}resume (Reprise d'une machine virtuelle ) option.
virsh à l'aide de l'option resume :
# virsh resume {domain-id, domain-name or domain-uuid}suspend et resume.
virsh :
# virsh save {domain-name, domain-id or domain-uuid} filenamerestore (Restauration d'un invité) option. Save is similar to pause, instead of just pausing a guest the present state of the guest is saved.
virsh save command (Sauvegarder un invité) using virsh:
# virsh restore filenamevirsh :
# virsh shutdown {domain-id, domain-name or domain-uuid}on_shutdown parameter in the guest's configuration file.
virsh :
#virsh reboot {domain-id, domain-name or domain-uuid}on_reboot element in the guest's configuration file.
virsh :
# virsh destroy {domain-id, domain-name or domain-uuid}virsh destroy can corrupt guest file systems . Use the destroy option only when the guest is unresponsive. For para-virtualized guests, use the shutdown option(Arrêt d'un invité) instead.
# virsh domid {domain-name or domain-uuid}# virsh domname {domain-id or domain-uuid}# virsh domuuid {domain-id or domain-name}virsh domuuid :
# virsh domuuid r5b2-mySQL01 4a4c59a7-ee3f-c781-96e4-288f2862f011
virsh with the guest's domain ID, domain name or UUID you can display information on the specified guest:
# virsh dominfo {domain-id, domain-name or domain-uuid}virsh dominfo :
# virsh dominfo r5b2-mySQL01 id: 13 name: r5b2-mysql01 uuid: 4a4c59a7-ee3f-c781-96e4-288f2862f011 os type: linux state: blocked cpu(s): 1 cpu time: 11.0s max memory: 512000 kb used memory: 512000 kb
# virsh nodeinfo
virsh nodeinfo :
# virsh nodeinfo CPU model x86_64 CPU (s) 8 CPU frequency 2895 Mhz CPU socket(s) 2 Core(s) per socket 2 Threads per core: 2 Numa cell(s) 1 Memory size: 1046528 kb
virsh:
# virsh list
--inactive liste les invités inactifs (les invités qui ont été définis mais qui ne sont pas actuellement actifs), et
--all, qui liste tous les invité. Par exemple :
# virsh list --all Id Name State ---------------------------------- 0 Domain-0 running 1 Domain202 paused 2 Domain010 inactive 3 Domain9600 crashed
virsh list est catégorisée comme étant un des six états (listés ci-dessous).
running fait référence aux invités qui sont actuellement actifs sur un CPU.
blocked sont bloqués, et ne sont pas en cours d'exécution ou ne peuvent pas être exécutés. Ceci est provoqué par un invité attendant des E/S (un statut d'attente traditionnel) ou par des invités en mode veille.
paused liste les domaines qui sont en pause. Ceci arrive lorsqu'un administrateur utilise le bouton pause dans virt-manager, xm pause ou virsh suspend. Lorsqu'un invité est mis sur pause, il consomme de la mémoire ainsi que d'autres ressources, mais il est inéligible pour la planification et les ressources CPU de l'hyperviseur.
shutdown sert aux invités en train de s'éteindre. L'invité reçoit un signal d'arrêt et devrait être en train de procéder à un arrêt gracieux de ses opérations. Ceci peut ne pas fonctionner sur tous les systèmes d'exploitation ; certains systèmes ne répondent pas à ces signaux.
dying sont hors-service, ce qui est un état dans lequel le domaine ne s'est pas complètement arrêté ou dans lequel il est en échec.
crashed ont échoué en cours d'exécution et n'ont plus cours. Cet état n'arrive que si l'invité a été configuré de manière a ne pas redémarrer lorsqu'il se trouve en échec.
virsh:
# virsh vcpuinfo {domain-id, domain-name or domain-uuid}virsh vcpuinfo :
# virsh vcpuinfo r5b2-mySQL01 VCPU: 0 CPU: 0 State: blocked CPU time: 0.0s CPU Affinity: yy
# virsh vcpupin domain-id vcpu cpulistdomain-id parameter is the guest's ID number or name.
vcpu dénombre combien de CPU virtualisés sont alloués à l'invité. Le paramètre vcpu doit être fourni.
vcpu est une liste des numéros d'identifiant de CPU physiques séparés par des virgules. Le paramètre cpulist détermine sur quels CPU peuvent être exécutés les VCPU.
virsh :
# virsh setvcpus {domain-name, domain-id or domain-uuid} countcount ne peut pas excéder le compte au-dessus du montant spécifié lorsque l'invité a été créé.
virsh :
# virsh setmem {domain-id or domain-name} count
virsh domblkstat afin d'afficher les statistiques de périphériques de traitement par blocs pour un invité en cours d'exécution.
# virsh domblkstat GuestName block-devicevirsh domifstat afin d'afficher les statistiques d'interface réseau pour un invité en cours d'exécution.
# virsh domifstat GuestName interface-device virsh. Migrer un domaine vers un autre hôte. Ajoutez --live pour une migration en direct. La commande migrate accepte des paramètres sous le format suivant :
# virsh migrate --live GuestName DestinationURL--live est optionnel. Ajoutez-le pour des effectuer des migrations en direct.
GuestName représente le nom de l'invité que vous souhaitez migrer.
DestinationURL est l'URL ou le nom d'hôte du système destinataire. Le système destinataire requiert :
libvirt doit être démarré.
virsh. Pour faire la liste des réseaux:
# virsh net-list
# virsh net-list Name State Autostart ----------------------------------------- default active yes vnet1 active yes vnet2 active yes
# virsh net-dumpxml NetworkName# virsh net-dumpxml vnet1
<network>
<name>vnet1</name>
<uuid>98361b46-1581-acb7-1643-85a412626e70</uuid>
<forward dev='eth0'/>
<bridge name='vnet0' stp='on' forwardDelay='0' />
<ip address='192.168.100.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.100.128' end='192.168.100.254' />
</dhcp>
</ip>
</network>
virsh net-autostart network-name — Démarre automatiquement un réseau appelé network-name.
virsh net-create XMLfile — génère et initie un nouveau réseau en utilisant un fichier XML préexistant.
virsh net-define XMLfile — génère un nouveau périphérique réseau à partir d'un fichier XML préexistant sans le démarrer.
virsh net-destroy network-name — détruit un réseau spécifié comme network-name.
virsh net-name networkUUID — convertit un réseau spécifié network UUID en un nom de réseau.
virsh net-uuid network-name — convertit un nom de réseau network name en un réseau UUID.
virsh net-start nameOfInactiveNetwork — démarre un réseau inactif.
virsh net-undefine nameOfInactiveNetwork — supprime la définition d'un réseau inactif.
virt-manager)
virt-manager offre une vue graphique des hyperviseurs et de l'invité sur votre système ainsi que sur des machines distantes. Vous pouvez utiliser virt-manager pour définir les invités paravirtualisés ainsi que les invités totalement virtualisés. virt-manager peut effectuer des tâches de gestion de virtualisation, y compris :


virt-manager. The UUID field displays the globally unique identifier for the virtual machines.


dom0)'s loopback address (127.0.0.1). This ensures only those with shell privileges on the host can access virt-manager and the virtual machine through VNC.
virt-manager sticky key capability to send these sequences. To use this capability, you must press any modifier key (Ctrl or Alt) 3 times and the key you specify gets treated as active until the next non-modifier key is pressed. You can then send Ctrl-Alt-F11 to the guest by entering the key sequence 'Ctrl Ctrl Ctrl Alt+F1'.
virt-manager, it is not possible to use this sticky key feature to send a Sysrq key combination to a guest.
virt-manager, ouvrez le menu , puis le menu et sélectionnez (virt-manager).
virt-manager apparaît.

virt-managervirt-manager can be started remotely using ssh as demonstrated in the following command:
ssh -X host's address[remotehost]# virt-manager
Using ssh to manage virtual machines and hosts is discussed further in Section 22.1, « Gestion à distance avec SSH ».









virt-manager's preferences window.



















DHCP 


xm peut gérer l'hyperviseur Xen. La plupart des opérations peuvent être effectuées avec les outils libvrit, l'application virt-manager ou la commande virsh. La commande xm ne possède pas la fonctionnalité de vérification d'erreur des outils libvirt et ne devrait pas être utilisée pour des tâches pouvant être accomplies par les outils libvirt.
xm ne fonctionnent pas dans Red Hat Enterprise Linux 5. La liste ci-dessous présente une vue d'ensemble sur les options de commande disponible et non-disponibles.
virsh ou virt-manager au lieu de xm. La commande xm ne prend pas très bien en charge la vérification d'erreur ou les erreurs de fichiers de configuration et celles-ci peuvent provoquer une instabilité du système ou des erreurs dans les machines virtuelles. La modification manuelle des fichiers de configuration Xen est dangereuse et devrait être évitée. Utilisez ce chapitre à vos risques et périls.
xm:
xm help [--long]: aperçu des options disponibles et de help text.
xm list pour répertorier les domaines actifs:
$ xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 520 2 r----- 1275.5 r5b2-mySQL01 13 500 1 -b---- 16.1
xm create [-c] DomainName/ID: start a virtual machine. If the -c option is used, the start up process will attach to the guest's console.
xm console DomainName/ID: attach to a virtual machine's console.
xm destroy DomainName/ID : arrête une machine virtuelle, tout comme si on l'éteignait.
xm reboot DomainName/ID: relance une machine virtuelle, fonctionne à travers le système normal d'arrêt/démarrage.
xm shutdown DomainName/ID: arrête une machine virtuelle, exécute une procédure normale d'arrêt.
xm pause
xm unpause
xm save
xm restore
xm migrate
xm pour gérer les ressources:
xm mem-set
xm vcpu-list pour lister les affinités des CPU virtuels :
$ xm vcpu-list Name ID VCPUs CPU State Time(s) CPU Affinity Domain-0 0 0 0 r-- 708.9 any cpu Domain-0 0 1 1 -b- 572.1 any cpu r5b2-mySQL01 13 0 1 -b- 16.1 any cpu
xm vcpu-pin
xm vcpu-set
xm sched-credit pour afficher les paramètres d'ordonnancement pour un domaine donné:
$ xm sched-credit -d 0
{'cap': 0, 'weight': 256}
$ xm sched-credit -d 13
{'cap': 25, 'weight': 256}
xm pour contrôler et résoudre les pannes.
xm top
xm dmesg
xm info
xm log
xm uptime pour afficher le temps de disponibilité des invités et des hôtes:
$ xm uptime Name ID Uptime Domain-0 0 3:42:18 r5b2-mySQL01 13 0:06:27
xm sysrq
xm dump-core
xm rename
xm domid
xm domname
xm vnet-list n'est pas actuellement supportée.
/boot/grub/grub.conf) crée une liste des systèmes d'exploitation dans l'interface de menu de démarrage GRUB. Lorsque vous installez le RPM kernel-xen, un script ajoute des entrées kernel-xen au fichier de configuration GRUB, qui démarrera kernel-xen par défaut. Modifiez le fichier grub.conf afin de modifier le noyau par défaut ou pour ajouter des paramètres de noyau supplémentaires.
title Red Hat Enterprise Linux Server (2.6.18-3.el5xen) root (hd0,0) kernel /xen.gz.-2.6.18-3.el5 module /vmlinuz-2.6..18-3.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet module /initrd-2.6.18-3. el5xenxen.img
initrd et le noyau Linux. Étant donné que l'entrée du noyau est la première des entrées, le noyau se charge en mémoire en premier. Le chargeur de démarrage envoie (et reçoit) des arguments en ligne de commande vers et en provenance de l'hyperviseur et du noyau Linux. Cet exemple d'entrée illustre comment restreindre la mémoire du noyau Linux de Domain0 à 800 Mo:
title Red Hat Enterprise Linux Server (2.6.18-3.el5xen) root (hd0,0) kernel /xen.gz.-2.6.18-3.el5 dom0_mem=800M module /vmlinuz-2.6..18-3.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet module /initrd-2.6.18-3. el5xenxen.img
mem
com1=115200, 8n1
dom0_mem
dom0_max_vcpus
acpi
/* **** Linux config options: propagated to domain0 ****/ /* "acpi=off": Disables both ACPI table parsing and interpreter. */ /* "acpi=force": Overrides the disable blacklist. */ /* "acpi=strict": Disables out-of-spec workarounds. */ /* "acpi=ht": Limits ACPI from boot-time to enable HT. */ /* "acpi=noirq": Disables ACPI interrupt routing. */
noacpi
/etc/elilo.conf, contient une liste des options globales et des strophes d'images (image stanzas). Lorsque vous installez le RPM kernel-xen, un script de post installation ajoute la strophe d'image qui convient sur elilo.conf.
image=vmlinuz-2.6.18-92.el5xen
vmm=xen.gz-2.6.18-92.el5
label=linux
initrd=initrd-2.6.18-92.el5xen.img
read-only
root=/dev/VolGroup00/rhel5_2
append="-- rhgb quiet"
image parameter indicates the following lines apply to a single boot selection. This stanza defines a hypervisor (vmm), initrd, and command line arguments (read-only, root and append) to the hypervisor and kernel. When ELILO is loaded during the boot sequence, the image is labeled linux.
read-only à l'option de la ligne de commande du noyau ro, ce qui entraîne à ce que le système de fichiers superutilisateur (root) soit monté en lecture-seule jusqu'à ce que les initscripts montent le root drive en lecture-écriture. ELILO copie la ligne "root" dans la ligne de commande du noyau. Elles sont fusionnées à la ligne de commande "append" pour construire une ligne de commande complète :
"-- root=/dev/VolGroup00/rhel5_2 ro rhgb quiet"
-- déterminent les arguments de l'hyperviseur et du noyau. Les arguments de l'hyperviseur en premier, puis les délimiteurs --, suivis par les arguments du noyau. L'hyperviseur ne possède généralement pas d'arguments.
-- . Exemple de paramètre de mémoire d'hyperviseur (mem) et de paramètre quiet pour le noyau :
append="dom0_mem=2G -- quiet"
| Paramètre | Description |
|---|---|
mem= | Le paramètre mem détermine l'utilisation RAM maximum de l'hyperviseur. Toute RAM supplémentaire ajoutée au système sera ignorée. Le paramètre peut être spécifié à l'aide du suffixe B, K, M ou G, qui représente les octets (Bytes), les Kilo-octets, les Méga-octets et les Giga-octets respectivement. S'il n'y a pas de suffixe de spécifié, l'unité choisie par défaut est le kilo-octet. |
dom0_mem= | dom0_mem= détermine le montant de RAM allouée à dom0. Les mêmes suffixes que pour le paramètre mem, sont respectés. Le montant par défaut dans Red Hat Enterprise Linux 5.2 est de 4G pour Itanium®. |
dom0_max_vcpus= | dom0_max_vcpus= détermine le nombre de CPU à allouer à l'hyperviseur. Le nombre par défaut est de 4 Itanium® dans Red Hat Enterprise Linux 5.2. |
com1= | com1= détermine les paramètres pour la première ligne de la série. Par exemple, com1=9600,8n1,0x408,5. Les options io_base et irq peuvent être omises si on souhaite garder les valeurs standard par défaut. Le paramètre baud peut être fixé en auto pour indiquer que la configuration du chargeur d'amorçage doit être préservée. Le paramètre com1 peut être omis si les paramètres de la série sont configurés en tant qu'options globales dans ELILO ou dans la configuration EFI. |
com2= | Déterminer les paramètres pour la deuxième ligne de série. Voir la description du paramètre com1 ci dessus. |
console= | La console est une liste de préférences délimitée par une virgule, pour les options de console. Les options incluent vga, com1 et com2. Cette configuration devrait être omise car l'hyperviseur tentera d'hériter les paramètres de la console EFI. |
image=vmlinuz-2.6.18-92.el5xen
vmm=xen.gz-2.6.18-92.el5
label=linux
initrd=initrd-2.6.18-92.el5xen.img
read-only
root=/dev/VolGroup00/rhel5_2
append="dom0_mem=2G dom0_max_vcpus=2 --"
rhgb quiet" de façon à ce que le noyau et la sortie initscript soient générés sur la console. Notez que les guillemets subsistent pour que la ligne de commande ajoutée soit convenablement interprétée en tant qu'arguments d'hyperviseur.
| Item | Description |
|---|---|
pae
|
Specifies the physical address extension configuration data.
|
apic
|
Specifies the advanced programmable interrupt controller configuration data.
|
memory
|
Specifies the memory size in megabytes.
|
vcpus
|
Specifies the numbers of virtual CPUs.
|
console
|
Specifies the port numbers to export the domain consoles to.
|
nic
|
Specifies the number of virtual network interfaces.
|
vif
|
Lists the randomly-assigned MAC addresses and bridges assigned to use for the domain's network addresses.
|
disk
|
Lists the block devices to export to the domain and exports physical devices to domain with read only access.
|
dhcp
|
Enables networking using DHCP.
|
netmask
|
Specifies the configured IP netmasks.
|
gateway
|
Specifies the configured IP gateways.
|
acpi
|
Specifies the advanced configuration power interface configuration data.
|
libvirt configuration files for most tasks. Some users may need Xen configuration files which contain the following standard variables. Configuration items within these files must be enclosed in single quotes('). These configuration files reside in the /etc/xen directory.
xm create --help_config.
|
Parameter
|
Description
|
|---|---|
vncpasswd=NAME
| Mot de passe pour la console VNC sur le domaine HVM. |
vncviewer=no | yes
|
Démarrer un vncviewer à l'écoute d'un serveur vnc dans le domaine. L'adresse du vncviewer est transmise au domaine sur la ligne de commande du noyau en utilisant VNC_SERVER=<host>:<port>. Le port utilisé par vnc est 5500 + DISPLAY. Une valeur d'affichage avec port libre est choisie si possible. Valide uniquement quand vnc=1.
|
vncconsole=no | yes
| Spawn a vncviewer process for the domain's graphical console. Only valid when vnc=1. |
name=NAME
| Nom de domaine. Doit être unique. |
bootloader=FILE
| Chemin d'accès au chargeur d'amorçage. |
bootargs=NAME
| Arguments à passer au chargeur d'amorçage. |
bootentry=NAME
|
DEPRECATED. Entrée pour démarrer à partir du chargeur d'amorçage. Utiliser bootargs.
|
kernel=FILE
| Chemin d'accès à l'image du noyau. |
ramdisk=FILE
| Chemin d'accès au ramdisk. |
features=FEATURES
| Fonctionalités pour activer un noyau d'invité. |
builder=FUNCTION
| Fonctionalité utilisée pour construire un domaine. |
memory=MEMORY
| Mémoire de domaine en Mo. |
maxmem=MEMORY
| Mémoire de domaine maximum en Mo. |
shadow_memory=MEMORY
| Mémoire fantôme de domaine en Mo. |
cpu=CPU
| CPU hôte de VCPU0. |
cpus=CPUS
| CPUS pour exécuter le domaine |
pae=PAE
| Désactiver ou activer PAE du domaine HVM. |
acpi=ACPI
| Désactiver ou activer ACPI du domaine HVM. |
apic=APIC
| Désactiver ou activer PAE du domaine HVM. |
vcpus=VCPUs
| Nombre de CPUS virtuels dans le domaine. |
cpu_weight=WEIGHT
|
Set the new domain's cpu weight. WEIGHT is a float that controls the domain's share of the cpu.
|
restart=onreboot | always | never
|
A éviter. Utiliser on_poweroff, on_reboot, et on_crash à la place. Si le domaine devait être redémarré après la sortie. - onreboot : redémarrer après la sortie avec le code de fermeture de session reboot - always : toujours redémarrer après la sortie, ignorer le code de sortie - never : ne jamais redémarrer après la sortie, ignorer le code de sortie
|
on_poweroff=destroy | restart | preserve | destroy
|
Behavior when a domain exits with reason 'poweroff'. - destroy: the domain is cleaned up as normal; - restart: a new domain is started in place of the old one; - preserve: no clean-up is done until the domain is manually destroyed (using xm destroy, for example); - rename-restart: the old domain is not cleaned up, but is renamed and a new domain started in its place.
|
on_reboot=destroy | restart | preserve | destroy
| Behavior when a domain exits with reason 'reboot'. - destroy: the domain is cleaned up as normal; - restart: a new domain is started in place of the old one; - preserve: no clean-up is done until the domain is manually destroyed (using xm destroy, for example); - rename-restart: the old domain is not cleaned up, but is renamed and a new domain started in its place. |
on_crash=destroy | restart | preserve | destroy
| Behavior when a domain exits with reason 'crash'. - destroy: the domain is cleaned up as normal; - restart: a new domain is started in place of the old one; - preserve: no clean-up is done until the domain is manually destroyed (using xm destroy, for example); - rename-restart: the old domain is not cleaned up, but is renamed and a new domain started in its place. |
blkif=no | yes
| Transformer le domaine en périphérique dorsal. |
netif=no | yes
| Transformer le domaine en interface dorsale de réseau. |
tpmif=no | yes
| Transformer le domaine en interface dorsale TPM |
disk=phy:DEV,VDEV,MODE[,DOM]
|
Ajouter un lecteur de disques à un domaine. Le périphérique physique est DEV, qui est exporté dans le domaine en tant que VDEV. Le disque est en lecture-seule si MODE indique r, lecture-écriture si MODE indique w. Si DOM est spécifié, il détermine le domaine du pilote principal à utiliser pour le disque. L'option pourra être répétée pour ajouter plus d'un disque.
|
pci=BUS:DEV.FUNC
|
Ajouter un périphérque PCI à un domaine, en utilisant les paramètres donnés (dans hex). Par exemple, pci=c0:02.1a. L'option pourra être répétée pour ajouter plus d'un appareil pci.
|
ioports=FROM[-TO]
|
Ajouter une fourchette E/S héritée à un domaine, en utilisant les params donnés (en hex). Par exemple ioports=02f8-02ff. Cette option pourra être répétée pour ajouter plus d'une fourchette e/s.
|
irq=IRQ
|
Ajouter une interruption (IRQ for Interrupt Request / demande d'interrupotion) à un domaine. Par exemple irq=7. Cette option pourra être répétée pour ajouter plus d'un IRQ.
|
usbport=PATH
| Ajouter une port physique USB à un domaine, comme indiqué par le chemin qui mène à ce port. Cette option pourra être répétée pour ajouter plus d'un seul port. |
vfb=type=
vnclisten=
xauthority=
keymap=KEYMAP
|
Make the domain a framebuffer backend. The backend type should be either sdl or vnc. For type=vnc, connect an external vncviewer. The server will listen on ADDR (default 127.0.0.1) on port N+5900. N defaults to the domain id. If vncunused=1, the server will try to find an arbitrary unused port above 5900. For type=sdl, a viewer will be started automatically using the given DISPLAY and XAUTHORITY, which default to the current user's ones.
|
vif=type=
script==NAME
|
Ajouter une interface de réseau avec le pont et l'adresse MAC donnés. Le vif est configuré en appelant le script de configuration. Si le type n'est pas spécifié, le périphérique par défaut est netfront et non pas ioemu. Si l'adresse mac n'est pas spécifiée, une adresse MAC choisie au hasard sera utilisée. Si le pont n'est pas spécifié, le premier pont trouvé est utilisé. Si le script n'est pas spécifié, le script par défaut est utilisé. Si le backend n'est pas spécifié, le domaine du pilote backend par défaut est utilisé. Si le vifname n'est pas spécifié, l'interface virtuelle du backend aura nommé vifD.N avec D pour le domaine id et N pour l'interface id. Cette option peut être répétée pour ajouter plus d'un vif. Préciser les vifs augmentera le nombre d'interfaces au fur et à mesure des besoins.
|
vtpm=instance=INSTANCE,backend=DOM
|
Ajouter une interface TPM. Sur la partie backend, utiliser l'instance donnée en tant qu'instance TPM virtuelle. Le nombre donnée est simplement le nombre préferré d'instances. Le script hotplug déterminera le nombre d'instances qui seront assignées au domaine. L'association entre le nombre d'instances de TPM et la machine virtuelle peut être trouvée dans /etc/xen/vtpm.db. Utiliser le backend dans le domaine donné.
|
access_control=policy=POLICY,label=LABEL
| Ajouter le label sécurité et la référence de politique de sécurité qui le définit. La référence ssid locale est calculée lorsqu'on démarre ou arrête le domaine. A ce moment là, la politique est contrôlée par rapport à la politique active. Ainsi, on couvre la migration entre les fonctions de sauvegarde et de restauration et les labels locaux sont automatiquement créés convenablement sur le système dans lequel le domaine est démarré ou terminé. |
nics=NUM
| A EVITER. Utiliser des entrés vif à la place. Déterminer le nombre d'interfaces de réseaux. Utiliser l'option vif pour déterminer les paramètres d'interface, sinon les paramètres par défaut seront utilisés. Spécifier les vifs augmente le nombre d'interfaces suivant les besoins. |
root=DEVICE
|
Spécifie root= paramètre sur la ligne de commande du noyau. Utiliser un périphérique, par ex. /dev/sda1, ou /dev/nfs pour le root NFS.
|
extra=ARGS
| Spécifie des arguments supplémentaires à ajouter à la ligne de commande du noyau. |
ip=IPADDR
| Spécifie l'adresse de l'interface IP du noyau. |
gateway=IPADDR
| Spécifie la passerelle de l'adresse IP configurée. |
netmask=MASK
| Spécifie le masque réseau de l'adresse IP configurée. |
hostname=NAME
| Spécifie le nom d'hôte IP du noyau. |
interface=INTF
| Spécifie le nom de l'interface IP du noyau. |
dhcp=off|dhcp
| Spécifie l'option dhcp du noyau. |
nfs_server=IPADDR
| Spécifie l'adresse du serveur NFS pour le root NFS. |
nfs_root=PATH
| Spécifie le chemin d'accès au répertoire root NFS. |
device_model=FILE
| Chemin d'accès au programme modèle du périphérique. |
fda=FILE
| Chemin d'accès à fda |
fdb=FILE
| Chemin d'accès fdb |
serial=FILE
| Chemin d'accès au sériel (serial) ou pty ou vc |
localtime=no | yes
| Est-ce que RTC est bien configuré à l'heure locale |
keymap=FILE
| Configurer le clavier utilisé |
usb=no | yes
| Emuler les USB |
usbdevice=NAME
|
Nom des USB à ajouter
|
stdvga=no | yes
|
Use std vga or Cirrus Logic
graphics
|
isa=no | yes
|
Simuler un système spécifiquement ISA
|
boot=a|b|c|d
| Périphérique d'amorçage par défaut |
nographic=no | yes
| Est ce que les modèles de périphériques doivent utiliser des graphiques? |
soundhw=audiodev
| Est-ce que les modèles de périphériques doivent activer les périphériques audio ? |
vnc
| Est-ce que les modèles de périphériques doivent utiliser VNC? |
vncdisplay
| Affichage VNC à utiliser |
vnclisten
| Adresse d'écoute pour le serveur VNC |
vncunused
| Essayer de trouver un port non utilisé pour le serveur VNC. Valide uniquement pour vnc=1. |
sdl
| Est-ce que le modèle de périphérique utilise SDL? |
display=DISPLAY
| Affichage X11 à afficher |
xauthority=XAUTHORITY
| Authorité X11 à utiliser |
uuid
| xenstore UUID (universally unique identifier / identifiant universel unique) à utiliser. Sera généré au hasard si cette option n'est pas configurée, tout comme les adresses MAC dans le cas des interfaces de réseau virtuel. On doit utiliser une valeur unique pour l'ensemble des terminaux. |
| Fonction parser | Arguments valides |
|---|---|
set_bool
|
Valeurs acceptées:
|
set_float
|
Accepts a floating point number with Python's float(). For example:
|
set_int
|
Accepts an integer with Python's int().
|
set_value
|
accepte toute valeur Python.
|
append_value
|
accepte toute valeur Python, et l'adjoint à toute valeur précédente, stockée dans un tableau (array).
|
| Parameter | Fonction parser | Valeurs par défaut |
|---|---|---|
name
|
setter
|
default value
|
vncpasswd
|
set_value
|
None
|
vncviewer
|
set_bool
|
None
|
vncconsole
|
set_bool
|
None
|
name
|
set_value
|
None
|
bootloader
|
set_value
|
None
|
bootargs
|
set_value
|
None
|
bootentry
|
set_value
|
None
|
kernel
|
set_value
|
None
|
ramdisk
|
set_value
|
''
|
features
|
set_value
|
''
|
builder
|
set_value
|
'linux'
|
memory
|
set_int
|
128
|
maxmem
|
set_int
|
None
|
shadow_memory
|
set_int
|
0
|
cpu
|
set_int
|
None
|
cpus
|
set_value
|
None
|
pae
|
set_int
|
0
|
acpi
|
set_int
|
0
|
apic
|
set_int
|
0
|
vcpus
|
set_int
|
1
|
cpu_weight
|
set_float
|
None
|
restart
|
set_value
|
None
|
on_poweroff
|
set_value
|
None
|
on_reboot
|
set_value
|
None
|
on_crash
|
set_value
|
None
|
blkif
|
set_bool
|
0
|
netif
|
set_bool
|
0
|
tpmif
|
append_value
|
0
|
disk
|
append_value
|
[]
|
pci
|
append_value
|
[]
|
ioports
|
append_value
|
[]
|
irq
|
append_value
|
[]
|
usbport
|
append_value
|
[]
|
vfb
|
append_value
|
[]
|
vif
|
append_value
|
[]
|
vtpm
|
append_value
|
[]
|
access_control
|
append_value
|
[]
|
nics
|
set_int
|
-1
|
root
|
set_value
|
''
|
extra
|
set_value
|
''
|
ip
|
set_value
|
''
|
gateway
|
set_value
|
''
|
netmask
|
set_value
|
''
|
hostname
|
set_value
|
''
|
interface
|
set_value
|
"eth0"
|
dhcp
|
set_value
|
'off'
|
nfs_server
|
set_value
|
None
|
nfs_root
|
set_value
|
None
|
device_model
|
set_value
|
''
|
fda
|
set_value
|
''
|
fdb
|
set_value
|
''
|
serial
|
set_value
|
''
|
localtime
|
set_bool
|
0
|
keymap
|
set_value
|
''
|
usb
|
set_bool
|
0
|
usbdevice
|
set_value
|
''
|
stdvga
|
set_bool
|
0
|
isa
|
set_bool
|
0
|
boot
|
set_value
|
'c'
|
nographic
|
set_bool
|
0
|
soundhw
|
set_value
|
''
|
vnc
|
set_value
|
None
|
vncdisplay
|
set_value
|
None
|
vnclisten
|
set_value
|
None
|
vncunused
|
set_bool
|
1
|
sdl
|
set_value
|
None
|
display
|
set_value
|
None
|
xauthority
|
set_value
|
None
|
uuid
|
set_value
|
None
|
Table des matières
ftpdftpdvirsh pour paramétrer un invité, TestServer, afin qu'il démarre automatiquement lors du lancement de l'hôte.
# virsh autostart TestServer
Domain TestServer marked as autostarted
--disable
# virsh autostart --disable TestServer
Domain TestServer unmarked as autostarted
Installer le paquetage KVM
# yum install kvm
Vérifier quel noyau est en cours d'utilisation
uname afin de déterminer quel noyau est en cours d'exécution :
$ uname -r 2.6.18-159.el5xen
2.6.18-159.el5xen", est en cours d'exécution sur le système. Si le noyau par défaut, "2.6.18-159.el5", est en cours d'exécution, vous pouvez ignorer la sous-étape.
Passer du noyau Xen au noyau par défaut
grub.conf détermine quel noyau est démarré. pour changer le noyau par défaut, modifier le fichier /boot/grub/grub.conf comme indiqué ci-dessous.
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-159.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-159.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.18-159.el5.img
title Red Hat Enterprise Linux Server (2.6.18-159.el5xen)
root (hd0,0)
kernel /xen.gz-2.6.18-159.el5
module /vmlinuz-2.6.18-159.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
module /initrd-2.6.18-159.el5xen.img
0 (ou sur la valeur du noyau par défaut) :
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-159.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-159.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.18-159.el5.img
title Red Hat Enterprise Linux Server (2.6.18-159.el5xen)
root (hd0,0)
kernel /xen.gz-2.6.18-159.el5
module /vmlinuz-2.6.18-159.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
module /initrd-2.6.18-159.el5xen.img
Redémarrer afin de lancer le nouveau noyau
$ lsmod | grep kvm kvm_intel 85992 1 kvm 222368 2 ksm,kvm_intel
kvm, et soit le module kvm_intel, soit le module kvm_amd sont présent si tout a bien fonctionné.
Installer les paquetages Xen
# yum install kernel-xen xen
Vérifier quel noyau est en cours d'utilisation
uname afin de déterminer quel noyau est en cours d'exécution.
$ uname -r 2.6.18-159.el5
2.6.18-159.el5", est en cours d'exécution sur le système. Il s'agit du noyau par défaut. Si le noyau possède xen à la fin (par exemple, 2.6.18-159.el5xen), alors le noyau Xen est en cours d'exécution et vous pouvez ignorer la sous-étape.
Passer du noyau par défaut au noyau Xen
grub.conf détermine quel noyau est démarré. pour changer le noyau par défaut, modifier le fichier /boot/grub/grub.conf comme indiqué ci-dessous.
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-159.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-159.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.18-159.el5.img
title Red Hat Enterprise Linux Server (2.6.18-159.el5xen)
root (hd0,0)
kernel /xen.gz-2.6.18-159.el5
module /vmlinuz-2.6.18-159.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
module /initrd-2.6.18-159.el5xen.img
1 (ou sur la valeur pour le noyau Xen) :
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-159.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-159.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.18-159.el5.img
title Red Hat Enterprise Linux Server (2.6.18-159.el5xen)
root (hd0,0)
kernel /xen.gz-2.6.18-159.el5
module /vmlinuz-2.6.18-159.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
module /initrd-2.6.18-159.el5xen.img
Redémarrer afin de lancer le nouveau noyau
uname :
$ uname -r 2.6.18-159.el5xen
xen à la fin, alors le noyau Xen est en cours d'utilisation.
qemu-img est utile au formatage de divers systèmes de fichiers utilisés par Xen et KVM. qemu-img devrait être utilisé pour le formatage d'images d'invités virtualisés, de périphérique de stockage supplémentaires, et de stockage réseau. Les options et utilisations qemu-img sont listées ci-dessous.
size et de format format.
# qemu-img create [-6] [-e] [-b base_image] [-f format] filename [size]
convert est utilisée pour convertir un format reconnu vers un autre format d'image.
# qemu-img convert [-c] [-e] [-f format]filename[-Ooutput_format]output_filename
filename en image disque output_filename en utilisant le formatage output_format. L'image disque peut être optionnellement cryptée avec l'option -e ou compressée avec l'option -c.
qcow" prend en charge le cryptage ou la compression. La compression est uniquement en lecture-seule. Ce qui veut dire que si un secteur compressé est réécrit, alors il sera réécrit sans être compressé.
qcow ou cow. Les secteurs vides sont détectés et supprimés de l'image de destination.
info affiche des informations sur une image disque. Le format de l'option info est comme suit :
# qemu-img info [-f format] filename
rawqemu-img info afin de connaître la taille réelle utilisée par l'image, ou ls -ls sur Unix/Linux.
qcow2 qcow cowcow est uniquement inclus pour faciliter la compatibilité avec des versions plus anciennes. Il ne fonctionne pas avec Windows.
vmdk cloop (0.5 * RAM) + (overcommit ratio * RAM) = Recommended swap size
/etc/grub.conf file to use the virtualization kernel. You must use the xen kernel to use the Xen hypervisor. Copy your existing xen kernel entry make sure you copy all of the important lines or your system will panic upon boot (initrd will have a length of '0'). If you require xen hypervisor specific values you must append them to the xen line of your grub entry.
grub.conf d'un système exécutant le paquetage kernel-xen. grub.conf peut varier sur votre système. La partie importante dans l'exemple ci-dessous est la section à partir de la ligne title jusqu'à la prochaine nouvelle ligne.
#boot=/dev/sda default=0 timeout=15 #splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1 terminal --timeout=10 serial console title Red Hat Enterprise Linux Server (2.6.17-1.2519.4.21.el5xen) root (hd0,0) kernel /xen.gz-2.6.17-1.2519.4.21.el5 com1=115200,8n1 module /vmlinuz-2.6.17-1.2519.4.21.el5xen ro root=/dev/VolGroup00/LogVol00 module /initrd-2.6.17-1.2519.4.21.el5xen.img
grub.conf...grub.conf could look very different if it has been manually edited before or copied from an example. Read Chapitre 28, Configuration des paramètres d'amorçage du noyau Xen for more information on using virtualization and grub.
dom0_mem=256M à xen dans votre fichier grub.conf. Une version modifiée du fichier de configuration grub dans l'exemple précédent:
#boot=/dev/sda default=0 timeout=15 #splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1 terminal --timeout=10 serial console title Red Hat Enterprise Linux Server (2.6.17-1.2519.4.21.el5xen) root (hd0,0) kernel /xen.gz-2.6.17-1.2519.4.21.el5 com1=115200,8n1 dom0_mem=256MB module /vmlinuz-2.6.17-1.2519.4.21.el5xen ro root=/dev/VolGroup00/LogVol00 module /initrd-2.6.17-1.2519.4.21.el5xen.img
$ grep -E 'svm|vmx' /proc/cpuinfo
vmx, indiquant la présence d'un processeur Intel avec les extensions Intel VT :
flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall lm constant_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr lahf_lm
svm, indiquant la présence d'un processeur AMD avec les extensions AMD-V :
flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm cr8legacy ts fid vid ttp tm stc
flags:" peut apparaître plusieurs fois pour chaque hyperthread, chaque coeur, ou chaque CPU sur le système.
For users of the KVM hypervisor
kvm modules are loaded in the kernel:
# lsmod | grep kvm
kvm_intel or kvm_amd then the kvm hardware virtualization modules are loaded and your system meets requirements. sudo
virsh command can output a full list of virtualization system capabilities. Run virsh capabilities as root to receive the complete list.
kpartx tool, covered by this section, to mount the guest file system as a loop device which can then be accessed.
kpartx command creates device maps from partition tables. Each guest storage image has a partition table embedded in the file.
# yum install kpartx
guest1.img.
# kpartx -l /var/lib/libvirt/images/guest1.img
loop0p1 : 0 409600 /dev/loop0 63
loop0p2 : 0 10064717 /dev/loop0 409663guest1 is a Linux guest. The first partition is the boot partition and the second partition is an EXT3 containing the root partition.
/dev/mapper/.
# kpartx -a /var/lib/libvirt/images/guest1.img
# ls /dev/mapper/ loop0p1 loop0p2
loopXpY.
/mnt/guest1 for mounting the partition.
# mkdir /mnt/guest1
# mount /dev/mapper/loop0p1 /mnt/guest1 -o loop,ro/mnt/guest1 directory. Read or copy the files.
# umount /mnt/tmp
# kpartx -d /var/lib/libvirt/images/guest1.img
guest1.img to the recognized devices in the /dev/mapper/ directory.
# kpartx -a /var/lib/libvirt/images/guest1.img
vgscan command to find the new volume groups.
# vgscan Reading all physical volumes . This may take a while... Found volume group "VolGroup00" using metadata type lvm2
VolGroup00 by default) with the vgchange -ay command.
# vgchange -ay VolGroup00 2 logical volumes in volume group VolGroup00 now active.
lvs command to display information about the new volumes. The volume names (the LV column) are required to mount the volumes.
# lvs LV VG Attr Lsize Origin Snap% Move Log Copy% LogVol00 VolGroup00 -wi-a- 5.06G LogVol01 VolGroup00 -wi-a- 800.00M
/dev/VolGroup00/LogVol00 in the /mnt/guestboot/ directory.
# mount /dev/VolGroup00/LogVol00 /mnt/guestboot
/mnt/guestboot directory. Read or copy the files.
# umount /mnt/
VolGroup00
# vgchange -an VolGroup00
# kpartx -d /var/lib/libvirt/images/guest1.img
virsh nodeinfo command provides information about how many sockets, cores and hyperthreads there are attached a host.
# virsh nodeinfo CPU model: x86_64 CPU(s): 8 CPU frequency: 1000 MHz CPU socket(s): 2 Core(s) per socket: 4 Thread(s) per core: 1 NUMA cell(s): 1 Memory size: 8179176 kB
virsh capabilities to get additional output data on the CPU configuration.
# virsh capabilities
<capabilities>
<host>
<cpu>
<arch>x86_64</arch>
</cpu>
<migration_features>
<live/>
<uri_transports>
<uri_transport>tcp</uri_transport>
</uri_transports>
</migration_features>
<topology>
<cells num='2'>
<cell id='0'>
<cpus num='4'>
<cpu id='0'/>
<cpu id='1'/>
<cpu id='2'/>
<cpu id='3'/>
</cpus>
</cell>
<cell id='1'>
<cpus num='4'>
<cpu id='4'/>
<cpu id='5'/>
<cpu id='6'/>
<cpu id='7'/>
</cpus>
</cell>
</cells>
</topology>
<secmodel>
<model>selinux</model>
<doi>0</doi>
</secmodel>
</host>
[ Additional XML removed ]
</capabilities>virsh freecell command to display the free memory on all NUMA nodes.
# virsh freecell 0: 2203620 kB 1: 3354784 kB
virsh capabilities command) about NUMA topology.
virsh capabilities output.
<topology>
<cells num='2'>
<cell id='0'>
<cpus num='4'>
<cpu id='0'/>
<cpu id='1'/>
<cpu id='2'/>
<cpu id='3'/>
</cpus>
</cell>
<cell id='1'>
<cpus num='4'>
<cpu id='4'/>
<cpu id='5'/>
<cpu id='6'/>
<cpu id='7'/>
</cpus>
</cell>
</cells>
</topology><cell id='1'>, has physical CPUs 4 to 7.
cpuset attribute to the configuration file.
virsh edit.
vcpus element.
<vcpus>4</vcpus>
cpuset attribute with the CPU numbers for the relevant NUMA cell.
<vcpus cpuset='4-7'>4</vcpus>
virt-install provisioning tool provides a simple way to automatically apply a 'best fit' NUMA policy when guests are created.
cpuset option for virt-install can use a CPU set of processors or the parameter auto. The auto parameter automatically determines the optimal CPU locking using the available NUMA data.
--cpuset=auto with the virt-install command when creating new guests.
virsh vcpuinfo and virsh vcpupin commands can perform CPU affinity changes on running guests.
virsh vcpuinfo command gives up to date information about where each virtual CPU is running.
guest1 is a guest with four virtual CPUs is running on a KVM host.
# virsh vcpuinfo guest1
VCPU: 0
CPU: 3
State: running
CPU time: 0.5s
CPU Affinity: yyyyyyyy
VCPU: 1
CPU: 1
State: running
CPU Affinity: yyyyyyyy
VCPU: 2
CPU: 1
State: running
CPU Affinity: yyyyyyyy
VCPU: 3
CPU: 2
State: running
CPU Affinity: yyyyyyyyvirsh vcpuinfo output (the yyyyyyyy value of CPU Affinity) shows that the guest can presently run on any CPU.
# virsh vcpupinguest10 4 # virsh vcpupinguest11 5 # virsh vcpupinguest12 6 # virsh vcpupinguest13 7
virsh vcpuinfo command confirms the change in affinity.
# virsh vcpuinfo guest1
VCPU: 0
CPU: 4
State: running
CPU time: 32.2s
CPU Affinity: ----y---
VCPU: 1
CPU: 5
State: running
CPU time: 16.9s
CPU Affinity: -----y--
VCPU: 2
CPU: 6
State: running
CPU time: 11.9s
CPU Affinity: ------y-
VCPU: 3
CPU: 7
State: running
CPU time: 14.6s
CPU Affinity: -------ymacgen.py. Now from that directory you can run the script using ./macgen.py and it will generate a new MAC address. A sample output would look like the following:
$ ./macgen.py 00:16:3e:20:b0:11 #!/usr/bin/python # macgen.py script to generate a MAC address for virtualized guests on Xen # import random # def randomMAC(): mac = [ 0x00, 0x16, 0x3e, random.randint(0x00, 0x7f), random.randint(0x00, 0xff), random.randint(0x00, 0xff) ] return ':'.join(map(lambda x: "%02x" % x, mac)) # print randomMAC()
python-virtinst pour générer une nouvelle adresse MAC et UUID pour utiliser dans un fichier de configuration d'invité:
# echo 'import virtinst.util ; print\ virtinst.util.uuidToString(virtinst.util.randomUUID())' | python # echo 'import virtinst.util ; print virtinst.util.randomMAC()' | python
#!/usr/bin/env python # -*- mode: python; -*- print "" print "New UUID:" import virtinst.util ; print virtinst.util.uuidToString(virtinst.util.randomUUID()) print "New MAC:" import virtinst.util ; print virtinst.util.randomMAC() print ""
rate” parameter part of the VIF entries can throttle virtualized guests.
rate rate= option can be added to the VIF= entry in a virtual machine configuration file to limit a virtual machine's network bandwidth or specify a specific time interval for a time window.
rate=:
rate et utilisations.
rate=10Mb/s rate=250KB/s rate=10MB/s@50ms VIF ressemblerait à ce qui suit:
vif = [ 'rate=10MB/s , mac=00:16:3e:7a:55:1c, bridge=xenbr1']
rate entry would limit the virtual machine's interface to 10MB/s for outgoing traffic
virsh ou avec virt-manager :
virsh refer to Configuration de l'affinité des CPU virtuels for more information.
virt-manager refer to Section 26.11, « Affichage des processeurs virtuels » for more information.
/boot/grub/grub.conf. Managing several or more hosts configuration files quickly becomes difficult. System administrators often prefer to use the 'cut and paste' method for editing multiple grub.conf files. If you do this, ensure you include all five lines in the Virtualization entry (or this will create system errors). Hypervisor specific values are all found on the 'xen' line. This example represents a correct grub.conf virtualization entry:
# boot=/dev/sda/
default=0
timeout=15
#splashimage=(hd0, 0)/grub/splash.xpm.gz
hiddenmenu
serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1
terminal --timeout=10 serial console
title Red Hat Enterprise Linux Server (2.6.17-1.2519.4.21. el5xen)
root (hd0, 0)
kernel /xen.gz-2.6.17-1.2519.4.21.el5 com1=115200,8n1
module /vmlinuz-2.6.17-1.2519.4.21el5xen ro root=/dev/VolGroup00/LogVol00
module /initrd-2.6.17-1.2519.4.21.el5xen.img
'dom0_mem=256M'. This example is the grub.conf with the hypervisor's memory entry modified.
# boot=/dev/sda
default=0
timeout=15
#splashimage=(hd0,0)/grubs/splash.xpm.gz
hiddenmenu
serial --unit=0 --speed =115200 --word=8 --parity=no --stop=1
terminal --timeout=10 serial console
title Red Hat Enterprise Linux Server (2.6.17-1.2519.4.21. el5xen)
root (hd0,0)
kernel /xen.gz-2.6.17-1.2519.4.21.el5 com1=115200,8n1 dom0_mem=256MB
module /vmlinuz-2.6.17-1.2519.4.21.el5xen ro root=/dev/VolGroup00/LogVol00
module /initrd-2.6.17-1.2519.4.21.el5xen.img
ftpdvsftpd offre un accès aux aborescences d'installation pour les invités paravirtualisés (par exemple pour les dépôts Red Hat Enterprise Linux 5) ou autress données. Si vous n'avez pas installé vsftpdpendant l'installation du serveur, vous pouvez saisir le paquetage RPM dans le répertoire Server de votre medium d'installation et l'installer en utilisant rpm -ivh vsftpd*.rpm (noter que le paquetage RPM doit figurer dans le répertoire actuel).
vsftpd, edit /etc/passwd using vipw and change the ftp user's home directory to the directory where you are going to keep the installation trees for your para-virtualized guests. An example entry for the FTP user would look like the following:
ftp:x:14:50:FTP User:/xen/pub:/sbin/nologin
vsftpd n'est pas activé en utilisant chkconfig --list vsftpd :
$ chkconfig --list vsftpd vsftpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
chkconfig --levels 345 vsftpd on pour démarrer vsftpd automatiquement pour exécuter les niveaux 3, 4 et 5.
chkconfig --list vsftpd pour vérifier que le démon vsftdp a bien été activé pour démarrer lors de l'initialisation du système :
$ chkconfig --list vsftpd vsftpd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
service vsftpd start vsftpd pour démarrer le service vsftpd:
$service vsftpd start vsftpd Starting vsftpd for vsftpd: [ OK ]
udev pour implémenter la persistence LUN. Avant d'implémenter la persistence LUN dans votre système, assurez- vous d'avoir bien acquis les UUID uniques qui conviennent. Une fois que vous les aurez acquis, vous pourrez configurer la persistence LUN en modifiant le fichier scsi_id qui réside dans le répertoire /etc . Une fois que vous avez ouvert ce dossier dans l'éditeur de textes, vous devrez commenter cette ligne:
# options=-b
# options=-g
scsi_id:
# scsi_id -g -s /block/sdc *3600a0b80001327510000015427b625e*
20-names.rules qui réside dans le répertoire /etc/udev/rules.d . Les règles de nomenclature pour le nom doivent suivre le format suivant :
# KERNEL="sd*", BUS="scsi", PROGRAM="sbin/scsi_id", RESULT="UUID", NAME="devicename"
UUID et devicenameexistants et le nom du périphérique avec l'UUID ci-dessus. La règle de nomenclature devrait ressembler à ceci:
KERNEL="sd*", BUS="scsi", PROGRAM="sbin/scsi_id", RESULT="3600a0b80001327510000015427b625e", NAME="mydevicename"
/dev/sd* pour inspecter les UUID donnés. Lorsqu'il trouve un périphérique qui correspond, il crée un noeud de périphérique intitulé /etc/udev/rules.d . Pour cet exemple, le noeud de périphérique est /dev/mydevice . Finalement, vous aurez besoin d'adjoindre au fichier /etc/rc.local la ligne suivante:
/sbin/start_udev
multipath.conf qui réside dans le répertoire /etc/:
multipath {
wwid 3600a0b80001327510000015427b625e
alias oramp1
}
multipath {
wwid 3600a0b80001327510000015427b6
alias oramp2
}
multipath {
wwid 3600a0b80001327510000015427b625e
alias oramp3
}
multipath {
wwid 3600a0b80001327510000015427b625e
alias oramp4
}
/dev/mpath/oramp1, /dev/mpath/oramp2, /dev/mpath/oramp3, et dev/mpath/oramp4. Les périphériques résident dans le répertoire /dev/mpath . Les noms LUN sont persistants après les redémarrages car cela crée des noms aliasés sur le wwid de chacun des LUN.
/sbin/service smartd stop /sbin/chkconfig --del smartd
/var/lib/xen, the usually named vmlinuz.****** and initrd.******. These files are the initrd and vmlinuz files from virtual machines which either failed to boot or failed for some other reason. These files are temporary files extracted from virtual machine's boot disk during the start up sequence. These files should be automatically removed after the virtual machine is shut down cleanly. Then you can safely delete old and stale copies from this directory.
vino-preferences.
~/.vnc/xstartup pour démarrer la session GNOME quand vncserver démarre. La première fois que le script vncserver est exécuté, on vous demandera le mot de passe que vous souhaitez pour la session VNC.
xstartup:
#!/bin/sh # Uncomment the following two lines for normal desktop: # unset SESSION_MANAGER # exec /etc/X11/xinit/xinitrc [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources #xsetroot -solid grey #vncconfig -iconic & #xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & #twm & if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then eval `dbus-launch --sh-syntax –exit-with-session` echo "D-BUS per-session daemon address is: \ $DBUS_SESSION_BUS_ADDRESS" fi exec gnome-session
uuidgen command. Then for the vif entries you must define a unique MAC address for each guest (if you are copying a guest configuration from an existing guest, you can create a script to handle it). For the xen bridge information, if you move an existing guest configuration file to a new host, you must update the xenbr entry to match your local networking configuration. For the Device entries, you must modify the entries in the 'disk=' section to point to the correct guest image.
/etc/sysconfig/network file to match the new guest's hostname.
HWADDR du fichier /etc/sysconfig/network-scripts/ifcfg-eth0 pour qu'il corresponde à la sortie du fichier ifconfig eth0 et si vous utilisez les adresses IP statiques, vous devrez modifier la saisie IPADDR.
name uuid uuidgen. Echantillon de sortie UUID:
$ uuidgen a984a14f-4191-4d14-868e-329906b211e5
vifxenbr pour correspondre à votre configuration de réseau local (vous obtiendrez l'information de pont en utilisant la commande brctl show).
brctl show. pour pointer à l'image d'invité qui convient.
/etc/sysconfig/network HOSTNAME entry to the guest's new hostname.
/etc/sysconfig/network-scripts/ifcfg-eth0 HWADDR à la sortie de ifconfig eth0
IPADDR si une adresse IP statique est utilisée.
libvirt.
libvirt.
virsh can handle XML configuration files. You may want to use this to your advantage for scripting large deployments with special options. You can add devices defined in an XML file to a running para-virtualized guest. For example, to add a ISO file as hdc to a running guest create an XML file:
# cat satelliteiso.xml <disk type="file" device="disk"> <driver name="file"/> <source file="/var/lib/libvirt/images/rhn-satellite-5.0.1-11-redhat-linux-as-i386-4-embedded-oracle.iso"/> <target dev="hdc"/> <readonly/> </disk>Run
virsh attach-device to attach the ISO as hdc to a guest called "satellite" :
# virsh attach-device satellite satelliteiso.xml
Table des matières
xentop xentop affiche des informations en temps réel sur le système hôte et sur les domaines invités.
xmdmesg et log
vmstat
iostat
lsof
iostat, mpstat et sar sont fournies par le paquetage sysstat.
XenOprofile
systemtap
crash
sysrq
sysrq t
sysrq w
ifconfig
tcpdump
tcpdump command 'sniffs' network packets. tcpdump is useful for finding network abnormalities and problems with network authentication. There is a graphical version of tcpdump named wireshark.
brctl
brctl est un outil de mise en réseau qui inspecte et configure la configuration de pont éthernet dans le noyau de Virtualisation Linux. Vous devez posséder un accès super-utilisateur avant d'exécuter ces exemples de commandes:
# brctl show bridge-name bridge-id STP enabled interfaces ----------------------------------------------------------------------------- xenbr0 8000.feffffff no vif13.0 xenbr1 8000.ffffefff yes pddummy0 xenbr2 8000.ffffffef no vif0.0 # brctl showmacs xenbr0 port-no mac-addr local? aging timer 1 fe:ff:ff:ff:ff: yes 0.00 2 fe:ff:ff:fe:ff: yes 0.00 # brctl showstp xenbr0 xenbr0 bridge-id 8000.fefffffffff designated-root 8000.fefffffffff root-port 0 path-cost 0 max-age 20.00 bridge-max-age 20.00 hello-time 2.00 bridge-hello-time 2.00 forward-delay 0.00 bridge-forward-delay 0.00 aging-time 300.01 hello-timer 1.43 tcn-timer 0.00 topology-change-timer 0.00 gc-timer 0.02
Server de Red Hat Enterprise Linux 5.
yum install vnc command.
yum install vnc-server.
/etc/xen/. Ce répertoire contient le démon xend et d'autres fichiers de configuration de machines virtuelles. Les fichiers des scripts de mise en réseau se trouvent dans le répertoire /scripts.
/var/log/xen.
/var/lib/libvirt/images.
/proc/xen/.
xend et le processus qemu-dm, deux utilitaires qui écrivent de multiples fichiers journaux dans le répertoire /var/log/xen/ :
xend.log est le fichier journal qui contient toutes les données collectées par le démon xend, que ce soit un évènement système ordinaire, ou une action initiée par l'opérateur. Toutes les opérations des machines virtuelles (comme créer, fermer, supprimer etc.) apparaissent à cet endroit. Le xend.log est généralement le premier endroit où vous pouvez tracer les problèmes d'événement ou de performance. Il contient des entrées détaillées et les conditions des messages d'erreur.
xend-debug.log est le fichier journal qui contient des données d'erreurs dans les évènements à partir de xend et les sous-systèmes de virtualisation (comme la mémoire tampon, les scripts Python, etc.).
xen-hotplug-log est le fichier journal contenant les données des évènements "hotplug". Si un périphérique ou un script réseau ne vient pas en ligne, l'évènement apparaît ici.
qemu-dm.[PID].log est le fichier journal créé par le processus qemu-dm pour chaque invité pleinement virtualisé. Quand vous utilisez ce fichier journal, vous devez récupérer le processus PID qemu-dm en utilisant la commande ps pour examiner les arguments du processus afin d'isoler le processus qemu-dm sur la machine virtuelle. Notez que vous devez remplacer le symbole [PID] par le processus PID qemu-dm.
virt-manager.log qui réside dans le répertoire /.virt-manager. Notez que chaque fois que vous démarrer le gestionnaire de machines virtuelles, il surcharge le contenu des fichiers journaux existants. Assurez-vous de sauvegarder le fichier virt-manager.log avant de redémarrer le gestionnaire de machines virtuelles après une erreur système.
/var/lib/libvirt/images.
xend, il met à jour la xend-database qui réside dans le répertoire /var/lib/xen/xend-db.
xm dump-core) résident dans le répertoire /var/lib/xen/dumps.
/etc/xen contient les fichiers de configuration que vous utilisez pour gérer les ressources système. Le fichier de configuration du démon xend est appelé /etc/xen/xend-config.sxp. Ce fichier peut être modifié pour implémenter les modifications sur tout le système et pour configurer la mise en réseau. Cependant, la modification manuelle des fichiers dans le dossier /etc/xen/ est déconseillée.
proc sont une autre ressource qui vous permet de rassembler des informations système. Ces entrées proc résident dans le répertoire /proc/xen:
/proc/xen/capabilities
/proc/xen/balloon
/proc/xen/xenbus/
xend.log file contains the same basic information as when you run the xm log command. This log is found in the /var/log/ directory. Here is an example log entry for when you create a domain running a kernel:
[2006-12-27 02:23:02 xend] ERROR (SrvBase: 163) op=create: Error creating domain: (0, 'Error')
Traceback (most recent call list)
File "/usr/lib/python2.4/site-packages/xen/xend/server/SrvBase.py" line 107 in_perform val = op_method (op,req)
File
"/usr/lib/python2.4/site-packages/xen/xend/server/SrvDomainDir.py line 71 in op_create
raise XendError ("Error creating domain: " + str(ex))
XendError: Error creating domain: (0, 'Error')
xend-debug.log, est très utile aux administrateurs système puisqu'il contient des informations encore plus détaillées que le xend.log. Voici les mêmes données d'erreurs que pour le même problème de création de domaine de noyau:
ERROR: Will only load images built for Xen v3.0 ERROR: Actually saw: GUEST_OS=netbsd, GUEST_VER=2.0, XEN_VER=2.0; LOADER=generic, BSD_SYMTAB' ERROR: Error constructing guest OS
grub.conf file to enable a 38400-bps serial console on com1 /dev/ttyS0:
title Red Hat Enterprise Linux (2.6.18-8.2080_xen0) root (hd0,2) kernel /xen.gz-2.6.18-8.el5 com1=38400,8n1 module /vmlinuz-2.618-8.el5xen ro root=LABEL=/rhgb quiet console=xvc console=tty xencons=xvc module /initrd-2.6.18-8.el5xen.img
sync_console peut vous aider à déterminer un problème qui cause des "hangs" (suspensions de système) avec des sorties de console d'hyperviseur asynchrone, et le "pnpacpi=off" se charge d'un problème qui casse les saisies sur la console série. Les paramètres "console=ttyS0" et "console=tty" signifient que les erreurs de noyau sont journalisées avec à la fois la console VGA normale et la console série. Ensuite vous pouvez installer et paramétrer ttywatch pour capturer les données sur un hôte distant connecté avec un cable "null-modem" standard. Par exemple, sur l'hôte distant vous pouvez saisir :
ttywatch --name myhost --port /dev/ttyS0
/dev/ttyS0 vers le fichier /var/log/ttywatch/myhost.log.
# virsh console [guest name, ID or UUID]
virt-manager to display the virtual text console. In the guest console window, select Serial Console from the View menu.
grub.conf file, and include the 'console =ttyS0 console=tty0' parameter. This ensures that the kernel messages are sent to the virtual serial console (and the normal graphical console). To use the guest's serial console, you must edit the libvirt configuration file configuration file. On the host, access the serial console with the following command:
# virsh console
virt-manager to display the virtual text console. In the guest console window, select Serial Console from the View menu.
xend, il ne se passe rien. Saisissez virsh list et vous recevrez ce qui suit :
Error: Error connecting to xend: Connection refused. Is xend running?
xend start manuellement et vous obtenez des messages d'erreurs supplémentaires :
Error: Could not obtain handle on privileged command interfaces (2 = No such file or directory) Traceback (most recent call last:) File "/usr/sbin/xend/", line 33 in ? from xen.xend.server. import SrvDaemon File "/usr/lib/python2.4/site-packages/xen/xend/server/SrvDaemon.py" , line 26 in ? from xen.xend import XendDomain File "/usr//lib/python2.4/site-packages/xen/xend/XendDomain.py" , line 33, in ? from xen.xend import XendDomainInfo File "/usr/lib/python2.4/site-packages/xen/xend/image.py" , line37, in ? import images File "/usr/lib/python2.4/site-packages/xen/xend/image.py" , line30, in ? xc = xen.lowlevel.xc.xc () RuntimeError: (2, 'No such file or directory' )
kernel-xen. Pour corriger cela, vous devez sélectionner le noyau kernel-xen au moment du lancement (ou configurer kernel-xen par défaut dans le fichier grub.conf).
"Invalid argument". Cela signifie en général que l'image noyau que vous tentez de lancer est incompatible avec l'hyperviseur. Un exemple de cela serait si vous tentiez d'exécuter un noyau non-PAE FC5 sur un hyperviseur FC6 uniquement PAE.
grub.conf redevient directement un noyau bare-metal au lieu d'un noyau de virtualisation.
/etc/sysconfig/kernel/ directory. You must ensure that kernel-xen parameter is set as the default option in your grub.conf file.
/boot/grub/grub.conf en choisissant les paramètres de périphérique série appropriés.
com1, modifier /boot/grub/grub.conf en insérant les lignes com1=115200,8n1, console=tty0 et console=ttyS0,115200 comme indiqué.
title Red Hat Enterprise Linux 5 i386 Xen (2.6.18-92.el5xen) root (hd0, 8) kernel /boot/xen.gz-2.6.18-92.el5com1=115200,8n1module /boot/vmlinuz-2.6.18-92.el5xen ro root=LABEL=VG_i386console=tty0console=ttyS0,115200module /boot/initrd-2.6.18-92.el5xen.img
com2, modifier /boot/grub/grub.conf en insérant les lignes com2=115200,8n1 console=com2L, console=tty0 et console=ttyS0,115200 comme indiqué.
title Red Hat Enterprise Linux 5 i386 Xen (2.6.18-92.el5xen) root (hd0, 8) kernel /boot/xen.gz-2.6.18-92.el5 com2=115200,8n1 console=com2L module /boot/vmlinuz-2.6.18-92.el5xen ro root=LABEL=VG_i386 console=tty0 console=ttyS0,115200 module /boot/initrd-2.6.18-92.el5xen.img
com1, com2, etc.) que vous avez spécifié lors de l'étape précédente.
com2, le paramètre console=ttyS0 sur la ligne vmlinuz est utilisé. Le comportement de chaque port utilisé comme console=ttyS0 n'est pas un comportement Linux standard et est spécifique à l'environnement Xen.
virsh console" ou dans la fenêtre "Serial Console" de virt-manager. Paramétrer la console série virtuelle à l'aide de la procédure suivante :
/boot/grub/grub.conf comme suit :
Red Hat Enterprise Linux 5 i386 Xen (2.6.18-92.el5xen) root (hd0, 0) kernel /boot/vmlinuz-2.6.18-92.el5xen ro root=LABEL=VG_i386 console=xvc0 initrd /boot/initrd-2.6.18-92.el5xen.img
xend) peut être configuré pour journaliser les sorties de consoles série des invités paravirtualisés.
xend, modifier /etc/sysconfig/xend. Changer l'entrée :
# Log all guest console output (cf xm console) #XENCONSOLED_LOG_GUESTS=no
# Log all guest console output (cf xm console) XENCONSOLED_LOG_GUESTS=yes
/var/log/xen/console.
virsh console".
ttyS0 sur Linux, ou COM1 sur Windows.
/boot/grub/grub.conf en insérant la ligne "console=tty0 console=ttys0,115200".
title Red Hat Enterprise Linux Server (2.6.18-92.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-92.el5 ro root=/dev/volgroup00/logvol00
console=tty0 console=ttys0,115200
initrd /initrd-2.6.18-92.el5.img
virsh console".
/var/log/xen/console.
virt-manager or virt-install tools on Red Hat Enterprise Linux 5, the guests configuration files are created automatically in the /etc/xen directory.
name = "rhel5vm01" memory = "2048" disk = ['tap:aio:/var/lib/libvirt/images/rhel5vm01.dsk,xvda,w',] vif = ["type=ieomu, mac=00:16:3e:09:f0:12 bridge=xenbr0', "type=ieomu, mac=00:16:3e:09:f0:13 ] vnc = 1 vncunused = 1 uuid = "302bd9ce-4f60-fc67-9e40-7a77d9b4e1ed" bootloader = "/usr/bin/pygrub" vcpus=2 on_reboot = "restart" on_crash = "restart"
serial="pty" est la valeur par défaut pour le fichier de configuration. Cet exemple de fichier de configuration est pour l'invité pleinement virtualisé :
name = "rhel5u5-86_64" builder = "hvm" memory = 500 disk = ['/var/lib/libvirt/images/rhel5u5-x86_64.dsk.hda,w'] vif = [ 'type=ioemu, mac=00:16:3e:09:f0:12, bridge=xenbr0', 'type=ieomu, mac=00:16:3e:09:f0:13, bridge=xenbr1'] uuid = "b10372f9-91d7-ao5f-12ff-372100c99af5' device_model = "/usr/lib64/xen/bin/qemu-dm" kernel = "/usr/lib/xen/boot/hvmloader/" vnc = 1 vncunused = 1 apic = 1 acpi = 1 pae = 1 vcpus =1 serial ="pty" # enable serial console on_boot = 'restart'
virsh dumpxml et virsh create (ou virsh edit) pour modifier les fichiers de configuration libvirt (basés-XML) qui ont des fonctions de vérification d'erreurs et de vérification de sécurité.
failed domain creation due to memory shortage, unable to balloon domain0
xend.log suite à cette erreur :
[2006-12-21] 20:33:31 xend 3198] DEBUG (balloon:133) Balloon: 558432 Kib free; 0 to scrub; need 1048576; retries: 20 [2006-12-21] 20:33:31 xend. XendDomainInfo 3198] ERROR (XendDomainInfo: 202 Domain construction failed
xm list Domain0. Si dom0 n'est pas réduit, vous pouvez utiliser la commande virsh setmem dom0 NewMemSize pour vérifier la mémoire.
wrong kernel image: non-PAE kernel on a PAE
# xm create -c va-base Using config file "va-base" Error: (22, 'invalid argument') [2006-12-14 14:55:46 xend.XendDomainInfo 3874] ERRORs (XendDomainInfo:202) Domain construction failed Traceback (most recent call last) File "/usr/lib/python2.4/site-packages/xen/xend/XendDomainInfo.py", line 195 in create vm.initDomain() File " /usr/lib/python2.4/site-packages/xen/xend/XendDomainInfo.py", line 1363 in initDomain raise VmError(str(exn)) VmError: (22, 'Invalid argument') [2006-12-14 14:55:46 xend.XendDomainInfo 3874] DEBUG (XenDomainInfo: 1449] XendDlomainInfo.destroy: domain=1 [2006-12-14 14:55:46 xend.XendDomainInfo 3874] DEBUG (XenDomainInfo: 1457] XendDlomainInfo.destroy:Domain(1)
Unable to open a connection to the Xen hypervisor or daemon
/etc/hosts. Vérifiez le fichier et vérifiez que l'entrée de l'hôte local est activée. Voici un exemple d'entrée d'hôte local incorrecte :
# Do not remove the following line, or various programs # that require network functionality will fail. localhost.localdomain localhost
# Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost localhost.localdomain. localhost
xen-xend.log file):
Bridge xenbr1 does not exist!
# xm create mySQL01 Using config file " mySQL01" Going to boot Red Hat Enterprise Linux Server (2.6.18.-1.2747 .el5xen) kernel: /vmlinuz-2.6.18-12747.el5xen initrd: /initrd-2.6.18-1.2747.el5xen.img Error: Device 0 (vif) could not be connected. Hotplug scripts not working.
xend.log affiche les erreurs suivantes :
[2006-11-14 15:07:08 xend 3875] DEBUG (DevController:143) Waiting for devices vif [2006-11-14 15:07:08 xend 3875] DEBUG (DevController:149) Waiting for 0 [2006-11-14 15:07:08 xend 3875] DEBUG (DevController:464) hotplugStatusCallback /local/domain/0/backend/vif/2/0/hotplug-status [2006-11-14 15:08:09 xend.XendDomainInfo 3875] DEBUG (XendDomainInfo:1449) XendDomainInfo.destroy: domid=2 [2006-11-14 15:08:09 xend.XendDomainInfo 3875] DEBUG (XendDomainInfo:1457) XendDomainInfo.destroyDomain(2) [2006-11-14 15:07:08 xend 3875] DEBUG (DevController:464) hotplugStatusCallback /local/domain/0/backend/vif/2/0/hotplug-status
/etc/xen directory. For example, editing the guest mySQL01
# vim /etc/xen/mySQL01
Locate the vif entry. Assuming you are using xenbr0 as the default bridge, the proper entry should resemble the following:
# vif = ['mac=00:16:3e:49:1d:11, bridge=xenbr0',]
# xm shutdown win2k3xen12 # xm create win2k3xen12 Using config file "win2k3xen12". /usr/lib64/python2.4/site-packages/xenxm/opts.py:520: Deprecation Warning: Non ASCII character '\xc0' in file win2k3xen12 on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details execfile (defconfig, globs, locs,) Error: invalid syntax 9win2k3xen12, line1)
/etc/xen/ comprendxend.
scripts qui contient les scripts de pour réseaux virtuels.
/var/log/xen/ /var/lib/libvirt/images/ /proc/xen/ cat /proc/partitions" comme ci-dessous.
# cat /proc/partitions major minor #blocks name 202 16 104857600 xvdb 3 0 8175688 hda
/etc/inittab :
1:12345:respawn:/sbin/mingetty xvc0
Xen Virtual Ethernet dans le système d'exploitation de l'invité. Vérifier ceci (pour Red Hat Enterprise Linux 4 et Red Hat Enterprise Linux 5) en exécutant :
cat /etc/modprobe.conf
cat /etc/modules.conf
alias eth0 xen-vnif
alias eth0 xen-vnif) pour chaque interface paravirtualisée pour l'invité.
/etc/modprobe.conf. Modifier /etc/modprobe.conf et y ajouter la ligne suivante :
options loop max_loop=64
phy: block device ou tap:aio Pour utiliser des invités équipés de périphériques en boucle sur un système complètement virtualisé, utiliser les commandes phy: device ou file: file .
dom0 has not ballooned down enough to provide space for a recently created or started guest. In your /var/log/xen/xend.log, an example error message indicating this has occurred:
[2006-11-21 20:33:31 xend 3198] DEBUG (balloon:133) Balloon: 558432 KiB free; 0 to scrub; need 1048576; retries: 20. [2006-11-21 20:33:52 xend.XendDomainInfo 3198] ERROR (XendDomainInfo:202) Domain construction failedYou can verify the amount of memory currently used by
dom0 with the command “xm list Domain-0”. If dom0 is not ballooned down you can use the command “xm mem-set Domain-0 NewMemSize” where NewMemSize should be a smaller value.
# xm create testVM Using config file "./testVM". Going to boot Red Hat Enterprise Linux Server (2.6.18-1.2839.el5) kernel: /vmlinuz-2.6.18-1.2839.el5 initrd: /initrd-2.6.18-1.2839.el5.img Error: (22, 'Invalid argument')In the above error you can see that the kernel line shows that the system is trying to boot a non kernel-xen kernel. The correct entry in the example is ”
kernel: /vmlinuz-2.6.18-1.2839.el5xen”.
/etc/grub.conf.
kernel-xen est installé sur votre invité, vous pouvez lancer l'invité :
xm create -c GuestName
GuestName is the name of the guest. The previous command will present you with the GRUB boot loader screen and allow you to select the kernel to boot. You will have to choose the kernel-xen kernel to boot. Once the guest has completed the boot process you can log into the guest and edit /etc/grub.conf to change the default boot kernel to your kernel-xen. Simply change the line “default=X” (where X is a number starting at '0') to correspond to the entry with your kernel-xen line. The numbering starts at '0' so if your kernel-xen entry is the second entry you would enter '1' as the default,for example “default=1”.
# xm create -c va-base Using config file "va-base". Error: (22, 'Invalid argument') [2006-12-14 14:55:46 xend.XendDomainInfo 3874] ERROR (XendDomainInfo:202) Domain construction failed Traceback (most recent call last): File "/usr/lib/python2.4/site-packages/xen/xend/XendDomainInfo.py", line 195, in create vm.initDomain() File "/usr/lib/python2.4/site-packages/xen/xend/XendDomainInfo.py", line 1363, in initDomain raise VmError(str(exn)) VmError: (22, 'Invalid argument') [2006-12-14 14:55:46 xend.XendDomainInfo 3874] DEBUG (XendDomainInfo:1449) XendDomainInfo.destroy: domid=1 [2006-12-14 14:55:46 xend.XendDomainInfo 3874] DEBUG (XendDomainInfo:1457) XendDomainInfo.destroyDomain(1)If you need to run a 32 bit or non-PAE kernel you will need to run your guest as a fully-virtualized virtual machine. The rules for hypervisor compatibility are:
Your CPU does not support long mode. Use a 32 bit distribution. This problem is caused by a missing or incorrect pae setting. Ensure you have an entry “pae=1” in your guest's configuration file.
virt-manager peut échouer au démarrage et afficher une erreur comme “Unable to open a connection to the Xen hypervisor/daemon”. Cela est normalement dû à une saisie manquante localhost dans le fichier /etc/hosts. Vérifiez que vous avez bien saisi localhost et s'il y a une saisie manquante dans /etc/hosts, et insérez une nouvelle saisie dans localhost si elle n'est pas présente. Un /etc/hosts éronné peut ressembler à ce qui suit :
# Do not remove the following line, or various programs # that require network functionality will fail. localhost.localdomain localhost
# Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost localhost.localdomain localhost
Applying Intel CPU microcode update: FATAL: Module microcode not found. ERROR: Module microcode does not exist in /proc/modulesAs the virtual machine is running on virtual CPUs there is no point updating the microcode. Disabling the microcode update for your virtual machines will stop this error:
/sbin/service microcode_ctl stop /sbin/chkconfig --del microcode_ctl
xm create” cherchera un fichier de configuration dans votre répertoire courant, puis dans /etc/xen
# xm shutdown win2k3xen12 # xm create win2k3xen12 Using config file "win2k3xen12". /usr/lib64/python2.4/site-packages/xen/xm/opts.py:520: DeprecationWarning: Non-ASCII character '\xc0' in file win2k3xen12 on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details execfile(defconfig, globs, locs) Error: invalid syntax (win2k3xen12, line 1)
Enabling the virtualization extensions in BIOS
cat /proc/cpuinfo | grep vmx svm. S'il en résulte en une sortie, alors les extensions de virtualisation sont activées. S'il n'y a pas de sortie, le paramètre des extensions de virtualisation de votre système ou le paramètre BIOS n'est peut-être pas activé.
virsh command (where GUEST is the guest's name):
# virsh edit GUESTvirsh edit utilise la variable shell $EDITOR afin de déterminer quel éditeur utiliser.
<interface type='network'>
[output truncated]
<model type='rtl8139' />
</interface>
'rtl8139' to 'e1000'. This will change the driver from the rtl8139 driver to the e1000 driver.
<interface type='network'>
[output truncated]
<model type='e1000' />
</interface>
# virsh dumpxml GUEST > /tmp/guest.xml
# cp /tmp/guest.xml /tmp/new-guest.xml # vi /tmp/new-guest.xml
<interface type='network'>
[output truncated]
<model type='e1000' />
</interface>
# virsh define /tmp/new-guest.xml # virsh start new-guest
/var/log/xen/xend et le processus qemu-dm.
xend.logxend-debug.logxen-hotplug.logqemu-dm.PID.logqemu-dm qui est démarré pour chaque invité totalement virtualisé.
PID sera remplacé par le PID du processus lié au qemu-dm relatif
PID correspondant à un processus qemu-dm particulier en utilisant la commande ps et en regardant à quels arguments de processus qemu-dm la machine virtuelle peut être identifiée.
.virt-manager in the user's home directory whom ran virt-manager. This directory will usually be ~/.virt-manager/virt-manager.
/var/lib/libvirt/images//var/lib/xen/xend-db//etc/xen//etc/xen/xend-config.sxp est la configuration principale du démon xend. Le fichier xend-config.sxp est utilisé pour activer ou désactiver les migrations ainsi que d'autres fonctionnalités qui ne sont pas configurées par libvirt. Utlisez les outils libvirt pour toutes les autres fonctionnalités.
/var/lib/xen/dump/xm dump-core.
/proc/xen/xen-kernel dans les fichiers suivants :
/proc/xen/capabilities
/proc/xen/privcmd
/proc/xen/balloon
/proc/xen/xenbus
/proc/xen/xsd_port
/proc/xen/xsd_kva
# insmod xen-platform-pci.o Warning: kernel-module version mismatch xen-platform-pci.o was compiled for kernel version 2.4.21-52.EL while this kernel is version 2.4.21-50.EL xen-platform-pci.o: unresolved symbol __ioremap_R9eac042a xen-platform-pci.o: unresolved symbol flush_signals_R50973be2 xen-platform-pci.o: unresolved symbol pci_read_config_byte_R0e425a9e xen-platform-pci.o: unresolved symbol __get_free_pages_R9016dd82 [...]The solution is to use the correct RPM package for your hardware architecture for the para-virtualized drivers.
Warning: kernel-module version mismatch xen-platform-pci.o was compiled for kernel version 2.4.21-52.EL while this kernel is version 2.4.21-50.EL Warning: loading xen-platform-pci.o will taint the kernel: forced load See http://www.tux.org/lkml/#export-tainted for information about tainted modules Module xen-platform-pci loaded, with warnings
# cd /lib/modules/`uname -r`/ # find . -name 'xen_*.ko' -print
# insmod \
/lib/modules/'uname -r'/{LocationofPV-drivers}/xen_platform_pci.ko
# insmod /lib/modules/'uname -r'/{LocationofPV-drivers}/xen_balloon.ko
# insmod /lib/modules/'uname -r'/{LocationofPV-drivers}/xen_vnif.ko
# insmod /lib/modules/'uname -r'/{LocationofPV-drivers}/xen_vbd.ko
/var/log/messages
# grep -E "vif|vbd|xen" /var/log/messages
xen_mem: Initialising balloon driver
vif vif-0: 2 parsing device/vif/0/mac
vbd vbd-768: 19 xlvbd_add at /local/domain/0/backend/vbd/21/76
vbd vbd-768: 19 xlvbd_add at /local/domain/0/backend/vbd/21/76
xen-vbd: registered block device major 202
You can also use the lsmod command to list the loaded para-virtualized drivers. It should output a list containing the xen_vnif, xen_vbd, xen_platform_pci and xen_balloon modules.
# lsmod|grep xen xen_vbd 19168 1 xen_vnif 28416 0 xen_balloon 15256 1 xen_vnif xen_platform_pci 98520 3 xen_vbd,xen_vnif,xen_balloon,[permanent]
type=ioemu' part of 'vif=' line in your guest's configuration file.
domU refers to the guest operating systems which run on the host system (the dom0 domain).
/dev/VolGroup00/LogVol02),
/dev/sda5), and
/dev/sda).
tap:aiotap:aio parameter sets the Xen hypervisor to use an advanced access mode designed for safety and performance. File-based, are accessed using a kernel thread and a user-space process. The tap:aio method respects guest flush requests which makes it safer than the file driver. The virtualization tools use tap:aio by default for accessing file-based guest disks on the Xen Hypervisor.
ext2 et ext3, les identificateurs de périphériques RAID, iSCSI et LUN, les adresses MAC et les identificateurs de machines virtuelles.


libvirt.
/usr/share/doc/xen-<version-number>/ —. est le répertoire contenant beaucoup d'informations à propos de l'hyperviseur de virtualisation partielle Xen et les outils de gestion associés, y compris un aperçu des différents exemples de configurations, des informations spécifiques au matériel et la documentation utilisateur en amont de Xen.
man virsh et /usr/share/doc/libvirt-<version-number> — contiennent des sous-commandes et des options pour l'utilitaire de gestion de la machine virtuelle virsh ainsi que des informations détaillées à propos de la bibliothèque de virtualisation API libvirt.
/usr/share/doc/gnome-applet-vm-<version-number> — Contient de la documentation sur l'applet graphique du tableau de bord GNOME qui contrôle et gère les machines virtuelles qui sont exécutées en local.
/usr/share/doc/libvirt-python-<version-number> — Fournit des détails sur les associations Python pour la bibliothèque libvirt. Le paquetage libvirt-python permet aux développeurs python de créer des programmes qui s'interfacent avec la bibliothèque de gestion de la virtualisation libvirt.
/usr/share/doc/python-virtinst-<version-number> — Fournit de la documentation sur la commande virt-install qui aide au démarrage d'installations de distributions Fedora et Red Hat Enterprise Linux au sein des machines virtuelles.
/usr/share/doc/virt-manager-<version-number> — Fournit de la documentation sur le gestionnaire de machines virtuelles qui fournit un outil graphique pour administrer les machines virtuelles.