Visualizzazione post con etichetta qfs. Mostra tutti i post
Visualizzazione post con etichetta qfs. Mostra tutti i post

giovedì 14 agosto 2008

Ramdisk puro in Solaris

Come fare un ramdisk in Solaris? tmpfs, il pseudo filesystem utilizzato anche per lo swap, utilizza la Virtual Memory; in Solaris la Virtual Memory e' controllata dal sistema e utilizza la memoria fisica e le eventuali slices allocate per lo swap tagliate su uno o piu' dischi duri. Questo mix non e' gestibile, quindi questa non e' strada percorribile per avere un ramdisk puro. Inoltre un tmpfs non ha un device logico e non supporta la formattazione per spalmarci sopra qualcosa come UFS, QFS o VxFS.

Ramdisk, e' un driver del kernel Solaris, per creare block o raw devices in RAM. Con ramdiskadm e' possibile creare e distruggere ramdisks. Notare che per la creazione del ramdisk la RAM necessaria deve essere disponibile, pena messaggio d'errore e mancata creazione:
# vmstat
kthr memory page disk faults cpu
r b w swap free re mf pi po fr de sr m0 m1 m4 m5 in sy cs us sy id
0 0 0 23058496 7046264 0 1 0 0 0 0 0 0 12 0 0 371 156 432 0 0 99
# ramdiskadm -a ramb 8g
ramdiskadm: couldn't create ramdisk "ramb": Resource temporarily unavailable
Creiamo:
# ramdiskadm -a rama 1g
/dev/ramdisk/rama

