Posts Tagged tool

Working on…

Sto mettendo a punto un servizio di backup automatici remoti su un server gestito da me in housing presso una farm di Via Caldera a Milano.

L’idea e’ di fornire un servizio di backup enterprise con canone mensile in base allo spazio necessario (penso di partire con un pacchetto di 100GB di spazio per 6 euro + iva al mese).

A breve rilascero’ maggiori informazioni sull’offerta e sulle specifiche tecniche del servizio.

, , ,

2 Commenti

Backup automatici su USB tramite UDEV

Utilizzando le rules di UDEV e’ possibile configurare in modo semplice, il sistema in modo tale che all’inserimento di uno specifico device USB (flash o hard disk) esegua uno script predefinito.

Due parole su Udev

Nel momento in cui una qualsiasi periferica HW genera un evento (es. collegamento/scollegamento periferica, cambio di stato, ecc…) il gestore del bus a cui la periferica e’ collegata genera un interrupt a cui fa seguito la risposta del kernel che recupera informazioni sull’evento e dettagli sulla periferica che rende quindi disponibili al sistema tramite Sys-fs.

A questo punto entra in gioco Udev che e’ in grado di analizzare questi eventi hw e, quando configurato per farlo (tramite gli script in /etc/udev/rules.d/), di agire di conseguenza generando azioni software (quali ad esempio il caricamento dei driver corretti, la configurazione dei relativi files di sistema, fino al lancio di applicazioni esterne specifiche).

Come Udev puo’ aiutare chiunque non sia uno sviluppatore del kernel?

Nel mio caso il cliente voleva poter sincronizzare alcuni dati salvati sul proprio fileserver linux su un hard disk usb, il tutto senza aver alcun monitor/tastiera collegato alla macchina server e senza voler sapere nulla di comandi linux o collegamenti ssh, insomma un sistema “for dummies”.

Tramite udevmonitor e’ possibile vedere le informazioni intercettate da udev in seguito a eventi hardware.

Ad esempio lanciando udevmonitor con l’opzione “–env” (che consente di visualizzare tutte le informazioni di udev in modo esteso) e quindi collegando un device usb verranno stampate a video molte informazioni tra cui, verso la fine, queste:

gordon ~ # udevmonitor --env
udevmonitor prints the received event from the kernel [UEVENT]
and the event which udev sends out after rule processing [UDEV]

UDEV [1241867355.712496] add /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host8/target8:0:0/8:0:0:0/block/sda/sda1 (block)
UDEV_LOG=3
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host8/target8:0:0/8:0:0:0/block/sda/sda1
SUBSYSTEM=block
MAJOR=8
MINOR=1
DEVTYPE=partition
SEQNUM=3717
UDEVD_EVENT=1
ID_VENDOR=USB2.0
ID_MODEL=Mobile_Disk
ID_REVISION=1.00
ID_SERIAL=USB2.0_Mobile_Disk_b506f9b3e4b2e5-0:0
ID_SERIAL_SHORT=b506f9b3e4b2e5
ID_TYPE=disk
ID_INSTANCE=0:0
ID_BUS=usb
ID_PATH=pci-0000:00:1d.7-usb-0:1:1.0-scsi-0:0:0:0
ID_FS_USAGE=filesystem
ID_FS_TYPE=vfat
ID_FS_VERSION=FAT16
ID_FS_UUID=E2C6-1A06
ID_FS_UUID_ENC=E2C6-1A06
ID_FS_LABEL=MELY
ID_FS_LABEL_ENC=MELY
ID_FS_LABEL_SAFE=MELY
DEVNAME=/dev/sda1
DEVLINKS=/dev/disk/by-id/usb-USB2.0_Mobile_Disk_b506f9b3e4b2e5-0:0-part1 /dev/disk/by-path/pci-0000:00:1d.7-usb-0:1:1.0-scsi-0:0:0:0-part1 /dev/disk/by-uuid/E2C6-1A06 /dev/disk/by-label/MELY /dev/block/8:1

