Aumento delle performance e creazione di dischi virtuali di grandi dimensioni da un insieme di molti dischi più piccoli
Aumento dell’affidabilità mediante ridondanza dei dischi
Nota: è possibile aumentare la tolleranza ai guasti implementando uno schema a 2 blocchi di parità (RAID LEVEL 6). Ulteriori blocchi di parità non sono utilizzati per ragioni di performance
RAID1 RAID0
| |
/-----------------\ /-------------------...-----\
| | | | |
RAID 0 RAID 0 RAID1 RAID1 ... RAID1
/-----------\ /-----------\ /-----\ /-----\
| | | | | | | | | |
120GB 120GB 120GB 120GB 120GB 120GB 120GB 120GB 120GB 120GB
i RAID hardware sono più performanti in quanto gestiscono code, scheduling e calcolo della parità su chip dedicati
questo tipo di soluzione è comunque più costosa e legata a controller e dischi specifici
le implementazioni in software sono in generale più economiche e maggiormente scalabili (utilizzano normali controller)
soffrono tuttavia di cali prestazionali (soprattutto in schemi più complessi come il RAID5), aumentando il carico sulla CPU
mdadm [modalità ] array [opzioni] devices
mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/sdb1 /dev/sdc1
cat /proc/mdstat
mdadm /dev/md0 --fail /dev/sdc1
mdadm /dev/md0 --remove /dev/sdc1
mdadm /dev/md0 --add /dev/sdc1
mdadm --stop
mdadm --assemble /dev/md0 -s
mdadm --zero /dev/sdb1
mdadm --examine -s >> /etc/mdadm/mdadm.conf
update-initramfs -u
Nota: è possibile inizializzare sia dischi che partizioni, ma è preferibile utilizzare le seconde, in quanto l’assenza di una partition-table sul disco potrebbe confondere altri SO.
vgcreate [opzioni] vg_name PVs
vgcreate -s10 VG0 /dev/sdb1 /dev/sdc1
vgchange -a [y|n]
vgremove vg_name
vgextend vg_name PV
vgreduce vg_name PV
Etckeeper risolve questi problemi creando e mantenedo il file di metadati /etc/.etckeeper
apt-get install etckeeper [git-core]
Nota: Le dipendenze di runtime sono solo bash ed uno dei sistemi di revisione distribuita supportati (bzr di default)
Sul sito web di etckeeper non è presente documentazione utile al suo utilizzo ma, essendo il tool concettualmente molto semplice, la sua pagina man risulta più che sufficiente per apprenderne il funzionamento
root@hostname:/etc# $(facciamo qualunque modifica)
root@hostname:/etc# git commit 'Descrizione del commit'
Nota: qualsiasi modifica verra’ fatta in /etc dalla dis/installazione di un nuovo pacchetto, sarà comunque registrata da etckeeper grazie agli hooks presenti nei file di configurazione di apt
Per tutte le altre funzionalità (log, status, diff, push/pull, merge) è necessario utilizzare direttamente il tool di revisione sottostante
root@godot:~# ls /etc/etckeeper/ -l
HackNote!!!: analizzando velocemente il funzionamento dello script principale è possibile verificare che tali directory corrispondono ai sottocomandi di etckeeper; pertanto per aggiungere un nuovo comando ad etckeeper è sufficiente creare una nuova directory con la medesima convenzione nella scelta del nome ed inserire al suo interno uno script bash che ne implementi la logica