Velocizzare Linux creando un RAM Disk

Veloci con le RAM Disk

Veloci con le RAM Disk

Ram Disk o Ram Drive è una funzionalità disponibile in qualsiasi distribuzione Linux dedicata a poter utilizzare la RAM come un hard disk o memoria di massa.
Grazie a Ram Disk potremo emulare un’hard disk utilizzando la nostra RAM rendendo cosi’ più veloce l’avvio di applicazioni oppure dello stesso sistema operativo.

La RAM difatti è molto più veloce di un qualsiasi hard disk, quindi utilizzando questa funzionalità le applicazioni potranno utilizzare la nostra ram per caricare dati, o altro, rendendo più veloce l’avvio e più reattivo il loro utilizzo.

*N.B.: Logicamente i dati salvati nella ram Disk andranno persi ad ogni riavvio, inoltre l’uso di questa funzionalità è consigliato solo se abbiamo più di 2 Gb di Ram altrimenti rischiamo di rimanere senza RAM da poter utilizzare per la gestione del nostro sistema operativo.

In questo esempio vedremo come creare e attivare una Ram Disk su Ubuntu (Debian e derivate).
N.B.: Prima di creare la cartella sul filesystem destinata alla Ram disk, lanciamo da terminale il comando:

free

in modo da liberare la memoria RAM non utilizzata sulla nostra distribuzione.

1. Creare una RamDisk

Per creare una RAMDISK dovremo creare una cartella che fungerà da alias per poter navigare e utilizzare lo spazio della RAM per farlo basta digitare da terminale:

sudo mkdir -p /opt/ramdisk
sudo chmod -R 777 /opt/ramdisk

la cartella sarà denominata ramdisk e la troveremo all’interno della cartella opt del nostro sistema.

2. Montare una RamDisk

A questo punto dovremo montare la cartella per un’area di archiviazione temporanea tmpfs che utilizza RAM invece di spazio sul disco rigido per farlo digitiamo da terminale:

sudo mount -t tmpfs -o size=2048M tmpfs /opt/ramdisk

come possiamo vedere abbiamo dato 2GB (2048M) possiamo variare il size conforme lo spazio disponibile nella nostra RAM.

Fatto questo provate ad avviare alcune applicazioni e dovreste notare un leggero miglioramento nel loro utilizzo.

3. Smontare la RamDisk

Per smontare la RamDisk basta digitare:

sudo umount /opt/ramdisk

oppure basta riavviare.

E’ possibile velocizzare questa procedura creando un’alias o script da avviare all’avvio del sistema.

Per effettuare il montaggio automatico ogni volta che avviamo la nostra distribuzione, dobbiamo aggiungere una riga nel file /etc/fstab. Apriamo quindi il file:

# sudo gedit /etc/fstab

e aggiungiamo la seguente stringa:

tmpfs /opt/ramdisk tmpfs nodev,nosuid,noexec,nodiratime,size=2048M 0  0

Una volta terminata la configurazione possiamo montare la partizione con il comando :

sudo mount -t tmpfs -o size=2048M tmpfs /opt/ramdisk

Facciamo ora un esempio pratico per vedere se e come funziona la nostra modifica.

Premessa: Se la nostra attività ci costringe a lavorare tutto il giorno con un browser, non bisogna sottovalutare l’idea di ottimizzare l’utilizzo di questo strumento.

Vediamo quindi come utilizzare la RAM Disk appena creata per ospitare ad esempio la cache del browser Firefox.

La procedura è molto semplice, dobbiamo immettere nella barra degli indirizzi il comando about:config , fare tasto destro sulla lista e selezionare Nuovo -> Stringa.
Nel nome dobbiamo scrivere browser.cache.disk.parent_directory e nel campo valore il percorso della cartella dove si desidera memorizzare la cache, che per noi e’ /opt/ramdisk. Infine dobbiamo assicurarsi che la voce browser.cache.disk.enable sia True, altrimenti possiamo attivarla con un doppio click.

