Questo mini-howto descrive i comandi necessari per utilizzare l’ottimo s3fs per montare un volume dati remoto impiegando il servizio di storage remoto di Amazon Web Services, il Simple Storage Service o S3.

Come dichiarato dagli sviluppatori di s3fs, il codice e’ stabile ed e’ impiegato in una serie di ambienti di produzione: s3fs is stable and is being used in number of production environments, e.g., rsync backup to s3.

Prima di tutto e’ necessario creare l’account su Amazon, e registrarsi per il servizio S3 (dopo essersi autenticati inserire dati carta di credito in fondo alla pagina)

http://aws.amazon.com

In questo documento vengono impiegate Ubuntu o Debian Lenny come esempio, e si assume che l’utente operi con i privilegi di amministratore, o root, quindi non verra’ specificato in ogni riga il comando sudo. Per ottenere una shell root, nel caso non si sia impostata una password di root, usare sudo su root ed eventualmente utilizzare poi il comando passwd per impostare la password dell’utente root, che sara’ cosi’ accessibile ad ogni evenienza con il comando su. In ambiente Unix e’ bene ricordare che l’utente root e’ da considerare come “una bacchetta magica” a cui ricorrere solo in caso di necessita’, in tutti gli altri casi, impiegare il proprio utente con i privilegi strettamente necessari per operare nel sistema.

Installare i comandi s3cmd

apt-get install s3cmd
s3cmd --configure

Quando si configura, s3cmd chiede le credenziali di accesso che una volta creato l’account sono disponibili nell’area:

Account -> Security Credentials -> Access Keys

In questo mini howto non inseriremo la passphrase durante la cof. di s3cmd, per avere in seguito l’eventuale possibilita’ di rendere i file disponibili tramite un url pubblico, cioe’ impiegando l’opzione -P o –acl-public durante la creazione di un bucket, quindi evitare di specificare una passphrase durante la configurazione. Comunque s3cmd scrive dentro il file:

/home/<NOMEUTENTE>/.s3cfg

le opzioni di default e li’ bisogna settare anche la zona “EU” per la variabile bucket_location, a meno che non si voglia utilizzare un bucket che sta in US.

bucket_location = EU

Da verificare: l’impiego di s3fs su bucket S3 criptato di default con gpg.

Scaricare ultima versione s3fs da googlecode (al momento della scrittura di questo articolo e’ la r191)

wget http://s3fs.googlecode.com/files/s3fs-r191-source.tar.gz

Installare le dipendenze per poter compilare s3fs

apt-get install build-essential libcurl4-openssl-dev libxml2-dev libfuse-dev

Compilare

make

Installare in path eseguibile di sistema

make install

Oppure eseguire chmod +x sul file binario s3fs e copiarlo a mano in /usr/bin/ o in altra dir inclusa nel path degli eseguibili come /usr/local/bin/

Creare il Bucket con location EU (Irlanda)

s3cmd –bucket-location=EU mb s3://nome-del-bucket

Il nome del bucket deve essere unico perche’ ad esso verra associato un dominio di terzo livello, utilizzabile ne caso si voglia accedere ai file via web,  quindi attenzione, alcuni nomi saranno gia’ occupati. Una feature degna di nota e’ che se verra’ specificato nella configurazione o nella creazione del bucket i file potranno essere disponibili anche via HTTP ad un url come questo:

http://nome-del-bucket.s3.amazonaws.com/file.xyz

negli altri casi, come spiegato in precedenza l’acl di default e’ “private” quindi file non visibili via web.

Creare il mount point, ad esempio

~# mkdir /mnt/s3

A questo punto sara’ possibile montare il volume remoto con un comando come questo:

/usr/local/bin/s3fs nome-del-bucket -o accessKeyId=<KEY ID> -o secretAccessKey=<SECRET KEY> /mnt/s3

E successivamente creare uno script, che nella piu’ semplice eventualita’ potrebbe essere fatto cosi’

#!/bin/bash

/usr/local/bin/s3fs nome-del-bucket -o accessKeyId=<KEY ID> -o secretAccessKey=<SECRET KEY> /mnt/s3

Se tutto va’ bene vi ritroverete con grande soddisfazione un volume s3fs montato via rete di 256Tera :)

s3

E’ possibile montare lo stesso volume su piu’ macchine, per condividere file o ripristinare backup ecc.

E’ interessante anche l’opzione -o allow_other che permette di montare il volume in maniera accessibile a tutti gli utenti del sistema

/usr/local/bin/s3fs nome-del-bucket -o accessKeyId=<KEY ID> -o secretAccessKey=<SECRET KEY> -o allow_other /mnt/s3

Per smontare il volume

da root: umount /mnt/s3

da altro utente: fusermount -u /mnt/s3

Importante ricordare che questo storage non e’ gratuito, ovviamente, come non lo sono i transfer in upload e download, le PUT/COPY/POST/LIST/GET ecc…

Tuttavia per la flessibilita’ e la velocita’ che offre e considerando anche che Amazon S3 e’ un servizio ridondato e l’availability e’ a cura di Amazon, il costo al GB e’ davvero molto interessante.

L’upload e’ gratuito, mi pare, fino a giugno 2010. Per farsi un’idea ecco il calcolatore di Amazon: http://calculator.s3.amazonaws.com/calc5.html

Alcuni puntatori, per approfondire:

http://code.google.com/p/s3fs/wiki/FuseOverAmazon

http://s3tools.org/s3cmd

http://geekery.etherknet.com/?p=229

http://blog.eberly.org/2008/10/27/how-i-automated-my-backups-to-amazon-s3-using-rsync/

https://addons.mozilla.org/en-US/firefox/addon/3247/

Share and Enjoy:
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • email
  • HackerNews
  • LinkedIn
  • Reddit
  • RSS
  • StumbleUpon
  • Technorati
  • Twitter