# ls -la /dev/ramdisk/rama
lrwxrwxrwx 1 root root 38 Aug 14 22:13 /dev/ramdisk/rama -> ../../devices/pseudo/ramdisk@1024:rama
1 # ls -la /dev/rramdisk/rama
lrwxrwxrwx 1 root root 42 Aug 14 22:13 /dev/rramdisk/rama -> ../../devices/pseudo/ramdisk@1024:rama,raw
Ci possiamo fare piu' o meno quello che ci pare; creiamoci su un normalissimo filesystem UFS:
# newfs /dev/rramdisk/rama
/dev/rramdisk/rama: Unable to find Media type. Proceeding with system determined parameters.
newfs: construct a new file system /dev/rramdisk/rama: (y/n)? y
/dev/rramdisk/rama: 2097000 sectors in 3495 cylinders of 1 tracks, 600 sectors
1023.9MB in 219 cyl groups (16 c/g, 4.69MB/g, 2240 i/g)
super-block backups (for fsck -F ufs -o b=#) at:
32, 9632, 19232, 28832, 38432, 48032, 57632, 67232, 76832, 86432,
2006432, 2016032, 2025632, 2035232, 2044832, 2054432, 2064032, 2073632,
2083232, 2092832
Montiamolo:
# mount /dev/ramdisk/rama /mnt

# df -n|grep "^/mnt"
/mnt : ufs
Creiamo un file e compariamo i tempi di creazione con quelli di un file identico creato su hard disk SAS:
*ramdisk ufs
# time mkfile 700m /mnt/700mega

real 0m5.368s
user 0m0.091s
sys 0m5.272s

*SAS interno ufs
# time mkfile 700m /FS/700mega

real 0m12.301s
user 0m0.081s
sys 0m2.907s

*FC array qfs
# time mkfile 700m /qfs_di_prova/700mega

real 0m5.866s
user 0m0.074s
sys 0m3.973s
La differenza nei tempi di creazione tra un disco interno al server SAS e il ramdisk e' ovviamente enorme; interessante vedere come sia necessario lo stesso tempo per la creazione del file su una lun residente su array FC, che fa il suo buon uso della sua cache.

Va bene! Gli usi possibili di un ramdisk sono tra i piu' disparati, diamoci da fare!

martedì 12 agosto 2008

Areanetworking: articolo QFS

Il mio recente blog sull'aggiunta di nuovi hosts a un filesystem QFS shared e' stato pubblicato su Areanetworking, del quale sono staff; era da una vita che non pubblicavo un articolo sul sito, e son contento di questo contributo ... magari mi dara' lo sprint per essere produttivo come lo ero qualche tempo fa (prima che le trasferte mi togliessero pure il tempo di allacciarmi le scarpe e stirarmi le camicie):

E' disponibile qui, contiene parte del blog rivisto e corretto e alcuni cenni di premessa su cos'e' QFS e com'e' composto

sabato 2 agosto 2008

Aggiungere hosts a uno shared QFS

Ecco gli steps necessari ad aggiungere dei servers agli hosts che sharano un fs qfs denominato "qfs" .
I files da configurare sono 2 + 1 da verificare. La directory contenente la config è /etc/opt/SUNWsamfs

root@box3 # ls /etc/opt/SUNWsamfs/
VERSION.4.6 hosts.qfs notify.cmd
startup mcf scripts

- hosts.qfs , basta editarlo su uno degli hosts e copiarlo sugli altri.

root@box3 #cat hosts.qfs
box1 172.30.10.1 1 - server
box2 172.30.10.2 2 -
box3 172.30.10.3 3 -

Si commenta da se. Il server è la macchina 1, gli altri sono potenziali
metadata servers nell'ordine di diritto dato dal numero nella terza colonna.

- mcf:
root@box3 # cat mcf
qfs 10 ma qfs - shared
/dev/dsk/c4t6d0s0 11 mm qfs -
/dev/dsk/c4t6d0s7 12 mr qfs -

Contiene la struttura di volume e filesystem. Va definito uno stesso
filesystem su tutte le macchine, specificando un identico nome (in
questo caso "qfs") e definendo come sopra data e metadata slices, ma soprattutto mettendo la dicitura shared.
Attenzione a un'errore banale, ma facile che possa capitare di incapparci. Il
logical device path della lun in uso dalle 4 macchine va definito localmente
su ogni host, appunto ha significanza locale, con il path "corretto". Ad esempio su box1 è
/dev/dsk/c3t6d0 mentre sulla 3 /dev/dsk/c4t6d0. Cambia il controller per la stessa lun da sharare, è un errore non accorgersene andando a inserire un device errato nell'mcf.

mcf è il file dove si va ad agire quando si intende ingrandire il filesystem. Qui si aggiungono le luns da assegnare come spazio per dati e metadati.

- /etc/inittab . Contiene la riga:
sf:023456:respawn:/usr/lib/fs/samfs/sam-fsd
Verificare che non sia stata precedentemente commentata (ad esempio in seguito a shutdown del demone qfs conseguente a rimozione del filesystem shared.

Potrebbe essere necessario avviare i demoni:
/etc/init.d/samfs.shared start

Si lancia il comando
root@box3 # samsharefs -u qfs

Che rilegge il file hosts.qfs e aggiorna la configurazione del demone in accordo ad esso.
Se il filesystem è smontato su uno degli hosts, allora usa:
root@box1 # samsharefs -u -R qfs # !!! OKKIO !!! usare l'opzione -R solo se il fs è SMONTATO , se è MONTATO si rischia una corruzione, usare solo -u
root@box1 # samd config
Configuring SAM-FS

partendo dal metadata server e passando poi alle altre macchine.
Quest'ultimo comando applica i cambiamenti. E' possibile montare i filesystems se non lo si è già fatto.

Un paio di comandi di verifica, utili anche nel caso di problemi durante operazioni del genere:
- samsharefs qfs
- samfsinfo qfs

root@box3 # samsharefs qfs
#
# Host file for family set 'qfs'
#
# Version: 4 Generation: 28 Count: 4
# Server = host 2/box3, length = 138
#
box1 172.30.10.1 1 -
box2 172.30.10.2 2 -
box3 172.30.10.3 3 - server

root@box3 # samfsinfo qfs
samfsinfo: filesystem qfs is mounted.
name: qfs version: 2 shared
time: SatAug 1 22:00:00 CET 2008
count: 2
capacity: 000000000047f000 DAU: 64
space: 0000000000370a40
meta capacity: 0000000000080000 meta DAU: 16
meta space: 00000000000706e0
ord eq capacity space device
0 11 0000000000080000 00000000000706e0 /dev/dsk/c4t6d0s0
1 12 000000000047f000 0000000000370a40 /dev/dsk/c4t6d0s7

Rimane da testare il corretto switch del server; il freeze del
filesystem durante lo switch è abbastanza trasparente, discretamente veloce, e comunque tutte le operazioni vengono messe in attesa e portate a termine appena il sistema torna disponibile.
E' possibile forzare lo switch così:
root@box3 # samsharefs -s HOSTNAME qfs

Si vedrà qualcosa di molto simile:
Aug 1 15:36:06 box1 samfs: [ID 145691 kern.notice] NOTICE: SAM-QFS:
qfs: Failing over to new server box3, frozen (2000821)
Aug 1 15:36:06 box1 samfs: [ID 668864 kern.notice] NOTICE: SAM-QFS:
qfs: Set client: new server box3 (2000821), 1.3, fl=0
Aug 1 15:36:06 box1 samfs: [ID 665295 kern.notice] NOTICE: SAM-QFS:
qfs: Reset leases, then send resync message to new server box3,
thawing (4000821)
Aug 1 15:36:10 box1 samfs: [ID 999740 kern.notice] NOTICE: SAM-QFS:
qfs: New server box3 (8800811) responded to resync message, thawing
(4800821)
Aug 1 15:36:10 box1 samfs: [ID 515541 kern.notice] NOTICE: SAM-QFS:
qfs: Waiting for new server box3 (8800811): thawing (4800821)
Aug 1 15:36:12 box1 samfs: [ID 206251 kern.notice] NOTICE: SAM-QFS:
qfs: Received faildone message from new server box3, thawing (4c00821)
Aug 1 15:36:12 box1 samfs: [ID 685965 kern.notice] NOTICE: SAM-QFS:
qfs: Failed over to new server box3: (21)

Dovrebbe essere tutto. Per aggiunte, correzioni, estensioni, commenti:
FALLE in un commento, scrivimi a alex.t@areanetworking.it e diventeranno a disposizione su questo blog

mercoledì 16 luglio 2008

Rimuovere shared QFS

Un QFS shared su una LUN mappata dall'array a 4 hosts.
Rimuovere due hosts.
Oltre all'editing del file hosts.xxx sulle macchine rimanenti per eliminare i riferimenti a quelle da rimuovere è fondamentale:
* smontare il filesystem
* lanciare samsharefs -Ru
* samd config
* stoppare il qfs sulle macchine rimosse
* rinominare files hosts.xxx e mcf sulle macchine rimosse
* importante ... nel file inittab delle macchine rimosse, c'è una entry che riguarda il QFS che causa il respawn del demone sam-fsd, questa va COMMENTATA!! In caso contrario, nonostante lo stop dei demoni tramite script presente /etc/init.d/ le macchine continueranno a inviare richieste a quella che è conosciuta come l'ultimo host server del filesystem shared; di per sè non causa nulla di male saltare questo passo, ma non è pulito e, non si sa mai, potrebbe causare o essere concausa di problemi
* sulle macchine rimanenti samd config restituisce un errore che seppur non bloccante, fa ben capire che non ha del tutto digerito i cambiamenti; infatti, parla di qualche problema con le macchien eliminate. Questo viene fixato da un reboot, potrebbe esserci altra soluzione ma non la conosco
* Rimuovere le entries del filesystem qfs dal file /etc/vfstab delle macchine rimosse
* Last but not least: switchare il server da una macchina all'altra per assicurarsi che tutto funzioni a dovere.

Visite