Search This Blog

30/08/2010

Gtdroid, an android nozbe client released


Today I released the first beta version of Gtdroid my nozbe client. It took me around 100 hours of work.
YESSS!!!!

and

27/03/2010

i Vmware tools bloccano l'udp su ubuntu 7,1

Installando i vmware-tools  (U5) su un sistema ubunto 7.1 mi sono ritrovato con l'impossibilità di inviare e ricevere pacchetti udp tramite scheda di rete.

Per risolvere rimuovete i vmware tools e rinominate il file /boot/initramfs*.bak in /boot/initramfs*

Insert e delete e la generazione di redolog


I DELETE generano MOLTI piu redo log degli INSERT

Blocchi filesystem e Blocchi oracle

Ogni configurazione dove i blocchi FS sono più piccoli o uguali è valida.

Perche esiste sempre almeno un rollback segment

Oggi i rollback segment sono obsoleti, sostituiti dall'undo automatico. Ma in ogni database creato con dbca si trova un rollback segment. E' quello usato per la creazione del DB.
Conservatelo come souvenir

A bientot

ruoli resource e connect in oracle


Oracle 10gR2 (decente):
  CONNECT role has only CREATE SESSION


  RESOURCE has CREATE CLUSTER, CREATE INDEXTYPE, CREATE OPERATOR, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TABLE, CREATE TRIGGER and CREATE TYPE


Oracle 9iR2 (un po troppi permessi per connect):
  CONNECT has ALTER SESSION, CREATE CLUSTER, CREATE DATABASE LINK, CREATE SEQUENCE, CREATE SESSION, CREATE SYNONYM, CREATE TABLE and CREATE VIEW. Rather a scary lot for a role called ‘connect’
  
  RESOURCE has CREATE CLUSTER, CREATE INDEXTYPE, CREATE OPERATOR, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TABLE, CREATE TRIGGER and CREATE TYPE

L'opzione admin vi permette di dare questi privileggi ad altri

Query per avere i privileggi di connect:
select grantee, privilege, admin_option from dba_sys_privs where grantee='CONNECT';


rif: http://www.lifeaftercoffee.com/2005/08/29/oracle-connect-and-resource-roles/

Vmware DRS/HA si lamenta che un console non è ridondata

Fare un reconfigure for HA dopo aver accertato la presenza di 2 nic di uplink per la sc

Scompattare i file msi



msiexec /a test.msi /qb TARGETDIR=c:\tmp 


scompatta il file test.msi nella cartella c:\tmp

21/01/2010

Ruolo Oracle per chi deve gestire i propri oggetti


CREATE ROLE schema;
GRANT CREATE CLUSTER, CREATE DIMENSION, CREATE INDEXTYPE,
              CREATE PROCEDURE, CREATE ROLE, CREATE SEQUENCE, CREATE SNAPSHOT,
              CREATE SYNONYM, CREATE TABLE, CREATE TRIGGER, CREATE TYPE,
              CREATE VIEW
        TO schema;


questo ruolo è utile per gli sviluppatori che hanno necessità di crearsi le proprie tabelle e altro nel proprio schema

10/01/2010

Introduzione ai webserver

Questo articolo è disponibile su  doc.coblan.it

Un webserver è in realtà un http server, quindi un software capace di gestire il protoccolo http.

Http e HTML

Tutti conosciamo il web o www, oggi è diventato normale “navigare” sul web, visitare siti, crearli, partecipare alle varie comunità. Tutto questo si appoggia su vari componenti:

  • Il browser o navigatore, i più noti sonohttps://doc.coblan.it/doku.php?id=httpd:introduzione_ai_webserver Internet Explorer, Firefox, Safari, Opera, Chrome e altri


  • Il linguaggio HTML che permette di scrivere le pagine web. L'html viene poi interpretato e presentato tramite il browser


  • Il protocollo HTTP che permette la richiesta di una pagina web, il passaggio di parametri e la risposta con il contenuto -HTML- della pagina stessa


  • Il webserver che a partire da una richiesta HTTP emessa da un browser costruisce la pagina web, magari con strumenti esterni - php, perl, java e altri - e la invia al richiedente




