giovedì 17 settembre 2009

RAID1 con Chiron FS

Chiron FS è un filesystem basato su FUSE che implementa repliche RAID1 a livello di filesystem.
Il filesystem replicato può essere di qualsiasi tipo che si desidera, l'unico requisito è che sia montato. Non sono necessari files di configurazione speciali, perchè l'installazione è semplice come un comando mount (o una riga in fstab).
Ecco una parziale e libera traduzione del manuale d'installazione.
Ricordo che sul sito ufficiale è pubblicata tutta la documentazione completa ( http://www.furquim.org/chironfs/howto.html )
IMPORTANTE: Ricordo a tutti che non rispondo di eventuali danni ai vostri apparati quindi chi segue ciò che scrivo lo fa a suo rischio e pericolo!!!!


Capitolo 1. Come installare e testare Chiron FS

a) Ottenere e installare Chiron FS

ChironFS si può scaricare da Google Code. Ci sono alcune scelte:

* Il codice sorgente, sia come archivio compresso che in formato RPM;
* Binario:
a)i386, sia in formato RPM e DEB;
b)64 bit, sia in formato amd64/DEB che x86_64/RPM

Per il tarball, chironfs-current_version.tar.gz, occorre che sul sistema sia installato FUSE sia in versione binaria che di sviluppo.
Se hai una distribuzione recente probabilmente lo hai già installato o è possibile farlo con pochi comandi come apt-get, yum, yast, ecc
Se non è installato puoi scaricarlo dal suo sito.
Scompatta il binario nel path che preferisci ed avrai una directory di nome chironfs-current_version.
Basta entrare nella directory appena creata e compilare con i seguenti comandicomandi:

# cd / path/to/source/chironfs-current_version
# ./configure [usare le opzioni desiderate]
# make
# make install


Per installare il pacchetto sorgente in formato RPM basta eseguire:

rpmbuild -ba chironfs-current_version. src.rpm

e questo compilerà ChironFS generando un chironfs-current_version.rpm
Fatto ciò si può installare chiron con questo comando:

rpm -i chironfs-current_version-your_architecture.rpm

Per i binari in formato RPM, basta lanciare il seguente comando:

rpm -i chironfs-current_version-architecture.rpm

Per i binari in formato DEB basta eseguire:

dpkg -i chironfs_current_version_architecture.deb


b)Testare Chiron FS

Crea 3 directory, una per il filesystem virtuale e due per le repliche e montale tutte con i comandi:

mkdir /virtual /real1 /real2
chironfs /real1=/real2 /virtual

Verifica che siano montate correttamente con il comando:

df

Si dovrebbe vedere una riga come questa:

/real1=/real2 138456396 130613500 809640 100% /virtual

Tenta di creare/modificare/eliminare alcuni file in /virtual e controlla il risultato in /real1 e /real2.
A questo punto abbiamo tutto il necessario per iniziare la replica dei file.
Possiamo smontare il tutto con il comando:

fusermount -u /virtual

Capitolo 2. Utilizzare Chiron FS

Nel test di cui sopra abbiamo appena fatto l'uso più semplice di ChironFS ma non abbiamo usato due opzioni che, pur essendo OPTIONAL, in un ambiente di produzione sono effettivamente essenziali.
In primo luogo, in un ambiente corporate, vogliamo condividere l'accesso a molti utenti.
Ma se FUSE è stato installato con impostazioni predefinite di utente individuale in questo modo solo l'utente che ha montato il sistema virtuale ha la visibilità necessaria mentre gli altri vedono solo il vuoto mount point.
Così per consentire la visibilità anche agli altri utenti dobbiamo utilizzare l'opzione FUSE allow_other.
In secondo luogo vogliamo che ci venga segnalato se qualche replica non riesce.
Il sistema continuerà a funzionare ma non vogliamo scoprire gli errori quando l'ultima replica ha esito negativo ed il sistema si blocca!
Vogliamo venire a conoscenza della replica non funzionante prima!
Abbiamo pertanto bisogno di attivare i log!
Così l'esempio di cui sopra migliora se si cambia il comando mount con questo:

chironfs --fuseoptions allow_other --log /var/log/chironfs.log /real1=/real2 /virtual

Se si desiderano più repliche, 3 per esempio, digitare:

chironfs --fuseoptions allow_other --log /var/log/chironfs.log /real1=/real2=/real3 /virtual