Come si puo’ vedere UDEV ci dice che e’ stato collegato un dispositivo USB2, che il kernel l’ha associato a /dev/sda

Nel caso ad esempio del collegamento di un hard disk usb compariranno informazioni relative al device che il kernel ha associato al disco (es. sda), il numero di partizioni presenti, il modello del disco e del controller, il nome (label) dato al disco.

Tutte queste informazioni possono essere utilizzate nelle rules di udev.

E’ quindi sufficiente preparare l’hard disk usb impostando come label, ad esempio, “BACKUP_1″ e creare un nuovo file in /etc/udev/rules.d come ad esempio “70-persistent-backupusb.rules” contenente queste 3 righe:

ACTION!="add", GOTO="persistent_storage_end"

SUBSYSTEM=="block", KERNEL=="sd[a-z][1-9]", ENV{ID_FS_LABEL}=="BACKUP_1", RUN+="/usr/bin/backup_usb %k &"

LABEL="persistent_storage_end"

Con queste informazioni ogni volta che udev rilevera’ il collegamento di un dispositivo di tipo “block” associato a un device di tipo “/dev/sd” (ad es. /dev/sda1) con etichetta di volume “BACKUP_1″ eseguira’ lo script “/usr/bin/backup” passandogli come parametro “%k” ossia il valore del campo KERNEL (ossia il nome del device associato al dispositivo).

Banalmente lo script “/usr/bin/backup” si occupera’ di montare il device, eseguire il backup, smontare il device ed eventualmente segnalare, ad esempio tramite l’invio di una e-mail, l’esito dell’operazione.

Questo e’ solo un esempio molto semplice e banale dell’utilizzo delle rules di Udev, penso si possano pero’ apprezzare le enormi potenzialita’ di questo strumento (abbinate a della buona documentazione reperibile online) nel campo dell’automatizzazione di operazioni di sistema (anche le piu’ disparate) triggerate da eventi hardware.

, , , , , ,

Nessun commento

vnStat :: network traffic monitor

vnStat screenshotTempo fa avevo avuto bisogno di valutare il carico di rete su un server per streaming audio e video e mi ero affidato al molto ntop, progetto veramente ben fatto e completo ma un po’ troppo articolato e dettagliato per le mie necessita’.

Il mio bisogno era semplicemente di vedere, sia in tempo reale che come totale nel corso di alcune ore, il traffico in KB/s sull’interfaccia di rete, senza bisogno di una granularita’ o separazione estremamente fine a livello di protocollo o porte o tipo di traffico.

Qualche tempo fa ho trovato un progetto opensource che fa piu’ al caso mio, vnStat. E’ un sw molto semplice da utilizzare, non richiede speciali permessi per fare il suo lavoro (si appoggia alle statistiche recuperabili dai file /proc/) e gira interamente da terminale :)

E’ possibile fare sia sessioni live di controllo del traffico che impostarlo perche’ parta al boot del sistema e salvi i dati del traffico giornaliero richiamabili poi con semplici comandi che visualizzano semplici ma chiari report.

Es.

:: Per creare il db di una nuova interfaccia da monitorare

~# vnstat --update --iface eth0
Error:
Unable to read database "/var/lib/vnstat/eth0".
-> A new database has been created.

:: Per effettuare una sessione live di analisi

~# vnstat --live --iface eth0

:: Per visualizzare un riassunto del traffico giornaliero

~# vnstat --query --iface eth0
Database updated: Wed Dec 17 10:09:36 2008

	eth0

	   received:        403 kB (0.0%)
	transmitted:       7.57 MB (100.0%)
	      total:       7.96 MB

	                rx     |     tx     |  total
	-----------------------+------------+-----------
	   03.11.       192 kB |    3.16 MB |    3.35 MB
	    today       211 kB |    4.41 MB |    4.61 MB
	-----------------------+------------+-----------
	estimated        --    |      --    |      --

Vi rimando al sito (chiaro e sintetico come il programma) per maggiori info e screenshot!

, , , ,

Nessun commento