giovedì 11 dicembre 2008

Informazioni su StorageTek 6540 e Nagios Plugin

Ho trovato questa pagina, che dovrebbe essere un documento operativo sul 6540 di StorageTek; è in norvegese, ma potete incollare il seguente link qui e avere una grossolana traduzione in italico (o altro se si preferisce):
http://hpc.uio.no/index.php/Norstore_operational_document
Ci sono esempi dell'uso della riga di comando e anche una chicca:
il link a un plugin per Nagios per la CAM e la serie 6xxx degli array Sun Storagetek.
Praticamente, questo plugin è uno script perl che va a guardare nella directory dove la CAM mette gli allarmi (solitamente ogni allarme è custodito li sottoforma di file: un allarme - un file); non vedo indicato la directory degli allarmi, ma a memoria sta sotto /var/opt/SUNWsefms in una directory chiamata alarms o notifications (magari find può essere più preciso se gli chiedete).

Nello stesso sito anche altri plugin interessanti per il check di HBA scsi adaptec, Oracle health e MySQL performance, stato di servers HP Proliant ecc ecc

Insomma, una letta questa pagina, la merita.

mercoledì 10 dicembre 2008

Windows: symlinks, hardlinks e shortcuts

Stasera parlavo con la mia compagna dei links su Windows, e mi chiedeva se un Collegamento (shortcut) è un link. A questo proposito mi è venuto in mente un articolo che lessi tempo fa su questo argomento; e me lo sono andato a cercare.

In questo documento viene fatta luce sull'argomento, spiegato il funzionamento dei links su Windows, anche in relazione a Fat e NTFS, presentati alcuni tools per lavorarci, sia in bundle sia di terze parti, e viene anche data risposta alla domanda di sopra:

"No, gli shortcuts non sono links simbolici, sebbene spesso si faccia riferimento ad essi come se lo fossero. D'altra parte, specifica l'autore, gli shortcuts hanno tutti gli attributi per comportarsi come symlinks ed emularne le caratteristiche"

Naturalmente sono benvenuti commenti da più esperti amministratori Windows; possiamo trovare l'articolo "Windows Symbolic and Hard Links" qui

domenica 7 dicembre 2008

Nautilus: piccole curiosità

Navigando il filesystem sul mio portatile conil Nautilus di Gnome, ho dedicato un pò di tempo per imparare qualcosa sui settaggi possibili e migliorare l'usabilità tramite di essi. Questo manager utilizza Gvfs, il Gnome Virtual Filesystem, di recentissima concezione e composto di alcuni demoni e librerie. La visualizzazione degli oggetti può essere a elenco o a icone. La prima restituisce un elenco, uno per riga, di files e directories e i loro attributi; la visualizzazione a icone permette di vedere il contenuto nella classica modalità dove più icone occupano lo spazio su file e colonne identificate dal loro nome a fianco o in basso.

E' possibile decidere quali informazioni sugli oggetti visualizzare dal pannello Preferenze. Tra queste vi è la dimensione. Abilitato i flag dimesione e possibile in modalità elenco, ordinare le dimensione i files. Nel caso di directories, però, non viene visualizzata la dimensione; per loro in questo campo viene conteggiato il numero di oggetti che contiene, siano essi files o dirs.

Ordinando per dimensione i contenuti di una directory mista filess e dirs, verranno visualizzati prima i files e poi le directories, rispettivamente sistemati dal più grande al più piccolo in numero di Megabytes e in numero di oggetti.

Nautilus può essere lanciato con diversi flags, tra i quali, mi è capitato di usare:

--no-desktop per lanciare il file-manager senza il supporto alla gestione della scrivania. Molto utile per utilizzare Nautilus su un altro WM/DE, ad esempio;
--browser server ad aprire una finestra in modalità esplorazione

giovedì 27 novembre 2008

Quanta RAM?

Come vedo quanta RAM c'è dentro quel server?
In un modo "scriptabile"?

Solaris:
prtconf -vp|grep Mem

Hp-uX:
dmesg|grep -i physical
cat /var/adm/syslog/syslog|grep -i physical
/usr/sam/lbin/getmem
print_manifest|grep -i physical

Linux:
cat /proc/meminfo |grep MemTotal:
top -n 1|grep Mem|awk '{print $1,$3}'

giovedì 20 novembre 2008

Apache su Veritas Cluster Server

Mettere Apache in Failover su ZFS sotto Veritas Cluster Server. Ecco come fare.

Il setup ideale riguarda un Service Group presente su due nodi e composto di tre risorse:
  • IP
  • Apache
  • Zpool
Il pool ZFS "zdata" sarà composto di due dischi in mirror (c1t13d0s2 e c1t14d0s2) e un filesystem zdata/www monterà in /data/www.
# zpool create -f zdata c1t13d0s3
# zpool attach -f zdata c1t13d0s2 c1t14d0s2

# zfs create /zdata/www
# zfs set mountpoint=/data/www zdata/www
# zfs set quota=500M zdata/www
Montare il dataset e compilare apache scaricato preventivamente da httpd.apache.org, qualcosa tipo:
# ./configure -prefix=/data/www
# make
# make install
Una ritoccata al file httpd.conf e siamo a posto.
Ora abbiamo ciò che va messo in HA e affidato a VCS. Per questo creeremo il Service Group "apache" e le risorse "apache_ip", "apache_www" e "apache_zpool".
# haconf -makerw
Il container "apache":
# hagrp -add apache
# hagrp -modify apache SystemList sunbox1 0 sunbox2 1
# hagrp -modify apache AutoStartList sunbox1 sunbox2
# hagrp -modify apache Parallel 0
La risorsa "apache_ip" di tipo IP:
# hares -add apache_ip IP apache
# hares -modify apache_ip Critical 1
# hares -modify apache_ip ArpDelay 1
# hares -modify apache_ip IfconfigTwice 0
# hares -modify apache_ip Device hme0
# hares -modify apache_ip Address 192.168.3.20
# hares -modify apache_ip NetMask 255.255.255.0
# hares -modify apache_ip Enabled 1
La risorsa "apache_www", gli attributi qui settati sono d'esempio, sta al sysadmin di turno stabilire come sia meglio definirli a seconda del caso:
# hares -add apache_www Apache apache
# hares -modify apache_www Critical 1
# hares -modify apache_www ResLogLevel INFO
# hares -modify apache_www Port 80
# hares -modify apache_www SecondLevelMonitor 0
# hares -modify apache_www SecondLevelTimeout 30
# hares -modify apache_www EnableSSL 0
# hares -modify apache_www httpdDir /data/www/bin
# hares -modify apache_www EnvFile /data/www/bin/envvars
# hares -modify apache_www PidFile /data/www/logs/httpd.pid
# hares -modify apache_www HostName vcs_www
# hares -modify apache_www User webservd
# hares -modify apache_www ConfigFile /data/www/conf/httpd.conf
# hares -modify apache_www DirectiveAfter -delete -keys
# hares -modify apache_www DirectiveBefore -delete -keys
# hares -modify apache_www Enabled 1
E infine la risorsa "apache_zpool" per il failover del pool zfs:
# hares -add apache_zpool Zpool apache
# hares -modify apache_zpool Critical 1
# hares -modify apache_zpool ChkZFSMounts 1
# hares -modify apache_zpool PoolName zdata
# hares -modify apache_zpool Enabled 1
Per quanto riguarda le dipendenze tra le risorse l'ordine di partenza dovrebbe essere zpool/IP e poi la risorsa apache. VCS sembra gestire lo startup di default nell'ordine in cui le risorse sono inserite nel Service Group. Questo è fonte di guai, perciò esiste la gestione delle dipendenze, il linking ... e va anche usato. Per questo tornerà utile il comando hares -link:

La sintassi chiede di specificare risorsa genitore e risorsa figlio
# hares -link apache_www apache_zpool
# hares -link apache_www apache_ip
In VCS i genitori son molto gentili (o comodi?), e aspettano che i figli si alzino prima di muoversi a loro volta. All'uscita escono per primi, e i figli vanno offline subito dopo. Questo è da tener conto nel setup delle dipendenze.

Il resto fa parte della gestione abituale.

Cerca il comando in OBP

C'è una cosa che molti non sanno, e che non ricordo nemmeno più dove l'ho appresa qualche anno fa.

OBP, diamo per scontato che sappiamo di cosa stiamo parlando, ha un "modo", chiamiamolo così, per aiutare nella ricerca di un comando Forth, istruzione o di qualsiasi cosa si voglia eseguire.

Mettiamo che vogliamo dire a OBP di fare un probe di tutti i devices scsi che sono connessi al sistema, ma non ricordiamo precisamente il comando: c'è forse probe nel nome che non ricordiamo, e quasi sicuramente anche scsi, ma chissà in che ordine:

# sifting probe

ritorna come risultato tutti i comandi che contengono i caratteri probe nell'ordine immesso. Tra i vari risultati troviamo ciò che ci serve, ovvero probe-scsi-all. Anche un sifting scsi ci avrebbe aiutato certamente.
Insomma, io trovo sifting, un pò il tipo di aiuto nel trovare il comando giusto scavando nella memoria che da un ambiente bash grazie all'autocompletamento col e a una variabile $PATH ben settata.

sabato 8 novembre 2008

Veritas Cluster: aggiungere un nodo e un pò di teoria

Installare Veritas cluster su un secondo o terzo nodo è molto semplice.
E' sufficiente fare un'installazione manuale del software o usare i tools.
E' possibile lanciare l'installer principale di Storage Foundation HA; a me piace usare rsh durante l'installazione (anche di Sun Cluster e il CRS di Oracle), e poi disabilitarlo successivamente.
Cosa da fare presto o tardi è aggiungere /opt/VRTS/bin al $PATH
# ./installer -rsh
Scegliere 1 e poi l'installazione senza configurazione.
Alternativa è installare i pacchetti a mano (parlo di Solaris in questo caso):
# pkgadd -d . VRTSjacs
# pkgadd -d . VRTSjacsd
# pkgadd -d . VRTSjacsj
# pkgadd -d . VRTSjacsm
# pkgadd -d . VRTSjacsu
In questo secondo caso bisogna aggiungere la licenza d'uso che sia essa demo o permanente:
vxlicinst -k XXXX-XXXX-XXXX-XXXX-XXXX-XXX
da verificare con vxlicrep|more.

Una volta terminata l'operazione è possibile passare alla configurazione del nuovo nodo e alla modifica di alcuni files sul/sui nodo/i preesistente/i.