Rete

Dal punto di vista della rete l'http usa il protocollo TCP sulla porta 80. Quindi quando sul browser si digita un indirizzo viene sotto inteso che la porta di destinazione è la 80 o la 443 per http o https

Lavoro di un webserver

Volendo riassumere al massimo un web server è un software che riceve una richiesta tramite un URL e deve trovare il file che gli corrisponde.
Es. quando si scrive https://doc.coblan.it/test.html nel browser la richiesta viene inviata al webserver responsabile di “doc.coblan.it”. Questo webserver estrapola un percorso su i propri dischi - per esempio /var/www/doc.coblan.it/test.html - e restituisce quel file che deve contenere un formato riconosciuto dal browser - html, gif, jpg, png, js, css….



In alcuni casi particolari prima di ripartire verso il browser il file recuperato deve essere ulteriormente elaborato, solitamente da un programma o libreria esterna che genera il contenuto html necessario al browser.



VxVM

Questo articolo e molti altri su https://doc.coblan.it/

Introduzione

Per capire i comandi di VxVM è necessario avere ben chiaro come questi è organizzato internamente. In particolare è necessario capire tutti i livelli di astrazione che esistono tra il disco fisico e il volume che presenta VxVM per la formattazione.

Il tutorial si basa su Solaris che è la piattaforma con la quale uso VxVM.

Disk group

Un disk group è l'entita logica di più alto livello di VxVM. Tutti i plex, sub-disk, dischi media di un volume DEVONO appartenere allo stesso disk group. E' possibile fare un unico disk group per tutti i dischi, suddividerlo per applicazione - oracledg, tomcatdg, webdg - per settore aziendale - marketing-dg, produzione-dg - o qualunque altra forma preferiate.
Il disk group diventa molto importante per gli ambienti cluster. Lo switch dello storage con VxVM si fa a livello di Disk group. Esempio: se ho 3 Oracle in cluster su 2 sistemi e voglio poter fare lo switch delle singole instanze allora devo avere un disk group per istanza oracle.

Volume

Un volume è uno spazio di storage che possiamo formattare come faremmo con un disco normale. La differenza è che invece di essere presentato sotto /dev/dsk si trova sotto /dev/vx e i nomi sotto /dev/vx sono meno criptici di quelli di /dev/dsk.
Avendo a disposizione un volume solitamente lo si formatta e poi se ne fa il mount. Il bello di VxVM è che i dati possono essere duplicati per protezione, messi in RAID-0 per avere migliori prestazioni o mischiare entrambi. Lo spazio disponibile sul volume può aumentare quando se ne presenta la necessità ( può anche diminuire ma solo in casi particolari).
In riassunto: un volume è visto come un disco che può cambiare le sue caratteristiche di spazio, affidabilità e prestazioni su richiesta.

Plex

  • I volumi sono fatti da uno o più plex
  • Ogni ha dello spazio disco a disposizione
  • Ogni plex contiene una copia dei dati del volume
  • Ogni plex contiene una copia dei dati del volume (chiaro ?)
  • Ogni plex contiene una copia dei dati del volume (ora dovrebbe essere chiaro)
Quindi se ho più di un plex avrò più copie dei miei dati quindi una maggiore affidabilità. In caso di problemi ad un plex gli altri permetteranno al volume di funzionare è quello che si chiama RAID-1.


L'aspetto negativo è che per un volume di 100 GB con 2 plex occupo 200GB, 100GB per il primo e 100GB per il secondo. Occupo il doppio dello spazio ma ho più sicurezza per i miei dati, diciamo un backup automatico cosi l'indomani sostituisco il disco guasto e VxVM lo riempie con i dati presi dagli altri plex.
Riassunto: i plex mi permettono di avere più copie dei miei dati, in caso di problema a una copia le altre permeteranno al volume di non risentirne troppo

