Archivi tag: linux

Resettare la password di root su CentOS

 

Di seguito la procedura per cambiare / reimpostare la password su sistema operativo CentOS
  1. Quando si presenta la scelta dei due kernel (2.6.xxxx)
  2. selezionare la prima voce
  3. premere il tasto e per modificarla
  4. andare alla seconda riga (inizia con la parola kernel)
  5. premere il tasto e per modificarla
  6. Aggiungere la S maiuscola alla fine della riga
  7. Premere INVIO
  8. premere la lettera b per avviare il sistema
  9. quando si arriva al prompt dei comandi digitare il comando passwd ed inserire la nuova password

se da errore e dice che il filesystem non è montato digitare il seguente comando

# mount -o remount,rw /

infine digitare i due comandi seguenti per scrivere le modifiche e riavviare la macchina.

# sync
# reboot

Creare una macchina virtuale con VirtualBox su un server linux “headless”

Quando si installa un server linux e lo si usa soltanto per pochi e semplici servizi di rete può essere conveniente non installare l’interfaccia grafica. Se poi viene utilizzato soltanto un client SSH per amministrarlo, allora potrebbe risultare comodo creare e gestire le macchine virtuali senza l’intervento della GUI.
Una volta installato VirtualBox, tramite il comando VBoxManage è possibile gestire le fasi di creazione, modifica e gestione delle macchine virtuali.
Iniziamo a creare una macchina:
VBoxManage createvm --name "SampleServer" --ostype Ubuntu_64 --register
il comando crea una macchina virtuale assegnando l’identificativo SampleServer, indica che verrà installato un sistema operativo Ubuntu a 64 bit e la registra nel catalogo (operazione che è possibile fare in seguito con il comando VBoxManage registervm)
Per conoscere tutti i tipi di sistema operativo che si possono installare è disponibile il comando:
VBoxManage list ostypes
In seguito possiamo indicare i parametri hardware:
VBoxManage modifyvm "SampleServer" --memory 1024 --acpi on --boot1 dvd --nic1 bridged --bridgeadapter1 eth0
dove ovviamente memory indica la quantità di RAM da assegnare alla macchina, acpi permette di attivare le funzionalità di accensione e spegnimento, il parametro boot1 indica il primo dispositivo di avvio (che può essere dvd per far partire l’installazione ma poi va modificato in disk). Per quanto riguarda la rete, è possibile configurare una o più schede di rete in modalità nat, bridged o hostonly. Nel caso di una interfaccia bridged è necessario indicare anche su quale interfaccia fisica va associata.
Il terzo passo è quello di creare un hard disk:
VBoxManage createhd --filename "SampleServerDisk.vdi" --size 10000
Dove ovviamente la dimensione è indicata in MegaBytes.
In seguito è necessario creare un controller IDE ed associare al controller le periferiche:
VBoxManage storagectl "SampleServer" --name "IDE Controller" --add ide --controller PIIX4
le due direttive che seguono collegano al controller “IDE Controller” l’hard disk ed una immagine ISO che useremo per l’installazione:
VBoxManage storageattach "SampleServer" --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium "SampleServerDisk.vdi"
VBoxManage storageattach "SampleServer" --storagectl "IDE Controller" --port 0 --device 1 --type dvddrive --medium /percorso/disco.iso
A questo punto il sistema è pronto. La macchina può essere avviata tramite il comando VBoxManage startvm “SampleServer” oppure è possibile avviarla con il comando VBoxHeadless che permette di connettersi con un client RDP (Desktop remoto) e controllare a video la macchina.
VBoxHeadless --startvm "SampleServer"
A questo punto potete collegarvi all’IP del server fisico alla porta 3389 per eseguire l’installazione della macchina virtuale.
Enjoy it!

Installare VirtualBox su CentOS 6

La politica di VMWare ha purtroppo escluso dall’ambiente server delle soluzioni valide per la virtualizzazione. L’affidabilissimo e stabilissimo VMWare Server non è più supportato dai recenti sistemi operativi, per cui ho deciso di passare alla soluzione di Oracle che, nonostante sia più macchinosa per l’installazione e la configurazione (è pur sempre un ambiente nuovo) rappresenta comunque una soluzione concreta e affidabile.
La procedura di installazione su CentOS 6 è la seguente:
innanzitutto è necessario installare dei requisiti
yum install -y libXmu kernel-headers gcc dkms kernel-devel
dopodichè è possibile scaricare ed installare con rpm l’installazione di VirtualBox 4 oppure è possibile aggiungere il repository e lasciare che sia il sistema yum a fare il lavoro sporco 🙂
Per aggiungere il repository posizioniamoci nella cartella corretta:
cd /etc/yum.repos.d/
e scarichiamo i riferimenti:
wget http://download.virtualbox.org/virtualbox/rpm/rhel/virtualbox.repo
infine procediamo all’aggiornamento dei pacchetti disponibili ed all’installazione:
yum update
yum install VirtualBox-4.2

Il pacchetto VirtualBox-4.2 scarica anche l’extension pack, ma nel mio caso non era attivo (il comando VBoxHeadless non avviava correttamente l’output RDP).
Per installare l’extension pack eseguire il seguente compando:
VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.1.6-74713.vbox-extpack
Qualora mancasse qualche requisito, la compilazione del driver di rete non andrà a buon fine. Una volta visto l’errore ed installato l’occorrente basta eseguire il comando:
/etc/init.d/vboxdrv setup

Deframmentare / recuperare un filesystem XFS (per la serie: anche linux ha i suoi problemi)

