<?xml version="1.0" encoding="UTF-8"?>
<!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/it/rsync.xml,v 1.22 2012/11/05 15:47:12 ago Exp $ -->
<!DOCTYPE guide SYSTEM "/dtd/guide.dtd">

<guide lang="it">
<title>Guida e politiche per i mirror rsync di Gentoo Linux</title>

<author title="Autore">
  <mail link="mirror-admin@gentoo.org">Gentoo Mirror Administrators</mail>
</author>
<author title="Autore">
  <mail link="klausman-gentoo@schwarzvogel.de">Tobias Klausmann</mail>
</author>
<author title="Redazione">
  <mail link="neysx@gentoo.org">Xavier Neys</mail>
</author>
<author title="Traduzione">
  <mail link="scen@gentoo.org">Davide Cendron</mail>
</author>

<abstract>
Questo documento spiega come configurare un mirror rsync ufficiale e un proprio
mirror locale
</abstract>

<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.5 -->
<license/>

<version>4</version>
<date>2012-07-24</date>

<chapter>
<title>Informazioni preliminari</title>
<section>
<title>Riguardo ai nomi e alle terminologie</title>
<body>

<p>
Questa guida è dedicata a chiunque voglia configurare personalmente un mirror
rsync, è può risultare utile a chi vuole gestire sia mirror rsync ufficiali, sia
privati.
</p>

<p>
Ci sono tre tipologie di mirror rsync per Gentoo: mirror principali di
rotazione, mirror della comunità, e mirror privati. I mirror principali di
rotazione sono gestiti dal gruppo per le infrastrutture di Gentoo, e
gestiscono l'enorme massa di traffico rsync sviluppata dagli utenti di questa
distribuzione. I mirror della comunità sono mirror gestiti da volontari della
comunità di Gentoo. I mirror privati sono gestiti da singole persone e non sono
accessibili dalla rete pubblica, ed hanno lo scopo di ridurre i costi del
traffico e la latenza per aziende o singole persone.
</p>

<p>
Attualmente c'è un numero sufficiente di mirror della comunità, mentre c'è
ancora bisogno di ulteriori mirror principali di rotazione. Le specifiche
hardware per i mirror principali di rotazione includono:
</p>