Ora supponiamo in questo esempio che il /real2 sia un filesystem molto più lento di /real1 e /real3.
ChironFS quando deve scrivere i dati deve scriverli in tutte e tre le directory mentre quando si deve leggere sceglierà solo una di esse.
Decidiamo che non vogliamo che ChironFS dia le stesse possibilità di lettura a /real2 rispetto a /real1 e a /real3.
Dato che ChironFS utilizza un algoritmo di round robin se noi non gli specifichiamo che /real2 è lento leggerà da /real2 ad ogni tre letture.
Così, per evitare questo inconveniente, possiamo dare una bassa priorità a /real2 in modo che ChironFS leggerà da quest'ultima solo se /real1 e /real3 saranno in failure. Per fare questo digitiamo i due punti appena prima del path /real2 :

chironfs --fuseoptions allow_other --log /var/log/chironfs.log /real1=:/real2=/real3 /virtual


Capitolo 3. Modificare fstab

Per montare automaticamente al momento del boot la dir virtuale basta aggiungere una riga al file /etc/fstab così come mostrato nell'esempio qui sotto.
La prima colonna deve iniziare con "chironfs #" seguito, senza spazi, con l'elenco delle repliche separate dal simbolo uguale.
La seconda colonna è il punto di mount.
La terza colonna deve essere "fuse".
La quarta colonna indica le opzioni di fuse e chironfs che devono essere separate da due punti.
Le ultime due colonne sono le opzioni di fstab e funziona proprio come si può vedere nella documentazione fstab.

chironfs#/real1=/real2 /virtual fuse allow_other,log=/var/log/chironfs.log 0 0


Capitolo 4. Alcuni esempi

Analizziamo alcuni esempi reali:

a) File e web servers

In questo esempio vedremo 3 diverse soluzioni per la replica dei dati su una rete LAN con 2 server, tipicamente un file server e un server web.


i) Network storage
In questa soluzione avremo bisogno di 2 server in più che ricopriranno il ruolo di 'server dei server', condividendo il loro filesystem utilizzando qualsiasi protocollo come NFS, SSHFS, ecc.
Ai fini del nostro esempio useremo NFS. I 'server dei server'avranno i nomi degli host impostati come nfs1 e nfs2 ed esporteranno la directory /dati.
Il file e web server, avranno i loro nomi di host impostato su fileserver e server web, e saranno, rispettivamente, i 'server degli utenti '.
Creiamo localmente in ciascuno dei server degli utenti le seguenti dir:

mkdir /real1 /real2 /virtuale

Aggiorna i loro /etc/fstabs con l'aggiunta di queste 3 linee:

nfs1: /data /real1 nfs auto 0 0
nfs2: /data /real2 nfs auto 0 0
chironfs#/real1=/real2 /virtual fuse allow_other,log=/var/log/chironfs.log 0 0

Ora è possibile fare il setup del 'server degli utenti'.
Segui le istruzioni specifiche dei servizi che desideri configurare cercando di far sì che il fileserver esporti la directory /virtual agli utenti e mettendo la document root del webserver sotto la directory /virtual.
Per non avere alcun single point of failure è necessario fornire i backup hardware di rete, per esempio 2 schede di rete per ogni server, collegati a switche ridondati.
Infine installa e configura heartbeat nei 'server utenti' per far si che se uno di essi vada in failure sia automaticamente sostituito da uno degli altri.

ii) Local storage
Creiamo il punto di mount locale per tutti i filesystem reale e virtuale in ciascuno dei 'server degli utenti':

mkdir /real1 /real2 /virtuale

Aggiornare il file /etc/fstab sul fileserver con l'aggiunta di queste 2 linee:

webserver:/real1 /real1 nfs auto 0 0
chironfs #/real2 =:/real1 /virtual fuse allow_other,log = /var/log/chironfs.log 0 0

Aggiornare il file /etc/fstab sul webserver con l'aggiunta di queste 2 linee:

fileserver:/real2 /real2 nfs auto 0 0
chironfs #/real1 =:/real2 /virtual fuse allow_other,log=/var/log/chironfs.log 0 0