Una volta terminato il tutto riavviamo il browser e facciamo qualche test ….

pwd   = /opt/ramdisk#
du -sh * = 85M cache2

Funziona…!

ZyXEL NSA-325 v2

nsa325_v2-1_300Un NAS facile facile

Lo ZyXEL NSA-325 v2 e’ un NAS ideato per l’utenza domestica e/o per i piccoli uffici. Date le sue caratteristiche ci consente di far fronte alle piu’ comuni necessita’ di backup e storage dei dati. Le sue funzioni prevedono l’utilizzo di diversi protocolli di rete, per l’interfacciamento e lo scambio dei files con PC ed anche Smartphones, quali FTP, HTTP, CIFS/SMB, iTunes e molto altro.

Com’e’ fatto

Lo ZyXEL 352 si presenta visivamente con uno chassis in platica dalle dimensioni abbastanza ridotte. Sulla parte frontale si trova il tasto di accensione, piu’ una porta USB 3.0; troviamo anche il coperchio (frontalino) che chiude i due alloggiamenti interni per i dischi fissi da 3,5 pollici o da 2,5, con gli appositi adattatori.
Sul retro, invece, ci sono due porte USB ed una porta Ethernet LAN ed il connettore per l’alimentazione.

PRESTAZIONI

Lo ZyXEL NSA325 v2 integra un potente processore da 1.6 GHz e 512 MB di memoria RAM, e può gestire due Hard Disk SATA III tramite un potente controller capace di lavorare in modalità RAID 0/1. Il NAS è dotato di connettività Gigabit per la connessione alla rete LAN domestica, e di 2 porte USB 2.0 ed 1 porta USB 3.0 a cui collegare direttamente periferche quali memorie di massa o fotocamere digitali.

INTERFACCIA INTUITIVA

Grazie ad un’interfaccia estremamente semplice ed intuitiva, è possibile accedere velocemente ai contenuti del NSA 325 v2, vedere le preview dei file, assistere a slideshow automatici degli album fotografici o ascoltare le playlist delle canzoni preferite dopo averle create facilmente in pochi minuti.

CONNESSIONE AD APPARATI MOBILE

Quando si è a casa propria, l’App multimediale zMedia progettatata da ZyXEL per essere utilizzata su Smartphone o Tablet Apple ed Android, permette di ascoltare la propria musica, vedere i film e le foto, ma anche di configurare il sistema, impostare le code di download/upload dei file e verificarne lo status, senza per questo dover accendere il PC di casa.

MANAGEMENT DEI DATI

I filesystem supportati vanno dall’ EXT4 al 2, quindi non si avranno problemi di compatibilita’, tra le altre funzionalita’ a cui potrete accedere per una completa gestione dei dati sono :

  • Backup:
    – Pulsante One-touch copy/sync per apparati esterni USB
    – Pianificazione Backup:
    – Instant/Scheduled backup
    – NSA verso NSA sincronizzazione e backup
    – NSA verso hard disk esterno USB
  • Dropbox
  • Apple Time Machine
  • Download/Upload:
    – Auto-download da servizi FTP/HTTP/P2P
    – Scheduled download
    – One-click hosting sites download
    – Auto-upload foto e video su YouTube/Flickr/FTP server
  • File system:
    – HD interni: EXT4
    – HD esterni: NTFS, EXT2, EXT3, EXT4, FAT32, ReiserFS, XFS
  • RAID 0, 1, JBOD
  • Online firmware upgrade
  • Self-Monitoring Analysis and Reporting Technology (S.M.A.R.T.)
  • Controllo alimentazione:
    -Ibernazione degli HD Interni
    – Schedulazione power on/off/reboot
    – Wake-on-LAN
    – Recupero automatico del sistema in caso di mancanza di energia
    – Auto shutdown e monitoring con UPS APC USB
  • Controllo termico:
    – Ventilazione a velocità variabile
    – Impianto allarme Alte Temperature
    – Auto shutdown in caso di Alte Temperature

