spacer

Sysresccd-manual-it Manage remote windows linux servers using SystemRescueCd

History


About

Il modo più comune di usare SystemRescueCd è dal CDRom su un computer, in modo interattivo. Le versioni recenti di SystemrescueCd permettono anche l'uso in rete via PXE. Le opzioni di configurazione di rete (come ethx=ip, gateway=ip, dns=ip, dodhcp) permettono di configurare automaticamente l'accesso alla rete a SystemRescueCd nel momento di boot del computer. SystemRescueCd automaticamente avvia di default un server ssh e si può definire una password statica del root a linea di comando. In questo modo si può ottenere una console ssh al server, avviando SystemrescueCd personalizzato. Non c'è quindi bisogno di configurare niente per lavorare. Può essere molto utile anche per il ripristino completo, cioè reinstallare un backup del sistema operativo dopo un crash. Si può anche usare per amministrare un server.

In altre parole, si può gestire un server Windows/Linux che si trova nel datacenter a livello remoto, dal tuo ufficio. Non c'è bisogno di essere di fronte alla macchina per inseriere il CD, configurare l'interfaccia o settare una password. Tutto quello che bisogna fare è preparare un server di rete (uno o più server che seguono i servizi di rete: dhcpd, tftpd, httpd). Si possono anche installare questi tre servizi o su un server dedicato fisico/vmware o su una macchina che lavora su altri servizi.

Ci sono due modi interessanti per usarlo:

  • Si può preparare un server d'avvio pxe così da avere una console interattiva ssh per amministrare/riparare il server a mano. Si può preferire anche la console seriale, che è anch'essa supportata. Se hai bisogno di avviare programmi grafici come GParted da remoto, puoi usare l'opzione d'avvio vncserver (richiede SystemRescueCd-1.0.2 o successivi) così il server VNC viene automaticamente avviato da una macchina remota.
  • Si può anche configurare SystemRescueCd per avviare il proprio script autorun per eseguire i task automatici (backup, recovery, ...)

Finchè le caratteristiche di autorun di SystemRescueCd ti permettono di eseguire script localizzati su un server nfs/samba/http, non c'è bisogno di perdere tempo a creare una versione personalizzata di SystemRescueCd. Tutto quello che devi fare è installare il server d'avvio pxe così che SystemRescueCd si avvia automaticamente, configurare la rete e la password, scaricare gli script autorun ed eseguirli.

Per capire questo capitolo, devi prima leggere i due capitoli precedenti: Avvio della rete PXE con SystemRescueCd e Caricare all'avvio i propri scripts personali con autorun.

Esempi di cose interessanti che si possono fare

  • Ripristino Completo
    • Ripristinare un sistema windows rotto con ntfsclone/partimage
  • Partizionamento dell'Hard disk e amministrazione
    • Formattare l'hard disk e reinstallare una copia del sistema operativo
    • Ridimensionare le partizioni
    • Reinstallare il caricatore d'avvio
  • Correggere errori critici
    • Correggere problemi d'avvio (fsck fallisce all'avvio)
    • Resettare la password di root del sistema windows con l'immagine del floppy disk ntpass
    • Resettare la password di root del sistema linux

Esempio di come usare un ripristino automatico completo su un server remoto

Overview

Questo è un esempio completo di come organizzare un ripristino automatico completo basato su una rete di tre macchine localizzate in remoto. Questo esempio mostra le tipologie di cose che si possono fare con SystemrescueCd. I dettagli tecnici e i passi di configurazione sono dati nelle sezioni seguenti.

Esempio di una rete datacenter

Nella nostra rete datacenter abbiamo tre server:

  1. srv1 192.168.10.100 A Windows web server running IIS and MS SQL-Server
  2. srv2 192.168.10.101 A Linux web server running Apache and MySql
  3. srv3 192.168.10.102 A backup/recovery server running linux

Installare il ripristino completo

