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!!

mercoledì 11 giugno 2008

Debian: voglio sempre lo stesso kernel!

Stasera cercavo di far smettere ad apt di continuare a propormi l'ennesimo update del kernel.
Questo per ovviare al "piccolo inconveniente" di dover aggiornare qualcosa come 10 revisions in 10 giorni ... un bit esagerato, trovo.

Il mio amico Norsys mi punta a una guida su Debianizzati.org, la cosa è semplice quanto interessante.

dpkg --get-selections > selections.txt

Questo mi genera un file di testo contenente la lista dei pacchetti e l'azione da intraprendere in caso di update.

Esse possono essere: install, deinstall, hold.

Ciò di cui ho bisogno è di mettere in hold l'attuale kernel contenuto nel pacchetto linux-image-2.6.24-16-386 e i suoi amichetti tipo restricted-modules ecc. Metto il tag hold, et voilà.

E' necessario reimportare le selezioni

dpkg --set-selections < selections.txt

A questo punto la presenza della revision 19 dell'immagine del kernel in un apt-get update è
censurata con grande happiness del sottoscritto.
C'è da considerare che, come anche indicato nella guida, questa scelta potrebbe inibire
l'update di altri pacchetti che dipendono da un linux-image più recente, ma questo era già stato
messo in conto e quindi è da consigliare un aggiornamento di tanto in tanto.

martedì 27 maggio 2008

Solaris Zones multigusto

Tempo fa vengo a conoscenza di una novità riguardante le zone; oltre all'interessante introduzione del brand Linux, arrivano i containers Solaris 8.

Beh, Sun ha ben pubblicizzato la cosa, ed effettivamente più di una volta avevo pensato a quanto sarebbe stato interessante poter implementare un vecchio server Sol8 in una zona su 10. C'è Etude come strumento per passare dalla teoria alla pratica, e permettere la migrazione "indolore" (forse! Leggi: questo è ancora da vedere), di un vecchio server 8 a una zona anche a un profano di Solaris.

Son stato da clienti, non troppo tempo fa, a fare migrazioni di Db servers Oracle da Solaris 8 a 9, che sembrerà anche surreale, ma non lo è, e spesso la motivazione è la paura che l'applicativo di turno non funzioni, o non sia certificato o supportato dal fornitore "ignorante".

Quello che, invece, io ignoravo, era la possibilità di creare containers Solaris 9, cosa che tra l'altro mi ero chiesto se fosse possibile ogni qualvolta mi capitava di pensare o menzionare a Etude e zone Solaris 8.

Bene, si può. Solo su SPARC, questo è quasi ovvio, e del resto non credo sia nemmeno prevista l'implementazione di zone Solaris 8 e 9 x86 su queste "scrondiche releases", sia perchè effettivamente è meglio dimenticare che sono esistite e considerare Solaris x86 come nato con la release 10, sia perchè da un punto di vista puramente commerciale la base utenti credo sia abbastanza contenuta.

E' invece interessante, per l'architettura x86, seguire l'evoluzione dei BrandZ Linux e di xVM aka Xen.

Stiamo Tuned

domenica 18 maggio 2008

lofs delirium

Un amico mi chiama sottoponendomi un problema che sta avendo.
Riguarda un'immagine iso montata sotto Solaris, che non si comporta come dovrebbe o ... come lui vorrebbe.
Dice di aver creato il lofs con lofiadm e di averlo montato con successo. Al momento di accedere al mountpoint, però, riceve un:

cd /mnt2
-bash: cd: /mnt2: Not a directory

mmh.
Allora si parte con le domande di rito:
Fai un ls -la di /mnt2:
ls -la /mnt2
brw------- 1 root sys 144, 1 mag 18 21:19 /mnt2

Mmmhh, un block device file. Qualcosa non quadra. Sarebbe necessario capire cosa ha fatto durante la procedura di creazione del loFS e del successivo mount.

Niente history... ma dopo qualche smanettamento infruttuoso m'illumino:
Smonto il filesystem e distruggo il device file; notando che /mnt2 non è una directory ma un device file, sono convinto che abbia montato il device specificando a mount non che si tratta di un'immagine iso, ma appunto di un lofs ... che si può assimilare a distrazione o più probabilmente al fatto di conoscere la procedura, essersi distratto e non aver ben capito cosa si stia facendo. Quindi mount l'ha montato come quello che è, ragionando correttamente (almeno lui).

Ora da vuoto, rifaccio tutto:
creo il device con lofiadm, /dev/lofi/1 , poi creo la dir /mnt2, e lo monto:
mount -F hsfs /dev/lofi/1 /mnt2

