Il servizio xendomains si avvia, arresta e migra automaticamente i client Oracle VM (domU) quando il server Oracle VM (dom0) si avvia o si spegne. In sostanza, il servizio xendomains emette automaticamente una serie di comandi xm per garantire che i client Oracle VM appropriati vengano avviati e arrestati quando il server dom0 viene avviato o arrestato. Nessun demone o altro processo in background è controllato dal servizio xendomains; solo macchine virtuali client dom0.
Parte del prodotto Oracle VM Server, il servizio xendomains viene fornito come parte del pacchetto RPM xen-tools e viene generalmente installato come parte del prodotto Oracle VM Server.
Durante l'avvio del sistema dom0, viene avviato il servizio xend (descritto altrove). Poco dopo viene eseguito il servizio xendomains. Tutti i client domU il cui stato è stato salvato da un arresto precedente vengono avviati dallo script /etc/init.d/xendomains. Quindi vengono avviati anche tutti i client domU contrassegnati per l'avvio automatico. Fatto ciò, il servizio xendomains termina.
Per impedire tentativi di eseguire il
# service xendomains start
comando più volte e quindi potenzialmente eseguire più istanze dei client domU, lo script xendomains mantiene il file di blocco /var/lock/subsys/xendomains file, come è pratica comune tra i servizi Linux. Se questo file di blocco esiste, il servizio non può essere riavviato; se non sono stati avviati client virtuali, questo file di blocco non viene creato.
Durante l'arresto del sistema dom0, prima che il servizio xend venga terminato, il servizio xendomains viene eseguito nuovamente per gestire eventuali client domU ancora in esecuzione. Lo spegnimento del client è suddiviso in più passaggi:
Fase | Richiesto? | Descrizione |
---|---|---|
Seleziona | Sì | Gestisci tutti i domini domU o solo quelli contrassegnati come AUTO |
SysRQ | Facoltativo | I domini dei client possono essere facoltativamente controllati emettendo tasti magici Alt-SysRQ alla macchina virtuale. |
Migra | Facoltativo | I domini client ancora in esecuzione dopo la pressione dei tasti Alt-SysRQ possono essere migrati su un altro host dom0 in esecuzione utilizzando il comando "xm migrate". |
Salva | Facoltativo | Invia un comando "xm save" a tutti i domini client ancora in esecuzione in locale dopo la fase di migrazione. |
Spegnimento | Sì | Emettere il comando "xm shutdown" per terminare senza problemi tutti i client virtuali ancora in esecuzione in locale. |
Pulizia | Sì | Rimuovi il file di blocco del servizio. |
Natura
Questo è un servizio che viene eseguito una volta all'avvio del sistema per avviare le macchine client Oracle VM selezionate e una volta prima dell'arresto del sistema per migrare, salvare o arrestare tutte le macchine client Oracle VM in esecuzione.
Controllo del servizio
Per eseguire automaticamente il servizio xendomains al successivo avvio del sistema, utilizzare il comando:
# chkconfig xendomains on # chkconfig --list xendomains xendomains 0:off 1:off 2:off 3:on 4:on 5:on 6:off
Per richiamare manualmente il servizio xendomains, usa il comando:
# service xendomains help Usage: /etc/init.d/xendomains {start|stop|restart|reload|status}
I dettagli di ciascuna funzione sono riepilogati di seguito:
Comando | Descrizione |
---|---|
inizio | Ripristina tutti i client domU salvati. Avvia i client domU contrassegnati come AUTO. |
fermati | Chiudi tutte le macchine virtuali client in esecuzione, utilizzando i metodi descritti in precedenza. |
riavvia | Equivalente a una sequenza di arresto / inizio. |
ricarica | Equivalente al comando di riavvio. |
stato | Visualizza un elenco dei domini client virtuali attualmente in esecuzione. Se nessuno, restituisce il codice di uscita 3. |
Configurazione
Il comportamento del servizio xendomains è controllato dal file /etc/sysconfig/xendomains. Questo file ben commentato controlla il modo in cui i client domU vengono gestiti dal servizio. Di seguito è riportato un file di configurazione di esempio:
## Path: System/xen ## Description: xen domain start/stop on boot ## Type: string ## Default: # # The xendomains script can send SysRq requests to domains on shutdown. # If you don't want to MIGRATE, SAVE, or SHUTDOWN, this may be a possibility # to do a quick and dirty shutdown ("s e i u o") or at least sync the disks # of the domains ("s"). # XENDOMAINS_SYSRQ="" ## Type: integer ## Default: 100000 # # If XENDOMAINS_SYSRQ is set, this variable determines how long to wait # (in microseconds) after each SysRq, so the domain has a chance to react. # If you want to a quick'n'dirty shutdown via SysRq, you may want to set # it to a relatively high value (1200000). # XENDOMAINS_USLEEP=100000 ## Type: integer ## Default: 5000000 # # When creating a guest domain, it is sensible to allow a little time for it # to get started before creating another domain or proceeding through the # boot process. Without this, the booting guests will thrash the disk as they # start up. This timeout (in microseconds) specifies the delay after guest # domain creation. # XENDOMAINS_CREATE_USLEEP=5000000 ## Type: string ## Default: "" # # Set this to a non-empty string if you want to migrate virtual machines # on shutdown. The string will be passed to the xm migrate DOMID command # as is: It should contain the target IP address of the physical machine # to migrate to and optionally parameters like --live. Leave empty if # you don't want to try virtual machine relocation on shutdown. # If migration succeeds, neither SAVE nor SHUTDOWN will be executed for # that domain. # XENDOMAINS_MIGRATE="" ## Type: string ## Default: /var/lib/xen/save # # Directory to save running domains to when the system (dom0) is # shut down. Will also be used to restore domains from if # XENDOMAINS_RESTORE # is set (see below). Leave empty to disable domain saving on shutdown # (e.g. because you rather shut domains down). # If domain saving does succeed, SHUTDOWN will not be executed. # XENDOMAINS_SAVE=/var/lib/xen/save ## Type: string ## Default: "--halt --wait" # # If neither MIGRATE nor SAVE were enabled or if they failed, you can # try to shut down a domain by sending it a shutdown request. To do this, # set this to "--halt --wait". Omit the "--wait" flag to avoid waiting # for the domain to be really down. Leave empty to skip domain shutdown. # XENDOMAINS_SHUTDOWN="--halt --wait" ## Type: string ## Default: "--all --halt --wait" # # After we have gone over all virtual machines (resp. all automatically # started ones, see XENDOMAINS_AUTO_ONLY below) in a loop and sent SysRq, # migrated, saved and/or shutdown according to the settings above, we # might want to shutdown the virtual machines that are still running # for some reason or another. To do this, set this variable to # "--all --halt --wait", it will be passed to xm shutdown. # Leave it empty not to do anything special here. # (Note: This will hit all virtual machines, even if XENDOMAINS_AUTO_ONLY # is set.) # XENDOMAINS_SHUTDOWN_ALL="--all --halt --wait" ## Type: boolean ## Default: true # # This variable determines whether saved domains from XENDOMAINS_SAVE # will be restored on system startup. # XENDOMAINS_RESTORE=true ## Type: string ## Default: /etc/xen/auto # # This variable sets the directory where domains configurations # are stored that should be started on system startup automatically. # Leave empty if you don't want to start domains automatically # (or just don't place any xen domain config files in that dir). # Note that the script tries to be clever if both RESTORE and AUTO are # set: It will first restore saved domains and then only start domains # in AUTO which are not running yet. # Note that the name matching is somewhat fuzzy. # XENDOMAINS_AUTO=/etc/xen/auto ## Type: boolean ## Default: false # # If this variable is set to "true", only the domains started via config # files in XENDOMAINS_AUTO will be treated according to XENDOMAINS_SYSRQ, # XENDOMAINS_MIGRATE, XENDOMAINS_SAVE, XENDMAINS_SHUTDOWN; otherwise # all running domains will be. # Note that the name matching is somewhat fuzzy. # XENDOMAINS_AUTO_ONLY=false ## Type: integer ## Default: 300 # # On xendomains stop, a number of xm commands (xm migrate, save, shutdown, # shutdown --all) may be executed. In the worst case, these commands may # stall forever, which will prevent a successful shutdown of the machine. # If this variable is non-zero, the script will set up a watchdog timer # for every of these xm commands and time it out after the number of seconds # specified by this variable. # Note that SHUTDOWN_ALL will not be called if no virtual machines or only # zombies are still running, so you don't need to enable this timeout just # for the zombie case. # The setting should be large enough to make sure that migrate/save/shutdown # can succeed. If you do live migrations, keep in mind that live migration # of a 1GB machine over Gigabit ethernet may actually take something like # 100s (assuming that live migration uses 10% of the network # bandwidth). # Depending on the virtual machine, a shutdown may also require a significant # amount of time. So better setup this variable to a huge number and hope the # watchdog never fires. # XENDOMAINS_STOP_MAXWAIT=300