giovedì 7 giugno 2012

Partizionare il disco

Dopo i recenti accadimenti e cambiamenti di umore da parte dei BIG delle distribuzioni Linux, con conseguenze di cui in futuro forse parleremo, ho deciso di partizionare correttamente il disco e quando dico correttamente, intendo in modo da dare un taglio netto alla infame connivenza tra dati e programmi che li usano.

Come è noto o forse anche no, Linux è un sistema piuttosto semplice da gestire, visto che tutto è sotto forma di entries nel file system, e queste entries sono completamente visibili all'utente, cioè sono proprio lì dove le vediamo e sono solo quelle,  concetto che non è invece altrettanto chiaro su sistemi diversi come Windows.

Così se in Windows il miglior modo per salvarsi i dati, è farsi un bella disk image e relative aberrazioni ( tipo disk image incrementale a blocchi ), in Linux si va di tape archiver cioè di tar e si fa tutto perfettamente e anche di questo probabilmente parleremo in futuro.

Il risultato è che dopo una installazione corretta di Linux, abbiamo la classica struttura logica e che può variare leggermente da distribuzione a distribuzione :



Se sapete come funziona, riconoscete sicuramente le magiche cartelle bin, sbin, etc e lib dove finiscono tutti i programmi standard.

Di solito al primo livello sotto la / (detta root)  ci sono i programmi necessari a far partire il sistema e ottenere qualcosa di funzionante, molti devices embedded si fermano lì. Nella usr ci sono i programmi distribuiti con la distribuzione e nella local, ci sono quelli compilati dagli utenti, prefisso adottano di default se non indicato diversamente.

Poi ci sono quelle rosse che possono essere create ed usate come area dati, dinamici come quelli nella var, o statici come quelli nella share che tipicamente si ripete nella local dove va la documentazione e i files ausiliari. Insieme a queste ci sono altre cartelle come la boot dove va il kernel e altre informazioni di startup.

Le cartelle in nero sono le "unbackupable", cioè quelle che o sono create dinamicamente dal sistema o contengono il mount delle partizioni. Ci ho messo anche la tmp per la sua irrilevanza.

Le cartelle che invece ho indicato blu sono quelle riservate agli utenti e considerando che l'utente root di solito è solo per manutenzione, ciò che interessa finisce tutto in home dove ci sono le cartelle coi nomi degli utenti.

Questa è la cartella che ci interessa e che vedremo di completare.

Partizionare

C'è una notevole differenza tra partizionare un disco vuoto e partizionare un disco già pieno.

Poiché la maggior parte dei computer domestici ospita sistemi operativi già preinstallati regolarmente pagati, inutilizzati e sempre più invadenti, a meno di scelte radicali opterete per la seconda opportunità. 
 
In questo caso, o installate una distribuzione come Ubuntu che abbia un buon sistema di partizionamento o prendete uno strumento di partizionamento esterno, ce ne sono tanti e bellissimi che non richiedono installazione.

Se l'altro sistema operativo è Windows 7, il partition manager lo avete già, ovviamente non vi installa Linux però permette di gestire il disco e i vari blocchi mentre il sistema operativo è in funzione (e vi garantisco che non è cosa facile).

Il guaio è che per un retaggio del passato, le partizioni definite primarie sono solo 4 e ormai e almeno due sono già occupate, quella di sistema e quella di recupero.

Tuttavia con il GRand Unified Bootloader, potete lanciare Linux anche da una partizione logica, il mio suggerimento è quindi di creare uno spazio per metterci Linux e quindi suddividerlo nelle TRE partizioni logiche :

  1. Uno spazio per il sistema vero e proprio, formattato in ext4 o simile e con mount point / . Tipicamente una installazione Linux richiede un disco da 8/10 Gb, se avete un disco grande usatene 20 che vi mettete al riparo per il futuro. 
  2. Uno spazio per lo SWAP, che sarà automaticamente classificato e formattato come tale. Per la dimensione dello SWAP consiglio sempre 2 * RAM o poco più, quindi su un computer con 4 GB di memoria 8192 Mbytes vanno bene.
  3. Il resto lo formatterete ext4 e lo userete per una home a parte.

Una casa a parte

Con Linux, a differenza di quanto avviene con altri sistemi, tutto ciò che è scritto e aggiunto dall'utente, finisce nella sua cartella utente in home, in files di varia natura di cui l'utente stesso è proprietario.

Quando dico tutto, intendo proprio tutto, compresi i files di configurazione nascosti del desktop e simili e con il sistema dei permessi del File System non potrebbe essere diversamente, quindi sembrerebbe tutto molto semplice.

Purtroppo se i dati sono gestiti da servizi centralizzati di sistema, come Database e/o Web Server  i dati non finiscono nella cartella utente ma nelle cartelle riservate a questi servizi che di solito sono in /var .
  
Comunque la prima cosa da considerare, se si vogliono separare i dati dal sistema, è di mantenere la home su una partizione a parte : poi sarà sufficiente eseguire il mount sul folder home vuoto, inserendolo in fstab e ritrovarsi tutta le cartelle utenti.