df -h|grep lofi
/dev/lofi/1 450M 450M 0K 100% /mnt2

cd /mnt2
ls
sparc worm x64

Perfetto. Funziona.
Il problema è riproducibile, dopo aver creato il lofs desiderato, montandolo cosi:

mount -F lofs /dev/lofi/1 /mnt2

e verificando che /mnt2 è un block device file e non il mountpoint sotto il quale si voleva montare la iso.
Distrazione o errato ragionamento.
Morale;
Montando un loFS, bisogna specificare il tipo di FS al quale esso fa riferimento, e non definendolo come loFS, quando si usa l'opzione -F di mount.

lunedì 25 febbraio 2008

Acrobat e Ubuntu

Promemoria per l'Ubuntu sul Desktop casalingo sharato con la mia compagna!

Ubuntu non ha acrobat reader nelle repositories, nemmeno in quelle meno restrittive.

E allora googlare "medibuntu" e la soluzione per averlo via apt-get e avere a disposizione le updates è a portata di mano ... assieme a tanto altro software non incluso per beghe legali nelle altre repos

martedì 19 febbraio 2008

Struttura lo script, Debugga lo script

Pare banale saperlo, ma ci sono volte in cui diventa di fondamentale importanza per sistemare uno script usare gli strumenti giusti.

Ad esempio quando lo script ha dimensioni medio-grandi e gli errori non balzano subito all'occhio.

A me capita di scrivere i miei scripts bash ( si, uso bash, nessuno è perfetto, ed è una delle cose che mi porto dietro da Linux e che non ho mai corretto con un po di sana Korn o C shell, vabbè) di getto, dopo aver gettato una base un minimo strutturata, fondamentale perchè lo script abbia senso e magari sia customizzabile/espandibile in futuro, tiro giù il codice di botto senza preoccuparmi di testare riga per riga e facendo un sacco di errori di sintassi. Questo mi permette di concentrarmi sulla forma e struttura, e di renderlo "usabile successivamente, a lavoro finito. Stare attento a sintassi e piccolezze mi distrae e mi fa perdere l'attenzione allo scrivere qualcosa di davvero funzionale.

Poi viene la correzione assieme al test. E gli errori sintattici non si contano, in genere dimentico i ; o le $ davanti alle variabili, do nomi assurdi alle stesse variabili o cicco per l'ennesima volta la struttura dei cicli, in ultimo dimentico i fi alla fine degli if/else, per non parlare di parentesi o apici.

Una cosa molto utile in questi casi è l'uso delle opzioni di bash -xv direttamente al prompt con un:
# bash -xv script.sh

oppure all'interno dello script passandolo alla dichiarazione della shell in prima riga:
#!/usr/bin/bash -xv

Il risultato è a dir poco eclatante.

Scelte

Cosa fai quando devi scegliere tra due possibilità di tipo lavorativo e sei costretto a comportarti non troppo bene con l'azienda che ha fatto l'offerta più debole in termini economici, e/o di qualità del lavoro, magari aspettando di firmare da una parte e rifiutando la seconda scelta all'ultimo momento?

Eh? Cosa fai?

Non era una domanda ...
E' semplice retorica. Quello che nell'occasione precedente, poco tempo fa, ha fatto l'azienda di turno con te ...

UPDATE 23/02/2008

Sono giorni di cambio questi,dove mi accingo, tra mille peripezie e slittamenti nelle date, a spostarmi da quel di Trento alla volta di Milano ... nientemeno.

Sono abbastanza contento della scelta, e di alternative vagliabili ne ho avute diverse. Di offerte di lavoro in ambito *nix, nello specifico Solaris, ce ne sono sempre, addirittura nella mia "poco informatica" città natale, dove l'influenza Fiat deve aver inceppato i cervelli, cosicchè un sistemista, pagato in teoria per le sue competenze (che non bastano mai e sono in continuo movimento) e la responsabilità di tenere in piedi con un uptime più che accettabile sistemi, che magari sono vitali per l'esistenza dell'azienda stessa, viene "acquistato" allo stesso costo di un operaio fresco di terza media;
se non altro l'operaio ha i suoi bei benefit e un contratto degno di essere così chiamato (detto fra noi un mio caro amico con la terza media fa l'idraulico/tubista e guadagna un sacco di soldi alla faccia mia).

E mi son sentito dire che la centralinista guadagna la metà di me sistemista, quindi dare di più a me sarebbe farle un torto assimilabile a una ingiustizia piuttosto grave... centralinista, sistemista, scienziati e postini, praticamente la stessa cosa, ma allora che passo a fare la vita lontano da casa e le serate a smazzarmi manuali tecnici?

