Sky
Vittorio vb Bertola
Wandering on the Web since 1995

Fri 11 - 5:12
Hello, unidentified human being!
Italiano English Piemonteis
home
home
home
about me
about me
site help
site help
site news
site news
license
license
contact me
contact me
blog
near a tree [it]
near a tree [it]
old blogs
old blogs
personal
documents
documents
photos
photos
videos
videos
music
music
activities
net governance
net governance
town council
town council
software
software
help
howto
howto
internet faq
internet faq
usenet & faqs
usenet & faqs
stuff
piemonteis
piemonteis
conan
conan
mononoke hime
mononoke hime
ancient software
ancient software
biz
consultancy
consultancy
talks
talks
job placement
job placement
business angel
business angel
sites & software
sites & software
admin
login
login
your vb
your vb
register
register

Archivio per il giorno 17 Ottobre 2010


domenica 17 Ottobre 2010, 22:49

Una domenica con Ernesto

Questo, una volta tanto, è un post tecnico dedicato a chi si diletta di amministrazione di sistemi Unix: gli altri probabilmente non ci capiranno un’acca e possono anche non leggere.

Oggi, dopo mesi di attesa, era il gran giorno previsto per l’aggiornamento di Ernesto, il mio server di casa. Ernesto è un tipo simpatico ma tosto come il tizio a cui è intitolato, uno dei più famosi forumisti del popolo granata, che in realtà si chiama Fabio ma trae il suo nickname da quell’Ernesto là, a cui dunque il server è intitolato a due gradi di distanza. Ernesto ha tre anni e mezzo di vita, avendo sostituito nel febbraio 2007 il precedente Lazzaro, che aveva svolto il compito, in varie versioni, sin dal 2001. Ernesto è nato con 320 gigabyte di disco, che all’epoca erano una buona misura, ma che ormai da mesi sono pieni, costringendomi a inenarrabili peripezie per spostare file di qua e di là. La soluzione definitiva, dunque, prevedeva la sostituzione dei vecchi dischi di Ernesto con nuovi dischi da un terabyte.

I dischi del server sono due, uguali, configurati in quello che si chiama un RAID mirror: i dati vengono scritti contemporaneamente su entrambi i dischi, in modo che se uno dei due si rompe i file possano ancora essere recuperati dall’altro. Con Linux è possibile realizzare questa configurazione in modo piuttosto semplice, di modo che poi sul computer i due dischi appaiano come un disco solo. Il cambiamento dei dischi avrebbe dovuto essere una operazione abbastanza indolore: il piano era quello di togliere quelli vecchi, mettere quelli nuovi, far partire il computer in modalità di emergenza tramite un CD con una distribuzione Linux “live”, riattaccare uno dei dischi vecchi come disco esterno infilato in un’apposita scatoletta USB, e copiare tutti i file – sia il sistema operativo che i dati – dai vecchi dischi a quelli nuovi, facendo attenzione a preservare proprietà e privilegi (cp -a).

La parte fisica del lavoro è filata via liscia; infilare e sfilare i dischi richiede qualche bestemmia, perchè lo spazio di manovra è ridotto dalla memoria che sporge e dai cavi semirigidi attaccati alla scheda madre, ma si fa senza grandi problemi. Già che aprivo, ho fatto un po’ di pulizia; erano due anni che non aprivo il case, e le ventole erano coperte di parecchia polvere, trasformata in quel tessutino grigio piuttosto fitto che si forma in questi casi; soffiando col phon e grattando i punti più complicati delle griglie e delle ventole con una bacchetta di legno (non con un oggetto metallico e comunque non sull’elettronica, e sempre a spina staccata e dopo essersi messi a terra toccando il metallo di un elettrodomestico…), ne è venuto via parecchio.

Richiuso il case, faccio partire il CD “live” con gli strumenti d’emergenza – un System Rescue CD del 2009, non sono stato nemmeno a masterizzarne uno nuovo – e il sistema parte che è un piacere. Con fdisk partiziono i nuovi dischi in maniera simile a quelli vecchi, lasciando lo spazio in più nella partizione dei dati, e marcando le partizioni di tipo “Linux RAID autodetect” (FD); con mdadm –create inizializzo i volumi virtuali RAID, associando a due a due le partizioni corrispondenti su ciascuno dei due dischi. Poi i volumi virtuali vanno formattati con mkfs; io uso da due lustri il file system Reiser, ma dato che il suo autore è attualmente sotto processo per uxoricidio ho il sospetto che possa non essere più una buona scelta. Decido dunque di provare il nuovo file system Ext4.

