[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Problemi con iscsi e bonding in squeeze



Il 25/03/2011 16:53, Domenico Rotella ha scritto:


Il giorno 25 marzo 2011 16:12, Alessandro Baggi <alessandro.baggi@gmail.com <mailto:alessandro.baggi@gmail.com>> ha scritto:


    Grazie Domenico. Ho ancora qualche altra domanda al riguardo. Come
    ho gia detto la mia SAN è tutta virtuale per scopi di studio e
    prove, ed è composta da 4 target e un initiator. Ho provato a
    lanciare un hdparm -tT sull'initiator, ma il risultato è
    deludente. Ovvio che le prestazioni su macchine virtuali sono
    molto ridotte, le interfacce sono virtuali, (nel mio caso senza
    bonding), gli hdd anche virtuali. Ho provato a lanciare anche un
    hdparm su uno dei target, e il risultato è decisamente migliore.
    Dato che le prestazioni tra un singolo host e una SAN dovrebbero
    essere diverse, suppongo che con 4 target (reali e non virtuali)
    dovrebbe andare abbastanza bene, i risultati che mi vengono
    proposti da hdparm (su initiator) corrispondono quasi ad 1/4 delle
    prestazioni della singola macchina virtuale (pensandoci bene
    sembra tutto normale perche le risorse vengono divisi per 4 su un
    unico host per 4 vm), ma tralasciando questo, penso che al minimo
    la velocita dovrebbe raddoppiare, per cui non posso prendere in
    considerazione questi valori.
    Volevo chiederti se potevi darmi dei dati veritieri e non fittizzi
    come i miei.


Premesso che in calce ti copio i result di un mio server reale, credo sia difficile fare una stima ed ottenere dati veritieri nella tua configurazione. Mi sembra di capire che tu abbia tutto sulla stessa macchina, questo vuol dire:
sistema operativo
qualcosa tipo vm-server
le macchine virtuali
i dischi virtuali condivisi
un unico link virtuale. che unisce tutto il sistema....
L'optimum sarebbe poter dividere tutto, io come ti dicevo ho l'esx su una macchina, il datastore su un altra, dove le macchine sono in drbd, ma questo è solo per sicurezza, non aumenta la velocità, ed ho tutte reti reali diverse con uno switch, quindi:
1 - rete lan
2 - rete san per collegare le macchine virtuali all'esx
3 - rete drbd per collegare gli host replicati
poi ok la wan e la dmz ma non sono influenti....
tutti i link sono in rete Gb
questo è hdparm su un sistema raid5 software su un sistema non troppo performante
 Timing cached reads:   1436 MB in  2.00 seconds = 717.41 MB/sec
 Timing buffered disk reads: 660 MB in  3.02 seconds = 218.22 MB/sec

questo su un server con un raid5 hardware
 Timing cached reads:   1436 MB in  2.00 seconds = 7240.80 MB/sec
 Timing buffered disk reads: 660 MB in  3.02 seconds = 171.80 MB/sec



    L'altra domanda è al riguardo dei raid software. Come detto ho 4
    target, ognuno in una vm, alla quale ho legato 4 hdd virtuali ad
    ognuna. Dato che l'obiettivo sarebbe quello di avere una grande
    quantita di dati ad alta velocita, su uno spazio vasto, ti volevo
    chiedere, data la tua esperienza è preferibile impostare un raid
    (software o hardware indipendentemente dalle prestazioni) prima su
    ogni singolo target, e poi uno sull'initiator che magari riprende
    tutti gli altri dev condivisi, oppure gestire il raid software
    direttamente dall'initiator? Suppongo la prima ma un confronto puo
    aiutare a trovare altre vie.


Fammi capire, vuoi creare un raid con dello spazio disco importato via iscsi ?? Sinceramente è una cosa che non ho mai fatto, ma credo che non abbia molto senso.... difficile da gestire, se si guasta un pezzo ? cosa si degrada ? Quale disco in quale raid ? Se vuoi avere ottime performance l'unica strada è un unico archivio esportato via iscsi che colleghi in Gb all'initiator, poi dipende anche se trasferisci tanti piccoli file o grandi...


    Ulteriormente, supponendo di voler fornire HA all'initiator della
    SAN, e supponendo di avere i target con raid hw, e supponendo di
    creare un ulteriore raid sugli initiator (raid5), creando il primo
    raid sul primo initiator, dopo averlo creato dovrebbe calcolare la
    parita per il failover. Creando invece il raid sul secondo
    initiator (sempre raid5), ricalcola la parita e crea problema con
    il primo initiator? oppure fornendo un --assume-clean funziona a
    dovere? oppure è meglio creare un lvm al posto del raid?


Come sopra, non ho mai sentito una cosa del genere ma sul mio sistema non la farei, se ti può servire come consiglio...
Domenico.


--
-------
"Eliminato l'impossibile ciò che resta per quanto improbabile è la verità".
Conan Doyle.
Per quanto riguarda la prima domanda, si è tutto su una unica macchina, è il mio portatile.

Comincio a fare un po di confusione.
Se dico qualcosa di sbagliato correggimi.
Con una SAN, (tralasciando le schede di rete) abbiamo un initiator e dei target, in sostanza il target è colui che da i dischi e l'initiator è quello che lo dovrebbe gestire. L'utilizzo di una SAN è legato alla velocita con cui i dati vengono trasmessi, e questo non fa forza solo sulle schede di rete ma anche hdd, processori ecc..., ecco per cui utilizziamo molteplici macchine per lo scopo.
Penso che gli scopi per cui si usa iscsi possano essere principalmente due:
1) Avere N macchine, ognuna con uno storage per una determinata sezione, e quindi "aggregarli" su un unico sistema. Ma questa tipologia puo essere schivata. 2) (questa secondo me è la piu utile) Avere N macchine, ognuna con N hdd, per creare una unica grande rete che raggiunge dimensioni di storage molto molto elevate, questo dovrebbe essere uno dei motivi per cui si dice low cost e con prestazioni abbastanza elevate.