Subdisk

Un volume è fatto di plex che sono copie dei dati del volume e un plex è fatto di subdisks.
Un subdisk è come una partizione è una sotto parte di un disco. Un disco da 500GB può per esempio essere suddiviso in
  • un sub-disk da 500 GB
  • 2 sd da 250 GB
  • 1 sd da 200 GB 1 100GB 2 da 50GB 4 da 25GB
  • come meglio credete
Se al livello dei plex si parlava di duplicare i dati qui invece possiamo usare più sub-disk ogniuno su un disco fisico e farli vedere come un unico insieme di dati.

Quindi ho piu subdisk che ragruppati insieme diventano un plex ma come vengono aggregati? Posso scegliere tra le seguenti possibilità:
  • stripping: scrivo un po su un sub-disk poi su un altro e cosi via per tutti i sub-disk disponibili
  • concatenazione: scrivo tutto su un unico sub-disk poi quando è pieno passo al successivo.
  • stripping + concatenazione: 
  • Raid-5: che è un caso un po particolare e complicato

Disk media

VxVm per poter gestire i livelli superiori deve salvare su ogni disco fisico un certo numero di informazioni, queste informazioni - detti metadati - permettono a VxVM di gestire le configurazioni richieste anche con centinaia o migliaia di dischi.
Quindi la differenza tra un disco fisico e un Disk media sta tutta nel partizionamento che fa VxVM del disco, definendo una zona privata e una zona publica. Con il partizionamento e il riempimento della zona privata un disco passa sotto il controllo di VxVM e non è più utilizzabile da altri sistemi - a meno di un nuovo label e/o ripartizionamento -

Privata

La zona privata, è una partizione del disco dove VxVM salva tutti i metadati legati al disco e al suo disk-group. Ogni disco di un disk-group con una partizione privata attiva contiene la configurazione dell'insieme. Questa parte privata è stata per molto tempo di 1MB ed è passata con la versione 5.0 a 32MB per la gestione delle nuove funzionalità del prodotto - snapshot, DCO 20 … -

Publica

E' lo spazio del disco meno la parte privata. La parte publica conterrà i dati ed è la parte suddivisa in sub-disk

05/01/2010

Wiki documentale

Ciao e buon anno

Ho create un wiki ( http://doc.coblan.it/ ) per documentare le varie cose che si scoprono leggendo o lavorando come sistemista.

Al momento gli articoli sono pochissimi ma dovrei aggiungere un po di dati regolarmente

E' possibile mandarmi un articolo per il wiki

A bientot

23/12/2009

Password di dblink in chiaro

 Se chiedete a Sqldeveloper di generare il ddl di un dblink lui includerà la password in chiaro.
:-)

Cosa implica mettere un nuovo servizio

Vediamo un po cosa bisogna fare - in un mondo perfetto - per ogni servizio e/o applicativo aggiunto al sistema
  1. Script di avvio e spegnimento eventualmente automatico
  2. Backup/Restore
  3. Monitoring del servizio (controllo)
  4. Studiare la qualità di servizio
  5. Tuning
  6. Documentazione
Script di avvio/spegnimento ...
Per ogni servizio deve esserci uno script che ne permetta l'avvio o lo spegnimento del servizio controllando eventuali dipendenze.
Su sistemi Solaris 10+ questo richiede - se non esistente - la definizione di un servizio smf (method e manifest)

 

Backup/Restore
  Per ogni servizio è necessario avere un backup e una procedura di restore documentata ( vedi la parte documentazione). 
  I dati fondamentali di un'applicazione sono in linea generale due:
  1. I binari dell'applicazione stessa
  2. I dati specifici a questa installazione
