sabato 27 aprile 2013

Vmware presenta Multi HyperVisor Manager

Ho visto in un recente video che Vmware ha presentato multi hypervisor manager, praticamente e' uno strato software che permette di gestire da VC anche hypervisor diversi da esxi.
Siccome la beta era pubbica  l'ho scaricato ed installato nel mio lab, personalmente non l'ho trovato cosi' "utile" nel senso che non e' possibile fare migrazione tra hypervisor diversi, cosi' come non e' possibile avere un unico storage condiviso, l'unico uso che posso vedere e' se si vuole usare l'Hyperv di MS senza pero' sccm.

martedì 23 aprile 2013

Abbiamo la synology, che cosa ci facciamo?

A parte gli utilizzi tipici di una nas personalmente ho trovato molto utile dotare la synology di un boot server che mi permettesse di installare diversi sistemi operativi, cosi' come diverse live e programmi di utilita' varia come memtest dban e sysresccd, il progetto e' ancora un work in progress ma le basi sono gettate, quindi mi sembra che io possa illustrare come ho implementato il tutto.
Naturalmente non e' tutta farina del mio sacco ma mi sono limitato a prendere pezzi in giro per la rete e a metterli insieme per soddisfare le mie esigenze.

La particolarita' della synology e' l'estrema semplicita' nel gestire i dischi compresi i target iscsi per questo ho voluto provare a vedere se potevo per esempio, installare un sistema operativo su un target iscsi senza tribolarci troppo, questo howto si riferisce in particolare a questa specifica esigenza.
Ingredienti:
Una synology,una linuxbox una connessione internet,iso di windows da 2008 in poi, tempo e pazienza.
Consiglio, anche se non e' indispensabile, dotarsi di virtualizzatore come per esempio virtual box io personalmente uso vmware workstation che e' vero essere a pagamento, ma, almeno nel mio caso, e' adattissimo allo scopo e mi semplifica non poco le prove.

Un breve cenno ai pezzi che ci servono, come software assumo che abbiate installato e correttamente configurato i pacchetti dhcp e dns nella synobox, dovete anche abilitare il servizio tftpd che si trova tra i servizi ftp/sftp io l'ho configurato cosi' 


Come potete vedere ho scelto come nome per la root-folder del tftpd la cartella tftproot ma giusto perche' si chiama cosi' negli ambienti unix, ovviamente voi potete scegliere il nome che volete.
Notate anche la dicitura "caricatore di avvio" altri non e' che il file che sara' caricato dalla macchina che fara' il boot da rete, come si ottiene questo file? 
Adesso passiamo alla parte piu' "tecnica" della faccenda, cioe' a compilare quel file che ci servira' per far partire tutta la faccenda, e' richiesta una minima manualita' con linux.
Spostiamoci sulla linuxbox e se non l'avete fatto dovete installare i pacchetti che servono per compilare, ossia gcc, librerie varie, ed il pacchetto syslinux , gogolate per sapere come si fa' in base alla distro che usate, personalmente uso centos, ma qualunque distro va' bene.
Logghiamoci come root nella linuxbox.


Posizioniamoci in una folder che abbiamo creato o per esempio in /opt e digitiamo il comando che vedete 



Come potete Vedere il comando non fa altro che sincronizzare il tree GIT con quello del sito, ovviamente non essendoci un tree copia tutto.



Posizioniamoci nella cartella ipxe/src/ e digitiamo il comando make, dopo qualche minuto e dopo una serie di messaggi a video, avremo terminato la compilazione, a questo punto il file che ci serve che si chiama undionly.kpxe e' stato compilato ed e' presente nella cartella ipxe/src/bin cosi' come evidenziato dal comando ls undionly.kpxe 



