Domanda

La virtualizzazione dei server è una cosa importante in questi giorni, quindi ho il compito di installare parte del nostro software su un server virtualizzato e vedere cosa succede. Per farla breve: un trasferimento rsync mette immediatamente in ginocchio il server virtualizzato. L'host di virtualizzazione è una macchina robusta senza altri carichi; Non penso che dovrebbe succedere. Top mostra medie di carico elevate e cpu iowait vicino al 100%. C'è un enorme collo di bottiglia da qualche parte.

Sono più un programmatore che un amministratore di sistema, mi mancano le conoscenze su come risolvere questo problema al di fuori di Googling casuale. Sospetto di non essere solo in questo.

Quello che mi piacerebbe vedere qui sono consigli generali sulla virtualizzazione e indicazioni su buoni articoli e altre risorse, che io e altri potremmo usare per educare noi stessi.

  • Quali strumenti (anche strumenti unix standard) possono essere utilizzati per individuare i colli di bottiglia?
  • Quali metriche devono essere seguite per garantire il corretto svolgimento delle cose?
  • Che tipo di cose possono essere virtualizzate in modo efficiente?
  • Che tipo di installazione è destinata a fallire?

Mi scuso per l'ampiezza della domanda. Semplicemente non ho le conoscenze per porre utili domande specifiche al riguardo.

Modifica: ulteriori informazioni sul mio problema specifico:

  • Paravirtualizzazione XAN, 3 x CentOS ospiti
  • Tutti gli ospiti su dischi SCSI locali hanno un controller raid completamente hardware
  • rsyncd in esecuzione su 1 sistema operativo guest, trasferimento avviato da un server remoto non virtualizzato tramite LAN a 100 Mbps

Come ho detto prima, non posso davvero fornire una tonnellata di dati utili. Non mi aspetto davvero di ottenere una soluzione diretta a questo problema, sarei felice con indicazioni su dove iniziare a sviluppare le competenze necessarie per comprendere meglio questo tipo di problemi.

È stato utile?

Soluzione

Lo avrei inserito in un commento, ma penso che sia più utile allo scoperto:

Potresti aggiungere maggiori dettagli sulla tua configurazione:

  • Quale server VM?
    (Server VMware, VMware ESX, MS VirtualServer, MS Hyper-V, qualcos'altro?)
  • Quale sistema operativo per gli ospiti?
    (Windows, Linux, 32 bit, 64 bit?)
  • Dove sono archiviati gli ospiti?
    (Disco locale o su un NAS o SAN?)
  • Stavi eseguendo la risincronizzazione tra guest sullo stesso server VM o tra un guest e un server fisico?
  • Se attraverso una rete, quanto è veloce la rete?

L'ottimizzazione delle prestazioni in qualsiasi ambiente consiste nel 90% di raccolta di dati e nell'analisi del 10%. Gli ambienti virtualizzati hanno più variabili da considerare rispetto agli ambienti fisici, ma soprattutto hanno una curva di risposta diversa rispetto agli ambienti fisici. Alcune applicazioni possono funzionare meglio in un ambiente virtualizzato rispetto a un ambiente fisico; altri no. Devi comprendere i requisiti dell'applicazione e i vincoli dell'implementazione.

Non credo che ci siano applicazioni solo software che non possono essere implementate con successo su server virtuali, se si presta attenzione ai dettagli. (Le applicazioni che richiedono hardware personalizzato che non può essere virtualizzato correttamente sono un problema diverso.)

Altri suggerimenti

Uso rsync per mantenere sincronizzate alcune parti del nostro (nuovissimo) ambiente virtuale senza problemi. Non penso che sia un problema di virtualizzazione tanto quanto è un problema di I / O, che sembra aver già identificato.

Ho scoperto che la virtualizzazione è molto, molto faticosa per i dischi rigidi, e questo peggiora solo più ospiti hai nella casella host. Per i computer che richiedono molta I / O, prendere in considerazione la possibilità di segmentare il loro accesso al disco in modo che non sia un host. Stai usando qualche tipo di tecnologia SAN? Abbiamo scoperto che è molto utile sul mio posto di lavoro (stiamo usando due server Sun Intel a 8 core e un array iSCSI da 1 TB 12 dischi).

Il tuo hardware è completamente supportato dal fornitore del software di virtualizzazione? Se stai cercando di eseguire hardware non supportato, è probabile che il controller del disco non utilizzi i migliori driver, il che spiegherebbe i tuoi accessi lenti al disco.

Puoi usare iostat su Linux / Unix per ottenere un feedback sull'I / O, e c'è anche iotop , sebbene non sia ancora impacchettato in molte distro.

Fuori mano direi che questo è un problema di I / O. In ambienti virtuali uno dei maggiori fattori che influiscono sulle prestazioni è lo stato del disco della macchina host. Le cose che facciamo per ottimizzare le prestazioni sono:

  1. Allocazione fissa del disco. In questo modo si ottiene un blocco contiguo di spazio su disco per la VM in cui vivere.
  2. Pianifica una deframmentazione del sistema operativo VM Slice e dell'unità del server host. La frammentazione è il tuo nemico.
  3. Assicurati di terminare le sessioni di un server con garbo. Quando si rimbalza il sistema operativo virtuale, NON arrestare semplicemente la sezione VM, poiché ciò causa un'enorme frammentazione del disco. Il sistema operativo virtuale deve eseguire il processo di spegnimento / riavvio.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top