Formattati i volumi, uno a uno li monto e comincio a copiare i file dal disco vecchio a quello nuovo… e incontro la prima cosa strana; il volume che doveva essere grande dieci gigabyte è grande venti. Cosa sarà successo? Mi assale un orribile dubbio, ebbene sì: ho sbagliato a digitare il comando e ho creato un volume virtuale di livello 0 (RAID striping) invece che 1 (RAID mirroring). Il RAID 0 è un meccanismo completamente diverso, in cui i due dischi si sommano e non si accoppiano…

Ricomincio: fermo i volumi virtuali, li ricreo giusti, li riformatto, riparto con la copia. A questo punto, il mio volume da 10 gigabyte, che sui vecchi dischi era pieno al 60%, risulta pieno per oltre il 70%… con gli stessi file. Una veloce lista delle directory rivela l’orrido: anche i file più piccoli occupano quattro kilobyte minimo, un blocco. Chiamo anche l’esperto e mi conferma la cosa: nel 2010, il file system Extended ancora non fa quello che Reiser fa da dieci anni, ovvero impaccare i file in modo che un file di 80 byte ne usi 80 e non ne usi 4096. E allora crepa: non voglio perdere il 10% del mio spazio così, e decido di ripartire un’altra volta riformattando i volumi col file system Reiser versione 3, che ha sempre funzionato bene.

Usciamo a fare una passeggiata, spengo, quando torno faccio ripartire tutto e riformatto i volumi virtuali con Reiser. Poi cerco di montare anche le partizioni del disco esterno, per copiare i file, e ricevo uno strano messaggio d’errore: “la partizione è già occupata”. Eppure non risulta montata da alcuna parte. Cerco di capire cosa succede, ma ci vuole un po’; alla fine controllo i volumi RAID, e scopro una cosa incredibile.

Per semplificare la vita a chi usa il RAID, Linux dispone di una capacità di “autoindividuazione” dei volumi virtuali: all’avvio, legge delle informazioni dai dischi stessi e li accoppia automaticamente. Ora, non chiedetemi cosa sia andato storto, ma, facendo partire il computer con il disco vecchio già acceso e collegato esternamente via USB, il sistema ha creato i volumi virtuali non accoppiando le partizioni dei due dischi nuovi, ma accoppiando le partizioni di uno dei nuovi dischi con quelle di quello vecchio! E non è finita qui, perché quando ho riformattato con Reiser i volumi virtuali, in realtà Linux ha formattato le partizioni del disco vecchio, cancellando irrimediabilmente tutti i miei 320 gigabyte di dati…

Comunque, niente panico: anche il computer vecchio usava il RAID mirroring, per cui, per fortuna, avevo ancora lì sulla scrivania l’altro disco vecchio con tutti i dati sopra. Ho dovuto staccare tutto, aprire la scatoletta e cambiare il disco vecchio ormai svuotato con l’altro ancora pieno di dati; poi ho fatto ripartire il sistema e riformattato i volumi virtuali ancora una volta – stavolta, per sicurezza, il disco esterno era spento e staccato… Stavolta è andato tutto bene; dopo aver copiato il sistema, ho generato il nuovo file mdadm.conf come descritto qui e reinstallato il boot loader GRUB su ciascuno dei due nuovi dischi come descritto qui.

Poi ho tolto dal lettore il CD del System Rescue, ho provato l’avvio e… tutto ok! Ernesto è rinato con la massima tranquillità. Mancava solo la copia della partizione contenente i dati; ho dovuto aspettare quasi due ore che (visto il pasticcio precedente) i due dischi nuovi finissero di sincronizzare il mirror, e poi ho dato il via alla copia. Al ritmo a cui sta andando, ci vorranno circa trenta ore per copiare i trecento gigabyte di dati dal disco esterno ai nuovi dischi interni. Tanto, ora è grande e può andare avanti da solo.

[tags]server, linux, raid, installazione, hard disk[/tags]

divider
 
Creative Commons License
This site (C) 1995-2024 by Vittorio Bertola - Privacy and cookies information
Some rights reserved according to the Creative Commons Attribution - Non Commercial - Sharealike license
Attribution Noncommercial Sharealike