Ora è possibile l'installazione di 'server degli utenti'.
Seguire le istruzioni specifiche dei servizi che si desidera configurare, cercando di far sì che il fileserver esporti la directory /virtual
agli utenti e mettere la document root del webserver sotto la directory /virtual.
Per evitare single point of failure è necessario fornire i backup hardware di rete, come 2 schede di rete per ogni server, collegati a switches ridondati.
Infine installa heartbeat nei server degli utenti in modo che ' qualsiasi failure di uno di essi sia fronteggiato da uno dei server utenti'.


iii) Local and network storage
Si possono combinare le due soluzioni sopra esposte per una terza soluzione, combinando local e storage network.
Creare il mount point locale per tutti i filesystem reali e virtuali in ciascuno dei 'server degli utenti':

mkdir /real1 /real2 /real3 /virtual

Aggiornare i files /etc/fstabs con l'aggiunta di queste tre linee:

nfs1:/data /real1 nfs auto 0 0
nfs2:/data /real2 nfs auto 0 0
chironfs #/real3 =:/real2 =:/real1 /virtual fuse allow_other,log=/var/log/chironfs.log 0 0


Ora è possibile configurare i 'server degli utenti'.
Seguire le istruzioni specifiche dei servizi che si desidera configurare cercando di far sì che il fileserver esporti la directory /virtual agli utenti e la document root del webserver sotto la directory /virtual.
Per non avere alcun single point of failure è necessario fornire i backup hardware di rete, come 2 schede di rete per ogni server, collegati a switch ridondati.
Infine installare heartbeat nei 'server degli utenti 'in modo tale da far sì che se uno di essi andrà in failure sarà automaticamente sostituito da uno degli altri 'server degli altri utenti'.

b) Desktop con il backup di rete
Se si dispone di un desktop Linux si consiglia di avere un backup dei file locali su alcuni server di rete.
Questa soluzione si applica a fare il backup istantaneo dei tuoi files sulla rete.
ATTENZIONE!!!!!
QUESTO NON SOSTITUISCE UNA QUALSIASI SOLUZIONE DI REALE BACKUP PERCHE' QUALSIASI CAMBIAMENTO O MODIFICA AI FILES (aggiornamento o cancellazione) SARA' REPLICATA VIA RETE, QUINDI CONTINUA A CREARE IL TUO BACKUP REGOLARMENTE!
QUESTA SOLUZIONE SERVE SOLO A NON PERDERE IL TUO RECENTE LAVORO CHE NON PUO' TROVARSI NEL BACKUP PERCHE' LA PROCEDURA NON È ANCORA GIRATA!
Creare i punti di mount locali per tutti i filesystem reali e virtuali in ciascuno dei 'server degli utenti':

mkdir /real1 /real2 /virtual

Aggiorna il tuo fstab con l'aggiunta di queste 2 linee:

nfs1:/data /real1 nfs auto 0 0
chironfs#:/real1=/real2 /virtual fuse allow_other,log=/var/log/chironfs.log 0 0


Capitolo 5. Replica Failures
Ogni volta che qualcuna delle tue repliche non va a buon fine chironfs tenta di tenere i tuoi sistemi in esecuzione.
Se il failure si verifica nel corso di una operazione di lettura chironfs cerca di leggere da qualche altra replica ed in caso di successo ritorna al chiamante senza alcun errore. In questo caso, chironfs registra l'evento se hai operato il mount con la raccomandata opzione di log.
Se il failure si verifica durante un'operazione di scrittura chironfs continua a lavorare cercando di scrivere nelle altre repliche.
Se almeno una delle repliche in scrittura riesce chironfs ritorna al chiamante senza alcun errore.
Ma questa volta chironfs registra l'evento e disattiva le repliche verso il nodo che ha fallito. Ciò significa che nessuna ulteriore lettura
o scrittura sarà effettuata da o verso esso.
A questo punto dovete far sì che il vostro sistema di monitoraggio segnali l'evento.
È possibile utilizzare qualsiasi software, come logwatch, per questo scopo. A partire dalla versione 1.1, ChironFS offre un altro modo per controllare la salute del tuo filesystem. Ora hai la possibilità di montare un proc-like control filesystem utilizzando da riga di comando l'opzione --ctl (or -c ).
Il filesystem di controllo è composto da una directory per ogni replica.
I loro nomi sono il path completo delle repliche con il carattere _ al posto di ogni /.
Ognuno di essi contiene due file: il primo è denominato "status" e contiene un numero "0" per le repliche in buono stato o un numero "2" se la replica è disattivata ed i dati sono incoerenti. Scrivendo "0" o "2" in questo file puoi attivare o disattivare la replica.
Il secondo file, chiamato "check_chironfs.sh" è uno script destinato a funzionare come un plugin nagios.
Se si vuole utilizzare non va copiato in un altro percorso perché i suoi contenuti cambiano in modo dinamico e non funzionerà in un altro percorso.
Quindi ammettiamo che il vostro fstab è qualcosa di simile:

nfs1:/data /real1 nfs auto 0 0
chironfs #:/real1=/real2 /virtual fuse allow_other,log=/var/log/chironfs.log,ctl=/var/run/chironctl 0 0

Se si desidera controllare le repliche con Nagios, basta solo indicare a Nagios di eseguire i seguenti scripts: "/var/run/chironctl/_real1/check_chironfs.sh" e "/ var/run/chironctl/_real2/check_chironfs.sh".
Non è possibile modificare la proprietà o il permesso di bit su uno qualsiasi dei files/directories in questo filesystem.
Configurare chi può accedere e modificare la proprietà di un mount point PRIMA di montarlo.
ChironFS applicherà questa proprietà a tutti i file e le directory sotto di esso.
Dopo aver rilevato il failure devi correggere la causa del fallimento nella replica non server.
DEVI PROVVEDERE TE A RISTABILIRE LA COERENZA DEI DATI SUL SERVER IN FAILURE.
E' consigliabile l'uso di rsync per aggiornare i dati.
QUESTO PASSO DEVE ESSERE FATTO PRIMA DELLA RIATTIVAZIONE DELLA REPLICA ALTRIMENTI SI DANNEGGEREBBERO I DATI IN TUTTIE LE ALTRE REPLICHE.
Per ripristinare l'uso della replica dopo la procedura di recupero di coerenza, supponendo che il tuo fstab sia lo stesso di cui sopra e la replica in failure (e disabilitata) è /real2 utilizzare il file system di controllo per consentirla di nuovo, come di seguito:

echo 0> / var/run/chironctl/_real2/status

giovedì 10 settembre 2009

Acer Aspire One A150 - Lo schermo non si accende


Ieri l'Aspire One A150 di una mia cara amica ha fatto i capricci.

Al momento dell'accensione infatti lo schermo non si accendeva restando impietosamente nero.

Incaricato di risolvere la questione (ho fatto i salti dalla gioia) all'inizio ho pensato "Ecco ci risiamo con questi netbook da strapazzo..." (confesso che sono stato un pò più pesante nel mio giudizio).

Prima di portarlo in assistenza ho provato a verificare il problema sul sito della Acer scoprendo che quanto occorso non solo è conosciuto ma anche molto ricorrente!

La soluzione comunque è a portata di tutti perchè occorre semplicemente ripristinare il BIOS del nostro Aspire! La procedura di ripristino del bios dell'Acer Aspire One A150 richiede quanto segue:

1) Formattare una chiavetta USB con filesystem FAT

2) Andare sul sito della Acer ( http://support.acer-euro.com/drivers/downloads.html ) e da lì scaricare l’ultima release del bios

3) Scompattare il file zip del bios, spostare il file FLASHIT.EXE ed il file del BIOS 3309.FD nella chiavetta USB. Rinominare il file 3309.FD in ZG5IA32.FD

4) Collegare la chiavetta USB nella porta USB (quella accanto alla ethernet!) dell’Acer Aspire spento, con batteria e alimentatore collegati

5) Tenere premuti i tasti Fn+Esc ed accendere il pc senza lasciare i tasti

6) Rilasciare Fn+Esc dopo pochi secondi dall'accensione: il LED del pulsante d’accensione lampeggerà

7) Premere il pulsante d’accensione UNA SOLA VOLTA: inizierà il processo di aggiornamento del Bios che a me è durato una ventina di secondi circa!

8)Quando il LED del pulsante di accensione smetterà di lampeggiare, l’Acer Aspire One si riavvierà da solo.

Se tutto filerà liscio il nostro Acer Aspire sarà completamente ripristinato e funzionerà perfettamente!

Sia ben chiaro che l'esecuzione di questo how-to è a vostro rischio e pericolo: ciò che ha funzionato con me per altri e svariati motivi potrebbe non funzionare con Voi...Insomma se fate l'aggiornamento del BIOS seguendo in toto quanto ho scritto sopra Vi assumete la piena responsabilità di eventuali ed ulteriori malfunzionamenti.