Per la prima ipotesi, diciamo che la possiamo tralasciare, avere N server storage e aggregarli su una unica macchina, non mi sembra poi cosi utile, in fondo lo abbiamo gia il server, che fa il lavoro che deve fare, anzi, se l'initiator fallisce abbiamo un unico punto di fallimento, se cade l'initiator cade tutta la rete.

iscsi ci permette per cui di dare all'initiator un certo numero di dischi, sia questo un hdd normale, sia un md, o un lvm.

Prendiamo in considerazione la seconda ipotesi.
Ora la domanda che mi pongo è: e se volessi creare un sistema con uno storage di dimensioni molto elevate (fantastichiamo petabyte, oppure 3000 TB) per un qualche scopo, come fare per ovviare a questo? Fino ad ora non ho mai sentito di singole macchine che hanno controller in grado di fare cio (parliamo sempre di bassi costi, non di mainframe), per ora penso che la soluzione possa essere un Cluster di hdd, e per le operazioni servono sempre CPU, RAM etc...e penso che con iscsi si possa fare molto facilmente, ovvio diventa complesso da gestire ma si possono creare sempre sistemi di automazione.

Per la questione dei raid, su ogni singola macchina (target), dovremmo mettere i dischi in raidN per fornire una qualche ridondanza per i dati, sulla singola macchina, in quanto ora sono le singole macchine a fare da point of failure oltre che all'initiator. Per cui se si rompe una macchina, o un hdd, o qualche componente e la macchina diventa inusabile la rete cade (mi riferisco agli hdd), sempre nel caso di un unico grande storage. Ma se invece provvediamo a fornire una ridondanza in rete? Per esempio un raid 1 tra due dev di due diverse macchine (la sincronizzazione verra tra i due hdd via iscsi e vie rete) Facciamo conto che drbd non esista, anche se penso che si basi sullo stesso principio. Bhe penso che se cade la prima abbiamo sempre la seconda, ovvio che si abbasserebbero le performance fino alla risincronizzazione.

Quello che ho pensato io è: abbiamo 4 target e un initiator. Sui target abbiamo 12 HDD che configuriamo con un raid5 hardware o software che sia (tralasciamo i livelli dei raid) per cui vedremo /dev/md0 sui target, sull'initiator abbiamo invece i dev importati sdb, sdc, sdd e sde. E fin qui tutto bene. Supponiamo ora di volere un unico gigante archivio per esempio per lo storage di siti e materiale relativo ai siti, per una webfarm. Il miglior modo per poter fare cio sarebbe quello di condividere i raid dei singoli target sull'initiator per fare un "volume" di una certa dimensione. Questo permette alta velocita, in quanto il carico viene ripartito su 4 macchine, e su N HDD, e allo stesso tempo in alta velocita su N schede rete.

Pensi che iscsi possa essere applicato anche a questo concetto? Io credo che si possa applicare in tale ambito, cio comporterebbe una complessità elevata ma se il sistema è ben progettato sarebbe (secondo me) una soluzione a dir poco fantastica.


Reply to: