venerdì, Novembre 22, 2024

Ramdisk puro in Solaris

Alessandro Torchia
Alessandro Torchiahttp://www.areanetworking.it
Trent'anni, sistemista Unix, specializzato su Solaris, sistema Operativo di casa Sun. Attualmente lavora come consulente presso una delle aziende sanitarie presenti sul territorio italiano. Certificato Sun SCSA (Solaris Certified System Administrator) e Sun SCNA (Solaris Certified Network Administrator), è responsabile dei sistemi cluster Sun SPARC Midrange, e della Storage Area Network FC presenti nei CED dell'azienda. Attualmente studia per conseguire la certificazione Sun Cluster 3.2 Administrator. In passato ha lavorato in ambito networking presso varie realtà prevalentemente su apparati Cisco e Nortel. Ha frequentato l'Academy CCNA e Fundamentals of Wireless, e cerca di mantenere vive le conoscenze acquisite in quest'ambito, nonostante la sua predilezione per l'ambito sistemistico Unix e la passione per Solaris siano la sua prima scelta.

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!

Articoli correlati

Noleggia una Tesla per il tuo evento ICT!

Categorie