Prima cosa da fare è disporre la comunicazione tra i nodi. di questo compito si occupano LLT e GAB.
Ma cosa sono:
LLT è l'infrastruttura di interconnessione tra i nodi, comprendente le interfacce adibite a questo compito, che è bene siano almeno due per nodo. La gestione delle NIC e dei media di interconnessione avviene in modo trasparente, il traffico viene bilanciato sugli interconnects disponibili; nel caso un'interconnessione venga a mancare vengono usate le altre.
GAB si occupa e si tratta proprio della comunicazione tra i nodi, ovvero dell'heartbeat necessario ai nodi per "sentire" la presenza degli altri. Inoltre tutti gli scambi di informazioni riguardanti cambi di configurazione o failures in qualunque punto del cluster avvengono grazie a GAB. Lui comunica con HAD, il motore del cluster presente sui nodi e intermediario tra i gestori di risorse e LLT/GAB.

I files da editare sono:
/etc/llthosts /etc/llttab /etc/gabtab

Nel nostro cluster, basato su Solaris10 e composto di due nodi aventi una interfaccia pubblica e due di interconnessione tra i nodi dovremo ritrovarci con questi contenuti:

Su entrambi i nodi, qui c'è la lista dei nodi con davanti un numero progressivo
# cat /etc/llthosts
0 sunbox1
1 sunbox2
Sul nodo già a
ttivo, avete questo (a meno che non avete attivato LLT e GAB quando avete installato). Le direttive LLT che vedete di seguito dicono
set-node vuole il nome del nodo in questione
set-cluster vuole l'identificativo numerico del cluster
root@sunbox1 / # cat /etc/llttab
set-node sunbox1
set-cluster 1
link hme1 /dev/hme:1 - ether - -
link hme2 /dev/hme:2 - ether -
Sul secondo e nuovo nodo creerete un file coerente con quanto visto sopra, premurandovi di mettere il nome del nodo su cui siete in set-node. Le ultime due righe identificano le interconnessioni 1 e 2 assegnandogli le NIC
root@sunbox2 / # cat /etc/llttab
set-node sunbox2
set-cluster 1
link hme1 /dev/hme:1 - ether - -
link hme2 /dev/hme:2 - ether - -
Questo file contiene l'eseguibile gabconfig. Il parametro -n specifica il nuovo numero di nodi che formano il cluster
# cat /etc/gabtab
/sbin/gabconfig -c -n2

Sul nuovo nodo è necessario digitare il comando:
#/sbin/gabconfig -c
per rendere effettiva la configurazione. Ora verificatela con:
root@sunbox1 / # gabconfig -a
GAB Port Memberships
===============================================================
Port a gen 2f0a01 membership 01
Port a gen 2f0a01 jeopardy ;1
Port h gen 2f0a04 membership 01
Port h gen 2f0a04 jeopardy ;1
Un output molto simile significa che ci siete!!

Ora che l'interconnessione è presente, bisogna aggiungere al cluster il nodo passandogli la configurazione, dal nodo preesistente:
#haconf -makerw
#hasys -add sunbox2
#hastop -sys sunbox2
#rcp /etc/VRTSvcs/conf/config/main.cf sunbox2:/etc/VRTSvcs/conf/
config/
Sul nuovo nodo digitate:
#hastart
per avviarlo

E poi rendete di nuovo read-only la configurazione:
# haconf -dump -makero
Questo modesto how-to è pubblicato su AreaNetworking e visibile qui

lunedì 27 ottobre 2008

Maledetto initiator ID aka "Scsi initiator ID is now 6"!!

Rifacendo un cluster con un vecchio JBOD scsi come shared storage, sono incorso in un conflitto di target ID nella catena scsi tra lo storage sharato e i due nodi.

In questo tipo di configurazione, uno dei due nodi va configurato ad hoc, agendo su alcuni parametri in OBP, in modo da evitare appunto conflitti.

Questo passaggio l'ho fatto già diverse volte, non tantissime, visto che per lo più capita di lavorare su devices fiber-channel, ma abbastanza da essere routine.

Si tratta di agire sulla variabile scsi-initiator-id di un nodo, portando il valore dal default (7) a 6, e poi inserire uno script in nvramrc, abilitandone l'uso mettendo a true use-nvramrc?. Questo in spiccioli aggira il conflitto tra gli HBA dei due nodi dandogli ID diversi, e poi al caricamento di Solaris, risetta in modo trasparente l'ID. Fatto.

