[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [home] [volume]


Capitolo 789.   nanoLinux: sincronizzazione

nanoLinux è organizzato, in modo particolare, per essere installato in una serie di elaboratori di una rete locale, dove tutti i nodi sono uguali, accentrando nel router tutte le funzionalità necessarie, compreso il NIS e la condivisione delle directory personali. Se si accettano le convenzioni previste, è possibile gestire dal nodo utilizzato come router la sincronizzazione di tutti gli altri. Ciò consente di avere copie identiche ed eventualmente le copie di sicurezza dei dati personali, allo scopo di ridurre il tempo necessario a ripristinare un elaboratore che si guasta.

L'organizzazione di un sistema di sincronizzazione degli elaboratori sconsiglia l'uso del servizio DHCP per la configurazione dinamica degli elaboratori. In altri termini, il servizio DHCP può essere usato, ma per configurare automaticamente solo degli elaboratori esclusi dal sistema di sincronizzazione.

Tabella 776.12. Script nanorc: configurazione e gestione di un insieme di elaboratori simili tra di loro.

Comando Descrizione
nanorc mirror edit_os
nanorc mirror edit_home
nanorc mirror edit_shutdown
Modifica l'elenco degli elaboratori del gruppo rispettivo di controllo: «os», «home» e «shutdown».
nanorc mirror shutdown
nanorc mirror reboot
Spegne o riavvia gli elaboratori selezionati dal gruppo «shutdown».
nanorc mirror os [nodo]...
nanorc mirror home [nodo]...
Avvia la sincronizzazione degli elaboratori del gruppo rispettivo.
nanorc mirror os_single
nanorc mirror home_single
Avvia la sincronizzazione di un solo elaboratore del gruppo rispettivo.
nanorc mirror syncfull [nodo]...
Avvia la sincronizzazione dei gruppi «os» e «home».
nanorc mirror newkey
Cambia le chiavi usate per il controllo remoto (sincronizzazione e spegnimento) e le invia agli elaboratori di tutti i gruppi controllati.

789.1   Visione generale

Si osservi la figura: nella rete locale appare un router che incorpora tutti i servizi necessari e una serie di elaboratori che li utilizzano. Questi elaboratori sono divisi in due gruppi: quelli che contengono solo il sistema operativo e quelli che vengono usati anche per contenere una copia di sicurezza dei dati personali. Tutti ottengono la directory /home/ dal nodo che offre i servizi, ma quelli usati per la copia di sicurezza dei dati personali conservano tale copia nella directory /home-backup/.

Figura 789.1. Organizzazione prevista per la rete locale di nanoLinux, quando si vuole gestire la sincronizzazione degli elaboratori.

organizzazione della sincronizzazione

Una volta organizzata questa cosa, nell'elaboratore che contiene i servizi si configurano gli elenchi degli elaboratori, divisi per tipo, con i comandi seguenti:

nanorc mirror edit_os[Invio]

nanorc mirror edit_home[Invio]

Ognuno di questi comandi permette di modificare un elenco di indirizzi IPv4, corrispondenti agli elaboratori di un certo gruppo. Seguendo l'esempio della figura, il primo gruppo contiene gli indirizzi 172.21.1.1, 172.21.2.1, 172.21.3.1, il secondo gruppo contiene solo l'indirizzo 172.21.3.1. L'indirizzo dell'elaboratore che offre i servizi e che rappresenta il modello usato per la sincronizzazione è escluso da questi elenchi.

Questi elenchi possono essere realizzati in modo molto semplice, indicando gli indirizzi IPv4, ognuno in una riga separata. Volendo si possono inserire anche dei commenti, preceduti dal simbolo #, come si farebbe con altri file di configurazione comuni.

Ecco a titolo di esempio cosa dovrebbe contenere l'elenco riferito al gruppo «os», secondo quanto mostrato:

172.21.1.1
172.21.2.1
172.21.3.1

Per la sincronizzazione dei nodi si utilizza OpenSSH (assieme a Rsync), pertanto occorre disporre di una coppia di chiavi, che ogni tanto può essere utile cambiare. Si creano queste chiavi con il comando seguente:

nanorc mirror newkey[Invio]

In questo modo, oltre che aggiornare le chiavi, si ottiene la copia di queste negli elaboratori della rete, previsti nel primo degli elenchi già descritti («os»). In questo caso, viene richiesto ogni volta di inserire la parola d'ordine per accedere, ma una volta aggiornate le chiavi in tutti gli elaboratori, la sincronizzazione dovrebbe avvenire senza più il fastidio di tale richiesta.

Perché sia consentito l'accesso attraverso l'uso della chiave pubblica, senza dover inserire la parola d'ordine, è necessario che la directory ~/.ssh/ sia accessibile esclusivamente all'utente proprietario (in questo caso l'utente root), diversamente viene negato tale riconoscimento, perché i file contenuti potrebbero essere contraffatti. Lo script nanorc si occupa di sistemare tali permessi, ma conviene ricordare questo particolare nel caso dovessero manifestarsi comportamenti insoliti da parte di OpenSSH.

È possibile creare al volo una copia dell'elaboratore usato come riferimento, avviandone un altro attraverso un DVD di nanoLinux. Supponendo di avere creato le partizioni nel disco fisso di questo nuovo elaboratore e di dover installare la copia nella partizione che temporaneamente è innestata nella directory /mnt/hda2/, si può procedere con il comando seguente, supponendo di voler realizzare una stazione con il solo sistema operativo:

nanorc mirror os_single[Invio]

.-----Destination IPv4-------.
| Please insert the          |
| destination IPv4 address   |
| to sync:                   |
| .------------------------. |
| |                        | |
| `------------------------' |
|----------------------------|
|   <  OK  >    <Cancel>     |
`----------------------------'

In questo caso, avendo richiesto precisamente una sincronizzazione singola, gli elenchi non vengono presi in considerazione e si deve rispondere alla richiesta di indicare espressamente l'indirizzo IPv4 della destinazione da sincronizzare:

172.21.2.2<OK>

.-----Source directory-------.
| Please insert the source   |
| directory; default is the  |
| local root directory.      |
| .------------------------. |
| |/                       | |
| `------------------------' |
|                            |
|----------------------------|
|   <  OK  >  <Cancel>       |
`----------------------------'

Viene richiesto di specificare la directory di origine; in condizioni normali è la radice, come si vede nell'esempio. Se si indica una directory diversa si intende copiare solo una porzione del file system.

/<OK>

.--Destination directory-----.
| Please insert the          |
| destination directory;     |
| default is the remote root |
| directory.                 |
| .------------------------. |
| |/                       | |
| `------------------------' |
|----------------------------|
|   <  OK  >  <Cancel>       |
`----------------------------'

Il valore predefinito viene cambiato, dal momento che la partizione è stata innestata nella directory /mnt/hda2/:

/mnt/hda2<OK>

Al termine inizia la sincronizzazione. Naturalmente, alla fine della copia, occorre provvedere ad assestare l'avvio del sistema (per quanto riguarda GRUB 1 o SYSLINUX), così come si farebbe quando si installa nanoLinux da un DVD.

Dalla sincronizzazione sono esclusi alcuni file, per impedire che la sovrascrittura possa generare degli inconvenienti, anche soltanto a causa del mancato completamento della sincronizzazione stessa. Per esempio, non vengono trasferiti i file /boot/grub/stage*, /etc/X11/xorg.conf, /etc/gpm.conf e /etc/default/nis. Per questa ragione, la prima volta occorre provvedere manualmente per questi file mancanti, oppure occorre organizzare la directory /etc/nanoLinux/sync/default/ ed eventualmente anche /etc/nanoLinux/sync/indirizzo_ipv4/, come viene descritto in seguito.

Per la sincronizzazione di elaboratori già predisposti e previsti negli elenchi relativi, non viene fatta alcuna richiesta, perché le directory di origine e di destinazione devono essere necessariamente la radice.

Naturalmente, la sincronizzazione tra macchine differenti richiede l'adattamento di alcuni file di configurazione. Il sistema di sincronizzazione tiene conto di questo fatto attraverso una gerarchia che si articola a partire da /etc/nanoLinux/sync/default/ e poi anche da /etc/nanoLinux/sync/indirizzo_ipv4/. In pratica, se si sta sincronizzando l'elaboratore 192.168.2.2, alla fine della copia dei dati, tutto il contenuto di /etc/nanoLinux/sync/default/ e di /etc/nanoLinux/sync/192.168.2.2/ viene copiato a partire dalla directory radice (/) dello stesso elaboratore.

Si osservi che la copia avviene riproducendo anche i collegamenti simbolici così come sono, pertanto, se si intende realizzare un gruppo di configurazioni identiche, al massimo si può fare un collegamento di una directory /etc/nanoLinux/sync/*/, ma non di qualcosa che si trova al di sotto di questo livello.

È bene considerare anche un particolare importante: il file /etc/nanoLinux/sync/*/etc/nanoLinux/INTERNAL_IPV4, che contiene l'informazione dell'indirizzo IPv4 da assegnare nella rete interna, viene sovrascritto automaticamente dalla procedura di sincronizzazione, pertanto non occorre fornirlo e si possono predisporre configurazioni uguali (possibilmente all'interno della directory /etc/nanoLinux/sync/default/) senza badare a questo valore.

Tabella 789.6. Alcuni file di configurazione che conviene ricordare di predisporre quando si vuole organizzare una rete locale con elaboratori sincronizzati tra di loro.

Nome del file originale Annotazioni

/etc/X11/xorg.conf
Configurazione di X.

/etc/gpm.conf
Configurazione di GPM.

/etc/nanoLinux/LANG
Configurazione usata da nanoLinux per impostare la variabile di ambiente LANG.

/etc/console/boottime.kmap.gz
Mappa della tastiera.

/etc/default/nis
Configurazione generale del NIS.

/etc/fstab
Configurazione dei punti di innesto.

/etc/passwd
/etc/shadow
/etc/group
File delle utenze, soprattutto per distinguere tra il servente NIS e le macchine servite da questo.

/etc/X11/xdm/Xservers
Consente di precisare se si vuole avere un'autenticazione grafica o meno.

/boot/grub/menu.lst
Configurazione di GRUB 1.

Prima di concludere, vale la pena di considerare anche una situazione meno comune, in cui si vuole che gli elaboratori abbiano semplicemente una copia identica di tutto, anche delle directory personali, ammesso che la sovrascrittura di queste non ponga problemi. In tal caso, una volta realizzata la copia per la prima volta, è sufficiente sostituire la directory /home/ con un collegamento simbolico che punta alla directory /home-backup/.

789.2   Sincronizzazione in pratica

Per comprendere meglio il meccanismo della sincronizzazione, si precisa meglio lo schema mostrato in precedenza, per descrivere come si può procedere.

Figura 789.7. Situazione pratica con un elaboratore che funge da router e offre i servizi alla rete.

organizzazione della sincronizzazione

Si procede configurando l'elaboratore che deve offrire i servizi e che svolge anche il ruolo di router NAT:

nanorc network config[Invio]

.-Internal network interface name-.
| Please insert the real internal |
| network interface name:         |
| .-----------------------------. |
| |$ETH0                        | |
| `-----------------------------' |
|                                 |
|---------------------------------|
|     <  OK  >   <Cancel>         |
`---------------------------------'

$ETH0<OK>

.-Internal network interface address-.
| Please insert the internal network |
| interface IPv4 address:            |
| .--------------------------------. |
| |                                | |
| `--------------------------------' |
|------------------------------------|
|       <  OK  >    <Cancel>         |
`------------------------------------'

172.21.254.254<OK>

.-----Internal netmask-------.
| Please insert the internal |
| IPv4 network mask:         |
| .------------------------. |
| |255.255.0.0             | |
| `------------------------' |
|                            |
|----------------------------|
|   <  OK  >  <Cancel>       |
`----------------------------'

255.255.0.0<OK>

.-Internal network router address-.
| Please insert the internal      |
| network IPv4 router address:    |
| .-----------------------------. |
| |                             | |
| `-----------------------------' |
|---------------------------------|
|     <  OK  >   <Cancel>         |
`---------------------------------'

172.21.254.254<OK>

.-External network interface name-.
| Please insert the real external |
| network interface name:         |
| .-----------------------------. |
| |$ETH1                        | |
| `-----------------------------' |
|                                 |
|---------------------------------|
|     <  OK  >   <Cancel>         |
`---------------------------------'

$ETH1<OK>

.-External network interface address-.
| Please insert the external network |
| interface IPv4 address:            |
| .--------------------------------. |
| |                                | |
| `--------------------------------' |
|------------------------------------|
|       <  OK  >    <Cancel>         |
`------------------------------------'

192.168.1.253<OK>

.-----External netmask-------.
| Please insert the external |
| IPv4 network mask:         |
| .------------------------. |
| |255.255.255.0           | |
| `------------------------' |
|                            |
|----------------------------|
|   <  OK  >  <Cancel>       |
`----------------------------'

255.255.255.0<OK>

.-External network router address-.
| Please insert the external      |
| network IPv4 router address:    |
| .-----------------------------. |
| |                             | |
| `-----------------------------' |
|---------------------------------|
|     <  OK  >   <Cancel>         |
`---------------------------------'

192.168.1.254<OK>

.----Transparent proxy------.
| Is this router a          |
| transparent proxy?        |
|---------------------------|
|     < Yes >   < No  >     |
`---------------------------'

<Yes>

Dal momento che l'elaboratore principale dispone di una stampante si configura anche quella:

nanorc printer config[Invio]

.Setup default printer filter type--.
| Please, select one of the         |
| following filter programs:        |
| .-------------------------------. |
| |   magicfilter  Magicfilter    | |
| |   foomatic     Foomatic       | |
| `-------------------------------' |
|-----------------------------------|
|       <  OK  >    <Cancel>        |
`-----------------------------------'

Si suppone di selezionare Magicfilter:

magicfilter<OK>

.------------------------Setup default printer type--------------------------.
| Please, select one of the following printer filters:                       |
| .------------------------------------------------------------------------. |
| | bj10e                      /etc/magicfilter/bj10e-filter               | |
| | bj200                      /etc/magicfilter/bj200-filter               | |
| | bj600_draft                /etc/magicfilter/bj600_draft-filter         | |
| | bj600                      /etc/magicfilter/bj600-filter               | |
| | bj610                      /etc/magicfilter/bj610-filter               | |
| | bj800_draft                /etc/magicfilter/bj800_draft-filter         | |
| | bj800                      /etc/magicfilter/bj800-filter               | |
| | cps300                     /etc/magicfilter/cps300-filter              | |
| | cps400                     /etc/magicfilter/cps400-filter              | |
| | cps600                     /etc/magicfilter/cps600-filter              | |
| | cpsonly300                 /etc/magicfilter/cpsonly300-filter          | |
| | cpsonly400                 /etc/magicfilter/cpsonly400-filter          | |
| | cpsonly600                 /etc/magicfilter/cpsonly600-filter          | |
| | deskjet                    /etc/magicfilter/deskjet-filter             | |
| | dj500c                     /etc/magicfilter/dj500c-filter              | |
| `-v(+)-------------------------------------------------------------------' |
|                                                                            |
|                                                                            |
|----------------------------------------------------------------------------|
|                       <  OK  >              <Cancel>                       |
`----------------------------------------------------------------------------'

Si suppone che si tratti di una stampante che riconosce il linguaggio PCL5:

laserjet<OK>

.--------Print address-----------.
| Please insert the printer IPv4 |
| address; if the printer is     |
| local, just use "127.0.0.1" or |
| leave it blank:                |
| .----------------------------. |
| |127.0.0.1                   | |
| `----------------------------' |
|                                |
|--------------------------------|
|     <  OK  >     <Cancel>      |
`--------------------------------'

127.0.0.1<OK>

.---Setup default printer device-----.
| Please, select one of the          |
| following printer devices:         |
| .--------------------------------. |
| |   /dev/lp0      /dev/lp0       | |
| |   /dev/usb/lp0  /dev/usb/lp0   | |
| `--------------------------------' |
|------------------------------------|
|       <  OK  >     <Cancel>        |
`------------------------------------'

/dev/lp0<OK>

Dopo aver predisposto queste e anche altre cose su cui qui si sorvola, si predispone la gerarchia /etc/nanoLinux/sync/, in modo da inserire le varianti degli altri elaboratori della rete. Per cominciare, i file /etc/nanoLinux/sync/*/etc/default/nis possono essere tutti uguali, in modo da dichiarare il proprio come un elaboratore che utilizza il servizio e non lo offre:

#
# /etc/defaults/nis     Configuration settings for the NIS daemons.
#

# Are we a NIS server and if so what kind (values: false, slave, master)
NISSERVER=false

# Location of the master NIS password file (for yppasswdd).
# If you change this make sure it matches with /var/yp/Makefile.
YPPWDDIR=/etc

# Do we allow the user to use ypchsh and/or ypchfn ? The YPCHANGEOK
# fields are passed with -e to yppasswdd, see it's manpage.
# Possible values: "chsh", "chfn", "chsh,chfn"
YPCHANGEOK=chsh,chfn

Dal momento che i vari elaboratori della rete si avvalgono del NIS per ottenere le informazioni sulle utenze, si devono preparare i file /etc/nanoLinux/sync/*/etc/passwd, /etc/nanoLinux/sync/*/etc/shadow e /etc/nanoLinux/sync/*/etc/group, in modo da non avere utenti comuni, dove questi, rispettivamente, devono terminare per:

+::0:0:::
+::::::::
+:::

Se si usa il file /etc/gshadow, occorre predisporre una copia anche per questo, che termini così:

+:::

Dal momento che i vari elaboratori della rete sono sempre soltanto la copia dell'elaboratore che offre i servizi, anche i file per le registrazioni del sistema vengono sovrascritti, pertanto diventa necessario fare in modo che questi dati vengano inviati tutti all'elaboratore principale. Per questo occorre predisporre dei file /etc/nanoLinux/sync/*/etc/syslog.conf diversi da quello di partenza; quello che conta nell'esempio seguente è l'ultima riga:

##
##  /etc/syslog.conf     Configuration file for syslogd.
##
#
# All messages into "/var/log/syslog"
#
*.*                     /var/log/syslog
#
# This is used by Psad:
#
kern.info               |/var/lib/psad/psadfifo

*.*                     @172.17.254.254

In generale è necessario creare dei file /etc/nanoLinux/sync/*/etc/fstab alternativi a quello dell'elaboratore principale, con l'indicazione delle partizioni da innestare, oltre al problema della directory /home/. Per esempio, il file /etc/nanoLinux/sync/172.21.1.1/etc/fstab potrebbe assomigliare, nella sua parte iniziale, all'estratto seguente:

/dev/hda5            none               swap     sw                         0 0
/dev/hda6            /                  auto     defaults,errors=remount-ro 0 1
/dev/hda6            /CD-ROOT/nanoLinux auto     defaults,noauto            0 0
172.17.254.254:/home /home              nfs      user,auto,dev,exec,suid    0 0
proc                 /proc              proc     defaults                   0 0
none                 /proc/bus/usb      usbfs    defaults                   0 0
...

Dal momento che nella rete locale che si predispone non ci sono altre stampanti oltre a quella collegata all'elaboratore principale, si predispongono i file /etc/nanoLinux/sync/*/etc/printcap in modo da inviare lì le richieste di stampa. Il file in questione deve iniziare così:

lp:\
        :sd=/var/spool/lpd/lp:\
        :af=/var/log/lp-acct:\
        :lf=/var/log/lp-errs:\
        :if=/etc/magicfilter/laserjet-filter:\
        :pl#66:\
        :pw#80:\
        :pc#150:\
        :mx#0:\
        :mc#999:\
        :rp=lp:\
        :rm=172.21.254.254:\
        :sh:

Naturalmente ci sono anche altre cose da sistemare, per esempio la configurazione di GPM attraverso i file /etc/nanoLinux/sync/*/etc/gpm.conf, la configurazione di X attraverso i file /etc/nanoLinux/sync/*/etc/X11/xorg.conf, la configurazione di GRUB 1 attraverso i file /etc/nanoLinux/sync/*/boot/grub/menu.lst.

Al termine, si procede a predisporre le partizioni previste negli elaboratori della rete locale, iniziando con una sincronizzazione individuale con l'aiuto di un DVD di nanoLinux:

nanorc mirror os_single[Invio]

Questo comando viene usato per tutti gli elaboratori da gestire (escluso quello che fa da riferimento), allo scopo di allineare il sistema operativo.

Una volta sistemati i vari elaboratori, per ciò che riguarda il sistema operativo, si possono predisporre gli elenchi all'interno di quello principale e al termine tutto dovrebbe essere pronto.

nanorc mirror edit_os[Invio]

nanorc mirror edit_home[Invio]

Successivamente, a intervalli regolari si possono usare i comandi nanorc mirror os per tenere allineato il sistema operativo e i file delle registrazioni (/var/log/), inoltre si può usare nanorc mirror home per aggiornare le copie di sicurezza dei dati personali. In alternativa, si può usare il comando nanorc mirror syncfull per fare entrambe le cose.

789.3   Conservazione dei registri

Ammesso che si voglia tenere un archivio storico dei file delle registrazioni, per un lasso di tempo discreto, si può osservare che l'allineamento del sistema operativo viene rallentato progressivamente, a causa della rotazione dei registri stessi (per cui ogni volta vanno ricopiati, come se fossero cambiati tutti i contenuti). Se questo fatto diventa un problema, può essere più conveniente archiviare manualmente, in altra directory, i file a cui si è interessati, in modo che i nomi non subiscano più cambiamenti.

A titolo di esempio, se l'elaboratore che raccoglie le informazioni da annotare nei registri è lo stesso che offre la condivisione delle directory personali, si potrebbero creare le directory /home/log/data/ e mettere al loro interno i file delle registrazioni archiviati in quel tal giorno (cancellandoli dalla loro posizione originale). In tal modo, con la copia dei dati personali si otterrebbe anche la conservazione dei file delle registrazioni. Naturalmente, avendo indicato una data, con il passare del tempo si può poi individuare e cancellare ciò che dei registri non serve più.


Appunti di informatica libera 2008 --- Copyright © 2000-2008 Daniele Giacomini -- <appunti2 (ad) gmail·com>


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome nanolinux_sincronizzazione.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [home]

Valid ISO-HTML!

CSS validator!

Gjlg Metamotore e Web Directory