GIUDIZIO

Il prezzo si aggira attorno ai 97 € (senza dischi), a mio parere un NAS con un ottimo rapporto qualita’/caratteristiche tecniche/prezzo, che offre molteplici funzioni ed e’ adatta, principalmente, agli utenti domestici. In un epoca in cui i dati che ognuno di noi produce, o ha necessita’ di salvare, sono in costante aumento, i servizi cloud rappresentato una buon supporto aggiuntivo al backup ma credo (come gia spiegato in precedenti articoli come “cloud si o cloud no?“) sia sempre meglio avere i propri dati al sicuro a casa e poi in copia all’esterno.

GlusterFS: Storage Scalabile e Distribuito

glusterfsIntroduzione

GlusterFS è un file system open source distribuito e scalabile orizzontalmente, la cui capacità può essere dinamicamente espansa mediante l’aggiunta di nuovi nodi. GlusterFS è in grado di arrivare a gestire fino a diversi Peta Byte, migliaia di client e diverse aree dati (storage) organizzandole in blocchi che rende accessibili su Infiniband RDMA (remote direct memory access, fibra ottica) o connessioni TCP/IP.

Le risorse {memoria e disco} vengono rese disponibili sotto un unico punto di condivisione e tali risorse possono essere montate dai client mediante tre diversi protocolli: CIFS, NFS oppure tramite il client nativo Gluster.

Inoltre GlusterFS supporta la replica geografica ossia la replica dei dati di un Volume su un Server dislocato in un area geografica diversa da quella dove sono presenti gli altri nodi.

Iniziamo a prendere confidenza con alcune terminologie di GlusterFS:

  • Volume: Identifica la condivisione effettiva che viene messa a disposizione
  • Brick: Identifica il file system locale di un server su cui opera GlusterFS
  • Translator: Identifica delle componenti ( librerie ) che estendono le funzionalità del file system
  • Server: Identifica la macchina o le macchine ( reali o virtuali ) dove risiedono i dati
  • Client: Identifica la macchina che monta il volume

La logica quindi è la seguente:

Si installa GlusterFS su ogni server che fa parte del pool di storage del cluster, si definiscono i blocchi ( bricks ) da esportare ( directory ) andando cosi a creare la condivisione effettiva chiamata Volume.

Successivamente su ogni Client interessato installiamo allo stesso modo GlusterFS, e tramite i protocolli citati prima ( NFS, CIFS, GlusterFS Client ) andiamo a montare il cluster rendendo disponibile la condivisione ( Volume ).