Booto. Parte. Uno sfacelo. Decine di errori con molto poco senso, che tutto dicono, tranne quello che è ovvio (vabbè, l'ho esagerata, il loro senso lo hanno).

C'è da dire, che avevo già installato Solaris10 via flar sui nodi, e anche Sun Cluster che era in installmode, in attesa che designassi una DID come quorum.

Dopo un pò di riavvii stressanti e di set-defaults di OBP e rifacimento dei settaggi di cui sopra, mi illumino. Booto un solo nodo, lo booto -xvsr e osservo:
manca la dichiarazione "Scsi initiator ID is now 6". Viene bypassato, il trucco non viene implementato.

Disabilito il parsing di nvramrc settando a false "use-nvramrc?".
Ribooto ... nulla.
STOP-A brutale! Spengo lo storage. Do un reset-all. Ribooto.
Lo vedo: "Scsi initiator ID is now 6" !!
Poweroff ... accendo il JBOD ... accendo il nodo ... boot -v
Pare andare. Accendo l'altro nodo ... TUTTO OK!!!
Riabilito use-nvramrc? . Riavvio i nodi, tutto va.

Morale della favola:
le modifiche vanno implementate a storage spento (magari prima di installare Solaris, ma non è mandatorio come ho letto in alcuni documenti sull'argomento).
Dopo le modifiche è bene dare un reset-all. Provare che la configurazione venga usata. Spegnere e riavviare a storage acceso. Avviare l'altro nodo per avere conferma.

giovedì 16 ottobre 2008

SCSI Jbod in Sun Cluster

Si può definire questa guida un "cult" di Sun Cluster:

http://docs.sun.com/app/docs/doc/819-2995?l=en&q=sun+cluster+scsi_initiator_id&a=load

Ogni volta che vado a cercarla temo che possa essere stata rimossa. Descrive tra le altre cose come cablare un jbod scsi fisicamente e come settare OBP per far funzionare correttamente la catena scsi tra due nodi e uno o due vecchi storage scsi.

martedì 14 ottobre 2008

Hp-ux Fiber Channel Multipathing e StorageTek 6540

Ormai da tempo ho la possibilità di lavorare sul 6540, uno degli storage Midrange commercializzati da Sun. Il 6540 è il gemello del DS4800 di IBM, entrambi disegnati da Engenio, proprietà di LSI.
Ha due controllers con 4 porte 4 Gbit ciascuno. Con sistemi Sun SPARC e x64 il multipathing per lo spread e il failover del traffico viene gestito dallo Storagetek Traffic Manager, anche noto come MPXIO, disponibile in bundle su Solaris10 e scaricabile come pacchetto opzionale per le versioni precedenti.
Questo software è disponibile inoltre per Windows e Hp-Ux, tra gli altri, comunque a pagamento.
Hp-uX 11.31 ha un sistema di gestione del carico del traffico SAN nativo; non essendo disponibile il gestore Sun per questi sistemi abbiamo deciso di "give it a try".

Creare una LUN sul 6540 da mappare a un host Rx Integrity dotato di due HBA FC 4Gbit HP AB378-60101, al secolo QLogic ISP24xx, è procedura che segue parametri standard, se si eccettua che va selezionato "Hp-uX" come opzione Driver di Gestione SAN/Sistema Operativo. Naturalmente, sull'host non verrà presentato un singolo device logico virtuale come con mpxio, ma anzi, ben quattro path logici.

Quindi, se per una LUN lato host, su Solaris abbiamo qualcosa tipo:
c2 -> controller fisico 1
c3 -> controller fisico 2
c4 -> controller virtuale (quello a cui si fa riferimento nell'usare il volume)

Su Hp-uX con multipathing nativo avremo:
c2 -> controller fisico 1 controller A
c4 -> controller fisico 1 controller B
c6 -> controller fisico 2 controller A
c8 -> controller fisico 2 controller B

Comodo, vero?

I parametri di default lato host, in questo caso, non vanno bene. Le luns risultano pressochè inutilizzabili. L'algoritmo di bilanciamento di default è round-robin, ma l'implementazione pare incompatibile con l'array in questione, facendo risultare la user experience orribile; a quanto pare il problema sarebbe un continuo ping pong nell'inizializzazione della comunicazione tra target e initiator, che rende instabile e funzionante a singhiozzo l'I/O.

Tramite scsi_mgr, è possibile impostare parecchi parametri, tra cui anche l'algoritmo di bilanciamento. Una soluzione provata è stata quella di impostare la politica di bilanciamento dell'host come "usa il path più scarico". Questo ha fatto migliorare sensibilmente l'usabilità, ma risulta in una ennesima "incomprensione" tra host e storage, e quest'ultimo genera un warning ogni volta che l'host cambia il path in uso, essendo in disaccordo sul cambio di controller; viene effettivamente forzato e lo vede come un possibile problema.

Il 6540 lavora con la logica del preferred controller. Alla creazione del volume, esso gli assegna un preferred, che sarà la controller che cercherà di usare come primaria. Usando MPXIO, il sistema è in grado di comunicare e "collaborare" con lo storage per permettergli di seguire la sua logica di funzionamento. Il Native MP di Hp-uX 11i v3 non è in grado di seguire e collaborare a questa gestione dinamica, o per lo meno, non si accorda con lo storage per il cambio di path. Questo significa guai.
La soluzione in questo caso è stata forzare questo comportamento con una gestione manuale, individuando lato host il path corrispondente al preferred scelto dal 6540 e settandolo su Hp-uX come tale, stessa cosa per il secondario. Questo pare aver dato una configurazione funzionante, le prestazioni sembrano ok e nessun warning viene più generato.
Dai test eseguiti, ovvero, un reboot e la disconnessione fisica della fibra, sembra essere tutto ok.
Ovviamente, a ogni nuova lun creata si ripropone il problema di mappare correttamente sull'host i path primario e secondario come li sceglie lo storage.

Sarebbe interessante sapere come si sono "aggiustati" altri amministratori e avere qualche informazione in più sulla cosa. Sarebbe anche interessante vedere l'implementazione di mpxio su hp-ux.

UPDATE:In realtà sulla 11.31 esiste , il nuovo standard per la nomenclatura dei mass storage devices, che coesistendo col vecchio schema definito ora "legacy addressing", lo va a rimpiazzare e sarà l'unico metodo in una prossima release.

Sun T5440, piccoli servers crescono

Aumenta il numero di cpu nei sistemi della serie T di Sun. Si tratta di hardware equipaggiato con fino a 4 Cpu Niagara T2 con 8 cores per una frequenza di 1,4Ghz. Questi sistemi supportano fino a mezzo Tera di RAM; dalla T1000 equipaggiata con un Niagara T1 la potenza di questi sistemi con architettura sun4v sta crescendo esponenzialmente: era proprio quello che mancava e ciò che non mi ha permesso di considerare questo hardware appetibile per ambienti Enterprise fin'ora. L'aspetto è identico a quello degli x4500 equipaggiati con cpu AMD.


Mi chiedo se vedremo sistemi High-End con numero di cpu comparabili a quello delle attuali 20-25K, magari con il prossimo nato, Rock, che promette 16 core. Da una mail sulla mailing-list fm-discuss estraggo questi interessanti links, grazie a Scott Davenport:

For general information about the T5440:
http://www.sun.com/servers/coolthreads/t5440/
There's also a growing collection of T5440-realted blogs organized here:
http://blogs.sun.com/allanp/entry/sun_s_4_chip_cmt
http://blogs.sun.com/sdaven/entry/fma_for_t5440 has the FMA specifics.

domenica 12 ottobre 2008

Base10/16 e jumpstarting solaris da linux troubles

Jumpstart da rete, da ambiente misto, server Linux che installa un sistema Solaris 10 su SPARC. Sto rifacendo il clusterino di casa. Come sempre rinfresco i passi da eseguire scorrendo la guida che ho scritto qualche anno fa. Sta qui .

Tutto bene. Finchè non c'è da linkare inetboot con ln -s nominandolo coll'esadecimale del IP della macchina bersaglio.

Qui mi impanico come al solito ... non riesco mai a ricordare come si fà.
Ma alla fine ci arrivo.
Ecco:

Prendi IP, convertilo in forma binaria e da lì a esadecimale!! Ora so dove cercare quando dovrò rifarlo e mi sarò dimenticato; se non entra non entra disse Siffredi in qualche suo film (almeno presumo, mi pare una battuta abbastanza scontata).

Stavolta ho dovuto anche improvvisare passando a obp il kernel da caricare; pareva non essere in grado di trovarlo. Quindi /platform/sun4v/kernel/unix
Probabilmente un effetto collaterale di nfsv4? Indagherò.

Indagato:
apt-get install nfs-user-server

rimuove l'implementazione kernel-nfs e installa quella userspace. Ci avevo preso, era un problema legato a incompatibilità tra nfs4 Solaris e Linux a quanto pare. Basta riavviare il processo dall'inizio e questo va avanti trovandosi il kernel da caricare.

Altra cosa. Se si usa il Network Manager su Linux, è bene disattivarlo o configurarlo perchè l'interfaccia che serve i dati abbia indirizzamento statico per evitare scherzi tipo che tiri giù l'interfaccia.

Altro simpatico problema:
svc.configd: smf(5) database integrity check of:

/etc/svc/repository.db

failed. The database might be damaged or a media error might have
prevented it from being verified. Additional information useful to
your service provider is in:

/etc/svc/volatile/db_errors

The system will not be able to boot until you have restored a working
database. svc.startd(1M) will provide a sulogin(1M) prompt for recovery
purposes. The command:

/lib/svc/bin/restore_repository

Bla,Bla Bla ... il problema riguarda le opzioni di esportazione dei filesystems in /etc/exports.
La soluzione è esportare così:

/sol/Boot *(insecure,sync,ro,no_root_squash)
/vcdrom *(insecure,sync,ro,no_root_squash)

Ora dovrebbe andare.

Una descrizione di molti altri fastidiosi problemi incontrati in questo tipo d'installazione e relativa soluzione si trova qui

sabato 11 ottobre 2008

Listare i contenuti di un pacchetto

Hp-uX:
swlist | grep $nome_pacchetto
swlist -l file $nome_pacchetto

Solaris:
pkginfo|grep $nome_pacchetto
pkgchk -l $nome_pacchetto|grep Pathname

Debian:
dpkg -l|grep $nome_pacchetto
dpkg -L $nome_pacchetto

Gentoo:
qlist -I $nome_pacchetto
qfiles $nome_pacchetto

Red Hat:
rpm -qa|grep $nome_pacchetto
rpm -ql $nome_pacchetto

Blogger settings e migrazioni

Oggi, dopo molto tempo, qualcuno ha commentato un mio post. E' la seconda volta che succede ... evento raro.
Questo blog è pensato per me. Non ho mai inteso farne altro; ho comunque deciso di renderlo pubblico perchè possa
essere utile a chi cerca informazioni tecniche per risolvere un problema che io ho già visto e documentato qui.

C'è stato un problema, lo sfondo nero si mangiava il commento in quanto nel layout da cui son partito, il testo per i commenti
era il colore nero.

Sono quindi andato in Personalizza -> Layout -> Caratteri e colori, dove un editor WYSIWYG (che sta per What You See
Is What You Get) permette di cambiare parecchi elementi del layout. Sfortunatamente tra questi, il colore del testo dei commenti non c'era.

Quello che ho pensato è che probabilmente c'è un modo per inserire in questa pagina l'elemento, ma ho optato invece per un'altra strada.
Tra i sottomenù di Layout vi è Modifica HTML: qui è possibile modificare il layout direttamente mettendo mano al codice.

Ciò che cercavo è definito in:

.comment-body {
  font-size:100%;
  font-weight:normal;
  color: black;
}

Com'è ovvio basta cambiare color: da black a white.
Fatto!

Una cosa che mi manca, qui su Blogger, è qualsiasi forma di controllo sul DB. Soprattutto per farmi i miei backup ... questo è stato fatto tra le altre cose, sicuramente anche per rendere ostico migrare il blog. Ogni tanto penso di hostarlo su un mio sistema, ma, appunto, spostare i blogs è quasi impossibile, e l'unica soluzione che mi viene in mente è di fare un copia e incolla dal testo visibile direttamente dal browser.

Altre soluzioni?

venerdì 10 ottobre 2008

Hp-uX: installare multipli depot in un colpo solo

E' frustrante tornare agli anni 90 a volte ... è il feeling che sento quando mi sloggo da una sessione ssh su una 25K con Solaris 10u5 per loggarmi su un Integrity con Hp-uX 11.31 (11i v3). Sapore di terminale "vetusto".
Niente guerre di religione ... tanto che Solaris è better è un dato di fatto :)

Sto avendo a che fare con Hp-uX in questi giorni. Come tutte le cose poco conosciute può essere terribilmente ostico ... quindi un pò di pacchettini da metter su per rendere l'esperienza più piacevole è un must.

uX ha i depot: swinstall è il tool per gestire l'installazione. Dopo aver fatto la guerra son riuscito a installare i pacchetti necessari. Mi son trovato a dover ovviare al problema di non riuscire a installare i pacchetti in un colpo solo; uno alla volta è terribile, ci va un sacco di tempo.

Alla fine, con swcopy e uno scriptino che mi sono prodotto apposta ho automatizzato il processo. E' sufficiente copiare i depot gzippati scaricati dal repository dell'uni dello stato dello Utah e lanciare:

# depota_pota

All'inizio ho create /staff e /staff/depot /staff/archives /staff/old , non serve altro.
#!/bin/sh

PKG_DIR="staff";
OLD="old";
DEPOT="depot";

cd /${PKG_DIR};
if [ `ls /$PKG_DIR|grep *.depot.gz` ]; then
gunzip *
fi

if [ `ls /$PKG_DIR/$DEPOT|grep catalog` ]; then
mv /$PKG_DIR/$DEPOT/* /$PKG_DIR/$OLD/
fi

for i in *.depot
do
swcopy -s ${PWD}/$i \* @ /${PKG_DIR}/${DEPOT}
done
swinstall -s
/${PKG_DIR}/${DEPOT}

Dalla GUI si selezionano i pacchetti, si marcano con 'm' e dal menù Actions si seleziona Install ... avanti avanti avanti!!




Do you remember OBP? E le env settate secoli fa?

Quando tiri di nuovo fuori la vecchia Ultra10, sicuramente oltre a una versione vecchiotta di Solaris, le variabili d'ambiente di OBP saranno settate ad minchiam, o comunque diversamente da come ti servono.
In questo momento monitor e tastiera al boot sono useless, probabilmente input e output devices sono settate a ttya o ttyb; urge un reset.

E allora, spegni, con tastiera e monitor collegati riaccendi. Tieni premuto STOP+N

Come per magia il mitico banner appare... e tutto è fresco che sa quasi di fabbrica!

lunedì 6 ottobre 2008

LAOP: Php e Oracle su Linux

Smanettando con Oracle ho deciso di interfacciarmici con un linguaggio che già conosco e col quale ho realizzato qualche piccola applicazioncina, solitamente usando come backend mySQL.

L'installazione di Oracle su Debian 32bit, e successivo patching alla 10.2.0.4 è stato abbastanza painless. Ho scelto Oracle Database Enterprise Edition, anzichè Oracle XE, per il quale sono forniti binari pacchettizati deb; più che altro per uniformità con la versione che mi ritrovo in ambienti di produzione al lavoro. Tempo fa, lo avevo installato su un HP con Gentoo 64bit e fu dura; questa volta invece tutto liscio.
E' stato sufficiente esportare il display e lanciare la GUI d'installazione con un unico parametro:
#./runInstaller -ignoreSysPrereqs
Questo permette di poter installare senza che venga eseguito il check di sistema operativo e versione; infatti, se non è tra gli OSes supportati, l'OUI (Oracle Universal Installer) esce e quitta.
Per il patching da 10.2.0.1 a 10.2.0.4 è sufficiente fare la stessa cosa descritta qui sopra. Naturalmente ho omesso alcuni passi di preparazione dell'installazione tra cui la creazione dell'utente e l'impostazione dell'ambiente.

Per Apache e Php basta il solito apt-get install. Dopodichè consiglio di verificare che tutto funzioni mettendo il file index.php in /var/www con i contenuti che seguono:
phpinfo():
?>
Manca solo interfacciare PHP a Oracle. Per questo mi son rifatto a una procedura veloce e pulita, descritta sul sito morse.nl

In breve:
#apt-get install php5-dev php-pear
Il secondo fornisce il comando pecl da usare per installare l'estensione Oracle oci8. E' sufficiente passargli la $ORACLE_HOME quando verrà richiesto il PATH dove risiede l'Instantclient. Quest'ultimo sarebbe da installare precedentemente ai pacchetti qui sopra, nel caso la parte server di Oracle risiedesse su un'altro sistema.

Una piccola modifica ancora
#echo "extension=oci8.so" >> /etc/php5/apache2/php.ini
e siamo a posto. Restartando Apache e accedendo di nuovo alla index.php creata prima, è possibile vedere i riferimenti all'estensione oci8.

Questa è una delle possibili configurazioni per poter utilizzare un db Oracle come backend per PHP. Per altre possibilità e un mucchio di informazioni utili in 195 pagine, ci si può rifare al pdf:

The Underground PHP and Oracle Manual

venerdì 3 ottobre 2008

bashing: break e continue

Questi due comandi sono fondamentali nell'uso dei loops in uno script.
Break permette l'uscita da un loop al contrario di continue che salta alla prossima iterazione. Passandogli un parametro è possibile, nei nested loops, controllare di quanti cicli uscire (break), o quante iterazioni saltare all'interno dello stesso loop (continue).

Maggiori informazioni nella mitica Advanced Bash Scripting Guide (ABS), sempre sotto virtuale braccio quando mi trovo a scriptare.

martedì 30 settembre 2008

resize LVM e FS su Linux

Devi dare un paio di Giga a quel filesystem su cui stanno i datafiles di Oracle ...

# lvextend -L +2G /dev/vg/ora_data

Dopodichè, essendo il volume già dimensionato alla nuova misura basta:

#resize2fs /dev/vg/ora_data

per riempire il nuovo spazio con un filesystem ext2/ext3.
Con un kernel 2.6 è possibile fare il grow del filesystem online.

giovedì 18 settembre 2008

VxVM: REcuperare plex in DISABLED RECOVER

here are the commands

# vxreattach ( run this command only if the disks are in failed state.)

to recover the volumes

# vxmend -g -o force off

# vxmend -g -on

# vxmend -g fix clean

# vxvol -g start


mercoledì 3 settembre 2008

Reinstallare Sun Cluster su un nodo

Per sistemare problemi di configurazione, ho deciso di disinstallare Sun Cluster da un nodo di un two-nodes cluster.
Disinstallazione con scinstall -r e relativo reboot.

A questo punto per reinstallare (m'è già capitato in passato), è possibile utilizzare l'installer script dell'archivio JavaES.

# sh $CD_ROOT/Solaris_x86/installer

A questo punto, al reboot per riaggiungere il nodo va bene:

# cd $CD_ROOT/Solaris_x86/Product/sun_cluster/Solaris_10/Tools
# ./scinstall -i -C cluster -N nodo4 -A trtype=dlpi,name=e1000g1 -m endpoint=nodo4:e1000g1,endpoint=:e1000g1


Usare la GUI testuale di scinstall o clsetup non serve a nulla.

Inoltre è possibile disinstallare Sun Cluster, o pulire un'installazione sporca usando lo script:

# sh /var/sadm/prod/SUNWentsyssc32u1/uninstall

domenica 31 agosto 2008

Snoop, Tcpdump e l'AND

Per catturare del traffico ci sono vari tools; da CLI i più conosciuti sono senza dubbio Snoop e Tcpdump. Mentre il primo è incluso in Solaris e sviluppato da Sun, Tcpdump è un progetto open source e disponibile per essere compilato sui più disparati sistemi operativi.

In genere io uso Snoop, lo conosco abbastanza bene ed è disponibile subito e di default su qualsiasi release di Solaris.

Su Linux, però, non c'è ... quindi se non c'è già, mi aggiusto con tcpdump.
I due tools hano molte similarità, almeno per quanto riguarda logica, sintassi e per la definizione di porzioni specifiche del flusso di pacchetti da catturare tramite espressioni.

Oggi, mi son bloccato su un particolare:

dovendo catturare il traffico proveniente da 192.168.2.1 e destinato alla porta 514, con Snoop avrei digitato:
# snoop -d ce2 ip src 192.168.2.1 port 514
Quindi vado deciso, controllo che tcpdump sia installato e:
# tcpdump -i ce2 ip src 192.168.2.1 port 514
tcpdump: syntax error
Mmh ... chiedo in IRC, nei canali che frequento; la soluzione sta com'è ovvio, nella sintassi:
avevo già notato che ip src e port usate una alla volta funzionavano, inoltre sapevo e mi sono sincerato guardando il man, che fossero keyword esistenti;
comunque ... Tcpdump, a differenza di Snoop, vuole l'AND, quindi:
# tcpdump -i ce2 ip src 192.168.2.1 and port 514
Funziona.
Snoop, comunque, accetta l'and, sebbene lo sottintenda se non specificato.
Da ricordare. Risolto.

sabato 30 agosto 2008

Camminando per Torino




Sulla mia città se ne sono dette di tutti i colori; tombini che sono porte degli inferi, posti che concentrano energie incredibili e chi più ne ha più ne metta; sicuramente è stata capitale dell'occulto e conserva molti particolari di questo anche per le sue strade.

Oggi, in Via dell'Arsenale, strada che ho percorso centinaia di volte, ho per la prima volta notato la bellezza di questo portone e ancor più dei gargoyle che reggono i lampioncini ai suoi lati.


La foto non rende giustizia, quindi potete andare ad ammirare di persona; si trova qui.

giovedì 28 agosto 2008

Raccolta scripts

Qui c'e' una raccolta di scripts che mi port sempre dietro e che ho collezionato e/o scritto col tempo. Son quasi tutti miei, quindi la qualita' non e' ottima, ma fano quello che devono fare. Alcuni sono piu' "generici" e adattabili al contesto, altri invece meno e sono difficilmente riciclabili; i contenuti cambiano col tempo, quando ho tempo li sistemo o aggiungo opzioni, quindi versiono e metto l'anno di produzione in tutti, in modo da riuscire ad aggiornarli piu' facilmente.

Alcuni contengono un help o commenti.

domenica 24 agosto 2008

Escapare caratteri speciali su Blogger

Nel post precedente dovevo digitare <<EOF ma non ci riuscivo. Veniva interpretato come tag errato. Dopo un breve ricerca ho trovato come fare l'escape di alcuni caratteri:

< diventa &lt;
> diventa &gt;
© diventa &copy;
& diventa &amp;
" diventa &quot;

Riassunti qua sopra. Grazie all'autore di Anilinux per il tip leggibile qui su Anilinux

sabato 23 agosto 2008

Eseguire comandi multipli in remoto via SSH

Bisogno di utilizzare una interfaccia grafica su un server remoto; capita sovente: si tratta di esportare il display dal server alla macchina dalla quale si sta lavorando. Oggi mi e' venuto in mente di automatizzare la procedura; ecco il risultato:
  • Prende due parametri, l'host e il comando da eseguire
  • Si collega, estrae l'ip dalla variabile SSH_CLIENT e aggiunge il numero del display
  • Dopo aver collezionato quanto gli serve si connette e esegue quanto desiderato. Il secondo parametro puo' consistere di qualsiasi comando, eseguibile o puo' essere vuoto
Interessante l'uso dell'EOF, preso da uno spunto letto in rete; a questo proposito e' da segnalare una cosetta: le variabili vanno trattate nel modo giusto perche' sia possibile l'uso corretto in remoto. A questo proposito e' necessario "escaparle" perche' non vengano parsate subito e vengano passate nel modo giustoAd esempio: la terza riga dal fondo stampa a schermo il valore di DISPLAY sul server remoto. Senza il \ davanti restituirebbe il valore che ha in locale.

#!/bin/bash
HOST="$1";
COMMAND="$2";
LOGINFROM=`ssh -q $HOST env|grep SSH_CLIENT|awk '{print $1}'|cut -f2 -d"="`
REMIP="${LOGINFROM}:0"
ssh -q $HOST <<EOF
export DISPLAY=${REMIP};
echo \$DISPLAY
$COMMAND
EOF

domenica 17 agosto 2008

Sun Cluster Proxy File System

Finalmente, sebbene in un blog, qualcuno in Sun ha deciso di spendere qualche parola e un pò di tempo per spiegarci qualcosa sul PXFS (Proxy File System) di Sun Cluster.

Si può leggere qui.

A q2uando la documentazione ufficiale?

giovedì 14 agosto 2008

Mount e l'opzione size

Una opzione di mount e' size. Questa option dipende dal filesystem in uso. Su Solaris, ad esempio, non e' disponibile con UFS, ma e' usabile con TMPFS. Offre quindi la possibilita' di decidere a boot-time la dimensione del tmpfs

Cosi':
# mount -F tmpfs -o size=1g swap /tmp
Oppure permanente:
# cat /etc/vfstab
swap - /tmp tmpfs - yes size=Xg

Ramdisk puro in Solaris

Come fare un ramdisk in Solaris? tmpfs, il pseudo filesystem utilizzato anche per lo swap, utilizza la Virtual Memory; in Solaris la Virtual Memory e' controllata dal sistema e utilizza la memoria fisica e le eventuali slices allocate per lo swap tagliate su uno o piu' dischi duri. Questo mix non e' gestibile, quindi questa non e' strada percorribile per avere un ramdisk puro. Inoltre un tmpfs non ha un device logico e non supporta la formattazione per spalmarci sopra qualcosa come UFS, QFS o VxFS.

Ramdisk, e' un driver del kernel Solaris, per creare block o raw devices in RAM. Con ramdiskadm e' possibile creare e distruggere ramdisks. Notare che per la creazione del ramdisk la RAM necessaria deve essere disponibile, pena messaggio d'errore e mancata creazione:
# vmstat
kthr memory page disk faults cpu
r b w swap free re mf pi po fr de sr m0 m1 m4 m5 in sy cs us sy id
0 0 0 23058496 7046264 0 1 0 0 0 0 0 0 12 0 0 371 156 432 0 0 99
# ramdiskadm -a ramb 8g
ramdiskadm: couldn't create ramdisk "ramb": Resource temporarily unavailable
Creiamo:
# ramdiskadm -a rama 1g
/dev/ramdisk/rama

# ls -la /dev/ramdisk/rama
lrwxrwxrwx 1 root root 38 Aug 14 22:13 /dev/ramdisk/rama -> ../../devices/pseudo/ramdisk@1024:rama
1 # ls -la /dev/rramdisk/rama
lrwxrwxrwx 1 root root 42 Aug 14 22:13 /dev/rramdisk/rama -> ../../devices/pseudo/ramdisk@1024:rama,raw
Ci possiamo fare piu' o meno quello che ci pare; creiamoci su un normalissimo filesystem UFS:
# newfs /dev/rramdisk/rama
/dev/rramdisk/rama: Unable to find Media type. Proceeding with system determined parameters.
newfs: construct a new file system /dev/rramdisk/rama: (y/n)? y
/dev/rramdisk/rama: 2097000 sectors in 3495 cylinders of 1 tracks, 600 sectors
1023.9MB in 219 cyl groups (16 c/g, 4.69MB/g, 2240 i/g)
super-block backups (for fsck -F ufs -o b=#) at:
32, 9632, 19232, 28832, 38432, 48032, 57632, 67232, 76832, 86432,
2006432, 2016032, 2025632, 2035232, 2044832, 2054432, 2064032, 2073632,
2083232, 2092832
Montiamolo:
# mount /dev/ramdisk/rama /mnt

# df -n|grep "^/mnt"
/mnt : ufs
Creiamo un file e compariamo i tempi di creazione con quelli di un file identico creato su hard disk SAS:
*ramdisk ufs
# time mkfile 700m /mnt/700mega

real 0m5.368s
user 0m0.091s
sys 0m5.272s

*SAS interno ufs
# time mkfile 700m /FS/700mega

real 0m12.301s
user 0m0.081s
sys 0m2.907s

*FC array qfs
# time mkfile 700m /qfs_di_prova/700mega

real 0m5.866s
user 0m0.074s
sys 0m3.973s
La differenza nei tempi di creazione tra un disco interno al server SAS e il ramdisk e' ovviamente enorme; interessante vedere come sia necessario lo stesso tempo per la creazione del file su una lun residente su array FC, che fa il suo buon uso della sua cache.

Va bene! Gli usi possibili di un ramdisk sono tra i piu' disparati, diamoci da fare!

Filesystems about in linux e unix

Tra le altre cose, il comando df e' utile per conoscere il tipo di un filesystem.
Se su Solaris e' visualizzabile con:
# df -n
/ : ufs
/devices : devfs
/system/contract : ctfs
/proc : proc
/etc/mnttab : mntfs
/etc/svc/volatile : tmpfs
/system/object : objfs
/platform/sun4u-us3/lib/libc_psr.so.1: lofs
/platform/sun4u-us3/lib/sparcv9/libc_psr.so.1: lofs
/dev/fd : fd
/var : ufs
/tmp : tmpfs
/var/run : tmpfs
/dev/vx/dmp : tmpfs
/dev/vx/rdmp : tmpfs
/REPLICA_BACKUP : samfs
Su Linux:
# df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/sda2 ext3 20161204 16495184 2641880 87% /
varrun tmpfs 387640 76 387564 1% /var/run
varlock tmpfs 387640 0 387640 0% /var/lock
udev tmpfs 387640 56 387584 1% /dev
devshm tmpfs 387640 0 387640 0% /dev/shm
lrm tmpfs 387640 39776 347864 11% /lib/modules/2.6.24-20-generic/volatile
/dev/sdb2 ext3 117188268 98941524 12293860 89% /mmedia
/dev/sda3 ext3 16247640 13169908 2252396 86% /extra
overflow tmpfs 1024 92 932 9% /tmp
Su Solaris e' possibile farlo anche con:

# ' fstyp /dev/vx/dsk/bootdg/rootvol
ufs

mercoledì 13 agosto 2008

Il mio cane e' qui

Oggi son andato a prendere da mia madre Rage, il mio cane, anzi cagna. Tra pochi giorni e' anche il suo compleanno ... infatti il 25 agosto compie ben 13 anni!!

Rage mi segna il passare del tempo ... ogni suo anno mi fa pensare a quanto tutto passi, ancor più del mio compleanno. La cosa interessante è che se Rage compie gli anni il 25, c'è Cristina che li fa il 24 e io il 26 agosto, che è anche il mio onomastico.

martedì 12 agosto 2008

Areanetworking: articolo QFS

Il mio recente blog sull'aggiunta di nuovi hosts a un filesystem QFS shared e' stato pubblicato su Areanetworking, del quale sono staff; era da una vita che non pubblicavo un articolo sul sito, e son contento di questo contributo ... magari mi dara' lo sprint per essere produttivo come lo ero qualche tempo fa (prima che le trasferte mi togliessero pure il tempo di allacciarmi le scarpe e stirarmi le camicie):

E' disponibile qui, contiene parte del blog rivisto e corretto e alcuni cenni di premessa su cos'e' QFS e com'e' composto

domenica 10 agosto 2008

Paradiso qua dietro



Son tornato venerdi sera, causa impegni familiari, in anticipo dalle vacanze alle Cinque Terre.
Alla fine ci siamo sistemati (io, Cristina e Dimitri, un amico) a Monterosso, in un carinissimo Bed & Breakfast stracolmo di americani (come del resto, ovunque, c'erano solo americani) che si puo' vedere qui . Punto di forza, padroni di casa piu' "user friendly" di Ubuntu e birra e vino alla spina giu' nel dehors!!! Dal balcone con tavolino dove la sera giocavamo a scopa e a Magic avevamo vista sull'intera cittadina. 5 giorni che penso ricordero' tra le migliori vacanze della mia vita. Non e' mancata la scarpinata Vernazza-Corniglia per il Coastal Path in ricordo dei vecchi tempi quando campeggiavo a Guvano (vestito pero'), oh che ricordi!! E che panorama!!
Ora ci metto la polemica, giusto per non far sembrare tutto bellissimo.
Da monterosso si parte in treno per Vernazza, tre minuti di tragitto che mi riportano alla mente la Torino-Milano (depressione). Dopo un bel bagno rigenerante a Vernazza si parte per il sentiero verso Corniglia; dopo una bella dose di scalini leggo qualcosa tipo:
"Checkpoint, controllo biglietti a 100 metri".
Io e Cri ci guardiamo ... proseguiamo.
Saliamo ancora, la cosa si fa faticosa, non me la ricordavo cosi' massacrante ... ed ecco che passiamo affianco a un ripostiglio a bordo sentiero che appena sorpassato fa uscire una testa di ragazzetto (probabilmente in stage "lavoro gratis" con rimborso spese di 50 euro al mese) che ci dice:
"Avete i biglietti, signori?".
"Che biglietti"
"Per l'ingresso al parco, 5 euro a testa"
"A cranio!!!"
"Si puo' anche fare 8.50 incluso il treno"
"Questa non me la ricordavo, ma da quand'e' che si paga il pedaggio"
Non risponde.
"Dammene due ... ... ... ... "

Ingresso al parco. Siamo messi sempre peggio, striscie blu a pagamento per il parcheggio fino a 1km in salita a picco da ognuno dei paesi del comprensorio ... come ovunque del resto.
Nessun servizio a corredo, se si eccettua qualche transenna sgangherata e qualche scalino in legno combinato malissimo, molto piu' pericoloso di quelli in pietra.
Ma soprattutto, io non pago gia' le tasse? Non conosco bene dove vanno a finire i miei soldi ma credo che il territorio, soprattutto quello che frutta, riceva una fetta della torta. Cosi' pago due volte? Se qualcuno volesse commentare su cio' benvenga.

Comunque ... e' stato splendido, ci voglio tornare e ve lo consiglio vivamente!

venerdì 8 agosto 2008

Files in uso ma rimossi: trovarli

Ringrazio Massimo per questa segnalazione che annoto di seguito qui pronto per essere trovato quando mi serve:

In questo post (http://wikis.sun.com/display/BigAdmin/Checking+for+Deleted+Files+Held+Open+in+UFS+File+Systems) in fondo c'è un commento dove si suggerisce di usare il "find" per scovare processi che hanno files aperti ma cancellati.

Il comando è:

find /proc/*/fd -type f -links 0 -exec ls -l {} \;

Lo segnalo giusto come elemento di analisi in più per quelle situazioni "simili" già capitate in passato.

lunedì 4 agosto 2008

Pendolari e treni: conosciamoli

Segnalo questo sito di informazione, articoli, opinioni personali sulle Ferrovie dello Stato.
Ricco di cose utili, anche tecniche, e curiosità, per un pendolare abituale:

http://www.miol.it/stagniweb/

Il sito si dice in fase di riapertura, tra 36 giorni; ma i contenuti sono accessibili.

Interessante il seguente articolo:
Aprono le linee ad alta velocità Torino-Novara e Roma-Napoli: qualche breve cenno

Magari da leggere in treno :)

sabato 2 agosto 2008

Aggiungere hosts a uno shared QFS

Ecco gli steps necessari ad aggiungere dei servers agli hosts che sharano un fs qfs denominato "qfs" .
I files da configurare sono 2 + 1 da verificare. La directory contenente la config è /etc/opt/SUNWsamfs

root@box3 # ls /etc/opt/SUNWsamfs/
VERSION.4.6 hosts.qfs notify.cmd
startup mcf scripts

- hosts.qfs , basta editarlo su uno degli hosts e copiarlo sugli altri.

root@box3 #cat hosts.qfs
box1 172.30.10.1 1 - server
box2 172.30.10.2 2 -
box3 172.30.10.3 3 -

Si commenta da se. Il server è la macchina 1, gli altri sono potenziali
metadata servers nell'ordine di diritto dato dal numero nella terza colonna.

- mcf:
root@box3 # cat mcf
qfs 10 ma qfs - shared
/dev/dsk/c4t6d0s0 11 mm qfs -
/dev/dsk/c4t6d0s7 12 mr qfs -

Contiene la struttura di volume e filesystem. Va definito uno stesso
filesystem su tutte le macchine, specificando un identico nome (in
questo caso "qfs") e definendo come sopra data e metadata slices, ma soprattutto mettendo la dicitura shared.
Attenzione a un'errore banale, ma facile che possa capitare di incapparci. Il
logical device path della lun in uso dalle 4 macchine va definito localmente
su ogni host, appunto ha significanza locale, con il path "corretto". Ad esempio su box1 è
/dev/dsk/c3t6d0 mentre sulla 3 /dev/dsk/c4t6d0. Cambia il controller per la stessa lun da sharare, è un errore non accorgersene andando a inserire un device errato nell'mcf.

mcf è il file dove si va ad agire quando si intende ingrandire il filesystem. Qui si aggiungono le luns da assegnare come spazio per dati e metadati.

- /etc/inittab . Contiene la riga:
sf:023456:respawn:/usr/lib/fs/samfs/sam-fsd
Verificare che non sia stata precedentemente commentata (ad esempio in seguito a shutdown del demone qfs conseguente a rimozione del filesystem shared.

Potrebbe essere necessario avviare i demoni:
/etc/init.d/samfs.shared start

Si lancia il comando
root@box3 # samsharefs -u qfs

Che rilegge il file hosts.qfs e aggiorna la configurazione del demone in accordo ad esso.
Se il filesystem è smontato su uno degli hosts, allora usa:
root@box1 # samsharefs -u -R qfs # !!! OKKIO !!! usare l'opzione -R solo se il fs è SMONTATO , se è MONTATO si rischia una corruzione, usare solo -u
root@box1 # samd config
Configuring SAM-FS

partendo dal metadata server e passando poi alle altre macchine.
Quest'ultimo comando applica i cambiamenti. E' possibile montare i filesystems se non lo si è già fatto.

Un paio di comandi di verifica, utili anche nel caso di problemi durante operazioni del genere:
- samsharefs qfs
- samfsinfo qfs

root@box3 # samsharefs qfs
#
# Host file for family set 'qfs'
#
# Version: 4 Generation: 28 Count: 4
# Server = host 2/box3, length = 138
#
box1 172.30.10.1 1 -
box2 172.30.10.2 2 -
box3 172.30.10.3 3 - server

root@box3 # samfsinfo qfs
samfsinfo: filesystem qfs is mounted.
name: qfs version: 2 shared
time: SatAug 1 22:00:00 CET 2008
count: 2
capacity: 000000000047f000 DAU: 64
space: 0000000000370a40
meta capacity: 0000000000080000 meta DAU: 16
meta space: 00000000000706e0
ord eq capacity space device
0 11 0000000000080000 00000000000706e0 /dev/dsk/c4t6d0s0
1 12 000000000047f000 0000000000370a40 /dev/dsk/c4t6d0s7

Rimane da testare il corretto switch del server; il freeze del
filesystem durante lo switch è abbastanza trasparente, discretamente veloce, e comunque tutte le operazioni vengono messe in attesa e portate a termine appena il sistema torna disponibile.
E' possibile forzare lo switch così:
root@box3 # samsharefs -s HOSTNAME qfs

Si vedrà qualcosa di molto simile:
Aug 1 15:36:06 box1 samfs: [ID 145691 kern.notice] NOTICE: SAM-QFS:
qfs: Failing over to new server box3, frozen (2000821)
Aug 1 15:36:06 box1 samfs: [ID 668864 kern.notice] NOTICE: SAM-QFS:
qfs: Set client: new server box3 (2000821), 1.3, fl=0
Aug 1 15:36:06 box1 samfs: [ID 665295 kern.notice] NOTICE: SAM-QFS:
qfs: Reset leases, then send resync message to new server box3,
thawing (4000821)
Aug 1 15:36:10 box1 samfs: [ID 999740 kern.notice] NOTICE: SAM-QFS:
qfs: New server box3 (8800811) responded to resync message, thawing
(4800821)
Aug 1 15:36:10 box1 samfs: [ID 515541 kern.notice] NOTICE: SAM-QFS:
qfs: Waiting for new server box3 (8800811): thawing (4800821)
Aug 1 15:36:12 box1 samfs: [ID 206251 kern.notice] NOTICE: SAM-QFS:
qfs: Received faildone message from new server box3, thawing (4c00821)
Aug 1 15:36:12 box1 samfs: [ID 685965 kern.notice] NOTICE: SAM-QFS:
qfs: Failed over to new server box3: (21)

Dovrebbe essere tutto. Per aggiunte, correzioni, estensioni, commenti:
FALLE in un commento, scrivimi a alex.t@areanetworking.it e diventeranno a disposizione su questo blog

mercoledì 30 luglio 2008

Chi prompt if proxy

alias whox='who -Hup'
alias whon='who'


Mi piace mettere questo nel .profile se posso. Le opzioni Hup forniscono l'output più utile in assoluto.

root@xxxxx # whox
NAME LINE TIME IDLE PID COMMENTS
root pts/1 lug 30 23:21 . 22957 (10.x.x.x)
sam-fsd . lug 30 05:46 17:41 7917 id= sf
root@xxxxx # whon
root pts/1 lug 30 23:21 (10.x.x.x)

Si può fare riferimento alla pagina man di who per dettagli sulle opzioni coinvolte.

Mi piace anche rifare il prompt definendo:
PS1='\u@\h - \w ->'
E' un pò invasivo quindi rimane nel mio .profile utente.

In genere uso il .profile-EIS di Sun, che è molto comodo, aggiungo quanto sopra, e se ho un portatile un paio di if che mi settano il proxy se sono al lavoro o meno:

IP=`ifconfig ath0|grep inet|awk '{print $2}'|cut -b6-20`
PROXY_NET="192.168."
PROXY_NET2="10.0."
if [[ `echo $IP|grep "$PROXY_NET"` ]]; then
http_proxy="http://pippo:1";
export http_proxy;
else
unset http_proxy;
fi
[ -- CUT -- ]

Questo post è in evoluzione, nuove aggiunte non appena ce ne saranno. Se vuoi contribuire puoi aggiungere un commento.

martedì 29 luglio 2008

My hometown by night

E' bellissima:

http://www.fotogian.com/torinotte.html

E' qua c'è la metro che ho preso ieri. E se si è abituati a quella di Milano si rimane piuttosto impressionati dalle differenze:

L'accesso al tunnel è precluso. Il passeggero è tagliato fuori dalle rotaie. Quando il treno arriva un paio di porte supplementari si aprono assieme a quelle del treno permettendo l'accesso. Quindi niente "mi butto non mi butto, mi ammazzo o non mi ammazzo" e soprattutto il triste "ti spingo non ti spingo". La domanda che nasce spontanea è: riesce il treno a fermarsi esattamente all'altezza delle porte esterne? Si, con uno scarto di una spanna al max (almeno ora, vedremo quando la struttura comincerà a fare le bizze)

Non esiste conducente: è tutto teleguidato! O qualche diavoleria simile: lavorando con sistemi, anche del valore di svariate centinaia di migliaia di euro (anche da milione di euro in alcuni casi), preferisco pensare che i treni siano teleguidati, che non guidati completamente da un computer ... ma questo si può approfondire.

Le vetture sono totalmente diverse da quelle dei treni convenzionali: più piccole (e claustrofobiche, attenzione a chi ne soffre), hanno un finestrone a capo e coda treno. Mettersi davanti, sentendosi Il Guidatore, è un must la prima volta, devo dire che fa un certo effetto mettersi in quella prospettiva.

I tunnel fanno curve molto più strette di quanto abbia mai visto; non dico a gomito, 135° credo di si.

http://www.metrotorino.it/eng/gallery.php

domenica 27 luglio 2008

Protocollo DNS e le sue debolezze

Si è parlato molto della recente "scoperta" della grave vulnerabilità propria del protocollo DNS. Vulnerabilità causata da un problema di design e che quindi interessa molte, forse tutte le implementazioni software in circolazione.

E' stato trovato un workaround e le patches sono arrivate in tempi brevi; come al solito mi chiedo chi tra coloro che sono a rischio si è occupato di patchare.
Noi l'abbiamo fatto (tra l'altro grazie a questo ho scoperto cose che ignoravo) e la falla, diciamo, è stata tappata alla buona. La soluzione finale è, comunque, passare a DNSSEC, che per come è stato pensato, non può soffrire del problema del fratello protocollo più anziano.

Parlandone con la mia compagna, che è entrata in tempi recenti nel mondo lavorativo IT, mi ha chiesto di spiegarle, con un esempio, il problema.

E allora le ho risposto, che se ho ben capito io stesso, può immaginare questo:

"Il tuo conto BancoPosta al quale accedi quando hai bisogno di effettuare operazioni, potrebbe essere un bersaglio. Il problema che un attaccante può sfruttare nei DNS è l'avvelenamento della cache. Il nome del sito che normalmente viene risolto a 62.241.4.82, viene cambiato a un'altro dove risiede una copia contraffatta dello stesso. La vittima non se ne accorge facilmente, inoltre le pagine fasulle, hanno links che puntano a url familiari e corrette, a differenza dei siti di pishing, dove ci si accorge della truffa verificando i links e notando che puntano a indirizzi estranei e non conformi alle pagine originali che vorremmo visitare.
Quindi è possibile che non ci si accorga della truffa, o che ci si riesca troppo tardi."

Con un pò di fantasia si può pensare ad altri attacchi, quindi la situazione è piuttosto tesa, e le continue raccomandazioni a patchare ne sono prova.
Inoltre è uscito l'exploit, cosicchè, chi non è in grado di fabbricarsene uno, può sfruttare questo. E' contenuto in Metasploit, un tool per penetration testing, IDS e simili.

Qui una descrizione della vulnerabilità: http://www.kb.cert.org/vuls/id/800113

E la pagina dell'ISC, curatori di BIND, contenente l'advisory:

YOU ARE ADVISED TO INSTALL EITHER THE PATCHES, STAYING WITHIN YOUR MAJOR VERSION, (9.5.0-P1, 9.4.2-P1, 9.3.5-P1) OR THE NEW BETA RELEASES (9.5.1b1, 9.4.3b2) IMMEDIATELY.

The patches will have a noticeable impact on the performance of BIND caching resolvers with query rates at or above 10,000 queries per second. The beta releases include optimized code that will reduce the impact in performance to non-significant levels.

Trovate il resto qui: http://www.isc.org/sw/bind/bind-security.php

Cisco "do" it!

Molti non lo sanno.
Questo è un trick che mi ha passato l'amico Norsys di Areanetworking qualche anno fa.

Su un apparato Cisco con IOS, se non sbaglio (correggetemi non ho voglia di verificare) dalla versione 12 in sù, in qualsiasi modalità operativa ci si trovi, è possibile dare comandi che normalmente sono disponibili e si usano da altra modalità. E' sufficiente utilizzare il comando do.

Mi spiego, in "conf t", il comando show semplicemente non c'è, con do è possibile usarlo.
Osservate:

>en
#conf t
(config)#do show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route

Gateway of last resort is not set

Router(config)#


OK? Comprìs? Eccezionale quando lo si scopre, il mondo cambia angolazione :)))