Non ci rimane che copiarlo in tftproot della synology, ma dobbiamo conoscere il percorso completo, nel mio caso e' /volume1/tftproot/ il comando per copiare da una macchina unix ad un altra macchina unix e' scp 
Come potete vedere il comando e' semplicissimo, praticamente dice: copia il file undionly.kpxe in root@nome-o-ip-host:/cartella/di/destinazione il root@ prima del nome serve perche' stiamo facendo una secure copy usando ssh, quindi, una volta dato invio vi chiedera' la password di root che nel caso della synology e' uguale a quella di admin.
L'uso della linux box e' finito qui quindi possiamo passare a sistemare i file di configurazione del dhcp serve della synology.
Colleghiamoci in ssh sulla synology e spostiamoci nella cartella /etc/dhcpd/ come potete vedere dando un ls ( analogo al comando dir del dos ) vedrete una sequela di file cerchiamo di spiegare cosa significano.

La struttura dei file e' la seguente dhcpd- e il nome dei settings a cui si riferiscono, come potete notare c'e' un file relativo al dns uno alla eth0 e via dicendo, a noi interessa il file dhcpd-eth0-qxe.conf perche' questo nome? 
Piccola spiegazione, il file dhcpd-conf che e' quello di configurazione del servizio, viene composto leggendo il contenuto di tutti i file dhcpd-qualcosa-qualcosa.conf, mentre viene deciso se includere o meno tali informazioni, leggendo il contenuto del file dhcpd-qualcosa-qualcosa.info al cui interno c'e' semplicemente scritto se includerlo o meno.
Per comodita' e per tenere separati i settaggi ho semplicemente aggiunto i 2 file, cioe', dhcpd-eth0-qxe.info e dhcpd-eth0-qxe.conf  cosi' da sapere dove mettere le mani.
Vediamo cosa c'e' scritto nel file dhcpd-eth0-qxe.conf
il Comando per editare i file e' vi nome file 

La prima riga controlla se il client ha fornito nella l'opzione 175 che e'relativa alle estensioni iPXE/gPXE nel caso tagga questa richiesta come specifica per iPXE/gPXE 
la seconda riga dice di spedire il file bootstrap.ipxe se la richiesta viene da un client iPXE/gPXE 
La terza riga crea una classe chiamata iPXE per tutte le richieste che contengono l'opzione 175 ossia ipxe, perche' usare un nome? perche' e' piu' facile :D
ovviamente tale file lo dovete creare voi nella cartella /etc/dhcpd 
per comodita' vi posto le righe


dhcp-match=ipxe,175
dhcp-boot=tag:ipxe,bootstrap.ipxe
dhcp-vendorclass=set:ipxe,iPXE

Copiatele e incollatele dentro al file, salvate e siete a posto.
Nell'altro file, ossia dhcpd-eth0-qxe.info e' presente solo una riga che e' questa 

enable="yes"

copiatela cosi' come e' doppi apici compresi, praticamente, per il discorso dei file fatto precedentemente, significa includi nel dhcpd.conf anche il contenuto del file dhcpd-eth0-qxe.conf.
Perche' non possiamo scrivere il tutto dentro al file dhcpd.conf? perche' ad ogni riavvio del servizio il file viene rigenerato secondo il metodo specificato sopra, quindi ogni modifica fatta al suo interno che non viene da questi file, andrebbe persa.
Abbiamo bisogno di effettuare una modifica ulteriore al dhcp.
Siccome questo servizio non supporta il dynamic update del dns, per avere un hostname valido dobbiamo dire al dhcp che quando una richiesta arrivera' da un particolare mac address, assegnare a questo specifico host uno specifico hostname, ed un specifico ip, questo ci servira' in seguito per discriminare l'host che fa' il boot in modo da associargli il corretto target iscsi, vediamo come si fa.
Per prima cosa dobbiamo conoscere il mac address della scheda di rete montata sull host che vogliamo installare, per conoscere tale indirizzo ci sono diverse strade, la prima e' smontare la scheda e guardare se c'e' un etichetta con su scritto mac= l'indirizzo ha una forma come questa  00:0c:29:03:4e:3f  sono 6 cifre esadecimali se c'e' questa etichetta, segnatevi questo indirizzo su un pezzo di carta.
La seconda opzione implica l'utilizzo di una distro live di linux con cui fare il boot, una volta fatto il boot aprite un terminale e digitate il comando ifconfig 
Avrete un output come questo:


DuDeStation> ifconfig
eth0      Link encap:Ethernet  HWaddr A0:B3:CC:E9:49:6A
          inet addr:192.168.3.9  Bcast:192.168.3.255  Mask:255.255.255.0
          inet6 addr: fe80::a2b3:ccff:fee9:496a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:167961 errors:0 dropped:0 overruns:0 frame:0
          TX packets:172027 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:63703541 (60.7 MiB)  TX bytes:117213020 (111.7 MiB)
          Interrupt:18


la riga Link encap:Ethernet  HWaddr A0:B3:CC:E9:49:6A vi dice il mac-address, quindi segnatelo in minuscolo, una volta conosciuto questo parametro dobbiamo dire al dhcp di assegnare uno specifico hostname e uno specifico ip a questo mac-address, questo si fa' dal menu' configurazione del dhcp nella synology.



Come potete vedere e' facilissimo, basta cliccare su aggiungi e riempire i campi come indicato.
Messo da parte il dhcp veniamo ai file di configurazione di iPXE
bootstrap.ipxe 
ecco il contenuto.

#!ipxe 
set boot-url tftp://dudestation.dude.local 
# setta la variabile boot-url con potocollo e nomehost.dom della synology
set bootstrap-url ${boot-url}/bootstrap
# setta la variabile bootsrap-url con tftp://dudestation.dude.local/bootstrap
set menu-url ${boot-url}/menu.ipxe
# setta la variabie menu-url con tftp://dudestation.dude.local/menu.ipxe
# che altri non e' il file di menu' da cui tutto e' pilotato.
# Boot <boot-url>/bootstrap/hostname-<hostname>.ipxe
# if hostname DHCP variable is set and script is present
isset ${hostname} && chain --replace --autofree ${bootstrap-url}/hostname-${hostname}.ipxe && exit ||
# Boot <boot-url>/bootstrap/uuid-<UUID>.ipxe
# if uuid SMBIOS variable is set and script is present
isset ${uuid} && chain --replace --autofree ${bootstrap-url}/uuid-${uuid}.ipxe && exit ||
# Boot <boot-url>/bootstrap/mac-01-02-03-04-05-06.ipxe if script is present
chain --replace --autofree ${bootstrap-url}/mac-${mac:hexhyp}.ipxe && exit ||
# Boot <boot-url>/bootstrap/bus-01-80-86-10-0e.ipxe if PCI Intel adapter
# is present and script is present
chain --replace --autofree ${bootstrap-url}/bus-${busid:hexhyp}.ipxe && exit ||
# Boot <boot-url>/menu.ipxe script if all other options have been exhausted
chain --replace --autofree ${menu-url}


Gli altri commenti li lascio in inglese perche' sono autoesplicativi.il file e' disponibile qui quindi i maggiori ringraziamenti vanno a chi l'ha scritto e non a me.
Veniamo al file menu.ipxe vero motore del tutto, siccome e' molto lungo vi consiglio di reperirlo all indirizzo sopra riportato mi limitero' a mostrare le righe che dobbiamo modificare per adattarle al nostro ambiente.

#!ipxe
# boot-url is set in bootstrap.ipxe
# Setup some basic convenience variables
set menu-timeout 5000
set submenu-timeout ${menu-timeout} 
set base-iqn iqn.2000-01.com.synology 
set base-iscsi iscsi:dudestation.dude.local::::${base-iqn} 
# Set initiator-iqn to either hostname or mac
isset ${hostname} && set initiator-iqn ${base-iqn}:${hostname} || set initiator-iqn ${base-iqn}:${mac}
# Ensure we have menu-default set to something
isset ${menu-default} || set menu-default exit