<ul>
  <li>
    Minimo un processore Pentium 4 2GHz (preferibile a 64-bit con almeno 2 core)
  </li>
  <li>Minimo 2GB di RAM (3GB - 4GB sarebbe l'ideale)</li>
  <li>15GB di spazio su disco (IDE/SATA va bene)</li>
</ul>

<p>
È possibile mantenere il possesso fisico dell'hardware, e tenerlo online nel
proprio spazio di collocazione. Il consumo medio della larghezza di banda per
ciascun mirror principale di rotazione è di circa 10Mbit/sec (pressapoco 2,6 TiB
al mese). Questo numero dovrebbe diminuire in rapporto all'aumentare dei mirror
ufficiali.
</p>

<p>
Se si desidera donare la propria macchina, mandare un'e-mail con tutte le
informazioni necessarie ai <mail link="mirror-admin@gentoo.org">Mirror
Admin</mail>.
</p>

</body>
</section>
</chapter>

<chapter id="local">
<title>Configurare il proprio mirror rsync locale</title>
<section>
<title>Introduzione</title>
<body>

<p>
Molti utenti eseguono Gentoo su diverse macchine e necessitano di sincronizzare
l'albero di Portage su ognuna di queste. Usare i mirror pubblici è un chiaro
spreco di banda da entrambi i lati. Sincronizzare solo una macchina con un
mirror pubblico e tutte le altre con questa macchina locale risparmierebbe
risorse sui mirror Gentoo e banda dati all'utente.
</p>

<p>
Lo stesso discorso vale per le organizzazioni che vogliono controllare il mirror
rsync con il quale i propri server e workstation effettuano la sincronizzazione.
Ovviamente c'è anche la loro volontà di risparmiare sulla banda e sui costi del
traffico.
</p>

<p>
Tutto ciò che occorre fare è selezionare la macchina da adibire a mirror rsync
locale e configurarla opportunamente. Scegliere un computer capace di gestire i
carichi di CPU e disco richiesti dalle operazioni di rsync. Inoltre il proprio
mirror locale deve sempre essere disponibile quando gli altri computer
sincronizzeranno il proprio albero di portage, oltre che a disporre di un
indirizzo IP statico o possedere un nome host sempre risolvibile. Configurare un
server DCHP e/o DNS va oltre gli scopi di questa guida.
</p>

<p>
Tenere presente che in queste istruzioni si assume che il proprio mirror rsync
privato sia una macchina Gentoo. Se si vuole eseguirlo su una distribuzione
differente, la guida per configurare un mirror della comunità potrebbe essere
maggiormente utile. L'importante è non effettuare la sincronizzazione ogni
mezz'ora ma solo una o due volte al giorno.
</p>

</body>
</section>
<section>
<title>Configurare il server</title>
<body>

<p>
Non è richiesta l'installazione di pacchetti aggiuntivi  in quanto il software
richiesto è già presente sulla macchina. Per impostare il proprio mirror rsync
locale basta modificare opportunamente il demone <c>rsync</c> in modo da rendere
disponibile per la sincronizzazione la directory <path>/usr/portage</path>.
Creare il seguente file di configurazione <path>/etc/rsyncd.conf</path>:
</p>

<pre caption="Esempio di /etc/rsyncd.conf">
pid file = /var/run/rsyncd.pid
max connections = 5
use chroot = yes
uid = nobody
gid = nobody
<comment># Opzionale: restringe l'accesso alle proprie macchine Gentoo</comment>
hosts allow = 192.168.0.1 192.168.0.2 192.168.1.0/24
hosts deny  = *

[gentoo-portage]
path=/usr/portage
comment=Gentoo Portage
exclude=distfiles/ packages/
</pre>

<p>
Le opzioni <c>hosts allow</c> e <c>hosts deny</c> non sono necessarie, in quanto
la configurazione predefinita accetta la connessione da qualsiasi client.
L'ordine con cui vengono scritte le opzioni è irrilevante: il server controlla
sempre per prima l'opzione <c>hosts allow</c> e permette la connessione all'host
se questo corrisponde ad uno dei pattern elencati; dopodiché passa all'opzione
<c>hosts deny</c> e rifiuta la connessione se riscontra una qualsiasi
corrispondenza. Agli host che non hanno nessuna corrispondenza viene permessa la
connessione. Leggere la pagina man (<c>man rsyncd.conf</c>) per ulteriori
informazioni.
</p>

<p>
Avviare il demone rsync lanciando i seguenti comandi da utente root:
</p>

<pre caption="Avviare il demone rsync">
<comment>(Avviare immediatamente il demone)</comment>
# <i>/etc/init.d/rsyncd start</i>
<comment>(Aggiungere il demone al runlevel default)</comment>
# <i>rc-update add rsyncd default</i>
</pre>

<p>
A questo punto si può testare il mirror rsync. È consigliabile, ma non
necessario, effettuare la prova da un'altra macchina. Se il proprio server non
è raggiungibile attraverso il nome dagli altri computer, in alternativa si può
utilizzare il suo indirizzo IP.
</p>

<pre caption="Testare il proprio mirror">
<comment>(Si può usare il nome del server o il suo indirizzo IP)</comment>
# <i>rsync 192.168.0.1::</i>
gentoo-portage     Gentoo Portage
# <i>rsync nome_tuo_server::gentoo-portage</i>
<comment>(Si dovrebbe vedere il contenuto di /usr/portage del proprio
mirror)</comment>
</pre>

<p>
Il mirror rsync è ora pronto per essere utilizzato. Per mantenere aggiornato il
server eseguire ad intervalli regolari <c>emerge --sync</c>, come veniva fatto
anche in precedenza. Se si utilizza cron o strumenti simili per sincronizzare
regolarmente, ricordarsi di mantenere una frequenza bassa, tipo uno o due volte
al giorno.
</p>

<note>
Notare che molti amministratori dei mirror pubblici considerano come abusi le
sincronizzazioni ripetute con una frequenza maggiore ad una o due volte al
giorno. Alcuni se non la maggior parte di essi bandiranno dai propri server gli
IP delle macchine che abuseranno di questo servizio.
</note>

</body>
</section>
<section>
<title>Configurare i propri client</title>
<body>

<p>
Ora bisogna modificare la configurazione degli altri computer per farli
sincronizzare con il proprio mirror rsync locale invece che con quello
pubblico. Modificare <path>/etc/portage/make.conf</path> e far puntare la variabile
<c>SYNC</c> al proprio server.
</p>

<pre caption="Definire SYNC in /etc/portage/make.conf">
<comment>(Usare l'indirizzo IP del proprio server)</comment>
SYNC="rsync://<i>192.168.0.1</i>/gentoo-portage"
<comment>(O usare il nome del server)</comment>
SYNC="rsync://<i>nome_tuo_server</i>/gentoo-portage"
</pre>

<p>
Per verificare che il computer sia configurato correttamente effettuare la
sincronizzazione con il proprio mirror locale per la prima volta:
</p>

<pre caption="Verifica e sincronizzazione">
<comment>(Verificare che la variabile SYNC sia inizializzata)</comment>
# <i>emerge --info|grep SYNC</i>
SYNC="rsync://nome_tuo_server/gentoo-portage"
<comment>(Sincronizzare il client con il proprio mirror locale)</comment>
# <i>emerge --sync</i>
</pre>

<p>
Non sono necessarie ulteriori operazioni, ora tutti i computer useranno il
mirror rsync locale appena configurato ad ogni esecuzione di <c>emerge
--sync</c>.
</p>

</body>
</section>
</chapter>

<chapter>
<title>Configurare un server rsync della comunità</title>
<section>
<title>Introduzione</title>
<body>

<note>
Si possono trovare esempi di configurazione e file script nel pacchetto
gentoo-rsync-mirror. Eseguire <c>emerge gentoo-rsync-mirror</c>.
</note>

<p>
Attualmente, effettuare il mirror dell'albero di Portage richiede circa 600Mb,
per cui lo spazio consumato non è molto; per assicurarsi di avere spazio a
sufficienza anche in futuro, mettere a disposizione almeno un 1Gb di spazio
libero. Configurare un mirror dell'albero di Portage è semplice -- per prima
cosa, assicurarsi di avere installato rsync. Successivamente, modificare il
proprio <path>rsyncd.conf</path> come nell'esempio seguente:
</p>

<pre caption="rsyncd.conf">
uid = nobody
gid = nobody
use chroot = yes
max connections = 15
pid file = /var/run/rsyncd.pid
motd file = /etc/rsync/rsyncd.motd
log file = /var/log/rsync.log
transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300

[gentoo-portage]
#modern versions of portage use this entry
path = /gentoo/rsync
comment = Gentoo Linux Portage tree mirror
exclude = distfiles
</pre>

<p>
Ovviamente per la maggior parte dei file è possibile scegliere le proprie
locazioni. La parte importante è la sezione (<c>[gentoo-portage]</c>). Questa è
la locazione dalla quale i client rsync proveranno a sincronizzarsi.
</p>

<p>
Per ragioni di sicurezza, è richiesto l'uso di un ambiente in chroot. Ciò
comporta delle implicazioni per i timestamp dei log -- vedere le FAQ più sotto.
</p>

<p>
A questo punto bisogna effettuare il mirror dell'albero di Gentoo Linux
Portage. Per fare ciò, è possibile usare lo script mostrato qui di seguito.
Probabilmente sarà necessario cambiare la locazione di qualche fileper
 soddisfare le proprie necessità --  in particolare, esse dovrebbero
corrispondere a quelle del proprio <path>rsyncd.conf</path>.
</p>

<pre caption="rsync-gentoo-portage.sh">
#!/bin/bash

RSYNC="/usr/bin/rsync"
OPTS="--quiet --recursive --links --perms --times -D --delete --timeout=300"
#Decommentare la linea seguente solo se si vi è stato garantito l'accesso a masterportage.gentoo.org
#SRC="rsync://masterportage.gentoo.org/gentoo-portage"
#Se si sta aspettanto l'accesso al mirror principale, selezionare uno dei mirror da:
SRC="rsync://rsync.de.gentoo.org/gentoo-portage"
DST="/space/gentoo/rsync/"

echo "Started update at" `date` >> $0.log 2>&amp;1
logger -t rsync "re-rsyncing the gentoo-portage tree"
${RSYNC} ${OPTS} ${SRC} ${DST} >> $0.log 2>&amp;1

echo "End: "`date` >> $0.log 2>&amp;1
</pre>

<p>
Il proprio <path>rsyncd.motd</path> dovrebbe contenere l'indirizzo IP ed altre
informazioni di rilievo riguardanti il proprio mirror, per esempio l'host che
fornisce il mirror di Portage e un contatto amministrativo. Ora è possibile
testare il server come abbozzato nel capitolo precedente <uri
link="#local">Configurare il proprio mirror rsync locale</uri>
</p>

<p>
Dopo essere stati approvati a mirror rsync ufficiale, al proprio host verrà
dato un alias avente una nome nella forma: <path>rsync[num].[codice
nazione].gentoo.org</path>.
</p>

</body>
</section>
</chapter>

<chapter>
<title>FAQ brevi</title>
<section>
<title>D: Chi bisogna contattare per problemi di manutenzione o problemi
riguardanti rsync?</title>
<body>

<p>
R: Visitare <uri link="http://bugs.gentoo.org">Gentoo Bugzilla</uri> ed
inserire un bug nel prodotto "Mirrors", componente "Server Problem".
</p>

</body>
</section>

<section>
<title>D: Come si può controllare l'aggiornamento di un server rsync
ufficiale?</title>
<body>

<p>
R: Il gruppo delle infrastrutture Gentoo tiene sotto controllo tutti i server
rsync della comunità. I risultati sono visibili nella <uri
link="http://mirrorstats.gentoo.org/rsync">pagina web corrispondente</uri>.
</p>

</body>
</section>
<section>
<title>D: Sto mettendo a disposizione un mirror rsync privato per la mia
azienda. Posso ancora accedere a masterportage.gentoo.org?</title>

<body>

<p>
R: A causa delle risorse limitate, bisogna assicurare che esse siano allocate
in modo da fornire il massimo beneficio agli utenti. Perciò le connessione
permesse al rsync principale e ai mirror distfile sono limitate solamente ai
server pubblici. Si invitano gli utenti ad utilizzare il nostro regolare
sistema di mirror per stabilire un mirror rsync privato, sebbene venga chiesto
loro di seguire qualche basilare <uri
link="/news/it/gwn/20030505-newsletter.xml#doc_chap1_sect3">Linea guida di
educazione per Rsync</uri>.
</p>

</body>
</section>
<section>
<title>D: È importante sincronizzare il mio mirror due volte all'ora?</title>
<body>

<p>
R: Sì, è importante. Non occorre eseguire la sincronizzazione esattamente alle
:00 e alle :30 ma la sincronizzazione dovrebbe avvenire in ciascuna delle due
finestre temporali:
</p>

<ol>
  <li>da :00 a :10</li>
  <li>da :30 a :40</li>
</ol>

<p>
Inoltre, assicurarsi che le proprie sincronizzazioni avvengano esattamente ogni
30 minuti. Per cui, se la prima sincronizzazione è pianificata ogni ora alle
:08, si prega di pianificare la seconda alle :38.
</p>

</body>
</section>
<section>
<title>D: Dove dovrei sincronizzazione il mio mirror rsync prima di diventare un
mirror ufficiale Gentoo?</title>
<body>

<ul>
  <li>Per i mirror rsync Europei: sincronizzarsi con rsync.de.gentoo.org</li>
  <li>Per i mirror rsync Statunitensi: sincronizzarsi con
   rsync.us.gentoo.org</li>
  <li>Per tutti gli altri: sincronizzarsi con rsync.us.gentoo.org</li>
</ul>

</body>
</section>

<section>
<title>D: Come individuo il mirror più vicino a me?</title>
<body>

<p>
R: <c>netselect</c> è progettato per farlo automaticamente. Se non è già
installato, farlo ora tramite il comando <c>emerge netselect</c>, poi lanciare
<c>netselect rsync.gentoo.org</c>. Dopo circa un minuto netselect stamperà un
indirizzo IP, che dev'essere utilizzato come unico parametro per rsync, seguito
da una coppia di due punti, es. <c>rsync 1.2.3.4::</c>. Dal messaggio banner
visualizzato si dovrebbero reperire informazioni utili. Aggiornare di
conseguenza <path>/etc/portage/make.conf</path>.
</p>

</body>
</section>
<section>
<title>D: È possibile usare la compressione durante la sincronizzazione con
masterportage.gentoo.org?</title>
<body>

<p>
R: No. La compressione utilizza troppe risorse del server, per cui è stata
disabilitata forzatamente su <path>masterportage.gentoo.org</path>. Si prega di
<e>non</e> provare ad usare la compressione mentre si sta effettuando
una sincronizzazione con questo server.
</p>

</body>
</section>
<section>
<title>D: Noto la presenza di molti processi relativi a rsync vecchi e
probabilmente morti, come posso eliminarli?</title>
<body>

<p>
R: Questo comando sarà molto utile per terminare i vecchi processi rsync che
qualche volta restano sparsi nel sistema a causa di problemi di connessione. È
importante terminarli poiché contano come connessioni valide per l'opzione 'max
connections'. Si può eseguire questo comando ogni ora tramite crontab, esso
cercherà e terminerà i processi rsync più vecchi di un'ora.
</p>

<pre caption="Terminare i vecchi processi rsync">
/bin/kill -9 `/bin/ps --no-headers -Crsync -o etime,user,pid,command|/bin/grep nobody | \
             /bin/grep "[0-9]\{2\}:[0-9]\{2\}:" |/bin/awk '{print $3}'`
</pre>

</body>
</section>
<section>
<title>D: Molto spesso ci sono troppi utenti connessi al mio server rsync,
e qualche volta ciò comporta un DoS al mio mirror, c'è qualche modo per
prevenire questa situazione?</title>
<body>

<p>
In certi casi, c'è qualche utente sconsiderato che abusa del sistema di mirror
rsync sincronizzando più di 1-2 volte al giorno. Nei casi più estremi, gli
utenti pianificano una sincronizzazione circa ogni 15 minuti. Molte volte
questo porta ad un attacco di tipo Denial Of Service occupando continuamente
uno slot rsync che dovrebbe altrimenti essere libero e disponibile per un altro
utente. Per cercare di prevenire questa situazione, è possibile usare <uri
link="/proj/en/infrastructure/mirrors/rsyncd.conf_pl.txt">questo script
perl</uri> il quale effettuerà una scansione dei file di log di rsync,
selezionerà gli indirizzi IP che si sono connessi più di <c>N</c> volte al
giorno e in modo dinamico creerà un file <path>rsyncd.conf</path>, includendo
l'indirizzo IP incriminato nella direttiva 'hosts deny'. La linea seguente
controlla il valore di <c>N</c> (in questo caso 4):
</p>

<pre caption="Defnire il massimo numero di connessioni per IP">
@badhosts=grep {$hash{$_}>4} keys %hash;
</pre>

<p>
Se viene usato questo script, ricordarsi di effettuare la rotazione dei propri
file di log di rsync giornalmente e modificare lo script per far corrispondere
la locazione al proprio file <path>rsyncd.conf</path>. Questo script è testato
su Gentoo Linux, ma dovrebbe comunque funzionare regolarmente su altre
architetture che supportano sia rsync che perl.
</p>

</body>
</section>
</chapter>
</guide>