Bye bye...

giovedì 3 settembre 2009

Bilanciare il traffico http con Keepalived e Debian Lenny

Keepalived è un framework che serve ad implementare cluster ad alta affidabilità con Linux sfruttando il protocollo VRRP (Virtual Router Redundancy Protocol) che permette a più macchine di condividere un VIP (Virtual IP) per garantire l'altà affidabilità dei servizi.
In questo caso vogliamo usare un bilanciatore keepalived, protetto a monte da un firewall, per bilanciare
tra due nostri web server il traffico http proveniente dalla rete pubblica in modo del tutto trasparente per i visitatori.
Installiamo sulla nostra Debian Lenny il software incaricato del bilanciamento, Keepalived, con il seguente comando:

#apt-get install keepalived

Stabilito che il nostro bilanciatore avrà l'IP pubblico 73.XX.XX.XX configurato sull'interfaccia eth0 e l'ip privato 192.168.10.33 sull'interfaccia eth1.
e che i due webserver che formeranno il pool hanno gli ip privati 192.168.10.38 e 192.168.10.39 il nostro file di configurazione /etc/keepalived/keepalived.conf sarà questo (i punti esclamativi introducono una riga di commento):


! da verificare il funzionamento definendo come segue i virtual ip address
!
! le interfacce di rete che uso devo averle già configurate prima:
! su eth1 il gateway per le macchine da bilanciare
! su eth0:x gli ip virtuali per il virtual server
!
! il fowarding deve essere abilitato
!
! echo 1 > /proc/sys/net/ipv4/ip_forward
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
global_defs {

# Invia una mail a ciascuno dei seguenti indirizzi quando una destinazione va in stato down
notification_email {
miouser@miodominio.com
secondomiouser@miodominio.it
}
# L'indirizzo da usare nel campo From: header
notification_email_from usermiobilanciatore@miodominio.com

# Il server SMTP con cui inviare le mail
smtp_server mail.miodominio.com

# Quanto tempo attendere per la risposta del mail server
smtp_connect_timeout 30

# Un nome descrittivo del server keepalived
router_id Bilanciatore1
}

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
vrrp_sync_group VG1 {
group {
VI_1
VI_GATEWAY
}# addresses when a failure occurs
}
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
vrrp_instance VI_1 {
state MASTER
interface eth0

lvs_sync_daemon_inteface eth0

virtual_router_id 51

priority 150

advert_int 1

virtual_ipaddress {
73.XX.XX.XX/27 brd 73.XX.XX.127
}
}
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!# addresses when a failure occurs
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
vrrp_instance VI_GATEWAY {
state MASTER
interface eth1
lvs_sync_daemon_inteface eth1
virtual_router_id 52
priority 150
advert_int 1
virtual_ipaddress {
192.168.10.33/24 brd 192.168.10.255
}
}
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
virtual_server 73.XX.XX.XX 80 {
delay_loop 6
lb_algo rr
lb_kind NAT
nat_mask 255.255.255.0
protocol TCP

real_server 192.168.10.38 80 {
weight 1
TCP_CHECK {
connect_timeout 3
connect_port 80
}
}

real_server 192.168.10.39 80 {
weight 1
TCP_CHECK {
connect_timeout 3
connect_port 80
}
}
}
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Startiamo keepalived:

#/etc/init.d/keepalived start


Se il firewall a monte del bilanciatore è configurato correttamente da questo momento tutto il traffico web diretto alla destinazione 73.XX.XX.XX sarà bilanciato in round robin tra i nostri due server privati.
Se uno dei due server privati non dovesse più rispondere alle chiamate sulla porta 80 keepalived girerà tutto il traffico http verso l'altro nodo privato.
Per eventuali approfondimenti consiglio di fare riferimento al sito ufficiale di keepalived e a questa documentazione:

http://prefetch.net/articles/linuxkeepalivedvrrp.html

http://bollettino.cilea.it/include/getdoc.php?id=259

http://bollettino.cilea.it/include/getdoc.php?id=340

Nic Bonding su Debian Lenny