Benchè molte distribuzioni usino gparted che consente di indicare come montare le partizioni e dove, è utile capire come è fatto fstab.

Le nuove versioni di Linux utilizzano un disk-id, quindi volendo fare una cosa coerente bisogna innanzitutto diventare root con su o come piace fare a me con sudo bash, poi dare :


ls -la /dev/disk/by-uuid

e trovare così l'elenco delle associazioni tra UUID e partizioni e quindi aggiungere in /etc/fstab la riga :

UUID=<sequenza incredibile di numeri e trattini>    /home      ext4    noatime,errors=remount-ro    0    2

Se ovviamente avete un volume che non è ext4, metteteci il vostro file system preferito, ovviamente evitate file systems che non salvino correttamente i permessi , come fat ed ntfs.

Una interessante opzione che molti dimenticano è noatime, è utile metterla perché pensate che Linux, come retaggio dalla struttura del sistema Unix, non solo tiene traccia della data di ultima scrittura di un file ma anche dell'ultima lettura, quindi con atime inserito cercherà continuamente di aggiornare il file system anche se non stiamo scrivendo e ciò non è cosa buona, nè per noi nè per il disco.

E poi ?

E qui si fermano di solito gli altri blog, quando vi consigliano di partizionare in quel modo ma questo è Finestrella e non può certo lasciarvi così.

Infatti in questo modo non salvate per esempio quanto contenuto in /opt, in /var e in /usr/local.

Se volete reinstallare perderete quindi di colpo, tutti i dati dei servizi che dicevamo prima che stanno in /var con tutti i log, oltre a tutti i programmi che avete messo in /opt e tutte le cose che avrete con fatica recuperato e compilato e saranno finite in /usr/local.

Attenzione perché spesso quando si fanno i backup, ci si limita a copiare la propria home, anche perché di solito i backup si fanno con l'utente "normale" che potrebbe non avere accesso completo a certi files di queste cartelle. Così una volta ripristinato il sistema si saranno persi una buona parte dei programmi.

Come fare ?

Vi posso dire cosa faccio io : creo una cartella System, con la prima lettera maiuscola. Siccome gli utenti hanno home con il proprio nome che è minuscolo sono abbastanza tranquillo (anche perché di solito il mio sistema ha solo un utente che sono io e non mi chiamo System).

Divento quindi root e poi lancio cinque semplici comandi :

mkdir /home/System
mv /opt /home/System
mv /usr/local /home/System/usr.local
ln -s /home/System/usr.local /usr/local
ln -s /home/System/opt /opt

cioè uso dei semplici link simbolici.

Per quanto riguarda la var , la questione è più complicata, di solito della var si tende a conservare la lib, dove i database adorano mettere i propri dati ed eventualmente la log per salvare i log di sistema.
Nella var però risiedono sia files completamente inutili come quelle delle varie cache, sia il sistema di gestione dei pacchetti che non può essere sovrascritto cosi`impunemente da quelli della precedente installazione.

Se non usate i database, o il web server e se state installando un semplice laptop o desktop, di solito conviene lasciare perdere, se invece volete salvare i log e i dati di un database vi consiglio di usare gli strumenti classici che vi offre il sistema.

Ripristino 

Quando si reinstalla si può procedere con semplici rm e ln ricostruendo i link, non vi scrivo qui come fare perché se non siete in grado di farlo è meglio non rischiare di inserire comandi a caso ma spero che in linea di massima l'abbiate capito.

Altro da dichiarare ?

Si. In realtà c'è altro.

Questo altro sono le modifiche che facciamo al sistema in tutte le altre cartelle.
In questo caso non è che possiamo fare i link per esempio sulla etc, per evitare disastri di dimensioni bibliche.

Ricordate che ogni sistema deve partire con le proprie configurazioni anche perché ad ogni aggiornamento i files di configurazione tendono a cambiare.

Capita però per alcune esigenze che ci capiti di fare qualche cambiamento virtuoso, per esempio modificando il file rc.local che fa partire programmi allo startup, giochicchiando col resolv.conf , aggiustando a mano la grafica con un file xorg.conf o modificando occasionalmente link e simili.

Per ovviare a tali inconvenienti tengo nella famosa System di cui parlavo prima una semplice cartella chiamata main dove copio i files che mi interessano usando una semplice copia ... in che modo ?

Così :

cp -av --parent /<path completo del file o cartella> /home/System/main

il -a copia tutto con permessi e subfolder mentre il --parent ricostruisce l'intero path.

Il v qui serve a verificare che stiate copiando i files giusti.

Una volta reinstallato il sistema operativo si verifica di non fare pasticci, cioè che quello che si sta scrivendo effettivamente già non esiste o non è cambiato rispetto al default e poi si esegue :

cp -av /home/System/main/* /

e il gioco è fatto.

Il v a questo punto invece può servire a visualizzare i danni che avete fatto ma se il sistema è nuovo si può sempre rimediare.

Ovviamente evitate di copiare nella /home/System qualcosa che punti alla partizione home, perché sarebbe inutile e soprattutto irrimediabile.


Nessun commento:

Posta un commento