Il primo punto non è fondamentale a patto che sia semplice re-installare l'applicazione stessa. Se dovesse essere necessario fare il backup dell'applicativo questa andrà ripetuta ad ogni upgrade di applicativo ma senza necessità di definire cadenze " regolari"
Il secondo punto è quello che vogliamo assolutamente salvare, stiamo parlando della configurazione e dei dati. Nel caso di un database sono le configurazioni  i dati esportati dal DB, per un webserver parliamo della configurazione e dei vari siti ad esso collegati.


E' FONDAMENTALE testare il ripristino anche su un altra macchina per essere certi di aver salvato tutto il necessario e avere una documentazione che al momento opportuno - solitamente con utenti e capi "alterati - si rivelera una mano santa.


Monitor (controllo) 
Serve avere un sistema che controllli il servizio per avvisare in caso di "down". Questo monitoring può esssere estremamente semplice come un controllo sul processo, una porta tcp con l'invio di una mail in caso di problema. Può anche essere più elaborato con snmp o altro.

Un classico esempio di test per un'applicativo web è di creare una pagina dinamica che esegue una query sul database e resituisce OK o KO in questo modo  si fa il test del webserver, sito, linguaggio usato e accesso alla base dati.
 
Qualità
 Tanti applicativi permettono di estrarre delle informazioni sulle prestazioni di un applicativo o in alternativa è possibile creare uno script che fa un test standard, misurando il tempo di esecuzione del test si può avere un idea dello stato dell'applicativo. Su Unix è possibile usare il comando time.

Raccomando di graficare queste performances tramite un programma come cacti o altro ( uso opennms).



Tuning
A seguito dell'analisi della qualità si può pensare di fare il tuning dell'applicativo, migliorare le capacità o la velocità di elaborazione del servizio. Questo aspetto è spesso complicato e va documentato sempre.


Documentazione
La documentazione che nessuno ama scrivere ma che tutti vorrebbero. Per semplificare vi consiglio di fare un wiki con:
una pagina per ogni server che contiene i dati di asset:
  • acquisto
  • garanzie
  • contratti
  • responsabile
  • luogo
  • Personalmente uso gli asset di opennms per questa parte, eventualmente potete generare dei report estraendo i dati dal postgreSQL di opennms. 