Vediamo adesso le diverse TIPOLOGIE DI VOLUME ossia come i dati possono essere organizzati:

  • Distributed: Definisce un {Volume Distribuito} dove i file vengono distribuiti in maniera random tra i vari brick del Volume che compongono il Cluster. Questo comporta maggior scalabilità ma molta meno ridondanza,infatti nel caso in cui ci fosse un Volume cosi configurato, un guasto del Server ( Brick ) comporta la perdita dei dati in esso contenuti.
  • Replicated: Definisce un Volume Replicato dove i file vengono replicati tra i Brick del Volume che compongono il Cluster. Questo comporta una riduzione dello spazio disponibile per lo Storage ma una maggior ridondanza e tale configurazione è consigliabile per avere un Elevata Affidabilità e un Elevata Disponibilità.
    Nel caso in cui ci fosse un Volume cosi configurato, un guasto del Server ( Brick ) NON comporterebbe la perdita dei dati visto che ne abbiamo una replica a disposizione. Le repliche dei dati è consigliabile averle in brick separati cioè che non si trovino sulla stessa macchina.
  • Striped: Definisce un Volume Striped dove i file vengono memorizzati in blocchi nei brick del Volume che compongono il Cluster.
    Questo comporta maggiori prestazioni in lettura e scrittura su file di grandi dimensioni e maggior spazio a disposizione ma una minor ridondanza. Nel caso in cui ci fosse un Volume cosi configurato, un guasto del Server ( Brick ) comporta la perdita dei dati in esso contenuti.
  • Distribuited Striped: Definisce un Volume Distribuito e Striped dove il Volume memorizza i file in blocchi tra 2 o più nodi del Cluster. Nel caso in cui ci fosse un Volume cosi configurato, un guasto del Server ( Brick ) comporta la perdita dei dati in esso contenuti.
  • Distribuited Replicated: Definisce un Volume Distribuito Replicato dove il Volume distribuisce e replica i file tra i Brick del Cluster. Questo comporta la combinazione dei pregi delle singole soluzioni distributedd e Replicated.
    Nel caso in cui ci fosse un Volume cosi configurato, un guasto del Server ( Brick ) NON comporterebbe la perdita dei dati visto che ne abbiamo una replica a disposizione e il Volume resterebbe sempre accessibile.
  • Striped Replicated: Definisce un Volume Striped Replicato dove il Volume fa lo Stripe dei file e li replica tra i Brick del Cluster.
    Si combinano i pregi dello Stripe ossia maggiori prestazioni in lettura e scrittura utile per esempio su file di grandi dimensioni con i pregi della Replicazione sui Brick del Cluster per avere cosi prestazioni e ridondanza.
    Nel caso in cui ci fosse un Volume cosi configurato, un guasto del Server ( Brick ) NON comporta la perdita dei dati in esso contenuti.

INSTALLIAMOLO
Per procedere all’installazione e testare il software dovremo avvalerci di almeno due macchine, decidete voi se reali o VM, dopodiche’ inizieremo dividendo il lavoro; partiamo con la macchina che fara’ da Server :

modifichiamo a dovere il file /etc/hosts, io ho fatto nel seguente modo

# vim /etc/hosts
192.168.2.138    server1.example.com     server1
192.168.2.182    client1.example.com     client1

aptitude install glusterfs-server

…ora dobbiamo creare le seguenti directory

mkdir /data/
mkdir /data/export
mkdir /data/export-ns
cp /etc/glusterfs/glusterd.vol /etc/glusterfs/glusterd.vol_orig
cat /dev/null > /etc/glusterfs/glusterd.vol
vim /etc/glusterfs/glusterd.vol
volume posix
  type storage/posix
  option directory /data/export
end-volume

volume locks
  type features/locks
  option mandatory-locks on
  subvolumes posix
end-volume

volume brick
  type performance/io-threads
  option thread-count 8
  subvolumes locks
end-volume

volume server
  type protocol/server
  option transport-type tcp
  option auth.addr.brick.allow 192.168.2.182 # inserire qui l'indirizzo od il nome host del vostro client
  subvolumes brick
end-volume
/etc/init.d/glusterfs-server start

…ora passiamo a lavorare sul client

aptitude install glusterfs-client glusterfs-server
mkdir /mnt/glusterfs  

cp /etc/glusterfs/glusterd.vol /etc/glusterfs/glusterd.vol_orig
cat /dev/null > /etc/glusterfs/glusterd.vol
vim /etc/glusterfs/glusterd.vol

volume remote
  type protocol/client
  option transport-type tcp
  option remote-host server1.example.com # inserite qui l'indirizzo od il nome host del server
  option remote-subvolume brick
end-volume

volume writebehind
  type performance/write-behind
  option window-size 4MB
  subvolumes remote
end-volume

volume cache
  type performance/io-cache
  option cache-size 512MB
  subvolumes writebehind
end-volume

ora dobbiamo lanciare uno di questi due comandi :

glusterfs -f /etc/glusterfs/glusterd.vol /mnt/glusterfs

oppure

mount -t glusterfs /etc/glusterfs/glusterd.vol /mnt/glusterfs

