Virtualizzazione e provisioning senza sforzo

Vagrant Virtualization Box

Vagrant Virtualization Box

La virtualizzazione ha sicuramente cambiato il modo di lavorare e di pensare alla gestione dei sistemi informatici aziendali o dei service provider, ed il cloud ha aggiunto un’ulteriore strato, sia di liberta’, ma anche di complicazione in piu’, nella gestione dei nuovi sistemi ad alta affidabilita’ che devono essere in grado di scalare nel minor tempo possibile ecc….

Queste esigenze hanno portato alla nascita di innumerevoli sistemi di virtualizzazione, tra i piu’ conosciuti sicuramente ci sono Xen, Vmware, Kvm, Virtuozzo, Virtualbox, Openvz …..! che per certi versi si trasformano in un incubo per gli amministratori di sistema, costretti ad avere diversi ambienti di gestione delle VM su diversi sistemi e con molteplici file di configurazione da settare.

Infatti quando ci troviamo ad amministrare un ambiente cloud con molte macchine, il rischio di dover aggiungere una macchina in più e doverla successivamente configurare in poco tempo per il deploy e la messa in produzione insieme a tutte le altre è molto alto. In più, se siamo all’interno di un’architettura che deve scalare rapidamente per rispondere in modo agile alle esigenze degli utenti (e chiaramente dell’azienda), dover attendere l’installazione del sistema operativo e poi del software non è certamente divertente. Per tutte queste esigenze, Vagrant potrebbe risultare la giusta soluzione che può semplificarci la vita, permettendoci di aggirare tutte queste “rogne”

Vagrant è un gestore di macchine virtuali che può usare parecchi hypervisor tra cui VirtualBox, il predefinito, ma anche VMWare, Xen e KVM. Attraverso questo software infatti potremo basarci su una struttura di base comune a tutte le macchine, che contiene il sistema operativo (anche se poi vedremo come personalizzare questa alberatura), e mantenere degli step comuni nella configurazione delle nostre istanze virtuali, per poi dedicarci solo alle rifiniture, risparmiando tantissimo tempo grazie alle capacità di elaborazione dei datacenter che abbiamo in-house o magari in cloud.

Per inizializzare il nostro primo progetto Vagrant, abbiamo solo bisogno di spostarci in una directory vuota e dare il comando (avendo già installato il software):

Installazione Vagrant

### Verificare di aver installati i seguenti pacchetti : rubygems ruby1.9.1-dev virtualbox-4.2 (o superiori)
# sudo apt-get install vagrant
# vagrant plugin install vagrant-vbguest

Le Box di Vagrant
Il primo concetto fondamentale da fare nostro, per quanto riguarda Vagrant, è quello del concetto di Box. Una Box per quanto riguarda questo ambiente di virtualizzazione infatti è una vera e propria scatola che contiene il sistema operativo, e tutto quello di cui abbiamo bisogno come i software di base ed ogni loro configurazione di base. Al punto di partenza abbiamo delle Box rese disponibili dai server di Vagrant, ma possiamo tranquillamente aggiungerne altre: tutto quello di cui abbiamo bisogno è un po’ di fantasia coi nomi, e di conoscere l’URL remoto tramite il quale scaricare la Box (ne trovate parecchie già fatte su Vagrantbox.es oppure su Hasicorp), con questa sintassi da riga di comando.

# vagrant init
# vagrant box add name url

che, traducendolo con un esempio reale:

# vagrant box add precise32 http://files.vagrantup.com/precise32.box

Che non farà altro che aggiungere al nostro progetto Vagrant una Box Ubuntu 12.04 a 32 bit.

Il Vagrantfile
Una volta scaricata la nostra Box di partenza, possiamo cominciare a configurare il nostro progetto Vagrant tramite il Vagrantfile che abbiamo a disposizione e che si presenta essenzialmente come un file Ruby con vari namespace, ma niente paura, non è necessario conoscere direttamente Ruby per la configurazione (anche se può aiutare), ed è possibile fare riferimento alla documentazione per conoscere i vari prefissi e le possibilità che abbiamo a disposizione. Ogni volta che eseguiamo un comando Vagrant, il Vagrantfile viene cercato in tutte le directory di livello superiore nell’albero.

Il file può avere grossomodo un aspetto del genere:

Esempio di un cluster di 7 Boxes. Preso da:
### https://github.com/patrickdlee/vagrant-examples

domain   = 'example.com'
 
nodes = [
  { :hostname => 'ex7proxy',   :ip => '192.168.0.42', :box => 'precise32' },
  { :hostname => 'ex7db',      :ip => '192.168.0.43', :box => 'precise32' },
  { :hostname => 'ex7web1',    :ip => '192.168.0.44', :box => 'precise32' },
  { :hostname => 'ex7web2',    :ip => '192.168.0.45', :box => 'precise32' },
  { :hostname => 'ex7static1', :ip => '192.168.0.46', :box => 'precise32' },
  { :hostname => 'ex7static2', :ip => '192.168.0.47', :box => 'precise32' },
  { :hostname => 'ex7cache',   :ip => '192.168.0.48', :box => 'precise32' },
]
 
Vagrant::Config.run do |config|
  nodes.each do |node|
    config.vm.define node[:hostname] do |node_config|
      node_config.vm.box = node[:box]
      node_config.vm.host_name = node[:hostname] + '.' + domain
      node_config.vm.network :hostonly, node[:ip]
 
      memory = node[:ram] ? node[:ram] : 256;
      node_config.vm.customize [
        'modifyvm', :id,
        '--name', node[:hostname],
        '--memory', memory.to_s
      ]
    end
  end
 
  config.vm.provision :puppet do |puppet|
    puppet.manifests_path = 'puppet/manifests'
    puppet.manifest_file = 'site.pp'
    puppet.module_path = 'puppet/modules'
  end
end

Prima di arrivare a questo livello tuttavia, è necessario cominciare dalle basi: il primo file di configurazione di Vagrant che andremo a scrivere conterrà ben poche specifiche, e si baserà esclusivamente sulla Box che abbiamo scelto per la nostra prima macchina virtuale.

# Una singola Box.
#
Vagrant.configure(“2”) do |config|
config.vm.box = “precise32”
end

Esempio per una singola Box.

Vagrant.configure("2") do |config|
config.vm.box = "precise32"
end

Inoltre il Vagrantfile deve essere soggetto a version control (tramite git ad esempio) per tenere traccia di ogni modifica e rendere il tutto facilmente riportabile in una nuova architettura

Avviamo la Box

# sudo vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Importing base box 'precise32'...
[default] Matching MAC address for NAT networking...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Booting VM...
[default] Waiting for machine to boot. This may take a few minutes...
[default] Mounting shared folders...
[default] -- /vagrant

Adesso che abbiamo il nostro progetto funzionante, basterà dare

# vagrant ssh
Last login: Fri Apr 15 05:43:58 2011 from 10.0.2.2
[vagrant@localhost ~]$

per collegarci ed esserne subito operativi all’interno della nostra box.

Provisioning
Vagrant non è solo un sistema per avviare velocemente delle macchine virtuali, infatti ci permette anche di controllarle, e di controllarne le impostazioni nel tempo, insieme al software installato. Possiamo quindi gestire la configurazione automatica secondo le nostre esigenze delle varie Box che abbiamo, attraverso una struttura di provisioning abbastanza flessibile che supporta normali shell script (Bash), il buon vecchio Puppet, ma anche Chef e Ansible.

Tramite questa infrastruttura possiamo modificare il Vagrantfile per eseguire quindi qualsiasi istruzione, che sia configurata per script Puppet oppure attraverso Bash. Ad esempio, possiamo utilizzare la piccola struttura riportata di seguito, che proviene direttamente dalla documentazione di Vagrant e che mostra come sia facile scriversi uno script di configurazione da mandare poi in pasto alla propria Box.

$script = <<SCRIPT
echo I am provisioning...
date > /etc/vagrant_provisioned_at
SCRIPT
Vagrant.configure("2") do |config|
config.vm.provision "shell", inline: $script
end

Non solo VirtualBox

Una volta imparato a usare Vagrant, avremo comunque basato tutto il nostro lavoro su VirtualBox. Tuttavia, potremmo anche avere qualcosa in contrario sull’uso di VirtualBox, e voler usare altri provider che ci permettano un’amministrazione più efficace o semplicemente il riciclo di competenze che già abbiamo. Ad esempio, Vagrant supporta tramite plugin anche l’integrazione con VMWare o con Xen; questi plugin sono installabili attraverso il gestore integrato nel software, semplicemente tramite un singolo comando, esattamente come in un classico gestore di pacchetti:

# vagrant plugin install vagrant-vmware-fusion

Oppure se invece di VMWare Fusion usate la variante Workstation:

# vagrant plugin install vagrant-vmware-workstation

Una volta installato il plugin, ed ovviamente il software di providing delle macchine virtuali che vogliamo testare, ci bastera’ modificare il Vagrantfile, con istruzioni come queste nell’ esempio:

Esempio tratto da [ http://puppetlabs.com/blog/new-vmware-provider-gives-vagrant-a-boost ]

config.vm.provider :vmware_workstation do |v|
v.vmx["memsize"] = "2048"
end

Vagrant può ovviamente essere configurato per essere alla base di una complessa configurazione in ambiente cloud, o della propria infrastruttura più modesta.

Se questo primo articolo vi ha incuriositi, la documentazione ufficiale, passo passo, vi sta aspettando : VAGRANT DOC

Nel prossimo articolo vedremo come sfruttare le potenzialita’ di Vagrant + Docker.

#VagrantVirtualizzazioneeProvisioning

Trasferire grandi quantita’ di file alla max velocita’

Spostare molti files velocemente

Netcat per spostare grandi files

NETCAT

Con questo articolo iniziamo a presentare un ottimo tool che, almeno personalmente, e’ stato davvero utile in mille attivita’ sistemistiche, netcat.

Utilita’ 1
Vi è mai capitato di dover trasferire delle directory contenenti elevati quantitativi di files da un server Linux ad un altro ? In caso affermativo avrete sicuramente notato come, anche se il trasferimento avveniva in LAN, comunque la durata dell’operazione aumentava esponenzialmente con l’aumentare dei files da trasferire. Si tratta di un normale fenomeno di overhead dovuto al fatto che ogni singolo trasferimento di file avviene su un differente stream di dati, ed il numero di stream gestibili in contemporanea da un server è di solito piuttosto limitato.

Spesso si cerca di ovviare al problema creando prima un unico archivio .tar contenente i files da trasferire e quindi procedendo con un unico trasferimento. In questro caso si risolve egregiamente il problema di overhead di rete ma la cosa potrebbe diventare comunque problematica nel caso in cui ad esempio lo spazio su disco fosse limitato al punto da non poter consentire la creazione del tar temporaneo.
Se però il comando tar viene utilizzato in maniera intelligente assieme all’utility netcat, abbiamo la possibilità di effettuare comunque un traferimento super-veloce su un unico stream di dati senza la necessità di dover creare degli archivi temporanei. Ecco come possiamo procedere:
Sul server di destinazione (quello verso cui trasferiremo i nostri files), lanciamo il comando:

nc -l -p 888 | tar zxvPp   # il server di destinazione e' in ascolto sulla porta 888 pronto per decomprimere

Sul server master (quello da cui traferiamo i files), lanciamo il comando:

tar czvOPp --same-owner /<source_dir> | netcat -w 5 <ip_macchina_destinazione> 888

Queste due operazioni, effettuate in sequenza, fanno si che i files contenuti nella directory “/source/dir” del server master, vengano compressi in un tar che verrà inviato immediatamente (grazie alla pipe gestita con netcat) verso la porta 888 del server di destinazione. Quest’ultimo da parte sua è configurato per rimanere in ascolto sulla porta 888 e per redirezionare il flusso di dati ricevuto in ingresso direttamente al comando tar lanciato in modo da effettuare una decompressione nella directory “/target/dir” che avrete preventivamente creato ed in cui vi sarete spostati per ricevere il flusso di dati.

Gli usi di netcat sono davvero innumerevoli, tra cui aprire shell remote per lanciare comandi, scansioni di rete fin’anche alla clonazione di intere partizioni o addirittura di un’intera linux-box.
Tutto cio’ lo vedremo nei prossimi articoli su netcat.

#netcattoolmultiuso

Controlliamo la velocita’ della nostra rete da terminale

speedtest-cli

Speed Test da Terminale

In questo articolo vedremo come effettuare uno speed test senza aprire il browser ed usando solo il terminale.

Premessa
Saper usare i molti comandi offerti dalla shell sul nostro terminale offre sicuramente enormi potenzialità, nonostante un primo impatto non sempre amichevole, con questo valido strumento avremo sempre il pieno controllo delle funzionalità di una distribuzione Linux, su cui potremo fare qualsiasi cosa senza usare interfacce grafiche.

Se per esempio vogliamo conoscere in tempo reale la velocità della nostra linea ADSL normalmente dovremmo aprire il browser, digitare un sito per effettuare la prova di velocità (per esempio speedtest.net) ed attendere il risultato; invece con la seguente mini guida utilizzeremo solo ed esclusivamente il terminale per effettuare lo stesso tipo di test di velocità sulla nostra linea.

Impariamo ad usare speedtest-cli, un piccolo tool che utilizza il popolare sito speedtest.net.

Il tool possiede gia di per se un lungo elenco di server disponibili per il test, divisi in ordine di distanza, ed è possibile utilizzarlo per testare il ping su un server specifico o connettersi agli Speedtest Mini server; mentre per gli utenti meno esigenti è possibile generare automaticamente un URL con l’immagine dello Speedtest ed i risultati ottenuti.

Installazione
Speedtest-cli può essere installato utilizzando Python Pip. Per installare Pip su Ubuntu (dalla 13.10 e successive, ma sono supportate anche le versioni precedenti), dovremo lanciare il seguente comando da terminale:

# sudo apt-get install python-pip

Usiamo quindi Pip per installare speetest-cli

# sudo pip install speedtest-cli

Per il futuro, quando si desidererà aggiornare speedtest-cli, potremo utilizzare il seguente comando:

# sudo pip install speedtest-cli --upgrade

Se non siete su Ubuntu esistono altri modi per installare speedtest-cli, basta visitare la pagina GitHub del programma.

Controllare la velocità della rete da terminale
Per testare la velocità di connessione a Internet da riga di comando utilizzando il miglior server (basato su ping) tutto quello che dovete fare è eseguire il seguente comando:

# speedtest-cli

Nota: il tool funziona anche con il comando speedtest invece di speedtest-cli (se avete installato lo strumento utilizzando Python Pip). Nei successivi comandi useremo il comando più corto per facilitare la digitazione.

Esempio di test rete adsl casalinga :

# speedtest-cli
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from Vodafone DSL (88.xx.xx.xx)...
Selecting best server based on latency...
Hosted by ColocationIX (Berlin) [5.80 km]: 51.852 ms
Testing download speed........................................
Download: 7.65 Mbits/s
Testing upload speed..................................................
Upload: 2.51 Mbits/s

Il tool è estremamente flessibile e permette di impostare degli argomenti per svolgere ulteriori test. Per esempio è possibile testare la velocità di Internet ed ottenere automaticamente un link con l’immagine da condividere ovunque utilizzando il comando:

# speedtest --share # (che creera' un URL con un'immagine sul portale di speedtest.net)

Per un uso più avanzato, come la visualizzazione dei server di speedtest.net, il collegamento ad un determinato server e così via, possiamo leggere la guida indicata con il seguente comando:

# speedtest -h

Buon Test !

#speedtestsenzabrowserusandosoloilterminale

Bloccare la pubblicita’ senza plug-in

Linux Ad Block

Linux Ad Block

 

Negli ultimi anni i banner pubblicitari presenti nelle pagine di molti siti si sono trasformati in un mostro incontrollato e soprattutto molto invasivo e, a causa dell’abuso da parte di alcuni, sono finiti per diventare la bestia nera di Internet, inducendo numerosi utenti a trovare un modo per bloccarli con i metodi più disparati.

 

Tra questi figurano ad esempio due note estensioni per browser, ad esempio su Chrome tra i piu’ conosciuti possiamo trovare AdBlock e AdBlock Plus, che svolgono egregiamente il proprio lavoro modificando al volo il foglio di stile delle pagine web impedendone la visualizzazione. D’altra parte questo vantaggio ha un peso materiale: entrambe le estensioni finiscono per appesantire notevolmente il browser, il che potrebbe essere uno svantaggio per molti.

In questo breve articolo verra’ illustrato un metodo efficace per bloccare la visualizzazione dei banner pubblicitari dei più noti circuiti pubblicitari, usando una versione modificata del file /etc/hosts

 

Bloccare la pubblicità senza AdBlock 

Il criterio che utilizzeremo è di per se molto semplice, infatti il file /etc/hosts permette di associare manualmente host ad indirizzi IP senza affidarsi alla risoluzione tramite server DNS; grazie al lavoro ed alla costanza di alcuni sviluppatori, è possibile scaricare un file modificato ad-hoc affinché agli host dei più noti banner pubblicitari venga automaticamente associato l’indirizzo IP 127.0.0.1, ovvero l’indirizzo locale della propria macchina (localhost).  Risultato:
i banner non verranno più visualizzati!

Senza dilungarci in ulteriori spiegazioni procediamo alla modifica: andiamo innanzitutto a creare un backup del file /etc/hosts presente nel nostro sistema operativo, da ripristinare in caso di problemi, dopodiché, andremo a creare uno script per il download/upgrade automatico del file che inseriremo nel nostro crontab.

*Preparazione
Creamo innanzitutto un backup del nostro file /etc/hosts originale da ripristinare in caso di problemi: per farlo, da terminale, digitiamo

# sudo cp /etc/hosts /etc/hosts.bak

Adesso creiamo lo script che sara’ in grado di scaricare automaticamente il nuovo file host, concedendogli eventualmente una serie di tentativi qualora la connessione ad Internet non fosse subito disponibile, quindi dal nostro terminale digitiamo

# sudo vim /usr/local/bin/adblock.sh

All’interno del file appena creato inseriamo quanto segue:

#!/bin/bash

exec 2> /tmp/adblock.log
exec 1>&2
set -x
wget -q -O - 1 --retry-connrefused http://someonewhocares.org/hosts/hosts | grep -P "^(127.0.0.1 |::1 |# )" > /etc/hosts

chmod 644 /etc/hosts

Salviamo il file ed usciamo dall’editor, dopodiché renderlo eseguibile con il comando

# sudo chmod +x /usr/local/bin/adblock.sh

Ora facciamo in modo di aggiungere il nostro nuovo script nel crontab del sistema in modo da farlo eseguire, in automatico, almeno ogni 4 ore (la scelta ottimale sta a voi).

Per coloro che non sono soliti ad utilizzare la gestione del crontab facciamo un breve ripasso sulla sua sintassi :

Esempi di sintassi dei comandi cron

Il file crontab deve rispettare una sintassi ben precisa, diversamente il sistema non accetterà le impostazioni. Quello che segue è un esempio generico:

5 3 * * * /usr/bin/apt-get update

L’esempio precedente eseguirà il comando apt-get update ogni giorno di ogni mese alle ore 03:05 (l’orario viene indicato nel formato a 24 ore).

La prima parte della voce descrive quando l’azione deve essere effettuata. Ci sono cinque campi (nell’esempio precedente, «5 3 * * *»), separati da uno spazio, ognuno dei quali accetta un numero, un asterisco o un testo appropriato. I campi specificano, in ordine (tra parentesi l’abbreviazione standard):

  • minuti, da 0 a 59 («m»);
  • ore, da 0 a 23 («h»);
  • giorno del mese, da 1 a 31 («dom»);
  • mese, da 1 a 12 («mon»);
  • giorno della settimana, da 0 (domenica) a 6 (sabato) («dow»)

 

Quelle che seguono sono alcune varianti della precedente pianificazione d’esempio:

Stringa

Descrizione

«12 03 * * *»

tutte le mattine, più o meno alle 3

« 12 03 15 * *»

tutti i 15 del mese, alla stessa ora

«12 03 31 * *»

7 volte l’anno, alla stessa ora

«0 12 * * 0»

ogni domenica, a mezzogiorno

«2 0 * * *»

ogni giorno, più o meno a mezzanotte

«02 03 * * 1,5»

ogni lunedì e venerdì, alle 3 del mattino circa

Altri esempi per aiutarvi a capire le varie combinazioni :

  • Esempio 1
1-30 * * * * /comando/da/eseguire

il comando verrà eseguito ogni giorno, ogni ora e quando i minuti vanno da 1 a 30.

  • Esempio 2
30 * 1-7 * * /comando/da/eseguire

il comando verrà eseguito i primi sette giorni di ogni mese, ad ogni ora e quando i minuti valgono 30.

  • Esempio 3
00 */2 15 * * /comando/da/eseguire

il comando verrà eseguito il quindicesimo giorno di ogni mese, ogni due ore.

  • Esempio 4
00 1-9/2 1 5 * /comando/da/eseguire

il comando viene eseguito il primo maggio alle 1,00 – 3,00 – 5,00 – 7,00 – 9,00. Cioè ogni due ore dalle 1,00 alle 9,00.

  • Esempio 5
00 1-10/2 1 5 * /comando/da/eseguire

il comando viene eseguito il primo maggio alle 1,00 – 3,00 – 5,00 – 7,00 – 9,00. Cioè ogni due ore dalle 1,00 alle 10,00. Si noti come l’ultimo valore utile dell’intervallo non coincida, in questo caso, con l’ora in cui viene fatta partire l’ultima esecuzione giornaliera del comando.

  • Esempio 6
00 13 2,8,14 * * /comando/da/eseguire

il comando verrà eseguito il secondo, l’ottavo e il quattordicesimo giorno di ogni mese alle 13.00

  • Esempio 7
30 13 1-15 4,10 * /comando/da/eseguire

il comando verrà eseguito i primi quindici giorni di aprile e ottobre alle 13,30.

  • Esempio 8
*/30 13,20 * 1-7,9-12 1-5 /comando/da/eseguire

il comando verrà eseguito nei giorni feriali (da lunedì a venerdì) di tutti i mesi tranne agosto, alle 13,00 – 13,30 – 20,00 – 20,30.

  • Esempio 9
00 14,19 1-15 * 5 /comando/da/eseguire

il comando verrà eseguito alle 14,00 e alle 19,00 dei primi quindici giorni di ogni mese e anche ogni venerdì.

** Ora per tornare al nostro esempio possiamo editare il file del nostro crontab tramite il comando

# crontab -e

ed in base agli esempi appena visti la riga di configurazione per far si che lo script venga eseguito ogni 4 ore di ogni giorno dell’anno sara’ la seguente :

# 00 */4 * * *  /usr/local/bin/adblock.sh

una volta salvato ed usciti non rimarra’ altro da fare che riavviare il servizio per far si che la modifica diventi operativa

# sudo /etc/init.d/cron restart

per verificare che effettivamente la schedulazione sia stata inserita verifichiamo tramite il comando

# crontab -l

Se doveste riscontrare problemi nella gestione della navigazione e voleste tornare alla configurazione iniziale vi bastera’ rieditare il crontab eliminando la stringa inserita e ripristinare il file hosts iniziale di cui avevamo fatto il backup tramite il comando :

# sudo mv /etc/hosts.bak /etc/hosts

Buon Anno!

#linuxadblocksenzaplugin

Velocizzare il vostro PC Linux – Tips & Tricks

Linux Tips & Tricks

Linux Tips & Tricks

Per queste festivita’ Natalizie anche Tuttiperlinux vuole farvi il proprio regalo con alcuni utili tips and tricks per rendere il vostro PC Linux piu’ performante per ogni utilizzo.
PARTIAMO: Come gia spiegato in un precedente articolo un punto a noi molto a cuore e’ il giusto utilizzo e sfruttamento di quel bagaglio di performance che e’ la RAM, oggi rivedremo alcuni punti ed aggiungeremo nuovi trucchi.

Riduciamo l’utilizzo della swap
Normalmente Ubuntu/Debian (e loro derivate) utilizza la swap non appena si supera il 60% della RAM occupata; un valore troppo alto a mio avviso, che fa entrare in funzione la swap troppo presto con numerosi rallentamenti nel sistema. Con questa piccola modifica andremo ad abbassare la soglia di attivazione della swap al 10%, un valore ottimale che garantisce un maggiore utilizzo della RAM (più veloce dello swap, che scrive i dati su disco) senza rinunciare alla swap in caso di saturazione della stessa, che entrerà in funzione il più tardi possibile.

Per effettuare la modifica apriamo un terminale e digitiamo

# sudo vim /etc/sysctl.conf

andiamo a fondo dello stesso e aggiungiamo la seguente stringa

vm.swappiness=10

Ora l’accesso alla swap inizierà solo con un carico della RAM superiore al 90% della stessa.


Pochissima RAM? Usiamo zRam

Se abbiamo un piccolo netbook oppure un pc “datato” con  1 GB di RAM o meno, il nostro sistema Linux può entrare in difficoltà non appena si aprono 2 o 3 programmi pesanti. Il sistema inizierà a “swappare”, rallentando man mano in maniera vistosa. Il trucco più efficace sui sistemi più vecchi è l’utilizzo di zRam, un piccolo hack per il kernel che permetterà di sfruttare al massimo il basso quantitativo di memoria fisica disponibile, “swappando” direttamente in RAM e ritardando il più possibile l’accesso alla swap fisica presente sul disco rigido (estremamente lenta). Il suo funzionamento è complesso, ma riassumibile in poche righe: i dati in RAM vengono compressi e immagazzinati in una partizione swap virtuale caricata in memoria RAM che occupa fino al 25% della stessa.

Raggiunta la soglia critica i pacchetti vengono compressi al massimo e swappati dentro la zRam, con un enorme recupero di prestazioni e di reattività (la compressione/decompressione è circa 20 volte più veloce dell’accesso diretto alla swap sul disco rigido). In teoria è come aggiungere un modulo di RAM in più della capienza dimezzata rispetto all’originale; ad esempio su 1GB di RAM si ottengono in totale circa 1,50 GB ( aggiunta di un modulo da 512MB) con l’aggiunta di zRam e, senza cambiare nulla.

Sulle versioni più recenti di Ubuntu (dalla 12.04 e successive) è possibile installare ed usare zRam lanciando il seguente comando da terminale.

# sudo apt-get install zram-config

Il file di configurazione lo troverete sotto /etc/init/zram-config

Al primo riavvio del PC zram si attivera’ in automatico.

ATTENZIONE: il funzionamento non è garantito su tutte le configurazioni, in quanto molto dipende dal modello di RAM utilizzato sul computer. Se non riscontrate migliorie conviene rimuoverlo.

NOTA BENE: zRam può essere usato con qualsiasi quantitativo di memoria RAM, ma i risultati migliori si ottengono con meno di 4GB di RAM, oltre tale valore perde gran parte dell’efficacia (almeno con gli OS attuali).


Troppi applicativi in auto-avvio? Diamogli una regolata

Le distribuzioni odierne hanno tanti applicativi in auto-avvio, e molte di queste voci sono spesso nascoste e non visibili. Per controllare quali avviare e quali rimuovere possiamo affidarci a BUM (boot-up manager) una comoda applicazione disponibile nei repository di Ubuntu/Debian.

Per installarlo usiamo il seguente comando.

# sudo apt-get install bum

Avviamolo dal menu applicazioni o dalla Shell dell’ambiente (dovete essere root) per ottenere la lista di applicativi avviati insieme al sistema.
In base alle nostre esigenze possiamo modificare alcune delle voci disattivandole con una semplice spunta.

ATTENZIONE : evitate di disattivare voci a caso, documentatevi su Google per verificare la funzionalita’ dell’applicativo.


Velocizzare Ubuntu cambiando ambiente grafico
Per alcuni Unity è troppo pesante o limitato, per nostra fortuna usiamo un sistema open source, che quindi non c’incatena ad uno specifico ambiente grafico. Possiamo dunque scegliere d’installare una grande varietà di ambienti grafici già pronti e spesso notevolmente più leggeri dell’ambiente di partenza utilizzando il gestore pacchetti o il terminale. Non c’è nemmeno l’obbligo di cancellare il vecchio ambiente, Linux permette di gestire più ambienti grafici insieme senza problemi. Avendo abbiamo possibilità di scelta, perché non scegliere in base alle nostre esigenze e necessità?

Tra i più leggeri in assoluto, in grado di regalare una reattività invidiabile, c’è XFCE , a mio avviso il miglior ambiente grafico alternativo, che unisce leggerezza e funzionalità in un mix vincente.

Per installarlo utilizziamo il seguente comando da terminale

# sudo apt-get install xubuntu-desktop

In alternativa c’è LXDE, ancora più leggero e spartano per PC particolarmente obsoleti.

Installazione
Installare a scelta i pacchetti:

lubuntu-desktop : se si desidera avere Lubuntu completo;
lubuntu-core : se si desidera avere Lubuntu in versione minimale;
lxde : se si desidera avere il solo ambiente LXDE.

esempio :

# sudo apt-get install lubuntu-desktop

 

Buon divertimento !

#LinuxTipsandTricks