lunedì 18 febbraio 2008

Solaris Performance and Tuning

In questi giorni sono alle prese con una Student Guide che mi ha letteralmente stregato. Di conseguenza, delle 700 pagine che la compongono ne ho già divorate una buona metà. Si tratta della "Solaris System Performance Management", codice SA-400 del 1999 rev B, ancora esistente in una probabile ultima revisione per gli studenti del corso omonimo.


Pensavo di finire questo tomo e poi finalmente passare al "ripassone" per certificarmi Sun Cluster 3.2 Administrator, certificazione che bramo da tempo e per la quale nutro un grande interesse dandogli forma di sfida che vinta, sarebbe una soddisfazione personale non da poco ... e chissà che gioia la mia martoriata autostima, schiava di un signore che non è mai contento dei risultati che raggiunge e pensa sempre che avrebbe potuto fare meglio.

La suddetta Guide è piuttosto datata, tipo 1999, ma il suo contenuto è per la maggior parte sempre attuale; inoltre, essendo le mie conoscenze su Solaris, completamente frutto di autoformazione, il materiale come questo è sempre un ottimo metodo per fare ordine nella testa e affinare argomenti che magari si sono appresi solo in parte per esperienza diretta.

Altra cosa interessante è andare a cercare riferimenti a comandi, settings, opzioni, files di configurazione e tecnologie incorporate e attualizzarle alla release 10 di Solaris che non esisteva al tempo.

Ho trovato tra questa guida e il libro Solaris Performance and Tools - DTrace and MDB Techniques for Solaris 10 and OpenSolaris, molte similitudini nelle argomentazioni.

Ah, naturalmente se avete a portata di mano una versione aggiornata della SA-400 Student Guide sarebbe un'ottimo regalo di compleanno per chiunque dei vostri amici ... e perchè no ... per me

lunedì 11 febbraio 2008

VPN e Desktop remoto; lusso!!

Con la capacità di banda delle connessioni, al giorno d'oggi ci si può "scialare" e offrirsi qualche lusso quando necessario.
Tipo una sessione X remota dalla macchina linux di casa alla workstation Solaris in ufficio?
VPN, rdesktop e magari tsclient sono ciò di cui si ha bisogno.
Per la vpn uso quasi esclusivamente vpnc che funziona egregiamente su qualsiasi sistema operativo; o almeno, io lo uso con successo su diversi flavours di Linux, FreeBSD 8, Solaris 10 e Solaris Express, sebbene questi ultimi due hanno necessitato di qualche ora di scervellamento.
xdmpc e tsclient sono anch'essi disponibili ovunque e laddove non è possibile averli, installare un server vnc è decente alternativa; la cosa carina di tsclient è che offre una gestione centralizzata con possibilità di salvare i profili per le connessioni desktop remoto coi protocolli xdmpc, vnc, rdp, rdp5.

Ultimamente, nei giorni in cui "telelavoro" da casa via vpn Trento-Torino, farcito di Alice 20 Mbit, produco egregiamente, fermandomi solo per pensare quanto il telelavoro in Italia sia un sogno per pochi, e quanti benefici darebbe utilizzarlo.

mercoledì 6 febbraio 2008

I tar, You tar , He ...

Da SunManagers (febbraio 2008) Thread Tar question Solaris 9
1. Never archive/backup (tar, cpio) anything by absolute path!
Always 'cd' and use the relative path. Example: you want to
backup /var you should do;
cd /
tar cvf /opt/NOME.tar ./var/* # Notice it is DOT-/var
This will give you an /opt/NOME.tar which you can extract from
anywhere. If you wanted to restore to your REAL /var, you use the
same method as above:
cd /
tar xvf /opt/NOME.tar
Which will extract to 'var' which is relative to / (here).
Of course, you can also:
cd /tmp
tar xvf /opt/NOME.tar
and extract to /tmp/var/...

2. I always prefer to use GNU tar (gtar) to create/extract tarballs.
(On my Solaris9 systems it is: /usr/sfw/bin/gtar)
By default, GNU tar will convert absolute paths to relative paths
(changes leading '/' to './'). gtar is probably not available in
boot -s environment where you have system mounted under /a;
however, IIRC tarballs created with gtar will extract with plain
old tar. You might experiment to verify that it works for you.

Hope this helps.
Hi,
Try this;

cd /var
tar clf - * | (cd /a; tar xpf -)

Visite