un run book per ogni modello hw e software. I miei runbook sono suddivisi nei seguenti capitoli ( vedi runbook example
  • Common operations:  link alle attività standard
  • Setup info:  Come creare un nuovo sistema o capire quello corrente
  • startup/shutdown: Come avviare e spegnere
  • Management tools: Strumenti per gestire
  • Administrative procedures: Come fare le cose standard
  • Maintenance procedures: Cosa fare a intervalli regolari o quando si richiede un aggiornamento
  • Information procedures: Come avere info sulla situazione corrente
  • Backup/Recovery: Procedure di backup e restore
  • Troubleshooting: Come individuare - e forse risolvere - un problema
  • Documentation: Link alla documentazione ufficiale e non del prodotto

Versione 0.9 da rileggere

22/12/2009

File tnsnames controllati per risolvere | Tnsnames checked for lookup

  # $TNS_ADMIN/tnsnames.ora
  # $HOME/tnsnames.ora
  # /var/opt/oracle/tnsnames.ora
  # /etc/tnsnames.ora
  # $ORACLE_HOME/network/admin/tnsnames.ora

1016762.102

19/12/2009

Chi è sd0 ? | who is sd0

Solaris ha vari nomi per i dischi a seconda che sia il kernel o altro a presentarli.
Ogni tanto si riceve un messaggio del tipo: sd0 is 100% full. Ma chi è sd0 per i  comuni mortali ?

Un trucco trovato online è




iostat -x | \
/usr/xpg4/bin/tail -n +3 | \
awk '{print $1}'>/tmp/f0.txt.$$ 
iostat -nx | \
/usr/xpg4/bin/tail -n +3 | \
awk '{print "/dev/dsk/"$11}'>/tmp/f1.txt.$$ 
paste -d= /tmp/f[01].txt.$$ 
rm /tmp/f[01].txt.$$
 
NB: 
 sd0 è un "instance name" 
cxtydz è un "device name" 

14/12/2009

ssd_max_throttle e ssd:ssd_io_time

Salve, oggi parliamo di I/O e in particolare del parametro ssd_max_throttle di Solaris.

Il controller collegato ai dischi fisici solitamente ha una cache - protetta o non - e una coda massima di comandi che è capace di gestire tramite una coda. Questa dimensione di coda ( solitamente chiamato scsi commands queue) varia molto da controller a controller quindi l'unico modo di conoscerlo è di cercare nella documentazione.

Quindi riassumendo, un applicativo richiede un IO, questo IO viene preso in carico dai vari livelli di LVM e file system (LVM, VxVM, ZFS ... ) che lo mandato ai driver, dal driver al controller fisico che lo mette in coda. Successivamente il controller manda le istruzioni ai dischi. Se queste attività non vengono eseguite in allora si ha un errore di IO


Ogni LUN considera che la coda del controller è di quindi per calcolare l'ipotetico valore di ssd_max_throttle si usa la seguente formula: 
MAX_QUEUE_CONTROLLER / NUMERO_DI_LUN il risultato va arrotondato al multiplo di 8 piu  vicino e mai sotto 8. (vedi sotto)

Se ho un controller con una queue da 512 e ho 50 LUN il numero è 10,24 arrotondato a 8 o16. Metto anche 16 perche la situazione calcolata è la peggiore: quella in cui ogni lun cerca di fare tutti gli I/O possibili. Questo caso estremo è utile per avere un numero di base ma va poi pensato con l'effettivo carico di I/O esistente.


Per vedere i limiti imposti basta guardare la colonna "actv" di iostat
 
ps:
ZFS aumenta di molto gli I/O visto che per ogni disco presente in un zpool ne fa uno stripe, quindi una richiesta da parte dell'applicazione di 1 I/O si trasforma in N richieste sul controller fisico, con N numero di dischi in stripe del zpool.

ps2: per gli hitachi 99xx con solaris 10 esiste il bug 6848081 risolto solo a dicembre 2009

13/12/2009

Studio di vmware 4

http://pubs.vmware.com/vsp40_i/wwhelp/wwhimpl/js/html/wwhelp.htm#href=welcome/welcome.html

Vmware iscsi alias and dell/sun storage

Hello just a note:

If on the software iscsi initiator alias is larger than 30 characters some iscsi storage controller will just not work

On vmware 3.5 and 4 the alias is generated from the dns domain and cannot be changed so if you have a long domain with lots of sub domains you may have a large alias.

AFAIK the only workaround is to change the host - esx(i )- domain.
This is bad

12/12/2009

Sistemi hardware che gestisco

In questo sabato mattina voglio provare a stilare una lista di tutti gli apparati hw con i quali gioco, studio o lavoro

Personali

  1.  Laptop Vaio
  2. Sun F280R
  3. Sun T3
  4. Sun Fire 3800 - a riposo


Ufficio

  1. Vari pc assemblati standard
  2. Vari mini itx ( prima versione del load balancer )
  3. Scheda 2 FXO 1 FXS
  4. Sun X2200 (vmware)
  5. Dell 2970 (storage)
  6. Cisco 1601R (vecchio)
  7. Cisco Pix 515E
  8. Switch Dlink con vlan
  9. Sun ray 1 e 2F

Quasi tutti i server stanno scomparendo nell'infrastruttura vmware :)

Dai clienti (qui si che si inzia a giocare)

  1. Sun Fire 20K
  2. Sun M5000
  3. Sun Blade 6000 con 6250

  4. Hds 9970
  5. Emc Clariion CX3-10 e Celerra
  6. Cisco MDS 9000
  7. McData 4400
  8. Vari server
  9. Sun X2100 e X2200
  10. Sun ray 270
  11. Sun J4200
  12. Cisco ASA 5550
  13. Barracuda spam firewall