23/11/2011

Windows cluster forcecleanup

Windows riesce sempre a sorprenderti, quando pensi di aver raggiunto una livello di esperienza professionale tale da poter dire con fare soddisfatto “ho visto sfighe che voi uomini non potete immaginare…”, ecco che in quel momento ti capita tra capo e collo un cluster Windows claudicante da riportare sulla retta via.

Personalmente non ho mai visto di buon occhio questa tecnologia, ho installato e configurato alcuni cluster active/passive su distribuzioni RedHat, ma su Windows mi ha sempre indispettito questo alone di mistero che si frappone tra utente e risorse del cluster, oppure il fatto che fosse necessario un dominio Active Directory per fare qualcosa che una banale RedHat fa con un file xml editabile con vi.

La situazione di partenza è la seguente:

  • OS Windows Server 2003 Enterprise
  • storage su SAN FC definito come risorsa di cluster
  • server disconnesso dal dominio Active Directory con indirizzi e hostname differenti rispetto alla condizione di normale funzionamento del cluster

L’obbiettivo è riportare il server ad essere un sistema stand-alone con risorse indipendenti (in particolare lo storage) dal cluster Windows.

A tal proposito Microsoft viene in soccorso con il seguente articolo; se siete fortunati vi basterà lanciare il comando che segue ottenendo il risultato sperato:

C:\>cluster node /forcecleanup
Attemping to clean up node 'clustest01' ...
Clean up successfully completed.

Tornate dal vostro manager e bullatevi di fronte ai colleghi (che ovviamente ignoreranno ogni dettaglio riguardante il problema e vi guarderanno come il tipico nerd alieno :\ )

Se invece siete sfortunati come il sottoscritto e quando attraversate la strada anche i gatti neri “si toccano” invece otterrete:

C:\>cluster node /forcecleanup
Attemping to clean up node 'clustest01' ...

System error -2147352567 has occuerred (0x80020009).
Exception occurred.

A questo punto non fatevi prendere dal panico e verificate quanto segue:

  • log del servizio di clustering nel percorso C:\WINDOWS\system32\LogFiles\Cluster
  • aprite il registro di sistema lanciando il comando regedit e verificate che il valore della chiave di registro
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Currentversion\Cluster Server\ClusterInstallationState sia settato a ‘2’
    Nel caso non lo fosse modificatela in modo che abbia quel valore, riavviate e riprovate a lanciare il comando di forcecleanup

Nel caso in cui la modifica della chiave di registro ClusterInstallationState non abbia sortito gli effetti sperati non vi resta che passare alla soluzione radicale…
NO FERMI! Lasciate stare il cd di installazione! Reinstallare il sistema operativo per un problema ad un servizio è da noob :)

Procedete in questo modo:

  1. utilizzando regedit effettuate il backup delle chiavi di registro:
    – HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ClusNet
    – HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ClusSvc
    – HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ClusDisk\Parameters
    – HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ClusDisk\Enum
  2. backup dei file/directory:
    – C:\WINDOWS\Cluster\MSCS\
    – C:\WINDOWS\Cluster\CLUSDB
  3. utilizzando regedit cancellare le chiavi di registro indicate al punto 1 e i file/directory indicati al punto 2
  4. modificate la chiave di registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Currentversion\Cluster Server\ClusterInstallationState settando il valore a ‘1’
  5. riavviate il sistema operativo
  6. rilanciate il comando “cluster node /forcecleanup”, ora l’esecuzione dovrebbe essere andata a buon fine e le risorse di storage dovrebbero essere tornate accessibili come lun indipendenti.
  7. YEPPA!

22/11/2011

Esportare log.nsf in formato testo

Come qualunque sistemista potrà confermarvi i log sono l’essenza stessa di questo lavoro.
Il log sono la fonte di conoscenza suprema, sono la chiave di volta del processo di problem solving, i log sono la luce in fondo al tunnel :)

Lotus Domino di default ha il brutto vizio di scrivere i log in un database (solitamente log.nsf) ruotando i log stessi in differenti documenti, un sistema che per certi versi può risultare comodo e funzionale, per altri una fonte inesauribile di mal di testa e maledizioni.
Esistono apposite opzioni per far loggare il servizio in append ad un file di testo su filesystem, nella vita però si sa che “la fortuna è cieca ma la sfiga vede anche i raggi gamma” (cit) e non sempre è possibile modificare la configurazione per abilitare queste features.

Per chi dovesse trovarsi in questa situazione segnalo un semplice agente Lotuscript in grado di esportare in un file di testo (c:\temp\out.txt) il body dei documenti selezionati da una vista del database log.nsf

Sub Initialize
    Dim session As NotesSession
    Dim db As NotesDatabase
    Dim dc As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim stream As NotesStream

    Set session = New NotesSession
    Set db = session.CurrentDatabase
    Set dc = db.UnprocessedDocuments
    Set doc = dc.GetFirstDocument

    Set outStream = session.CreateStream
    If Not outStream.Open("c:\temp\out.txt", "binary") Then
        Messagebox outPath,, "Open failed"
        Exit Sub
    End If
    If outStream.Bytes <> 0 Then
        Messagebox outPath,, "File exists and has content"
        Exit Sub
    End If

    While Not(doc Is Nothing)
        Forall voce In doc.EventList
            Call outStream.WriteText(voce )
            Call outStream.WriteText(Chr(13) & Chr(10))
        End Forall

        Set doc = dc.GetNextDocument(doc)
    Wend
End Sub

Come qualunque sistemista potrà confermarvi, i log sono l’essenza stessa di questo lavoro.
Il log sono la fonte di conoscenza suprema, sono la chiave di volta del processo di problem solving, i log sono la luce in fondo al tunnel :)

Lotus Domino di default ha il brutto vizio di scrivere i log in un database (solitamente log.nsf) ruotando i log stessi in differenti documenti, un sistema che per certi versi può risultare comodo e funzionale, per altri una fonte inesauribile di mal di testa e maledizioni.
Domino prevede apposite opzioni per far loggare il servizio in append ad un file di testo su filesystem, purtroppo però non sempre è possibile modificare la configurazione per abilitare queste features.

Per chi dovesse trovarsi in questa situazione segnalo un semplice agente Lotuscript in grado di esportare in un file di testo (c:\temp\out.txt) il body dei documenti selezionati da una vista del database log.nsf

15/10/2011

Lotus Notes ReCon widget

Segnalo un ottimo widget per Lotus Notes 8.x che sicuramente farà la felicità di quanti si trovano ad amministrare dei server Lotus Domino.

Il plugin si chiama ReCon (qui trovate la homepage del progetto) e fornisce una pratica quick console da utilizzare per inviare comandi ad un server Lotus Domino senza dover scomodare il client Lotus Administrator.
Chiaramente per poter amministrare seriamente un server  Domino occorre ricorrere al suddetto client, ma per lanciare un veloce check sullo stato di un server, l’update istantaneo di un task, una replica volante o qualsiasi altro comando ReCon risulta essere un tool estremamente utile.

Lo consiglio caldamente soprattutto a quanti utilizzano Lotus Notes su sistemi operativi (es Linux o MacOS) per i quali non è disponibile il client Administrator.

03/01/2011

Foobar2000 context menù

Non ho mai sopportato Windows Media Player, l’ho sempre trovato pesante, invasivo, lento, impacciato nella gestione dei codec e soprattutto estremamente instabile.

Una volta la soluzione migliore per chi fosse alla ricerca di un player multimediale audio era semplice, bastava scaricarsi WinAMP e il problema era risolto…
Da quanto però quei geni della Nullsoft si sono messi in testa di trasformare il loro piccolo, leggero e comodo software in un “polpettone inutile e macchinoso”, ho dovuto cercare un’alternativa che incarnasse lo spirito del vecchio WinAMP.

Non so voi ma io ho trovato la pace dei sensi (almeno su questo…) con Foobar2000, dal passaggio da Windows XP a Windows 7 però ho avuto qualche difficoltà dovuta alla sparizione di alcune comode features di integrazione tra il software in questione e il sistema operativo.
In particolare mi ha infastidito la sparizione della voce “Enqueue to foobar2000” dal menù contestuale di un file mp3.

Se avete avuto lo stesso problema eccovi un paio di dritte per porre rimedio.
Ecco come si presenta il menù contestuale “infettato” da Windows Media Player

Per risolvere il problema aprite il Pannello di Controllo –> Programmi predefiniti e cliccate sulla voce di menù “Impostazioni accesso ai programmi”

Nella finestra che segue cliccate sulla voce “Personalizzate”, vi si aprirà un menù che dovete scorrere fino ad arrivare alla voce “Scegliere il lettore multimediale predefinito”.
A questo punto non vi resta che deselezionare la checkbox “Abilita accesso al programma” relativa a Windows Media Player

Dopo aver dato l’ok finalmente potrete godere della tanto agognata voce di menù di Foobar2000 :)

17/08/2010

lftp

Uno dei tool che mi ha molto aiutato durante la recente migrazione al nuovo provider è stato lftp.

Apparentemente si tratta dell’ennesimo client ftp, niente di nuovo sotto al sole quindi…
In realtà lftp nasconde una serie di features che non rappresentano certo una novità o non rivoluzionano certo il protocollo, ma che risolvono alcuni piccoli e grandi problemi che possono presentarsi durante un trasferimento ftp massivo.

Sappiamo tutti infatti che con una GET ftp è possibile scaricare una intera directory e tutto il suo contenuto, mentre con un banale PUT possiamo uplodare in remoto una directory e l’intero contenuto.
Ma quante volte vi è capitato che questa operazione filasse liscia con una grande quantità di file e directory?
A me francamente davvero poche, capita la classica disconnessione e a quel punto occorre la sfera di cristallo per sapere a che punto occorre riprendere il download o l’upload :(

Con lftp il problema è risolto alla radice utilizzando l’opzione “mirror”, in questo modo sarà lftp a spazzolarsi la directory di origine e quella di destinazione per allineare perfettamente il contenuto, trasferendo i file mancanti o differenti dall’originale, insomma quasi una sorta di rsync via ftp.
Questa ad esempio è la sintassi che ho utilizzato per scaricare completamente il sito dal vecchio provider:
lftp -u username,password -e "mirror --delete --only-newer --verbose path/to/source_directory path/to/target_directory" ftpsite

Mentre invece per uplodare il sito sul server ftp del nuovo provider ho dovuto semplicemente aggiungere l’opzione “reverse”:
lftp -u username,password -e "mirror --reverse --delete --only-newer --verbose path/to/source_directory path/to/target_directory" ftpsite

Altra funzione molto comoda è quella che permette di effettuare il chmod ricorsivo, ovvero un cambio di permessi su una directory applicato anche a tutti i file e directory in essa inclusa.
Anche questa può sembrare una banalità, ma utilizzando uno dei tanti sistemi di content management php capita non di rado di effettuare una operazione simile, e spazzolarsi decine e decine (per non dire centinaia) di file e directory non è una cosa ne piacevole ne stimolante.

Fatene buon uso ;)

« Post precedenti | Post successivi »