La riga in grassetto si riferisce alla parte standard della generazione dei target iscsi come vedremo in seguito.
La riga subito sotto altri non e' che l fqdn(*) della synology
(*) fqdn = fully qualified domain name ossia pasta.carbonara.com
la riga dove c'e' scritto isset non e' altro che un controllo con diverse condizioni messe in or tra di loro i simboli "||" significano appunto or
cosa dice? se e' passato da iPXE l'hostname l'iqn diverra'
iqn.2000-01.com.synology:$hostname
altrimenti l'iqn sara' iqn.2000-01.com.synology:macaddress 

I due file, ossia boostrap.ipxe e menu.ipxe devono risiedere nella cartella /volume1/tftproot o in quella che avete designato come tftproot.
Ci siamo quasi, ora e' giunta l'ora di definire il target iscsi  da associare ad un host specifico, per determinare il nome, consiglio di usare la dicitura da me usata, siccome la definzione di target esula da questo howto la salto e mi limito a farvi vedere come ho settato io il nome 



Come potete osservare il target si chiama  
iqn.2000-01.com.synology:test-iscsi.boot.windows7

Perche' ho scelto questo tipo naming? per rispecchiare il tipo di naming che e' gia' definito  nella parte di menu' che si occupa di installare windows dentro al target iscsi la parte e' cosi' definita.


:windows7-install
echo Starting Windows 7 x64 installer for ${initiator-iqn}
# Hook iSCSI drive
set root-path ${base-iscsi}:${hostname}.boot.windows7
sanhook ${root-path} || goto failed
# Start Windows 7 installer DVD
sanboot --no-describe --drive 0x81 #${boot-url}/windows-7/w7-ent-64.iso || goto failed
# Better solution, according to Oliver Rath on the mailing-list
# Requires massive amounts of RAM, though
#initrd ${boot-url}/windows-7/ultimate-x64.iso
#chain ${boot-url}/memdisk iso raw || goto failed
goto start


Notate la riga set root-path ${base-iscsi}:${hostname}.boot.windows7

cosa dice? dice di settare il root-path  componendolo secondo le variabili impostate, come potete vedere c'e' a variabile ${hostname} ecco il perche' della associazione mac-address ip e nome host, subito dopo troviamo .boot.windows7 che e' la parte che possiamo variare come ci pare e piace, ma dobbiamo ricordarci che deve riflettere il settaggio che andremo ad effettuare quando generiamo l iscsi target.
a questo punto abbiamo settato tutto a modo, non ci resta che provare a vedere cosa succede, e qui debbo spendere 2 parole.
Normalmente e' il tftp che si occupa di spedire file al host che ne fa' richiesta, ma siccome abbiamo a che fare con una iso abbastanza corposa potremmo usare anche l http, ma io personalmente ancora non l'ho implementato se decidete di farlo dovete mettere su un web-server e rendere visibile un www-folder al cui interno ci mettere i file menu.ipxe, bootstrap.ipxe la cartella bootstrap che serve per far partire in automatico gli host gia' installati, e una folder conterra' TUTTE le immagini di installazione che potete desumere dal fle menu.ipxe siccome ne prevede un fottio io mi sono limitato a windows ma usando un diverso sistema che ora vado a spiegarvi.
al primo boot e selezionando installing windows 7 installing accadra' che l'installazione fallira' perche' non ho definito il protocollo http per dargli in pasto la iso, ma, c'e' una soluzione, semplicemente dovete settare la macchina in modo che faccia il boot da rete e dopo da cdrom inserendo nel cdrom il dvd di windows, oppure, come nel mio caso, collegare la iso alla macchina virtuale, e' indispensabile che la boot sequence sia 
rete
cdrom
hdd 
in questo modo si evita di implementare il protocollo http che pero' ho in agenda di provare.
Mi sono dimenticato di fare un precisazione se si usa un virtualizzatore.
il cdrom virtuale deve essere configurato come ide0, nel caso di vmware non collegate la iso alla macchina virtuale spenta, fatela partire, quando siete nel menu prima di fare una scelta, collegate la iso al cdrom virtuale in modo che la procedura si trovi la iso sotto il naso quando fallisce il boot da iscsi.

