Test di HugePages con XEN
Giovedì 5 Novembre 2009 at 05:07 | In Linux | Leave a CommentTags: hugepages, hugetlb, Linux, vm, xen
Ebbene, dopo essere riuscito ad ottenere una macchina para-virtualizzata con XEN con il supporto per le Huge Pages come descritto nel mio post precedente, era arrivato il momento di verificare se effettivamente c’erano problemi con questa accoppiata.
Confesso che nella fretta come al solito ho voluto bruciare le tappe ed ho subito cercato di configurare le Huge pages e di provare a far partire il database Oracle (sempre l’istanza 11gR2). La fretta è stata una cattiva consigliera come il solito, perché ho litigato un po’ con i parametri di configurazione della memoria di Oracle per far stare tutto nella RAM che ho a disposizione. Seguirò nella descrizione lo stesso ordine con cui ho eseguito le operazioni.
Configurazione del sistema operativo
Una volta “abilitato” il kernel all’utilizzo delle Huge Pages, bisogna configurare quanta parte di memoria debba essere dedicata a queste pagine giganti, infatti andando a vedere il file /proc/meminfo si osserva:
[root@oel53test11gR201 ~]# cat /proc/meminfo |grep Huge
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
Hugepagesize: 2048 kB
per farlo in modo definitivo (si può fare anche al volo, ma siccome le pagine devo essere contigue potrebbe essere necessario un reboot affinché il sistema trovi sufficente memoria contigua libera) si modifica il file /etc/sysctl.con aggiungendo le righe:
vm.nr_hugepages = 420
vm.hugetlb_shm_group = 505
La prima riga corrisponde al numero di pagine, che moltiplicato per la dimensione della pagina (nel mio caso 2048K) la dimensione in byte della memoria che si vuole gestire in questo modo (in questo esempio 420*2048k=840M). La seconda riga è importante se si intende far utilizzare le Huge Pages ad oracle: indica il gruppo del sistema operativo che può utilizzare le huge pages con le chiamate di sistema shmat/smget (Vedi vm/hugetlbpage.txt) Questo secondo la documentazione, ma vedremo dopo che a me questo non torna.
Secondo alcune note del Metalink Oracle, ad esempio la 560501.1, occorre modificare anche il file /etc/security/limits.conf aggiungendo le due righe:
oracle soft memlock n
oracle hard memlock n
Dove n è il numero di KByte che si assegnerà alla SGA (immagino sia il caso di mettere un numero un po’ più grande)
Modifcato i file si può fare un reboot e dopo di ciò si ottiene:
[root@oel53test11gR201 ~]# cat /proc/meminfo |grep Huge
HugePages_Total: 420
HugePages_Free: 420
HugePages_Rsvd: 0
Hugepagesize: 2048 kB
Configurazione di Oracle
Stando alla nota Oracle Metalink 749851.1 l’impostazione “Automatic Memory Management (AMM)” di Oracle 11g non è compatibile con l’uso delle HugePages, quindi occorre settare a 0 i parametri MEMORY_TARGET e MEMORY_MAX_TARGET . Ho quindi impostato i vari parametri SGA_TARGET, SGA_MAX_SIZE PGA_AGGREGATE_TARGET, con qualche difficoltà. Non ho verificato se l’incompatibilità è certificata anche per la R2 di 11g, in ogni caso questa incompatibilità spiega il perché nei manuali ufficiali non viene incoraggiato l’utilizzo delle Huge Pages.
Dopo aver aggiustato in più fasi tutti i parametri Oracle sono arrivato finalmente ad un risultato. Ad un certo punto sono arrivato al livello che sembrava tutto a posto ma da /proc/meminfo risultavano ancora tutte le pagine libere, ad indicare che Oracle non le usava: era perché il numero di pagine che avevo riservato ancora non bastavano per tutta la SGA, infatti aumentandolo da 405 a 420 ho risolto.
… risolto poco, perché il risultato del tentativo di avvio dell’istanza Oracle è stato un reboot della macchina virtuale con la visualizzazione sulla console di XEN di un bel “kernel panic”.
A questo punto ho fatto quello che avrei dovuto fare subito, ho provato le hugepages con un programmino di test, precisamente quello descritto in questo bel articolo.
Riporto quindi il messaggio in console:
Unable to handle kernel paging request at ffff88005cc122f0 RIP:
[<ffffffff802cd3ec>] hugetlb_no_page+0×1e3/0×27e
PGD 13cd067 PUD 15cf067 PMD 16b6067 PTE 801000005cc12065
Oops: 0003 [1] SMP
last sysfs file: /block/dm-0/range
CPU 0
Modules linked in: autofs4(U) hidp(U) nfs(U) lockd(U) fscache(U) nfs_acl(U) rfcomm(U) l2cap(U) bluetooth(U) sunrpc(U) dm_multipath(U) scsi_dh(U) scsi_mod(U) ipv6(U) xfrm_nalgo(U) crypto_api(U) parport_pc(U) lp(U) parport(U) pcspkr(U) xennet(U) dm_raid45(U) dm_message(U) dm_region_hash(U) dm_mem_cache(U) dm_snapshot(U) dm_zero(U) dm_mirror(U) dm_log(U) dm_mod(U) xenblk(U) ext3(U) jbd(U) uhci_hcd(U) ohci_hcd(U) ehci_hcd(U)
Pid: 3435, comm: oracle Tainted: G 2.6.18-2.6.18-164xenhugepages #1
RIP: e030:[<ffffffff802cd3ec>] [<ffffffff802cd3ec>] hugetlb_no_page+0×1e3/0×27e
RSP: e02b:ffff880063017d18 EFLAGS: 00010246
RAX: ffff88005cc122f0 RBX: 0000000048c0d0e7 RCX: 0000000048c0d027
RDX: 0000000000000000 RSI: 0000000048c0d0e7 RDI: 000000008bdffe98
RBP: 0000000000000000 R08: ffffffff804fbfc3 R09: 0000000000000908
R10: 0000000000000000 R11: 0000000000000000 R12: ffff880002fe5000
R13: ffff8800a12e4160 R14: 000000008bdffe98 R15: ffff88005fb5ce58
FS: 00002abe89f78e60(0000) GS:ffffffff805ce000(0000) knlGS:0000000000000000
CS: e033 DS: 0000 ES: 0000
Process oracle (pid: 3435, threadinfo ffff880063016000, task ffff880063ac87a0)
Stack: 00000001804f62c0 ffff88005cc122f0 ffff880009a95b80 0000000000000000
ffff88005cc122f0 ffff880009a95b80 000000008bdffe98 0000000000000001
ffff88005fb5ce58 ffffffff802cd4dc
Call Trace:
[<ffffffff802cd4dc>] hugetlb_fault+0×55/0xba
[<ffffffff80208b0c>] __handle_mm_fault+0×5c/0×1354
[<ffffffff80241249>] vma_prio_tree_insert+0×20/0×38
[<ffffffff8026766a>] do_page_fault+0xf7b/0×12e0
[<ffffffff8020e6fe>] do_mmap_pgoff+0×658/0×7c3
[<ffffffff80264901>] _spin_lock_irqsave+0×9/0×14
[<ffffffff80231992>] __up_write+0×27/0xf2
[<ffffffff8026082b>] error_exit+0×0/0×6eCode: 48 89 18 83 7c 24 04 00 74 23 41 f6 47 28 08 75 1c 48 8b 4c
RIP [<ffffffff802cd3ec>] hugetlb_no_page+0×1e3/0×27e
RSP <ffff880063017d18>
CR2: ffff88005cc122f0
<0>Kernel panic – not syncing: Fatal exception
Va detto, che l’errore non avviene nel momento in cui il programma alloca le pagine (con shmget) ma quando cerca di scriverci dentro. Ho anche provato ad eseguire il programmino di test dopo aver tolto dal file /etc/sysctl.conf la riga vm.hugetlb_shm_group = 505, in questo modo stando alla documentazione solo l’utente root dovrebbe essere in grado di utilizzare le Huge Pages, ma nel mio caso non è cambiato nulla, la macchina si riavviata con lo stesso errore.
Ricompilare il Kernel con XEN e HUGEPAGES
Martedì 3 Novembre 2009 at 03:57 | In Linux | 3 CommentsTags: hugepages, kernel, Linux, oel, red hat, xen
Dopo giorni (ma in realtà erano mesi che volevo farlo) sono riuscito a ricompilare il kernel su Oracle Enterprise Linux 5.3. Si tratta di una installazione su una macchina virtuale XEN che ho fatto qualche settimana fa per installare e testare Oracle 11gR2. Una delle cose che ho notato gia tempo fa è che sia sulla macchina “ospitante” (Dom0 il linguaggio XEN) che sulle macchine para-virtualizzate linux non è configurato il supporto per le HugePages, mentre su una macchina fully-virtualised tale supporto è presente (la macchina fully virtualised mi era necessaria per installare un versione linux 32 bit, usata a suo tempo per testare 11gR1 quando la versione 64 bit non era ancora uscita).
Ho sempre pensato che se nel kernel compilato con il supporto XEN non c’era il supporto per le Huge Pages ci doveva essere un motivo ben preciso, qualche vincolo strutturale; purtroppo però a tutt’oggi non ho trovato una spiegazione di cio’, non una nota dove si dica che le macchine virtuali non possono usare Huge Pages.
Un po’ di tempo fa ho scoperto, grazie al blog di Sergio Leunissen, che Oracle ha messo a disposizione un server YUM pubblico. Si tratta di un server da cui è possibile scaricare e installare in modo quasi automatico i pacchetti rpm aggiornati, utilizzando una utility chiamata appunto YUM. Chiaramente in questi aggiornamenti non sono inclusi le patch di sicurezza che vengono fornite solo con il supporto ULN. Da qui ho scaricato il pacchetto RPM dei sorgenti del kernel. Gia questa fase è stata per me problematica, perché con YUM non sono stato capace di farlo, ho scaricato l’rpm con wget e l’ho installato con rpm.
Una volta installati i sorgenti del kernel sono passato alla difficoltà successiva: come compilare il kernel? I pacchetti rpm con in sorgenti vengono installati con una struttura particolare, che non conoscevo molto, francamente io quando smanettavo di più con linux ero una amante della distrubuzione Slackware e della sua organizzazione a pacchetti tar.gz. In ogni caso ho scoperto l’utility rpmbuild, sulla quale però non è che la documentazione abbondi.
Fra mille ricerche il link più utile che ho trovato è stato senz’altro questo. In tutti però, compresi questo e questo manca una informazione chiara su come funziona la configurazione. Infatti io continuavo a modificare a mano il file .config aggiungendo le righe:
CONFIG_HUGETLBFS=y
CONFIG_HUGETLB_PAGE=y
Ma sistematicamente osservavo che il make me le “spianava”, cancellava le righe togliendo di fatto il supporto alle Huge Pages. Da sottolineare poi un’altra cosa che non capivo: facendo make menuconfig (e un paio di volte mi sono fatto anche il make config con l’interminabile sfilza di domande) non compariva nessuna voce relativa alle stesse huge pages. Solo grazie ad un errore nel file .config ho poi scoperto che a “resettare” il mio file .config era l’istruzione:
scripts/kconfig/conf -s arch/x86_64/Kconfig
lanciata da make. Ulteriori indagini mi hanno portato al file fs/Kconfig dove ho trovato:
config HUGETLBFS
bool “HugeTLB file system support”
depends X86 || IA64 || PPC64 || SPARC64 || SUPERH || (S390 && 64BIT) \
|| BROKEN
depends !XEN
help
hugetlbfs is a filesystem backing for HugeTLB pages, based on
ramfs. For architectures that support it, say Y here and read
<file:Documentation/vm/hugetlbpage.txt> for details.If unsure, say N.
Che in sostanza stabilisce che se è selezionato il supporto per XEN viene disabilitato quello per le Huge Pages. Ho verificato, con “make menuconfig” ma anche deselezionando la voce “XEN -> Privileged Guest (domain 0)” sotto “File Systems -> Pseudo filesystems” non compare la voce “HugeTLB file system support”. (Non sono solo io ad aver problemi su come scrivere “filesystem” se come una unica parola o come due divise, visto che sul questo menu’ compare scritto in entrambi i modi). Invece modificando il file fs/Kconfig così:
config HUGETLBFS
bool “HugeTLB file system support”
depends X86 || IA64 || PPC64 || SPARC64 || SUPERH || (S390 && 64BIT) \
|| BROKEN
#depends !XEN
default y
help
hugetlbfs is a filesystem backing for HugeTLB pages, based on
ramfs. For architectures that support it, say Y here and read
<file:Documentation/vm/hugetlbpage.txt> for details.If unsure, say N.
Magicamente la voce “HugeTLB file system support” compare sotto “HugeTLB file system support”
Quindi sono riuscito a ricompilare il kernel con il supporto a XEN e alle Huge Pages, vedremo cosa accadrà.
Questi in sintesi i passi che ho seguito:
- scaricato il pacchetto kernel-2.6.18-164.el5.src.rpm da public-yum.oracle.com
- aggiunto l’utente mockbuild con gruppo mockbuild (altrimenti non funziona l’installazione dell’rpm).
- installato con rpm -i kernel-2.6.18-164.el5.src.rpm; in questo modo finisce tutto sotto /usr/src/redhat, con una struttura particolare
- Secondo il consiglio visto da più parti, ad esempio anche qui, ho copiato tutto il contenuto di /usr/src/redhat in un’altro posto (/var/tmp/rpmbuild) e creando il file ~/.rpmmacros con la riga %_topdir /var/tmp/rpmbuild.
- la radice per la compilazione dei sorgenti è diventata nel mio caso /var/tmp/rpmbuild/BUILD/kernel-2.6.18/linux-2.6.18.x86_64/, ho modificato il file Makefile impostando la variabile EXTRAVERSION = -xenhuge2.6.18-164 (come saggiamente indicato qui)
- modificato il file fs/Kconfig come descritto sopra
- lanciato il comando “make rpm ” La compilazione non è durata giorni, mi sembra circa un’ora.
- a questo punto sotto /var/tmp/rpmbuild/RPMS ho trovato il mio rpm che ho installato con rpm -i, piccola curiosità: sotto /boot mi sono trovato un file vmlinuz da 52 MB contro i 2 MB circa degli altri kernel.
- Ho creato l’immagine del ramdisk con mkinitrd, sempre come indicato dalla guida di HowToForge e modificato il file /boot/grub/menu.lst
Ho riavviato la macchina virtuale e selezionato dal menu di grup il nuovo kernel e incredibilmente è partita. Curiosando sotto /var/tmp/rpmbuild/BUILD/kernel-2.6.18xenhuge2.6.18-164 ho visto un file vmlinuz da circa 2 MB, accanto a un file vmlinux da circa 52 MB (dimensione uguale al byte al file vmlinuz-2.6.18-xenhuge2.6.18-164 che rpm mi ha installato sotto /boot) allora ho provato a sostituire il file da 52 MB sotto boot con il file vmlinuz (opportunamente rinominato) ed ho riavviato. Anche così funziona. Evidentemente il file più piccolo è il kernel compresso ma al boot viene gestito in modo trasparente (indagherò su questo).
Conclusione
I motivi che mi hanno spinto a investire il mio tempo in queste ricerche ed esperimenti sono imperscrutabili. Un’operazione simile va contro il principio che cerco di adottare solitamente, ovvero seguire strade e metodi certificati. Solamente una morbosa curiosità, il fascino del lato oscuro di Linux giustificano cio’ che ho fatto. Sono però soddisfatto, perché potrò adesso testare Oracle su Linux con le Huge Pages.
Virtualizzazione con XEN
Giovedì 29 Ottobre 2009 at 29:35 | In Linux, virtualizzazione | 5 CommentsTags: virtualization, virtualizzazione, xen
Una serie di interessanti post recenti di Dizwell sulla virtualizzazione hanno risvegliato in me l’interesse per queste tecnologie. In particolare egli ha iniziato con un bel post in cui faceva una sorta di recensione di sistemi di virtualizzazione, in seguito egli si è concentrato su quello apparentemente più interessante XenServer di Citrix. Apro qui una parentesi, il sito di citrix su XenServer è http://www.citrix.com/xenserver/ ma io lo trovo frequentemente giu, una cosa preoccupante direi. Chiusa la parentesi.
XenServer sembra un prodotto interessante, non molto diverso come base da Oracle VM, ovvero una distribuzione Linux minimale; la differenza la fa il “contorno”, a partire dagli strumenti di amministrazione per arrivare alle caratteristiche “enterprise”, che nel caso di XenServer sono quelle che si comprano, mentre la base è gratuita.
L’ultimo post di Dizwel, è un po’ “amaro”, infatti egli ha incontrato dei limiti di XenServer che gli impediscono di utilizzarlo in “produzione”, produzione tra virgolette perché il suo progetto è quello di consolidare gli ambienti di test. I suoi racconti mi hanno incuriosito e spinto a capire meglio come funziona Xen, a tale proposito voglio segnalare che fra i manuali di Red Hat ve ne è uno sulla virtualizzazione molto interessante, qui. Volevo segnalare questo manuale perché vi ho trovato cose che ho cercato anche tempo fa, come un metodo per generare nuovi mac-address o il sistema per accedere ai file all’interno delle immagini dei dischi.
Vi sono due dubbi che mi rimangono:
1) cosa sono i template di cui parla Dizwell; in effetti non mi è chiaro il meccanismo di creazione di una nuova VM, io utilizzo l’interfaccia grafica di virtual machine manager ma non ho ancora capito i meccanismi che stanno dietro. L’ultima VM che ho creata l’ho fatta con OEL 5.3 senza bisogno di “template”.
2)sulle vm che ho creato, di tipo “para-virtualised” il kernel xen non attivo il supporto per le HugePages, mi chiedo se questo sia dovuto al fatto che in questa configurazione non è possibile averle oppure se semplicemente è possibile ricompilare il kernel ed attivare tale supporto.
Sono convinto che conoscere a fondo i meccanismi di funzionamento di Xen possono aiutare a gestirlo e utilizzarlo al meglio, quindi farò di tutto per colmare le mie lacune.
Calcoli aritmetici dalla bash di linux
Martedì 20 Ottobre 2009 at 20:12 | In Linux | 4 CommentsTags: bash, expr, Linux, math
Nel tempo libero sto cercando di approfondire la mia conoscenza di Linux, un sistema operativo che come ho gia detto in passato adoro, per il semplice fatto che senza pagare nulla si ha a disposione una sistema operativo vero, con una miriade di piccoli strumenti di utilità che credo siano in grado di soddisfare qualunque bisogno.
Ad esempio, un attimo fa mi è venuta la curiosità di fare un piccolo calcolo aritmetico, senza dover aprire la solita calcolatrice fornita dal Winzoz. Non che la calcolatrice di Winzoz non vada bene, ma mi rompe dover staccare le mani dalla tastiera per prendere il mouse e dovere fare strani ghiri-gori sulla scrivania per arrivare ad avere la calcolatrice. Dunque ho fatto una piccola ricerca con Google ed ho trovato alcuni link che mi voglio salvare per ritrovarli facilmente anche in futuro. In realtà li ho trovati rapidamente, ma il mio vero intento è quello di memorizzare in modo permanente nel mio cervello i metodi che ho trovato. E’ come quando per studiare riscrivo le cose, così questo blog, come è nato, mi serve a riscrivere le cose in modo da facilitarne la memorizzazazione anche nella mia testa.
Il primo link è questo, si tratta di un Wiki sullo scripting shell in Linux, un sito che penso valga la pena esplorare. Il metodo è ad esempio, per calcolare 77420 diviso 60:
[root@oel53test11gR201 ~]# echo $((77420/60)) 1290
Gli operatori supportati sono molti, elencati anche in questo blog, ad esempio ** per calcolare la potenza.
A questo link invece ho trovato un’utility, più limitata, ma non dipendente dalla bash, expr, ecco un esempio:
[root@oel53test11gR201 ~]# expr 77420 / 60 1290
In questo caso occorre fare attenzione a mettere gli spazi tra i numeri e l’operatore.
Ripristino di una macchina virtuale Linux
Mercoledì 13 Maggio 2009 at 13:02 | In Installation and Configuration, Linux | Leave a CommentTags: linux devpts e2fsck
L’altro giorno avevo bisogno di testare una funzionalità su Oracle 11g, per questo motivo ho pensato di accendere la macchina virtuale che ho gia utilizzato tempo fa per fare un po’ di test su questa release di Oracle che in azienda ancora non utiliziamo. Dopo aver lanciato il comando “xm create test11g” ho atteso un po’ ed ho provato a collegarmi via SSH con putty, senza successo, infatti la macchina non rispondeva neppure ai ping. Allora mi sono collegato via VNC alla macchina “madre” (quella che ospita le macchine virtuali che ho creato con XEN, una Oracle Enterprise Linux Server 5) e da li ho aperto il “Virtual Machine Manager” che permette fra l’altro di accedere alla console delle macchine virtuali. Ho così scoperto con mio disappunto che la fase di boot della mia macchina virtuale test11g (quella con installato Oracle 11g) era bloccata perché i processo non trovata il file /etc/fstab. Il file sembrava essere li, però al posto dei suoi attributi comparivano dei punti di domanda e cercando di visualizzarlo ad esempio con “cat” si ottenere un input/output error.
Io non sono un sistemista esperto, e situazioni del genere non mi erano mai capitate. Per prima cosa ho seguito il consiglio che compariva in console di lanciare fsck, procedura che però falliva perché si lamentava proprio del fatto di non riuscire ad accedere al file /etc/fstab; solo oggi ho visto che il comando fsck vuole come parametro di input un “mount point” o un device su cui c’è il filesystem da controllare e che altrimenti usa /dev/fstab. In ogni caso facendo una ricerca veloce su Google sono arrivato al comando e2fsck che a differenza di fsck accetta solo un device come input, quindi sono riuscito a lanciarlo e a sistemare il filesystem. A quel punto ho provato a fare un reboot, operazione però fallita di nuovo in quanto e2fsck aveva eliminato il cadavere di /etc/fstab che era rimasto, quindi a quel punto dovevo ricreare il file /dev/fstab, operazione facilitata per un verso dal fatto di avere ancora una copia di mtab creata all’ultimo avvio sano, ma resa difficoltosa dal fatto che nella shell di emergenza aperta al boot il filesystem di root era montato in modalità read-only. Ho così dovuto scoprire ed utilizzare l’opzione “-o remount” del comando mount per rimontare il filesystem di root in modalità read-write (essendo filesystem di root non me lo lasciava smontare e rimontare).
In realtà nella fretta in fstab ho messo solo il filesystem di root e il filesystem virtuale /proc ma oggi riaccendendo la macchina virtuale e cercando di collegarmi via ssh con putty ho trovato l’errore: “Server refused to allocate pty“.
Ho così scoperto che in /dev/fstab è bene ci sia anche la riga:
none /dev/pts devpts rw,gid=5,mode=620 0 0
Questo grazie a questo link.
Non mi ero mai posto il problema di cosa fosse /dev/pts, ma oggi mi ci sono scontrato, ho trovato un paio di spiegazioni, qui e qui scoprendo che per risparmiare qualche file sotto /dev è stato introdotto questo meccanismo basato su un’altro filesystem virtuale.
Non essendo un sistemista professionista sono comunque riuscito a cavarmela, ho cercato di riassumere qui velocemente il procedimento che ho seguito per arrangiarmi più velocemente la prossima volta che mi capiterà.
Ancora su GPL, FUD e Cloud Computing
Lunedì 26 Gennaio 2009 at 26:24 | In Linux, Servizi Web Evoluti | 5 CommentsTags: cloud computing, fud, gpl, hosting, mysql, virtualization, virtualizzazione
In questi giorni si sono sommate nella mia testa una serie di cose che la mia mente perversa è riuscita a ricollegare tra loro dando vita a questo post, che probabilmente ai più risultare confusionario. Siccome però ho sempre usato il blog come posto per cercare di riordinare le idee ne approfitto per l’ennesima volta.
Partirei da un discussione che si è consumata sul newsgroup it.comp.software.database, un newsgroup solitamente non molto attivo. La discussione è partita dalla domanda su limiti e vantaggi delle versioni free di alcuni database commerciali, come DB2 ed Oracle. La discussione si è subito orientata su un’altro argomento, ovvero la possibilità o meno di utilizzare MySQL a scopi “commerciali” senza pagare licenze. Una cosa che sicuramente ho capito, è che GPL non significa per forza gratis. Un’anima pia ha cercato di riassumere tutte le informazioni importanti in un nuovo thread di discussione intitolato appunto: “MySQL e’ gratis? (gratuito?)”. Io alla fine mi sono perso. Gia tempo fa ho scritto della questione GPL con Oracle Linux, affrontata da Wim Coekaerts, e li è chiaro: Oracle Enterprise Linux è gratuito, se uno vuole, si compra l’assistenza, altrimenti no.
Il dubbio che mi rimane, come nel caso MySQL è se MySQL sia ancora sotto GPL o meno. Alla fine dei conti se è così (e non capisco come mai uno possa “togliere” la GPL da un software) allora qualcuno potrebbe fare ciò che ha fatto Oracle con Linux, ha preso i sorgenti di Red Hat, ha tolto le parti coperte da copyright, l’ha reimpacchettatto e lo distribuisce gratuitamente.
Con un collegamento un po’ ardito arrivo anche al Cloud Computing; casualmente, attraverso un banner pubblicitario, l’altro giorno sono capitato su questo sito. Sembra si tratti di una alternativa ai servizi di cloud computing forniti da amazon. Il collegamento a GPL e licenze mi è venuto dando un’occhiata alla lista delle immagini dei server virtuali disponibili, in particolare, sono passato direttamente a quelle con Linux, e li si vede che sono offerti indifferentemente CentOS e RedHat e a quel punto mi sono chiesto come funzionano li le licenze RedHat. In realtà la stessa domanda vale anche per le immagini con Winzoz, quindi suppongo che “gogrid” abbia un accordo particolare con MS e RH per cui alla fine il costo delle licenze sarà poi incluso sul prezzo finale dell’hosting.
Il “cloud computing”, moda o no, secondo me si sta diffondendo, come abbiamo visto espandersi i servizi WEB 2.0, vedremo espandersi anche i servizi di “cloud computing”, devono solo superare la fase di diffidenza iniziale.
Linux, GPL e FUD
Giovedì 6 Novembre 2008 at 06:32 | In Linux | 1 CommentTags: gpl, license, Linux
Oggi sono passato a dare un’occhiata al blog di Wim Coekaerts e ci ho trovato questo interessante post.
Wim Coekaerts ribadisce un particolare importante riguardo la possibilità di utilizzo di Oracle Entrerprise Linux e Oracle VM, in polemica a quanto pare con l’azienda del cappello rosso. Infatti egli sottolinea come alcuni venditori di supporto e distribuzioni Linux non solo non danno la possibilità di scaricare liberamente le distribuzioni, ma di fatto vietano l’utilizzo delle distribuzioni se non si è acquistato il supporto, a dispetto della GPL. Ora, io non ho mai approfondito bene i dettagli della GPL, ma in effetti, leggendo il post di Wim vi ho riconosciuto dei dubbi che ho sempre avuto: perchè non posso usare queste distribuzioni se non compro il supporto? E’ vero che all’interno di queste distribuzioni vi può essere del software protetto da copyright, ma le parti principali sono composte da software Open Source distribuito con GPL. Il valore aggiunto dovrebbe essere nel supporto che queste aziende mi danno nel momento in cui chiedo il loro aiuto. Capisco che non siano tenute a mettere a disposizione una infrastruttura per il download, ma una volta che in qualche modo ho acquisito il possesso di una copia del sistema operativo, perchè non posso installarlo su quante macchine voglio? Alla fine loro hanno solo impacchettato e modificato software scritto da altri, peralto sotto licenza GPL.
Ho fatto una rapida ricerca per chiarirmi le idee, da questa ricerca ho trovato:
Li si trovano un po’ di spiegazioni e i testi completi delle varie versioni delle licenze. Io non ce la faccio a studiarli approvonditamente però sono convinto che la sigla usata da Wim Coekaerts, FUD, sia molto appropriata a questa situazione si instilla paura, incertezza e dubbio per spillare quattrini
Interessanti considerazioni su RAC e virtualizzazione
Venerdì 10 Ottobre 2008 at 10:41 | In Installation and Configuration, Linux, RAC | Leave a CommentTags: oracle, oracle vm, RAC, virtualization
Stamattina ho letto il nuovo post di Rudy (RAC su macchine virtuali: ma ha senso?) molto interessante, volevo aggiungere un commento, ma siccome mi sembrava un po’ troppo lungo ho deciso di scrivere un post in risposta.
Giusto ieri sono incappato anche io nel documento citato da Rudy e gli ho dato un’occhiata veloce. Rudy l’ha letto più attentamente e nel suo post ne riporta le caratteristiche principali. Devo dire che secondo me Oracle con l’avvento della virtualizzazione ha cambiato leggermente direzione. Fino a poco tempo fa Oracle pubblicizava RAC come soluzione di bilanciamento e ottimizzazione delle risorse, quindi consigliava di fare un unico grande RAC su cui mettere tutte le proprie applicazioni; poi con l’utilizzo dei SERVICES e del RESOURCE MANAGER si possono bilanciare correttamente le varie applicazioni. Quindi in sostanza un’unico database e diversi “schemi”/utenti. La realtà però deve essere più vicina a quella con cui mi scontro anche io nel mio piccolo, ovvero che se in un’azienda si usano più applicazioni che si basano su database Oracle, ogni fornitore dell’applicazione con un’archiettura del genere non si fida, vorrebbe che su database su cui si appoggia la propria applicazione non vi sia nessun’altro, in modo da non aver a discutere in caso di problemi, tipicamente di performance. La virtualizzazione, seppur non cambiando le cose di molto, utilizzata come spiegato nel documento Oracle va in questa direzione, sullo stesso nodo fisico del cluster si fanno due macchine virtuali distinte e quindi si ha una maggiore indipendenza. A questo punto la gestione non si semplifica, perchè oltre al RAC c’è anche lo strato di virtualizzazione da gestire, però questa soluzione comincia a piacere sempre di più.
Due ulteriori considerazioni che volevo fare:
1) nel documento Oracle al paragrafo “Why Running Oracle RAC in Oracle VM?” mette in prima posizione l’utilizzo in ambienti di Test.
2)Al momento è supportato come guest solo Linux 32 bit, questo al momento secondo me è un limite pesante se non altro per il limite sull’indirazzamento della memoria che limita la SGA. Fra l’altro ormai le macchine fisiche a 64 bit sono la norma e qui c’è ancora un dubbio che mi rimane: io l’anno scorso ho messo in piedi un ambiente di test su una macchina a 64 bit, vi ho installato OEL5 con XEN e sopra vi ho fatto due macchine virtuali con OEL4, una a 64 bit e una a 32 bit. Quella a 32 bit ho dovuto farla per forza di tipo “fully virtualized” che al tempo mi è sembrato di capire sia il metodo meno efficente. L’altra è di tipo para-virtualized. Effettivamente facendo delle prove mi è capitato di sedere letteralmente la macchina fisica (uno script di shell che andava in loop) in quella situazione l’unica macchina a cui si riusciva ancora ad accedere era quella “para-virtualized”. Quindi il mio dubbio è questo, ho un hardware a 64 bit (perchè se intendo utilizzarlo come base per più macchine virtuali ho senz’altro necessità di avere ben più di 4 GB di RAM) poi sopra ci posso fare solo macchine virtuali a 32 bit e posso solo farle “fully virtualized” (immagino che il processore debba essere virtualizzato completemente) che ad occhio (ma qui ci metto un forse molto grande) sono meno efficenti.
Flashback Transaction Query
Mercoledì 20 Agosto 2008 at 20:49 | In Installation and Configuration, Linux | 3 CommentsTags: flashback, oracle
Oggi mi è arrivata per l’ennesima volta la mail da Oracle per il rinnovo dell’abbonamento all’Oracle Magazine. Sospetto che qualcosa nel sistema informatico di Oracle che gestisce tali abbonamenti non funzioni proprio bene, perchè mi sembra di aver fatto tale rinnovo già un paio di mesi fa, dopo che mi ero perso qualche numero. In ogni caso ho seguito la procedura che richiede l’aggiornamento dei propri dati sul sito di Oracle e al termine di tale operazione ho dato un’occhiata al sito. Ho così colto l’occasione per dare un’occhiata agli articoli che vengono pubblicati sulla certificazione (siccome sto ancora studiando per l’esame OCP). Arrivato ad un articolo sull’argomento “flashback” ho colto l’occasione per fare alcune prove e a quanto pare ho trovato una bizzarra anomalia. L’anomalia riguarda la cossidetta “Flashback Transaction Query” e prima di procedere alla descrizione del caso che ho riscontratto devo premettere che tale “feature” richiede la versione Enterprise Edition.
L’anomalia
Continuo a chiamarla anomalia, potrebbe anche essere un baco, ma potrebbe anche essere una cosa indirettamente voluta. Per farla breve su versione 10.2.0.3 standard edition su Windows 32 bit la vista FLASHBACK_TRANSACTION_QUERY non visualizza tutti i dati. Per spiegarmi meglio riporto un caso di esempio:
Da una sessione faccio una transazione che riguarada due tabelle, A e B:
Connesso a: Oracle Database 10g Release 10.2.0.3.0 - Production SVILUPPO40@perseo10 > create table a (num1 number); Tabella creata. SVILUPPO40@perseo10 > create table b (num1 number); Tabella creata. SVILUPPO40@perseo10 > insert into a values (101); Creata 1 riga. SVILUPPO40@perseo10 > insert into b values (101); Creata 1 riga. SVILUPPO40@perseo10 > commit; Commit completato.
Dopo di che, da un’altra sessione, con l’utente SYSTEM che ha già i necessari privilegi, cerco di visualizzare le modifiche fatta dalla transazione:
SYSTEM@perseo10 > SELECT VERSIONS_XID,versions_operation
2 FROM sviluppo40.A VERSIONS BETWEEN SCN MINVALUE AND MAXVALUE;
VERSIONS_XID V
---------------- -
05001D004EB30100 I
SYSTEM@perseo10 > SELECT OPERATION,TABLE_NAME FROM
2 FLASHBACK_TRANSACTION_QUERY WHERE XID=HEXTORAW('05001D004EB30100');
OPERATION TABLE_NAME
-------------------------------- ------------------------------
INSERT A
BEGIN
Selezionate 2 righe.
L’anomalia che dalla query sulla FLASHBACK_TRANSACTION_QUERY non esce l’insert sulla tabella B. Ho fatto una prova su una installazione simile, 10.2.0.3 su Windows 32 bit, ma Enterprise Edition e tale anomalia non si ripete. Su un’altra installazione 10.2.0.3 su Windows 32 bit Standard Edition succede la stessa cosa. Non mi succede su una versione 10.20.2 e nemmenon su altre 10.2.0.3 standard edition ma su Linux 64 bit.
Se succedesse su tutte installazioni standard edition la capirei come una cosa voluta, ma il fatto che non mi Linux funzioni mi ha lasciato perplesso
Oracle VM Templates
Mercoledì 6 Agosto 2008 at 06:32 | In Diario, Documentazione, Installation and Configuration, Linux | 2 CommentsTags: Linux, oracle, virtualization
Di sfuggita ho visto un nuovo annuncio da parte di Oracle, il rilascio di alcuni “templates”, come spiegato nell’annuncio Oracle Introduces Oracle® VM Templates
Dopo un tenue tentativo, appena uscito Oracle VM ho abbandonato i miei esperimenti, però rivedendo la documentazione pare che Oracle abbia continuato a lavorarci e anche questi nuovi template sembrano molto comodi, quindi spero nel futuro prossimo di avere a disposizione una macchina per fare nuovi esperimenti.
Blog su WordPress.com. | Theme: Pool by Borja Fernandez.
Entries and comments feeds.


Read Translated version of this blog