….se non avete avuto errori eseguendo il comando mount dovreste vedere qualcosa del genere

# mount
/etc/glusterfs/glusterd.vol on /mnt/glusterfs type fuse.glusterfs (rw,default_permissions,allow_other,max_read=131072)

# [client1] df -h
/etc/glusterfs/glusterd.vol
143G   33G  103G  25% /mnt/glusterfs

che nel mio caso equivale alla partizione /home della macchina server
# [server1] df -h
/home/server1/.Private            143G   33G    103G  25% /home/server1/Private

…come notate dalle dimensioni dei due filesystems

a questo punto non ci rimane altro che modificare il file /etc/fstab in modo da rendere immediato il mount al boot del client

# vim /etc/fstab

/etc/glusterfs/glusterfs.vol  /mnt/glusterfs  glusterfs  defaults  0  0

Questo era solo un semplice esercizio per imparare a capire il software in questione ovviamente con le dovute aggiunte e modifiche del caso si potranno creare Volumi e directory ad hoc della grandezza desiderata in cui salvare tutti i dati per noi importanti.

Buon divertimento !

Ripristinare file cancellati

Tutti gli strumenti visti nei precedenti articoli vengono utilizzati principalmente per recuperare files da dischi rovinati o prossimi alla rottura. Non sempre la causa dei nostri mal di testa e’ imputabile ad un guasto hardware ma spesso siamo noi stessi causa del nostro male. Un utente goffo, distratto o alle prime armi puo’ causarsi da solo la perdita di dati; che cosa fare in questi casi ?? Bisogna prima di tutto capire che quando viene cancellato un file  esso non viene eliminato fisicamente, piuttosto il filesystem lo “marca” come cancellato rendendo cosi’ disponibile alla scrittura di altri file la porzione di disco che questo occupava. Questo vuol dire che finche’ un’applicazione non usera’ quella porzione di disco il file sara’ comunque presente e’ recuperabile, per questo come gia’ accennato in un precedente articolo, se vi accorgete di aver cancellato qualcosa e’ importante ridurre al minimo possibile l’utilizzo del sistema fino a che non si sara’ tentato il recupero dei dati cancellati. Probabilmente , ad oggi, il tool OpenSource piu’ completo per questo genere di attivita’ e’ senz’altro PhotoRec , questo tool e’ in grado di andare a caccia dei formati di file immagine piu’ comuni ed inoltre e’ in grado di ripristinare file in molti altri formati quali : odf, pdf, 7zip, zip, tar, rpm, deb… ed anche dischi virtuali. Questa utility e’ in grado di funzionare su ogni tipologia di disco, inclusi hard disk, chiavette usb ed anche schede sdd. PhotoRec e’ anche in grado di recuperare file da partizioni che sono state formattate. Aggiungo che per quanto sia un tool da riga di comando PhotoRec  suddivide le operazioni di salvataggio in piccoli passi, proprio come farebbe un wizard grafico. Per avviare PhotoRec bastera’ il semplice comando :

  • sudo photorec

Appena avviato photorec  vi chiedera’, nel seguente ordine, queste informazioni :

  • selezionare il disco e la partizione che ospita i file cancellati # [No partition] per indicarle tutte
  • selezionare il tipo di filesystem
  • selezionare “Search” per recuperare tutti i file oppure “Opt” per selezionare le tipologie
  • selezionare i formati dei file che c’interessa recuperare dall’elenco proposto
  • selezionare la Directory in cui salvare i file recuperati

Il tempo impiegato dipendera’ ovviamente dalla grandezza della partizione selezionata e dalla quantita’ di file da recuperare. Una volta ultima l’operazione troverete nella cartella indicata in fase di avvio una quantita’ di file con nomi strani, questo perche’ PhotoRec nomina i file a suo modo man mano che li trova e lascia all’utente il compito di riordinarli.

** Leggi anche ( ” estraiamo i nostri dati ” )