lunedì 8 aprile 2013

Synology DSM 4.2

Dopo aver acquistato un HP n40L mi stavo accingendo a montarci openfiler quando una balsana idea mi e' balenata in testa, visto che il software synology DSM gira anche su X86 non e' che con qualche trucco si puo' far girare su hardware normale? 
Una giro di google mi ha svelato l'arcano, a questo indirizzo come farsi una synology senza hardware synology ci sono i file e le istruzioni per far diventare qualunque pc una synostation.
ATTENZIONE!!! QUELLO CHE SEGUE E' A SOLO TITOLO DI ESPERIMENTO, OVVIAMENTE NON E' CONSIGLIABILE USARE QUESTA SOLUZIONE SE INTENDETE USARE QUESTA NAS IN AMBIENTI DI PRODUZIONE, NEL CASO, O VI COMPRATE UNA SYNOLOGY ORIGINALE O USATE UN ALTRA SOLUZIONE, IN OGNI CASO NON MI RITERRO' RESPONSABILE DI EVENTUALI DANNI, PERDITA DI DATI O ALTRO.

Ingredienti
Una chiavetta usb, 2 GiGa sono sufficienti
Una linux box, non indispensabile ma semplifica le cose
Un pc dove fare esperimenti che disponga almeno di un paio di porte sata in modo da provare il tutto
Un pc con connesione ad internet, pazienza, tanta pazienza
Il Mac Address della scheda di rete che avete sul pc dove intendete installare il dsm, ci servira' in seguito.
Questo File
E Quest'altro file
Link2

Fuoco alle polveri, scaricate ed installate  Questa utile utlity

Salvate il primo file in una cartella del disco rigido, scompattate nella stessa cartella il secondo file.
Inserite la chiavetta usb in una porta del pc, non fate nulla, non formattate ne altro, lanciate hdd-raw-utility e avrete questa schermata


Cliccando 2 volte su FILE si puo' scegliere il file che intendete scrivere sulla chiavetta usb

Dopo di che cliccate su continue e scegliete la vostra chiavetta usb

Cliccate su continue controllate di aver scelto il device giusto, indi su start, poi su ok, aspettate la fine poi rimuovete la chiavetta dal pc e portatela su una linux-box.
Spostiamoci o colleghiamoci alla linux box come root e vediamo come il sistema ci ha riconosciuto la chiavetta usb, nel mio caso mi ci collego via ssh ma le schermate sono le stesse.
Digitate il comando dmesg|grep sd cosi' da mostrarci tutte le righe di dmesg dove compare la parola sd
L'output e' piu' o meno questo, come potete vedere nel mio caso la chiavetta e' stata riconosciuta come sdb

Questo e' l'output del comando fdisk -l /dev/sdb ora creaiamo una cartella in /mnt con il comando mkdir /mnt/temp  ci servira' come punto di montaggio per la partizione della chiavetta che intendiamo modificare.



a questo punto montiamo la prima partizione della chiavetta nel mount-point appena creato

portiamoci nel mount-point dove ora abbiamo visibilita' del contenuto della prima partizione della chiavetta

A questo punto dobbiamo editare il file grub.conf

Come potete vedere esistono 2 entry in grub conf, a noi interessa quella denominata SYNOLOGY_2
in particolar modo la riga kernel /zImage root=/dev/md0 ihd_num=5 netif_num=1 syno_hw_version=RS3612xs
tale riga va' modificata come segue
 kernel /zImage root=/dev/md0 ihd_num=5 netif_num=1 syno_hw_version=RS3612xs mac1=a0b3cce9496a