venerdì 25 luglio 2008

Bind: Aggiungere nuove entry nel file di zona

Un piccolo script che aggiunge nuove entries nei files di zona.
Fa:
- aggiunge, rimuove e fa il reload
- incrementa il seriale in automatico
- chiede conferma se IP o nome sono già presenti

In realtà l'opzione -r ancora non funziona e l'opzione -u è banale. Per ora mi sono concentrato sull'aggiunta dei records, che è praticamente completa.

#!/bin/bash
#
# AddNameToBind 0.99b
# 2008 Alessandro Torchia

ZONE="my.local.zone";
LIST=`cat $ZONE|egrep 'IN|A|MX|CNAME|^pr|^pp'`
IPLIST=`cat $ZONE|egrep 'IN|A|MX|CNAME|^pr|^pp'|awk '{print $4}'|grep -vi "@"`
NAMELIST=`cat $ZONE|egrep 'IN|A|MX|CNAME|^pr|^pp'|awk '{print $1}'|grep -vi "@"`
NAME=$2;
IP=$3;
TYPE=$4;
ADD=0;
function conferma() {

read -n1 -p "onferma, gnora Vuoi inserire comunque il nome? "
echo
case $REPLY in
c | C)
echo "Continuo con l'update del file di zona ..."
ADD=0;
return $ADD
;;
i | I)
echo "Ignoro l'update ..."
ADD=1;
return $ADD
;;
* )
echo "You don't know what you want to do..."
;;
esac
}