Come spiega wikipedia il bonding è "...un modulo kernel per linux che permette l'aggregazione di più schede di rete al fine crearne N virtuali (tipicamente chiamate Bond dove N è un numero). Questa nuova interfaccia chiamata channel bonding permette diverse configurazioni tra cui l'aggregazione active-active per aumentare l'ampiezza di banda garantendo la ridondanza oppure l'aggregazione active-standby per la sola ridondanza del servizio.L'utilizzo di questo tipo di architettura permette il collegamento a due tratte diverse di switch distinti per aumentare l'affidabilità del collegamento."
Il modulo kernel di Linux supporta un buon numero di tipi di bonding.
mode= indica la modalità di funzionamento dell'interfaccia virtuale che può essere:

a) 0 = round-robin per il bilanciamento del carico e per il fault tolerance. I pacchetti sono trasmessi alternativamente ed in maniera sequenziale su tutte le interfacce di tipo slave.In altre parole supponendo di avere 3 Slave: eth0, eth1, eth2 che appartengono al Master bond0, il pacchetto numero 1 passa dalla eth0, il 2 dalla eth1, il 3 dalla eth2, il 4 di nuovo dalla eth0 e cosi' via.

b) 1 = active-backup per il fault tolerance. E' attiva solo una slave per volta. La successiva scheda appartenente alla bond0 diventa attiva solo nel caso in cui la slave primaria, attualmenta attiva, perdesse il collegamento. Il MAC address visibile all'esterno e' solo il MAC assegnato alla bond0 (che corrisponde al MAC di una scheda fisica)

c) 2 = active-active XOR (source MAC address XOR'd with destination MAC address) Usando questo metodo l'interfaccia associa l'indirizzo MAC della richiesta in entrata con l'indirizzo MAC per uno dei NIC slave. Una volta fatto ciò tutto il dialogo avviene sullo stesso NIC slave

d) 3 = active-active (Broadcast policy) I pacchetti sono trasmessi su tutte le interfacce di tipo slave aggregate.

e) 4 = IIEEE 802.3ad dynamic link aggregation. Crea gruppi d'aggregazione che condividono la stessa velocità e impostazioni duplex. Trasmette e riceve su tutte le interfacce slave nell'aggregator attivo. Necessita uno switch compatibile con 802.3ad e di un ethtool in grado di stabilire la velocità e le impostazioni per ogni singola scheda salve.

f) 5 = Transmit Load Balancing (TLB). Il traffico in uscita viene distribuito a seconda del carico su ogni interfaccia slave. Il traffico in ingresso viene ricevuto dall'interfaccia slave corrente. Se lo slave ricevente fallisce, un altro al suo posto assume il controllo dell'indirizzo MAC.In questa modalità si ha quindi il load-balancing adattativo (in funzione del traffico) solo in trasmissione.

g) 6 = Adaptive Load Balancing. Bilanciamento del traffico sia in ingresso che in uscita. In ricezione il bilanciamento del carico è garantito da una ARP negotiation. In trasmissione il driver bonding intercetta le risposte ARP inviate dal sistema locale in uscita e sovrascrive l'indirizzo hardware sorgente con l'indirizzo univoco hardware di uno dei membri del bonding in modo tale che diversi peers utilizzino gli indirizzi hardware differenti per il server.In questa modalità si ha quindi il load-balancing adattativo (in funzione del traffico) in entrambe le direzioni.


Configurare l'ethernet bonding su Debian Lenny

In questo esempio creeremo il bonding di due interfacce di rete, eth0 ed eth1.
Installiamo il package ifenslave-2.6 con il seguente comando:

#apt-get install ifenslave-2.6

Assicurariamoci che il modulo kernel sia caricato automaticamente e, quindi, editiamo il file /etc/network/interfaces rendendolo simile a questo:

iface bond0 inet static
address TUOIP
netmask NETMASKTUARETE
network IPRETE
gateway IPGATEWAY
up /sbin/ifenslave bond0 eth0 eth1
down /sbin/ifenslave -d bond0 eth0 eth1

Nello stesso file commenta o elimina le linee che fanno riferimento alle tue reali NICs.

Aggiungi le seguenti linee al tuo /etc/modprobe.d/arch/i386 (ovviamente ricordati di configurare la modalità del bonding di cui necessiti):

alias bond0 bonding
options bonding mode=0 miimon=100 downdelay=200 updelay=200

Riavvia il tuo networking:

#/etc/init.d/networking restart