Come potete vedere ho aggiunto in fondo alla riga il mac address della mia scheda di rete , una volta salvato il file, smontate la chiavetta e mettetela nella porta usb del pc su cui intendete installare il DSM, fate il boot, non fate caso ai vari messaggi di errore che potreste vedere riguardo ad un /dev/synobios, non compromettono il normale funzionamento della fake-synology, tenete presente che non avrete nessuna console su cui digitare qualcosa, quindi dovete aspettare che finisca di scrivere.
Una volta che e' terminato il boot, scaricatevi il synology assistant dal sito synology, lanciatelo, cliccate su cerca e e tutto ha funzionato, dovreste vedere la vostra synology, a questo punto sfilate la chiavetta usb altrimenti l'installazione sovrascrivera' la chiavetta e dovete ricominciare daccapo, collegatevi via web all ip che e' stato assegnato alla synology, cliccate su install, seguite le istruzioni, quando vi chiede come installare, scegliete di usare il metodo del pat-file locale, scegliete il file.pat precedentemente estratto e mentre macina reinserite la chiavetta, aspettate che finisca, et voila' il tutto dovrebbe funzionare, se non funziona, riprovate, se no scrivetemi e vediamo se posso aiutarvi.
Ribadisco quanto scritto prima, non e' da usare i ambienti di produzione, non so nemmeno se sia illegale o meno, in ogni caso io non mi ritengo responsabile di nulla che possa accadervi.












martedì 2 aprile 2013

Come farsi un ambiente virtuale per sperimentare a piacimento.

Chi come me fa' il sistemista ama sperimentare soluzioni, questo comporta il doversi dotare di un ambiente dove fare tutti gli esperimenti senza problemi e senza la possibilita' di fare danni.
Personalmente ho voluto provare vmware workstation 9.0 e l'ho trovato ottimo! costa e' vero, ma da' inumerevoli vantaggi.
Il mio ambiente e' cosi' composto.
Pc personale assemblato, MB sabertooth x58 con un i920@2,66 ghz otto core, avere piu' core e' indispensabile affinché si possa virtualizzare un ambiente anche discreto.
24 giga di ram ma solo perche' il chipset supporta al massimo questa quantità se potete usufruire di quantita' maggiori ram, fatelo, ne giovera' la fluidita' delle macchine.
Veniamo allo storage, vero collo di bottiglia della virtualizzazione casalinga, personalmente avevo tamponato con un certo numero di dischi rigidi attualmente ne ho 6 compreso quello di sistema che e' un ssd, l'avere piu' dischi vi permette di far girare piu' macchine senza che si sottraggano risorse a vicenda.
Una soluzione potrebbe essere quella di farsi una nas ed esportare via iscsi uno spazio e dedicare a questo una singola scheda di rete, sto aspettando un hp server nl40 per vedere se le performance migliorano, usando un pc spare con freenas installato ho ottenuto 98MB/S di transfer rate in copia via iscsi ma non ho ottimizzato alcunche', ho idea che con un raid hardware e dedicando una singola scheda ad un giga solo per l'iscsi possa salire di performance, come m'arriva il server  faro' qualche test in proposito.
Un progetto che ho in mente e' quello di dotare la nas di un server di boot che mi supporti sia linux che windows attraverso l'emulazione dell ambiente wds, c'e' attualmente un progetto che supporta entrambi i metodi, ma mi sembra molto macchinoso, chi volesse dargli un occhio il link e' questo.
Ultimate deployement appliance

Come software per nas conto di usare freenas perche' dispone sia dell iscsi che di plugin per trasmission ( bittorrent ) e server dlna, ho visto anche openmediavault ma attualmente supporta solo l'architettura a 32 bit e questo puo' essere un limite per lo storage.
Aggiornamento, esiste anche la versione a 64 bit, cretino io che non l'avevo vista :D