Ramdysk jest fragmentem pamięci RAM, która wykorzystywana jest w roli pamięci dyskowej. Dzięki takiej operacji czas dostępu do danych jest tysiąckrotnie szybszy od napędów dysków twardych. Niestety dane umieszczone na ramdysku są tracone po wyłączeniu systemu operacyjnego, dlatego są doskonałym miejscem do przechowywania tam plików tymczasowych.

Tworzenie ramdysku jest bardzo prostą czynnością i służy do tego polecenie ramdiskadm, które wydajemy z poziomu użytkownika root.

root@solaris# ramdiskadm -a rdisk 1024m
/dev/ramdisk/rdisk
root@solaris# ls -l /dev/ramdisk/rdisk
lrwxrwxrwx   1 root     root          39 paź 25 09:25 /dev/ramdisk/rdisk -> ../../devices/pseudo/ramdisk@1024:rdisk

Jeśli pojawi się komunikat Resource temporarily unavailable, oznacza to, że nie posiadamy w systemie tak dużego ciągłego obszaru wolnej pamięci. Należy wtedy podać mniejszy obszar dla ramdysku lub stworzyć go podczas uruchamiania systemu. Jeśli polecenie zakończyło się bez błędu możemy sprawdzić czy system widzi nowo stworzony ramdisk.

root@solaris# ramdiskadm
Block Device                                                  Size  Removable
/dev/ramdisk/root                                        117481472    No
/dev/ramdisk/rdisk                                      1073741824    Yes

Następnie należy stworzyć na nowym dysku system plików a następnie takie urządzenie zamontować w systemie operacyjnym, aby było dostępne dla użytkowników.

root@just_test# fstyp /dev/ramdisk/rdisk
Unknown_fstyp (no matches)
root@just_test# newfs /dev/ramdisk/rdisk
/dev/rramdisk/rdisk: Unable to find Media type. Proceeding with system determined parameters.
newfs: construct a new file system /dev/rramdisk/rdisk: (y/n)? y
/dev/rramdisk/rdisk:    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

Następnie montujemy nowe urządzenie w systemie i sprawdzamy czy jest ono dostępne.

root@solaris# mkdir /zones/wm-test/root/export/rdisk
root@solaris# mount /dev/ramdisk/rdisk /zones/wm-test/root/export/rdisk
root@solaris# df -h
Filesystem             size   used  avail capacity  Mounted on
/                       11G   4,3G   6,4G    40%    /
/dev                    11G   4,3G   6,4G    40%    /dev
proc                     0K     0K     0K     0%    /proc
ctfs                     0K     0K     0K     0%    /system/contract
mnttab                   0K     0K     0K     0%    /etc/mnttab
objfs                    0K     0K     0K     0%    /system/object
swap                   8,0G   336K   8,0G     1%    /etc/svc/volatile
fd                       0K     0K     0K     0%    /dev/fd
swap                   8,1G   112M   8,0G     2%    /tmp
swap                   8,0G    32K   8,0G     1%    /var/run
/export/home           134G    50G    83G    38%    /export/home
/export/rdisk          961M   1,0M   902M     1%    /export/rdisk

Jeśli wszystkie operacje się powiodły, możemy przystąpić do testowania ramdisku.

Fujitsu Siemens PRIMEPOWER 450Do testów wykorzystałem serwer Fujitsu Siemens PRIMEPOWER 450 4x SPARC64 V z sytemem operacyjnym SunOS 5.10 (Generic_138888-08 sun4us sparc FJSV,GPUZC-M). Maszyna wyposażona jest w 8192 MB pamięci RAM.

Do testów wykorzystałem polecenie dd do wygenerowania plików oraz polecenie time do zmierzenia czasu ich wykonania. Pierwszym testem było wygenerowanie pliku wielkości 512 MB.

root@solaris# time dd if=/dev/zero of=/export/rdisk/test/file.img bs=4096 count=131072
131072+0 records in
131072+0 records out
real    0m4.626s
user    0m0.217s
sys     0m4.369s
root@solaris#
root@solaris# time dd if=/dev/zero of=/test/file.img bs=4096 count=131072
131072+0 records in
131072+0 records out
real    0m16.819s
user    0m0.215s
sys     0m3.025s

Jak widać, czas tworzenia pliku na ramdysku był ponad 4 razy szybszy od stworzenia go na dysku lokalnym. W kolejnym teście stworzymy 1000 plików o wielkości 1 KB każdy.

root@solaris# time for i in {1..1000}; do dd if=/dev/zero of=/export/rdisk/test/file.$i.img bs=1024 count=1; done
real    0m4.807s
user    0m1.042s
sys     0m3.803s
root@solaris#
root@solaris# time for i in {1..1000}; do dd if=/dev/zero of=/test/file.$i.img bs=1024 count=1; done
real    0m4.800s
user    0m1.030s
sys     0m3.798s

W tym wypadku wyniki były porównywalne. Kolejny test to stworzenie 500 plików o wielkości 1 MB każdy.

root@solaris# time for i in {1..500}; do dd if=/dev/zero of=/export/rdisk/test/file.$i.img bs=1024 count=1024; done
real    0m9.820s
user    0m1.436s
sys     0m8.332s 
root@solaris#
root@solaris# time for i in {1..500}; do dd if=/dev/zero of=/test/file.$i.img bs=1024 count=1024; done
real    0m34.315s
user    0m1.450s
sys     0m7.882s

I w tym wypadku ramdysk był szybszy. Jak widać taki podręczny dysk w pamięci może przydać się do przechowywania plików tymczasowych lub dużej ilości małych plików.

Podobne artykuły

System operacyjny, systemy operacyjne

przez -
0 335

przez -
0 1156

przez -
1 265
  • Swiety

    No to chyba cos jest nie tak, skoro ramdysk jest tylko 4 razy szybszy od zapisu na dysku lokalnym?

  • Tom

    Jak dla mnie to jest okey :]