Puo capitare nell'attività di tutti i giorni di dover rendere fruibile un nuovo disco su un sistema Linux ,il quale gira su VMWARE. Tale attività si rende necessario in quanto, ad esempio, i DB di MySql, o la /var, stanno saturando il FS di root "/"
essendo stati configurati, a fronte di una prima progettazione, sotto tale path.
Per risolve allora l'enigma il primo passo da eseguire é selezionare la virtual machine da modificare cliccando su Edit virtual machine settings, o semplicemente Setting con il tasto destro del mouse, e cliccare successivamente su Add per aggiungere il nuovo hardware.
Poichè bisogna aggiungere un nuovo disco, selezionare Hard Disk come Hardware Type e specificare i parametri richiesti nelle varie schermate successive a secondo delle proprie esigenze.
Una volta terminata la procedura su VMware il nuovo disco sarà visibile nella lista dell’hardware nella schermata Virtual Machine Settings e verificato cio si passa con le attività sistemistiche sulla macchina linux.
Come primo step è necessario accedere alla configurazione del disco per definire la sua configurazione tramite il comando fdisk e siccome Il disco aggiunto viene definito in Linux come sdb digitare da root fdisk /dev/sdb.
Con i comandi presenti nell’ambiente fdisk,visibili digitando m come imput, creare la nuova partizione digitando n specificando, tramite p, il tipo di partizione come primaria.
Assegnare tutto, o per le vostre esigenze solo una parte, lo spazio disponibile confermando, in caso di totale assegnazione, i valori di default proposti nella configurazione dei cylinder.
Fino a questo punto sono stati definiti i parametri ma per renderlo definitivo sul disco è necessario, non prima di aver preso le giuste precauzioni, effettuare l’operazione di scrittura tramite il comando di scrittura w.
Creata la partizione è obbligatorio un shutdown -r now e una volta ripartita la macchina passiamo alla formattazione della partizione o con il formato ext3 tramite il comando mkfs 'mkfs –t ext3 /dev/sdb1' o mke2fs con 'mke2fs /dev/sdb1' per ext2. (Nel nostro esempio andremo ad utilizzare la formattazione, di default, ext2.)
E' buona norma verificare la "consistenza" del nuovo file system con fsck per verificare se il FS è corrotto o danneggiato.
Affinche si possa utilizzare fsck il requisito minimo è che il file system sia smontato o montato in sola lettura.
fsck rileva automaticamente il tipo di file system però, come con mkfs, si possono utilizzare fsck.ext2, fsck.ext3. e avendo scelto, nel nostro caso, un ext2 possiamo utilizzare le seguenti sintassi ossia e2fsck o fsck /dev/sdb1.
Verificato la consistenza della nuova partizione si puo utilizzare debugfs o dumpe2fs per fornire informazioni di basso livello su un ext2 ext3 e nel nostro caso la sintassi sarà dumpe2fs /dev/sdb1.
Successivamente creare la directory da associare al FS e dopo di cio fare il mount del disco.
Visto che sarà un Disco dedicato a Mysql potremmo creare la directory, sotto /, con nomenclatura "database" ed eseguire di conseguenza un mount del disco utilizzando la seguente sintassi mount /dev/sdb1 /database.
Dopo avere eseguito tale comando fare un df -h e dall'output che si otterà si puo vedere che la directory /database è allocata nella nuova partizione appena creata.
Una conferma di quanto dichiarato è possibile avere digitanto solamente il comando mount in quanto si avrà l'elenco di tutti i file systems montati attualmente.
Adesso se effettuiamo un reboot della macchina, la partizione non viene montata automaticamente poichè non è stata ancora definita nel file di configurazione /etc/fstab e con vi /etc/fstab si dovrà inserire, una volta entrati in vi, la seguente sintassi:
/dev/sdb1 /daticondivisi ext2 defaults 0 2
Un ulteriore passo da fare , per sicurezza, sarà quello di digitare il comando monut -a per far si che il sistema monti tutti i filesystem elencati in fstab.
Con tale attività in caso di riavvio il nuovo disco verrà comunque montato dal sistema.
Come preannunciato all'inizio di questo blog abbiamo ipotizzato che tale attività si è resa necessaria in quanto, a causa di un errore di progettazione, il FS / si sta esaurendo rapidamente dovuto proprio alla crescita espotenziale dei DB che girano su MySQl rendendo così la macchina instabile nel giro di pochi mesi.
Quindi le nostre successive attività sistemistiche prevederanno di mettere, in una prima fase, in off in servizio mysql e una volta fermoto creare sotto /database la directory mysql dando i giusti permessi ossia chmod 700 mysql.
Dopo di chè copiare tutto il contenuto della directory originale in quella nuova eseguendo la seguente sintassi cp -R /var/lib/mysql/* /database/mysql/ e poi assicurarsi l'avvenuta copia con un ls -rlt /database/mysql/
Confermato il contenuto andare sotto il nuovo FS digitando cd /database e cambiare i permessi con il comando chown -R mysql:mysql mysql/
Fatto ciò andiamo ad editare, digitando cd /etc/mysql, il file di configurazione di mysql non prima ovviamente averne fatto una copia in caso di RollBack
(Personalmente preferisco fare prima una move mv my.cnf my.cnf_original e poi una copia cp my.cnf_original my.cnf questo per mantenere il time stamp del file buono)
Fare un vi my.cnf e modificare il valore della variabile datadir mettendo il nuovo path ossia datadir = /database/mysql
Gli ultimi passi che prevedono questa attività sistemistica è di rinominare la directory originaria mysql digitando il comando mv /var/lib/mysql /var/lib/mysql_original e creare un link sinbolico verso la nuova directory mysql con il comando ln -s /database/mysql /var/lib/mysql cambiando anche l'owner con il comando chown -h mysql:mysql /var/lib/mysql
Adesso non resta altro che startare nuovamente il servizio di mysql con service mysql start e verificare la fruibilità del servizio.
Disclaimer: Non assicuriamo che con l’uso di tale documento si assicurerà un esito positivo nell'ambiente svolto di fatto il lettore deve applicare il proprio giudizio professionale per le specifiche circostanze presentate dai particolari sistemi o ambienti informatici. Inoltre evidenziamo che il materiale e l’informazione contenuto nel presente è fornito a titolo semplicemente informativo e sebbene si è prestato la massima attenzione all'aggiornamento ed all'esattezza delle informazioni diffuse nell'articolo, non può essere tuttavia fornita alcuna garanzia. Gli utenti, di conseguenza, sono tenuti a prendere tutte le precauzioni necessarie prima di utilizzare tali informazioni svolgendo tale procedura prima in un ambiente di collaudo e poi, avendo avuto un esito positivo, eseguirlo, solo a fronte di una autorizzazione dei loro responsabili, in esercizio/produzione.
Eros Verdini