while [ "${1:0:1}" = "-" ];do
case "$1" in
'-a')
for i in $IPLIST
do
if [ $i == $IP ]; then
echo "IP ADDRESS già presente";
conferma
else
ADD=0;
fi
done
for h in $NAMELIST
do
if [ $h == $NAME ];then
echo "NOME già presente";
conferma
else
ADD=0;
fi
done

if [ $ADD != 1 ];then
echo "$NAME IN $TYPE $IP" >> $ZONE;
SERIAL=`cat $ZONE|grep Serial|awk '{print $1}'`;
let NEWSERIAL=$SERIAL+1
cp $ZONE /tmp/$SERIAL
cat /tmp/$SERIAL|sed -e 's/'$SERIAL'/'$NEWSERIAL'/' > $ZONE;
fi
;;

'-r')
# echo "Not Implemented";
cat $ZONE | while read line;
do
REM=`echo $line|grep $NAME`
sed s/'$REM'/''/
done

;;

'-u')
# echo "Not Implemented";
rndc reload

;;
esac


shift
shift
done
if [ "x$1" = "x" ]; then
echo "Usage: $0 main_variable";
echo "Options:";
echo " -a ";
echo " -r ";
echo " -u #Updates bind configuration";
exit 1
fi


Aggiornamenti su questo post as soon as li implemento!