Vogliamo ripristinare il sistema operativo si srv1 e srv2 nel caso ci sia stato un problema al software o un fallimento dell'hard disk. Per esempio, se windows fallisce all'avvio su srv1 a causa di un virus, si vuole ripristinare il sistema operativo sull'hard disk riavviando il server su uno script di ripristino, locato su SystemRescueCd. Qui viene riportato come installare il ripristino completo:

  1. installare windows su srv1 con al minimo due partizioni: C: per Windows, D: per i tuoi Dati
  2. nel bios di srv1, definire l'ordine d'avvio come "rete, hard-disk"
  3. installare un server apache o thttpd web su srv3 così da poter scaricare un file attraverso http
  4. riavviare su SystemRescueCd e fare un'immagine del disco C usando ntfsclone, salvare l'immagine sul disco D:
  5. copiare l'immagine ntfsclone su srv3 con ssh/sftp o ftp
  6. installare i servizi d'avvio pxe su srv3 (dhcp server, tftp server con pxelinux, http server, i file SystemRescueCd)
  7. scrivere uno script shell che ripristini la partizione C: usando ntfsclone e il backup che hai fatto
  8. upload lo script di ripristino che hai scritto sul server di backup/ripristino nel dile del web server (quindi puoi accedere su http://192.168.10.102/autorun1)
  9. configurare pxelinux su srv3 così che avvii SystemRescueCd e configurare la rete a avviare automaticamente http://192.168.10.102/autorun1. Qui c'è un esempio di avvio da linea di comando che puoi usare con pxelinux: aggiungere initrd=initram.igz ethx=192.168.10.100 rootpass=12345 ar_source=http://192.168.10.102 autoruns=1

Eseguire il ripristino automatico

Nel caso di problemi critici a srv1, si pouò avviare il processo di ripristino completo in pochi minuti. Solo i primi due passi richiedono un'azione dall'utente:

  1. connettersi al server di backup e avviare i servizi d'avvio pxe (dhcpd, tftp, thttpd, ...)
  2. usare l'interfaccia di gestione della macchina srv1 per il riavvio del server
  3. finchè il server dhcp è avviato, srv1 si avvierà automaticamente dalla rete
  4. il caricatore d'avvio pxelinux avvia SystemRescueCd con le opzioni ethx=192.168.10.100 rootpass=12345 ar_source=http://192.168.10.102 autoruns=1
  5. SystemRescueCd avvia e configura automaticamente la rete e la password di sistema
  6. Finchè sono usate le opzioni di autorun (ar_source and autoruns), SystemRescueCd scarica lo script di autorun1 da http://192.168.10.102
  7. lo script autorun1 viene eseguito su srv1, questo script legge l'immagine ntfsclone dell'hard disk attraverso la rete e ripristina l'hard drive
  8. puoi anche connettere SystemRescueCd usando un client ssh e la password che è stata definita precedentemente, e tu puoi avviare qualunque programma.

Dopo che il ripristino è completato, devi fermare il server dhcp su srv3 così che svr1 non possa avviarsi di nuovo dalla rete.Si vuole che srv1 si avvii dall'hard disk una volta che è stato ripristinato dallo script autorun1.

Di cosa abbiamo bisogno

  • Finchè noi vogliamo riavviare dalla rete via pxe dopo un problema, dobbiamo poter avviare il server che vogliamo gestire da remoto. Molti produttori di server forniscono interfacce di gestione, come "HP ILO" (integrated LightsOut) o "IBM RSA" (Remote Supervisor Adapter). Queste interfacce di gestione sono spesso connesse attraverso ethernet, e provvedono un'interfaccia web che permette il riavvio del server. Se stai usando un server provvisto da una compania di hosting puoi anche avere un'interfaccia specifica web sviluppata da loro che da l'abilità di riavvio del server.

In altri casi, puoi chiedere ad un ingegnere in un datacenter di farlo manualmente.

  • Abbiamo anche bisogno di un altro server sulla stessa rete nel datacenter che può agire come server d'avvio pxe. Questo è il server di backup/ripristino, può essere per esempio o una macchina fisica con linux, o una macchia virtuale con VMWare. Non richiede molta potenza. Un singolo server di backup/ripristino può ripristinare tutti gli altri server sulla rete.
  • SystemRescueCd-1.0.0 o successive.

Come configurare SystemRescueCd sulla tua rete

Questa sezione descrive come installare i server della tua rete per averli pronti ad eseguire automaticamente i passi quando avvii dalla rete via pxe. Ci sono due tipi delle molte reti:

  • I server di produzione che possono essere bloccati, ripristinati. Avviano SystemRescueCd per gestire l'amministrazione.
  • La macchina di backup/ripristino su Linux che provvede ai servizi d'avvio della rete per gli altri server della rete.

L'ordine d'avvio dei device nella BIOS (server di produzione)

Vogliamo che i server di produzione avviino il sistema operativo dall'hard-disk quando non ci sono problemi, e devono avviare SystemRescueCd dalla rete quando vogliamo eseguire l'amministrazione. Il modo migliore di farlo è quello di configurare l'ordine d'avvio dei device nel BIOS dei server di produzione, così quello che loro fanno per primo all'avvio dalla rete è avviare dall'hard disk se falliscono seguono l'avvio dalla rete.

Sarà necessario avviare il servizio DHCP (nel processo d'avvio PXE) nella macchina di backup/ripristino solo quando si vuole un server da avviare su SystemRescueCd. Quando tutto è ok, il server DHCP deve essere fermato, così che il server fallisca l'ottenimento dell'inidirzzo IP dinamico durante l'avvio della rete, e quindi l'avvio dall'hard disk.

Un alto modo di fare questo è sempre avviare dalla rete usando il caricatore d'avvio pxelinux. Nella configurazione pxelinux si può scrivere localboot 0x80 nel default entry per forzare il server ad avviarsi dall'hard disk in ogni modo.

Script di autorun (macchina di backup/ripristino)

Si potrebbe volere che il server di produzione si avvii da SystemRescueCd per ottenere una console interattiva ssh ed eseguire comandi. in questo caso non si ha bisogno di nessuno script autorun e si può saltare questa sezione. Leggi questa sezione se vuoi che i server si avviino da SystemrescueCd per seguire i passi in automatico.

Le caratteristiche di autorun di SystemRescueCd permettono di eseguire automaticamente i vostri script sui server di produzione quando SystemRescueCd si avvia. Non c'è bisogno di essere di fronte alla macchina per installare la rete. La macchina di backup/ripristino consegnerà lo script di autorun alla macchina di produzione quando si avvia. Si possono usare NFS o Samba o HTTP per consegnare questo servizio ai server di produzione. Prendiamo HTTP come esempio perchè più semplice da configurare.

Bisogna installare un server HTTP sulla macchina di backup/ripristino. Questo può essere apache httpd, thttp o qualunque altro web server. Deve ospitare gli script di autorun che tu vuoi che gli altri server eseguano automaticamente al loro avvio. Qui c'è un esempio di come si può organizzare il web server così che gestista 3 script di autorun per ogni macchina della rete. Si potrebbe anche usare lo stesso script per tutti gli elementi di produzione se si preferisce.

E' importante notare che gli script autorun devono essere nominati o autorun (script singolo), o autorun[0-9] (script multipli). Non si possono dare altri nomi come per il backup.

Server DHCP (macchina di backup/ripristino)

Il server DHCP è il primo server contattato dalla macchina di produzione quando prova ad avviare dalla rete. Il servizio DHCP deve dare al server l'indirizzo dinamico IP, ed altre informazioni come l'IP del server DNS e l'IP del server TFTP usato nel prossimo passo del processo d'avvio. Leggi il capitolo sul Sysresccd-manual-it PXE network booting per maggiori dettagli a questo proposito.

Qui c'è un esempio del file di configurazione /etc/dhcp/dhcpd.conf che può essere o editato a mano o generato dal servizio /etc/init.d/pxebootsrv.

# DHCP Server Configuration file.
ddns-update-style interim;
ignore client-updates;
subnet 192.168.10.0 netmask 255.255.255.0
{
       option routers 192.168.10.1;
       option subnet-mask 255.255.255.0;
       option domain-name-servers 192.168.10.1;
       range dynamic-bootp 192.168.10.200 192.168.10.250;
       default-lease-time 21600;
       max-lease-time 43200;
       host srv1
       {
               hardware ethernet      00:0C:29:57:D0:64;
               fixed-address          192.168.10.100;
       }
       host srv2
       {
               hardware ethernet      00:0C:29:57:D0:74;
               fixed-address          192.168.10.101;
       }
}
allow booting;
allow bootp;
next-server 192.168.10.102; # IP addr of the TFTP server
class "pxeclients"
{
  match if substring(option vendor-class-identifier, 0, 9) = "PXEClient";
  filename "/pxelinux.0";
}

Server TFTP (macchina di backup/ripristino)

Il server TFTP è il secondo server contattato dalla macchina di produzione quando prova ad avviarsi tramite rete. I servizi TFTP devono mandare al server di produzione il file pxelinux.0 per essere eseguito per primo. Questo è solo il binary del caricatore d'avvio pxelinux. Il server TFTP verrà anche usato per mandare altri file al server di produzione, come il file di configurazione pxelinux, l'avvio del kernel, il file initram.igz, e può anche mandare sysrcd.dat e sysrcd.md5 che sono necessari per completare il processo d'avvio. leggere il capito Avvio della rete PXE con SystemRescueCd per maggiori dettagli su questa parte.

Il server TFTP deve mandare molti file di SystemRescueCd che sono provvisti nell'edizione CD-ROM (i file di avvio di pxelinux, i file di messaggi per pxelinux, kernel e immagini initramfs). Fino a SystemRescueCd-0.4.4-beta, il filesystem di SystemRescueCd (sysrcd.dat + sysrcd.md5) possono essere trasferiti via server tftp o server http. Se si vuole caricare questi file attraverso http invece che tftp (è più veloce), bisogna sostituire netboot=tftp://path/to/sysrcd.dat con netboot=http://path/to/sysrcd.dat.

La principale differenza tra pxelinux e isolinux è che pxelinux ha bisogno del file config che si trova all'interno della cartella pxelinux.cfg al posto del file isolinux.cfg. In ogni caso, i due tipi di configurazione sono molto simili, quindi si possono usare i contenuti di isolinux.cfg per personalizzare pxelinux.cfg. Qui c'è un esempio di quali file bisogna avere sull'hard disk:


filepath description
/tftpboot/pxelinux.0 executable file of the pxelinux program
/tftpboot/sysrcd.dat image of the filesystem
/tftpboot/sysrcd.md5 check of the filesystem image
/tftpboot/f1boot.msg message file displayed by pxelinux
/tftpboot/f2images.msg message file displayed by pxelinux
/tftpboot/f3params.msg message file displayed by pxelinux
/tftpboot/f4arun.msg message file displayed by pxelinux
/tftpboot/f5troubl.msg message file displayed by pxelinux
/tftpboot/f6pxe.msg message file displayed by pxelinux
/tftpboot/f7net.msg message file displayed by pxelinux
/tftpboot/memdisk loads a floppy disk image into memory
/tftpboot/rescuecd first kernel image file (default 32 bits kernel)
/tftpboot/rescue64 second kernel image file (default 64 bits kernel)
/tftpboot/altker32 third kernel image file (alternative 32 bits kernel)
/tftpboot/altker64 fourth kernel image file (alternative 64 bits kernel)
/tftpboot/initram.igz common initramfs image used by the kernels
/tftpboot/pxelinux.cfg/default pxelinux.cfg default configuration file
/tftpboot/pxelinux.cfg/01-00-0c-29-57-d0-64 config specific to server having mac=00:0C:29:57:D0:64
/tftpboot/pxelinux.cfg/01-00-0c-29-57-d0-74 config specific to server having mac=00:0C:29:57:D0:74


Il file più importante della tabella precedente è il file di configurazione pxelinux per modificare le impostazioni d'avvio che si vogliono usare. Ci sono due tipi di file di configurazione che si posnono usare:

  • Se ne può usare anche solo uno /tftpboot/pxelinux.cfg/default se tutti i server hanno la stessa configurazione pxelinux
  • Si può anche usare il filename basato sul mac address del client se si vuole che ogni server abbia uno specifico file di configurazione. Per esempio, /tftpboot/pxelinux.cfg/01-00-0c-29-57-d0-64 sarà caricato dal server avendo 00:0C:29:57:D0:74 come mac address.

Si prega di leggere la sezione seguente per sapere come scrivere nel file di configurazione pxelinux.

Configurazione pxelinux (macchina di backup/ripristino)

Il file di confifurazione pxelinux è simile al file di configurazione grub o lilo ed è un file di configurazione per un caricatore d'avvio. Questo dice a pxelinux che kernel e file ramddisk dover caricare in memoria, e che opzione di avvio passare al kernel (i parametri che possono essere letti attraverso /proc/cmdline una volta che linux è caricato).

Se vuoi che il server si avvii in automatico, è importante che si specifichi un default entry e un timeout in modo che pxelinux non aspetti un input da tastiera dall'utilizzatore. Qui c'è un esempio del file di configurazione pxelinux.

Si prega di notare che ci sono solo due linee per ogni entry (kernel e append). Una interruzione di linea è stata inserita nel sito web perchè la linea è troppo lunga, ma la linea non deve essere troncata nel file di configurazione.

default recovery
timeout 10
prompt 1
display f1boot.msg
F1 f1boot.msg
F2 f2images.msg
F3 f3params.msg
F4 f4arun.msg
F5 f5troubl.msg
F6 f6pxe.msg
F7 f7net.msg
label backup
   kernel rescuecd
   append initrd=initram.igz ar_source=http://192.168.10.102/srv1/ autoruns=1 
          ethx=192.168.10.100 netboot=tftp://192.168.10.103/sysrcd.dat cdroot
          dns=192.168.10.2 gateway=192.168.10.1 setkmap=us
label recovery
   kernel rescuecd
   append initrd=initram.igz ar_source=http://192.168.10.102/srv1/ autoruns=2 
          ethx=192.168.10.100 netboot=tftp://192.168.10.103/sysrcd.dat cdroot
          dns=192.168.10.2 gateway=192.168.10.1 setkmap=us
label fsck
   kernel rescuecd
   append initrd=initram.igz ar_source=http://192.168.10.102/srv1/ autoruns=3
          ethx=192.168.10.100 netboot=tftp://192.168.10.103/sysrcd.dat cdroot
          dns=192.168.10.2 gateway=192.168.10.1 setkmap=us
label ssh
   kernel rescue64
   append initrd=initram.igz autoruns=no ethx=192.168.10.100 rootpass=12345
          netboot=tftp://192.168.10.103/sysrcd.dat dns=192.168.10.2 cdroot
          gateway=192.168.10.1 setkmap=us
label serial
   kernel rescuecd
   append initrd=initram.igz autoruns=no console=ttyS0,9600 cdroot
          netboot=tftp://192.168.10.103/sysrcd.dat dns=192.168.10.2 
          gateway=192.168.10.1 setkmap=us
label bootfromdisk
   localboot 0x80

In questo esempio il server avvierà il ripristino, quindi si avvierà sul rescuecd kernel, e sarà eseguito lo script autorun2 scaricato da http://192.168.10.102/srv1/autorun2. Lo script autorun2 contiene le istruzioni per eseguire in automatico il ripristino del server.

Qui sono riportati gli entry:

  • backup
    • avvia del rescuecd kernel scaricato attraverso tftp e uso del initram.igz come initramfs
    • configura la rete con l'indirizzo IP 192.168.10.100
    • scarica lo script http://192.168.10.102/srv1/autorun1 su un file temporaneao nella ram
    • esegue lo script autorun1 che esegue un backup e un riavvio
  • ripristino
    • avvia del rescuecd kernel scaricato attraverso tftp e uso del initram.igz come initramfs
    • configura la rete con l'indirizzo IP 192.168.10.100
    • scarica lo script http://192.168.10.102/srv1/autorun2 su un file temporaneao nella ram
    • esegue lo script autorun2 che esegue un ripristino del sistema e un riavvio
  • fsck
    • avvia del rescuecd kernel scaricato attraverso tftp e uso del initram.igz come initramfs
    • configura la rete con l'indirizzo IP 192.168.10.100
    • scarica lo script http://192.168.10.102/srv1/autorun3 su un file temporaneao nella ram
    • esegue lo script autorun3 che esegue un fsck del filesystem e riavvio
  • ssh
    • avvia del rescue64 kernel scaricato attraverso tftp e uso del initram.igz come initramfs
    • configura la rete con l'indirizzo IP 192.168.10.100
    • settare la password del sistema SystemRescueCd a 12345 così da poter connettersi connettere in remoto attraverso ssh
    • disabilitare l'autorun
  • serial
    • avvia del rescuecd kernel scaricato attraverso tftp e uso del initram.igz come initramfs con le opzioni console=ttyS0,9600 così da poter lavorare attraverso una console seriale
    • disabilitare l'autorun
  • bootfromdisk
    • avvio del primo hard disk

Ogni volta si vuole che un server esegua un passo, dobbiamo solamente cambiare la prima linea di comando del file di configurazione. Per esempio si può cambiare il ripristino di default al default bootfromdisk una volta che il ripristino sia completato, così la prossima volta il server si riavvia da hard disk. Si può anche fermare il servizio DHCP sul server di backup/ripristino per forzare l'avvio del server di produzione dalla rete.

Come usare SystemRescueCd una volta che è installato

Una volta che la tua rete è installata, usare il SystemRescueCd per eseguire l'amministrazione in automatico o manuale è molto semplice. Qui c'è come usare queste caratteristiche.

Usare SystemRescueCd per avviare la procedura automatica

Prendiamo un esempio: l'hard disk della macchina srv1 (192.168.10.100) crasha e deve essere ripristinato con un nuovo disk vuoto. Si vuole avviare il ripristino per recuperare il sistema operativo sulla macchina.

  1. Connettere sul server di backup/ripristino (srv3) e editare il file di configurazione usato da srv1 (ex: /tftpboot/pxelinux.cfg/01-00-0c-29-57-d0-64) e scrivere il nome dell'elemento che si vuole avviare nella sezione di default: default recovery
  2. Assicurarsi che i servizi d'avvio pxe (dhcpd, tftpd, ...) sono iniziati sul server di backup/ripristino
  3. Usare l'interfaccia di gestione per riavviare il server di produzione su cui si vuole eseguire l'amministrazione (srv1)
  4. Aspettare 3 minuti, giusto per essere sicuri che il processo d'avvio di SystemRescueCd sia completo su srv1
  5. Connettersi sul server di backup/ripristino (srv3) ed editare il file di configurazione pxelinux usato da srv1 (ex: /tftpboot/pxelinux.cfg/01-00-0c-29-57-d0-64) e scrivere bootfromdisk nella sezione di default così che il server si avvierà dall'hard disk la prossima volta: default bootfromdisk
  6. Se lo script di ripristino è scritto bene, dovrebbe ri-iniziare automaticamente dopo che il ripristino è completato, e srv1 si avvia sul sistema operativo.

Usare SystemRescueCd per avviare la procedura a mano

Prendiamo un esempio: Se si dimentica la password della macchina srv2 e si vuole ottenere una connessione ssh sul SystemrescueCd per montare il filesystem e modificare il file password (normalmente /etc/shadow).

  1. Connettersi al server di backup/ripristino (srv3) e modificare il file di configurazione usato da srv2 (ex: /tftpboot/pxelinux.cfg/01-00-0c-29-57-d0-74) e scrivi il nome dell'elemento che si vuole avviare nella sezione di default: default ssh
  2. Assicurarsi che i servizi d'avvio pxe (dhcpd, tftpd, ...) sono iniziati sul server di backup/ripristino
  3. Usare l'interfaccia di gestione per riavviare il server di produzione su cui si vuole eseguire l'amministrazione (srv2)
  4. Aspettare 3 minuti, giusto per essere sicuri che il processo d'avvio di SystemRescueCd sia completo su srv2
  5. Usare ssh per connettersi a srv2 dal tuo ufficio. Devi usare la password che hai dato nella linea di comando nel file di configurazione pxelinux (ex:12345) per connettersi a SystemRescueCd. Non confonderti con la password del sistema che tu puoi cambiare, quella è scritta nel file /etc/shadow file sul tuo hard-disk. Monta la partizione e modifica il file, o esegui ogni altra attività di amministrazione a mano.
  6. Connetersi al server di backup/ripristino (srv3) e modifica il file di configurazione pxelinux usato da srv2 (ex: /tftpboot/pxelinux.cfg/01-00-0c-29-57-d0-74) e scrivere bootfromdisk nella sezione di default così che il server si avvierà dall'hard disk la prossima volta: default bootfromdisk
  7. Nella console ssh di srv2, schiaccia riavvia. I sistemi linux devono riavviarsi con la nuova password su srv2.
spacer