A volte può capitare che il server vada in crash senza apparente motivo. Dopo mesi, richieste di assistenza a chi pensavo fosse più competente di me in materia di server linux, e tanta disperazione ho capito a cosa erano dovuti i frequenti blocchi del server: al filesystem XFS!
XFS è un filesystem adatto a gestire grosse moli di dati, gestire file grandi diverse centinaia di megabytes velocemente. Sfortunatamente XFS soffre pesantemente della frammentazione ed il disco tende a riempirsi velocemente e senza realmente contenere dati!
D’altra parte ci sono due utilità che ci permettono di deframmentare il file system XFS

  1. xfs_db – letteralmente XFS Debug Information – che permette di esaminare il filesystem ed ottenere informazioni utili
  2. xfs_fsr – File System Organizer – che migliora l’organizzazione dei filesystem montati. L’algoritmo opera con i singoli file, li compatta e migliora l’organizzazione all’interno del disco (mettendo i pezzi dei file in blocchi continui)
    per esempio consideriamo il comandoroot@linuxMachine:~$ sudo xfs_db -c frag -r /dev/sda1
    actual 189356, ideal 148090, fragmentation factor 21.79%

    dopo la procedura risulta

    root@linuxMachine:~$ sudo xfs_db -c frag -r /dev/sda1
    actual 148180, ideal 148090, fragmentation factor 0.03%

    Lo spazio disponibile a questo punto sarà molto di più ed l’accesso al disco sarà decisamente più veloce!

Svuotare una cartella (es. cartella /tmp/) piena di files

A qualcuno che vuol fare pulizia nel proprio hard disk (o l’hard disk del proprio server) può capitare di voler svuotare una cartella (ad es. l’inutile cartella /tmp/), ma dopo aver immesso il comando:

# rm -rf *

si ottiene come risultato:
/bin/rm: Argument list too long.

La soluzione per aggirare il problema è quella di combinare il comando find al comando xargs

# find . -name ‘*’ | xargs rm

Il comando find permette di individuare tutti i file che hanno un determinato nome (basato su una espressione regolare), mentre xargs è un comando che permette di gestire il passaggio di parametri da riga di comando ad altri programmi come rm, gestendo le limitazioni del sistema operativo come numero di parametri e lunghezza dei singoli parametri.

Convertire tutte le tabelle di un DB MySQL da MyISAM a InnoDB con uno script linux

E’ possibile convertire in un colpo solo tutte le tabelle di un database MySQL da MyISAM a InnoDB tramite due comandi digitati dalla shell di linux:

 mysql -p -e "show tables in nome_database;" | tail --lines=+2 | xargs -i echo "ALTER TABLE {} ENGINE=INNODB;" > converti_engine.sql

Il primo comando si connette al database, recupera tutti i nomi delle tabelle (e delle viste!) e le combina, tramite il comando xargs, con il comando SQL che permette di cambiare l’engine a InnoDB. Ovviamente nome_database è da sostituire con il nome dello schema in questione. Il risultato è uno script SQL che verrà lanciato in seguito. L’unico accorgimento da adottare è quello di rimuovere le eventuali righe che contengono l’alter table di viste (che darebbero errore durante l’interpretazione e bloccherebbero lo script).

Controllato lo script, è sufficiente eseguirlo con il comando di seguito:

mysql -u root -p nome_database < converti_engine.sql

che chiederà la password ed eseguirà lo script appena preparato.

 

Linux – Spazio su disco esaurito, ma lo spazio c’è! Soluzione: Inodes esauriti!

Una strana situazione che, talvolta, si può presentare su server linux che stanno accesi da anni è quella di ottenere il messaggio: No space left on device. A questo punto l’operazione più logica da fare è digitare

df -h

ma quando si scopre che c’è ancora spazio su disco disponibile, c’è subito da accertarsi con il comando

df -i

che gli Inode non siano terminati.

Qualora il comando restituisca il 100% utilizzato, allora è il momento di individuare in quale directory sono contenuti (una miriade) i file che impegnano tutta la tabella del filesystem.

a questo punto è sufficiente digitare il comando

for i in /*; do echo $i; find $i |wc -l; done

che elencherà tutte le cartelle contenute nella root / con il numero di file contenuti. Individuata un cartella contenente molti file (per esempio /var/), basta andare nel dettaglio col comando

for i in /var/*; do echo $i; find $i |wc -l; done

Una volta individuata la cartella, verosimilmente contenente dei file temporanei, di spool, o una cartella utente che si è riempita nel tempo, basta svuotare la cartella con il comando:

rm -rf /percorso/con/una/miriade/di/file

digitando df -i la situazione dovrebbe tornare sotto controllo. Al più è consigliabile fare un riavvio della macchina per assicurarsi che tutto riparta correttamente.

Configurare Samba per accedere anche a cartelle con link simbolici

Qualora abbiate configurato un server con Samba, può sorgere l’esigenza di inserire il collegamento di una cartella all’interno della condivisione. Sebbene l’operazione renda trasparente la navigazione tra le directory sulla macchina locale, tramite la rete non è possibile accedere al link simbolico. E’ però possibile configurare Samba per permettere di accedere ai link simbolici.
All’interno delle singole condivisioni è necessario specificare, all’interno del file di configurazione di Samba (solitamente /etc/samba/smb.conf):

  • follow symlinks = yes
  • wide links = yes

mentre nelle impostazioni globali (quindi alla prima sezione del file) basta indicare:

  • unix extensions = no

Riavviate il servizio e tutto funzionerà!