martedì 22 luglio 2008

Ticketless AV

Sono basito.
Oggi ho sperimentato la forma di pagamento "ticketless" per prendere l'AV per Torino delle 18:43.
Sono andato sul sito, PostePay carica (Visa va bene, Maestro no), mi loggo, scelgo e infine mi annoto sulla terza di copertina del libro Star Trek che sto leggendo tale codice PRN e Carrozza:Posto.

Salgo.
Ho paura, dico la verità. Sicuramente qualche regola mi farà la pelle, il mio ticketless sarà andato sprecato e mi farà la multa. 70 carta di credito. 100 con bollettino postale (30 euro di overhead monetario causa latenza nel pagamento?)

Arriva!!
Dico: "Veramente ... io ... avrei fatto il ticketless."
Mi dice: "Bene, mi dica il codice. Posto 55 carrozza 9?".
Gli dico: "Beh, direi di si, è dove sono seduto".
Gli ripeto tre volte il codice che proprio non gli entra.
Finito!
Andata! Oggi il mio viaggio AV è salvo.

Naturalmente solo 15 minuti di ritardo ... che hanno dell'incredibile e inspiegabile.
Arriviamo a tutta AV a Torino in anticipo, inchiodiamo a Stura e stiamo fermi ... riusciamo ad arrivare a P.ta Nuova tardi quando sembrava impossibile.
Scendo e penso che potranno anche avere treni che fanno 800 Km/h un giorno, ma lo stesso riusciranno a fare tardi anche allora.
Mi immergo nella mia Torino ...

mercoledì 16 luglio 2008

Rimuovere shared QFS

Un QFS shared su una LUN mappata dall'array a 4 hosts.
Rimuovere due hosts.
Oltre all'editing del file hosts.xxx sulle macchine rimanenti per eliminare i riferimenti a quelle da rimuovere è fondamentale:
* smontare il filesystem
* lanciare samsharefs -Ru
* samd config
* stoppare il qfs sulle macchine rimosse
* rinominare files hosts.xxx e mcf sulle macchine rimosse
* importante ... nel file inittab delle macchine rimosse, c'è una entry che riguarda il QFS che causa il respawn del demone sam-fsd, questa va COMMENTATA!! In caso contrario, nonostante lo stop dei demoni tramite script presente /etc/init.d/ le macchine continueranno a inviare richieste a quella che è conosciuta come l'ultimo host server del filesystem shared; di per sè non causa nulla di male saltare questo passo, ma non è pulito e, non si sa mai, potrebbe causare o essere concausa di problemi
* sulle macchine rimanenti samd config restituisce un errore che seppur non bloccante, fa ben capire che non ha del tutto digerito i cambiamenti; infatti, parla di qualche problema con le macchien eliminate. Questo viene fixato da un reboot, potrebbe esserci altra soluzione ma non la conosco
* Rimuovere le entries del filesystem qfs dal file /etc/vfstab delle macchine rimosse
* Last but not least: switchare il server da una macchina all'altra per assicurarsi che tutto funzioni a dovere.

domenica 13 luglio 2008

Nuovi StorageTek JX00 e Simple-Thumper

Stavo dando un'occhiata a tre nuovi piccoli storage devices freschi di "forno", appeni usciti dalla fornace di idee di Sun. Cito:
Storage Expansion Arrays

The Sun Storage J4000 Family offers scalable, reliable storage, breakthrough economics, and heterogeneous support across Solaris, Windows, and Linux platforms.

Così sono definiti. In pratica, tradotto, si tratta di tre arrays, e naturalmente per il software RAID viene menzionato Zfs, per quanto riguarda le soluzioni basate su Solaris (e perchè no Mac OS X e FreeBSD, che ne hanno anche loro una implementazione) ... ZFS. Avrebbero potuto aggiungere solo più ...

"basta averne il coraggio!!"

Per fortuna la configurazione comprendente controllers intellgenti sono capaci di RAID hardware nei livelli 0, 1, 10, 1E, 5, 6, 50, 5EE, 60.
Il J4200 e J4400 sono fondamentalmente lo stesso storage, la differenza sta nella capacità e in una dotazione magari più spinta, dove il primo supporta fino a 48 dischi SAS, mentre il maggiore arriva a 192. Parlano di 72Gb/s di capacità di banda quando tutte e sei le porte SAS sono in uso

Ci vanno poco più di 3000 dollari per la configurazione più piccola: 1 J4200 con due dischi.
Come per tutti i nuovi prodotti, la gestione viene affidata alla CAM, che facilita il lavoro di amministrazione ai clienti che non vogliono pagare personale specializzato, e rendono tristi i sysadmin più hard-core che rimpiangono le gioie di interfacciarsi e lavorare sui T3, 3510 e chi più ne ha più ne metta.

Ma ora arriviamo al pezzo che più mi ha visto interessato e più mi ha incuriosito: il J4500!


Eccolo, chi riconoscete da questa foto? E' thumper, il ciccione X4500 con cpu Amd e una bella spatafiata di dischi SATA da 3emezzo!! Anche lui generato per essere una vittima di ZFS, in uno dei primi tentativi di rifilarci il "Filesystem più fico e con più bits del mondo", magari addirittura spalmato su dischi in macchine di produzione :)

E infatti si tratta di Thumper, stesso chassis, ma niente cpu AMD e relativa dotazione, niente Solaris, e al suo posto una non ben precisata controller, 4 porte SAS da 3Gb/s, supporto per dischi SATA da 1 Tera e possibilita di espansione a 4 unità massime per un totale di 192 dischi e altrettanti Terabytes.
Per il raid HW i livelli sono gli stessi supportati dal J4400.
Nella lista dei servers supportati manca l'X4500, mi chiedo perchè.

Comunque è interessante questo prodotto, che sfrutta la peculiarità di storage server dell'X4500, amputato della presenza di Solaris per quei clienti che non necessitano della flessibilità che questo da, e delegando l'amministrazione alla CAM che sicuramente ne semplifica la gestione laddove manca il know-how, in più la possibilità di fondere la capacità di 4 di questi arrays assieme. Un Simple-Thumper?

sabato 5 luglio 2008

Archivio titoli e thumbnails



Qui finiscono tutti i titoli dati al blog, che ogni tanto vario, in ordine cronologico:
Inoltre ci sono anche le immagini usate.

giu 2007 Thinkin' Unix - Pensieri Sparsi
apr 2008 Thinkin' Unix - Pensieri in Raid
lug 2008 Thinkin' Unix - Pensieri in Stripe
ott 2008 Thinkin' Unix - Mirroring Thoughts



giovedì 3 luglio 2008

A tutta AV

Vivo di treno, sarebbe bello che l'esperienza fosse positiva, ma non lo è. Le FS danno un servizio squallido a prezzo decente, oppure da ricchi a prezzi da ricchi, ma le prestazioni son sempre scarse, di qui non ci si discosta.

Dopo aver preso, per curiosità, una volta, l'AV Milano Centrale-Torino PN, me ne sono letteralmente, come si suol dire, "infognato", e siccome un servizio a prezzo identico viene offerto a un'orario per me vantaggioso per la tratta Milano P.ta Garibaldi-Torino PN, avendo il passante comodo sotto l'ufficio, ne ho fatto il treno del ritorno. Questa settimana l'ho preso 3 volte.

3 volte arriva in ritardo a Milano e ancor di più a Torino, 3 volte gli do 20 euro per un viaggio di un centinaio di Km abbondanti, potenzialmente veloce, ma in realtà lento come un treno Locale, mascherato da ETR500.

L'altro ieri, dopo aver visto su viaggiatreno.it che il mio ETR era in ritardo come sempre, mi permetto di arrivare un pò dopo in stazione Garibaldi, per finire delle cose al lavoro e non stare come un fesso al binario a osservare le colonne della tettoia, oltre allo sporco appiccicato ovunque.
Arrivo alle 19:45, vado alla macchinetta per fare il biglietto con carta di credito, e il treno, sebbene in ritardo pesante, non è più disponibile tra quelli presenti per la tratta, secondo il software FS, non si può prendere; la coda allo sportello, uno solo aperto, è scandalosamente lunga, inutile provarci. Decido di fare biglietto per lo stesso treno ma con data domani; treno in ritardo di 20 minuti, salgo, vado dal controllore: "Naturalmente" - sospettavo e mi dice - "il mio biglietto non è regolare".

"Le devo fare la multa" mi dice - "D'accordo" - rispondo io.

Poi mi grazia, trovando un sotterfugio e dicendomi che se ricapita devo fare un biglietto Intercity qualsiasi e pagare solo il supplemento 8 euro a bordo. Scendendo a Porta Susa, straccio il mio biglietto irregolare ma regolarmente pagato davanti a lui assicurandogli che non combinerò niente di male con esso e che la sua fiducia e ben riposta. Mi saluta con un cenno, siamo entrambi felici ... anche le FS, alla faccia dei regolamenti claustrofobici.

Fin qui tutto bene. Solo 20 euro per arrivare a casa alle 22:00.

A TUTTA ALTA VELOCITA'!!!

Giorno dopo.
Stessa storia. Viaggiatreno.it, treno 9494, ritardo 25 minuti. Mi presento dopo, così mappo sta LUN che c'è da fare per la Replica di Oracle.
Arrivo alle 19:45, stesso trenino del Passante del giorno prima, nessuna possibilità di fare biglietto alla macchinetta automatica (il treno non esiste , remember?), vado in fila:
2 sportelli aperti, il terzo è occupato da una mitica FSina che nonostante la megafila chiude tutto, esce fra noi, e comincia a tampinarci, tira giù mezza serranda della biglietteria e comincia a dispensare dritte per farci togliere da li e farci fare il biglietto ovunque ma non li, e smaltire la coda ... vuole andare a casa, la capisco, anch'io, ma casa mia è lontana, e il mio ostacolo è enorme, sono le FS.

Mi son messo in fila perchè coi 25 minuti che avevo di margine, speravo di riuscire ad arrivare ad avere il biglietto ... a pagamento, non gratis, parrebbe facile sulla carta.

Per fare contenta Miss Carota dalla Chioma Rossa FS, le spiego il problema della macchinetta, le chiedo come posso fare, le dico se lo sportello è l'unica soluzione e allorchè lei mi dice: no!! Se la macchinetta non me lo fa, nemmeno il software allo sportello mi farà il biglietto!! Bel software: treno in ritardo colossale, nessuna possibilità di prenderlo ... e pensare che l'unico caso in cui potrebbero fare un piacere ai clienti con un ritardo ... è vendere il biglietto ai clienti dell'ultimo minuto, o in ritardo!!! SPQFS!! Sono Pazzi Questi FS.

Allorchè dico a Miss FS che dubito che sia così, e che spero che sia il contrario giusto per ripicca a mò di asilo gnè gnè gnè (e le avrei rubato anche la merenda e tirato i capelli a dirla tutta), poi mi illumino e ripeto quanto dettomi il giorno prima dal Saggio Guru Controllore del 9494, cioè la storia del biglietto IC+ supplemento a bordo.


Era questa la soluzione, ma Miss FS, mi risponde ancora un secco NO!!
Non posso presentarmi sul 9494 con un biglietto Intercity e pagare il supplemento, sarebbe troppo facile. A questo punto la odio a morte.

La coda non si sfoltisce. Il mio treno arriva e al secondo annuncio desisto, del resto probabilmente ha ragione lei; salgo sprovvisto.

Naturalmente non c'è grazia stavolta e mi viene proposta addirittura l'alternativa, o pago biglietto + 50euro "on board" oppure biglietto + 80euro "at home" ... 100! tondi tondi; scelgo la prima; dopo mezz'ora di smanettamento col POS, la Controlloressa mi dice: "Ma non poteva fare un biglietto per un InterCity qualsiasi e pagava solo 8 euro di supplemento a me?". Penso a Miss FS di Garibaldi, la odio intensamente, la odio ancora, immagino di vederla sanguinare, poi rispondo calmo "No!". E vado a sedermi e godermi il viaggio ...

A TUTTA AV!!!

Miss FS, presto ripasserò per Garibaldi per venire a prendere quel maledetto treno sempre in ritardo, e spero di trovarti li per darti tutto il mio affetto e commentare con te la tua profonda conoscenze del regolamento FS!!

sabato 28 giugno 2008

Opensolaris 2008.5

Oggi ho installato Opensolaris sul mio notebook. Aveva bisogno di una rinfrescata, avevo su una SXCE 83 ormai datata e incasinata.

E perchè allora non provare la discussa Indiana!!

Devo dire che, rispetto alla b83 di SX c'è qualcosa di più della sensazione di una maggiore velocità, sia nel boot che nell'esecuzione dei programmi in ambiente Desktop.

I cambiamenti sono tanti, ma soprattutto incisivi.

Zfs soppianta in toto UFS; questo devo dire mi sta lasciando un bel pò di confusione.

IPS per gestire i pacchetti e il passaggio a una build superiore: in pratica utilizza un mix di snapshot/cloning zfs e Live Upgrade, frutto del comando pkg image-update. L'ho provato, ha fatto tutto lui, e dopo il reboot non ha funzionato. Credo di essere riuscito a tornare al sistema precedente e di rimuovere i resti del fallito upgrade. Tutto sommato, mi aspettavo che questo sistema di gestione dei pacchetti fosse, intuitivo, più semplice e veloce (è un accrocchio Python, a quanto pare l'errore Gentoo Portage non ha insegnato niente a nessuno). Mi aspettavo l'ennesimo apt-get ,pkg-get con la sua semplicità e friendliness, e invece c'è da usare il man anche per la più semplice operazione. Mi abituerò.

Questo post è in movimento, posterò il resto più tardi


06/07/2008 UPDATE:

E' dura per me ammetterlo, ma per avere un portatile con cui poter lavorare in modo confortevole, ho dovuto rimuovere Opensolaris ... l'alternativa era tornare a Solaris Express, ma alla fine mi sono convinto col fare il salto della barricata.
Opensolaris non mi piace, non funziona come vorrei, è scomodo, pesante, buggato; la disponibilità di pacchetti nelle repositories IPS, che era una delle features che mi ha attratto è scarsa, tant'è che negli ultimi due giorni avevo messo su pkg-get di Blastwave, che con la sua disarmante velocità, semplicità e somiglianza ad APT, è una gran cosa per gli utenti Solaris.
Insomma, tra FreeBSD e Linux, alla fine ho scelto Debian ... vedremo cosa dirà il tempo, insistere su usare Opensolaris o SX sul portatile ha saputo darmi un'idea di "privazione" che Linux non mi da, sebbene non possieda tante features che il bimbo di Sun ha.

venerdì 20 giugno 2008

Playing Linux Raid and Logical Volumes

Stasera si gioca col software Raid di linux.
Ho un Multipack di Sun, quello da 6 dischi scsi SCA (esiste il modello da 12) ... è pieno.
Ho Linux e in questo momento desidererei Solaris :)
Ma non demordo mica ... ho 6 dischi da 32 Gb e il bisogno di un volume per metterci "files artistici di futuristica visione commentanti un domani possibile", dicasi Star Trek; tanti ST!

Valuto che sarebbe bene un Raid5, meglio se ha spalmato sopra un volume e filesystem dinamici, per riorganizzare in seguito gli spazi.

Avendo a disposizione un Jbod e un HBA scsi senza RAID hardware, andrei per un Raid5 software con sopra quella che chiamerei una soft partition ... se solo avessi Solaris ... due comandi è il gioco è fatto.

SMETTILA!!

Il Software Raid di linux (mdraid) e lvm2 fanno al caso mio, quindi si comincia.
Su ogni disco fisico creo una partizione a colpi di:

# fdisk /dev/sdX

X va da a a a f.

Queste partizioni le darò in pasto a mdadm per creare il bimbo raid5, praticamente così:
#/sbin/mdadm --create --verbose /dev/md0 --level=5 \
--raid-devices=6 \
/dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 64K
mdadm: size set to 35559744K
mdadm: array /dev/md0 started.

E questo è quanto, il disco logico raid5 è fatto; la palla passa a LVM2
Si tratta di tirare dentro md0 come PV, Phisical Volume, e creare un VG, Volume Group
che lo contiene ... esso avrà un nome, il mio si chiama multipack.

#pvcreate /dev/md0
Physical volume "/dev/md0" successfully created
#vgcreate multipack /dev/md0
Volume group "multipack" successfully created

Ok, infine, dando i Pe disponibili nel VG, visualizzabili col comando vgdisplay alla riga Free PE
si crea il Logical Volume:

lvcreate -l 43407 multipack -n DATA
Logical volume "DATA" created

Ora possiamo dire di avere il nostro bel volume, eccolo in tutto il suo splendore:

lvdisplay /dev/multipack/DATA
--- Logical volume ---
LV Name /dev/multipack/DATA
VG Name multipack
LV UUID Db0D3T-2xo0-uik3-hZdk-ykd4-61X0-Y1tUXY
LV Write Access read/write
LV Status available
# open 0
LV Size 169,56 GB
Current LE 43407
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 253:0


169 Gb protetti, non male, speriamo anche funzioni come si deve;
devo dire che fin'ora, su macchine di produzione che mi sono capitate è
andato sempre tutto liscio.
Non rimane che scegliere un filesystem e crearcelo su, poi è pronto per essere montato.




martedì 17 giugno 2008

Into the Depths of Solaris Cluster

Ormai è deciso, il voucher per la cert Sun Cluster Adinistrator 3.2 con retake "aggratis" sarà mio entro il 20 giugno. 200 euro, 5 minuti di nostalgia per le partite a flipper sacrificate per pagare l'esame e poi ... si studia!

A parte questo ... Stasera viaggiavo per impervie directory con la mezza idea di cercare di sistemare alcune Did in status Fail su un cluster di produzione, quando mi addentro in /usr/cluster/lib. Effettivamente non l'avevo ancora fatto ... ci sono scripts a bizzeffe laggiù, con interprete la più classica delle shell su Solaris, miss Korn, ma anche qualche script sh:

root@prXXXXX1 # file /usr/cluster/lib/scadmin/ql/*|grep ksh
/usr/cluster/lib/scadmin/ql/data_change: executable /bin/ksh script
/usr/cluster/lib/scadmin/ql/ql_cleanup: executable /bin/ksh script
/usr/cluster/lib/scadmin/ql/ql_lu_begin: executable /bin/ksh script
/usr/cluster/lib/scadmin/ql/ql_mount: executable /bin/ksh script
/usr/cluster/lib/scadmin/ql/ql_stopapp: executable /bin/ksh script
/usr/cluster/lib/scadmin/ql/ql_upgrade_status: executable /bin/ksh script
/usr/cluster/lib/scadmin/ql/ql_util: executable /bin/ksh script
/usr/cluster/lib/scadmin/ql/replace_bootcluster: executable /bin/ksh script
/usr/cluster/lib/scadmin/ql/restore_bootcluster: executable /bin/ksh script
/usr/cluster/lib/scadmin/ql/split_mode_upgrade_begin: executable /bin/ksh script
/usr/cluster/lib/scadmin/ql/split_mode_upgrade_common: executable /bin/ksh script
/usr/cluster/lib/scadmin/ql/split_mode_upgrade_recovery: executable /bin/ksh script
/usr/cluster/lib/scadmin/ql/upgrade_partition: executable /bin/ksh script
/usr/cluster/lib/scadmin/ql/upgrade_partition_a: executable /bin/ksh script
/usr/cluster/lib/scadmin/ql/upgrade_partition_a_common: executable /bin/ksh script
/usr/cluster/lib/scadmin/ql/upgrade_partition_b: executable /bin/ksh script
/usr/cluster/lib/scadmin/ql/upgrade_partition_b_common: executable /bin/ksh script
/usr/cluster/lib/scadmin/ql/upgrade_status: executable /bin/ksh script


Mica male ... c'è molta roba seria qui in mezzo, come al solito non documentata.

E sotto /usr/cluster/lib/sc c'è anche di meglio, sebbene questa pare sia già inserita in $PATH, probabilmente dal .profile-EIS o dagli "omini" Sun per iniziativa loro o per volere della onnipotente "CheckList":

root@prXXXXXXX1 # file *|grep sh
clvxvm_impl: executable /bin/ksh script
config_ipv6: executable /bin/ksh script
dofsck: executable /bin/ksh script
ipv6_check_ccr: executable /bin/ksh script
newcleventlog: executable shell script
pmfd_debug: executable /usr/bin/sh script
print-show: ELF 32-bit MSB executable SPARC Version 1, dynamically linked, stripped
rgmd_debug: executable /usr/bin/sh script
run_reserve: executable /usr/bin/ksh script
sc_publish_event: ELF 32-bit MSB executable SPARC Version 1, dynamically linked, stripped
sc_update_hosts: executable /bin/ksh script
sc_update_ntp: executable /bin/ksh script
sc_zonescheck: executable /bin/ksh script
scquorumconfig: executable shell script
scslmthresh: ELF 32-bit MSB executable SPARC Version 1, dynamically linked, stripped
tunhb_check_ccr: executable /bin/ksh script
update_quorum_disks: executable /usr/bin/ksh script
vlan_check_ccr: executable /bin/ksh script


Tutti gli scripts hanno una descrizione nell'header, questa serata è stata molto istruttiva :)

Ah, vediamo se ho indovinato sulla provenienza di ./lib/sc in $PATH:

root@prXXXXX1 # cat /.profile-EIS |grep sc
# This file is set up by the setup-standard script.
PATH=${PATH}:/usr/cluster/bin:/usr/cluster/lib/sc


YES!!

Visite