Tworzenie i praktyczne wykorzystanie ramdysków
Witam po długiej przerwie z nowym wyglądem bloga i pod własną jakże pożądaną i cenną domeną ;)
Ten pierwszy od dłuższego czasu wpis poświęcony będzie tak zwanym ramdyskom (lub jak kto woli ramdiskom), czyli wydzielonym obszarom pamięci operacyjnej traktowanym przez OS jak dodatkowy dysk twardy. Innymi słowy wykorzystywaniu pamięci RAM jako dysku twardego.
W odległych czasach kiedy królowały Amigi ramdyski były powszechnie wykorzystywane jako dyski startowe. Później nastała era PC i z czasem dyski twarde oraz pamięć cache upowszechniały się, a każdy 1 MB pamięci RAM zaczął być na wagę złota, sprawiło to, że ramdyski traciły na znaczeniu. Dzisiaj 2 GB RAM i więcej jest czymś powszechnym, dyski twarde uważane są za zbyt wolne, wiele osób szuka sposobu na szybkie pozbycie się swoich "piratów" w razie wizyty pewnych ludzi ;), a rządy państw i organizacje międzynarodowe robią wszystko aby kontrolować każdy aspekt życia mieszkańców naszej planety. Ramdyski znowu mają szanse zdobyć popularność. Istnieją nawet koncepcje zakładające zastąpienie klasycznych dysków twardych poprzez pamięci RAM specjalnie przystosowane do pełnienia funkcji ramdysku. Takowe muszą ograniczyć jedną z głównych cech pamięci RAM - zanik danych po utracie zasilania energią elektryczną. Wykorzystuje się do tego specjalne układy zasilania lub baterie. Przykładem może być tutaj stworzony przez firmę Gigabyte produkt o nazwie GC-Ramdisk. Oczywiście ryzyko utraty danych z takiego "dysku" jest mimo wszystko olbrzymie, a sam dysk nie jest tani.
Dwiema najważniejszymi cechami ramdysków z których wynikają niemal wszystkie zastosowania tego rozwiązania są:
- Znacznie krótszy czas dostępu do danych niż w przypadku dysków twardych, pendriveów, płyt kompaktowych czy dyskietek.
- Dane zapisane na ramdysku bezpowrotnie znikają w przypadku utraty zasilania.
Do czego więc można wykorzystać Ramdysk?
- Jako tymczasowa alternatywa dla dysku twardego – padnięty dysk twardy nie oznacza braku możliwości korzystania z komputera, wystarczy uruchomić sobie jakiś system z dysku LiveCD czy LiveUSB, zamontować ramdisk i nawet zrzucić na niego swoją ulubioną muzykę.
- W przypadku udostępniania komputera wielu osobom – jeżeli z jakiegoś komputera korzysta wiele różnych osób (np.: w bibliotece) to jest dość duże prawdopodobieństwo, że znajdzie się ktoś kto wprowadzi własne "poprawki" w systemie lub uruchomi malware, który może doprowadzić do awarii systemu, utrudnić pracę następnych użytkowników danej maszyny bądź przechwycić ich loginy oraz hasła; inną często spotykaną w bibliotekach, szkołach i kawiarenkach sytuacją jest taka w której użytkownicy zapisują swoje dane, hasła do komunikatorów lub poczty elektronicznej na dysku i zapominają o tym po odejściu od komputera, jakie mogą być tego konsekwencje łatwo przewidzieć; jeżeli stosowałoby się ramdyski wówczas każdy następny użytkownik mógłby pracować na świeżym systemie.
- Nadmiar pamięci RAM, której system nie potrafi wykorzystać – jeżeli ktoś nakupował sobie ramu tylko dlatego, że w MediaMarkt była promocja to możliwe, że jego system tego nie wykorzysta, a kupujący wpadnie w głębokie przygnębienie, bo wydaje mu się, że niepotrzebnie stracił swoje pieniądze; pocieszyć go może fakt, że nadmiar pamięci ram da się wykorzystać! Taka osoba może utworzyć sobie ramdysk i chwalić się wszystkim, że kupiła superszybki dysk twardy lub utworzyć tam plik wymiany, niejako omijając ograniczenie wykorzystania pamięci RAM.
- Miejsce na pliki tymczasowe – umieszczając pliki tymczasowe w pamięci RAM programów które domyślnie tego nie robią, można przyśpieszyć ich działanie.
- Przechowywanie plików o niewielki znaczeniu – pliki ściągane z Internetu często zaśmiecają dysk twardy, a wiele osób ma w końcu taki bałagan, że musi poświęcić cały dzień aby usunąć to co zbędne; domyślnym katalogiem dla pobieranych plików w firefoxie pod Windowsem jest... pulpit i wielu osobom to odpowiada do czasu... może więc warto mieć pulpit na ramdysku? oprócz plików ściągniętych z internetu na dysku tego typu można przechowywać również np.: obrazy płyt przeznaczonych do wypalenia, kopie zapasowe edytowanych dokumentów, logi.
- Opróżnianie kosza przy wyłączaniu komputera – czemu nie? wystarczy aby kosz znajdował się właśnie na ramdysku; wydaje się, że jest to dobra metoda na zachowanie porządku na dysku, osobiście uważam jednak, że lepiej rozwiązać to przy pomocy skryptu, aczkolwiek wykorzystanie ramdysku może znacznie usprawnić usuwanie plików.
- Miejsce do rozpakowywania archiwów – rozpakowywanie archiwum na ramdysku powinno przyśpieszyć ten proces i umożliwić szybkie podejrzenie jego zawartości, trzeba jednak najpierw sprawdzić jaką wielkość będzie miał plik po rozpakowaniu, jest to szczególnie ważne w przypadku ramdysku o zmiennej wielkości, jeżeli plik zapełni całą pamięć ram wówczas konieczny będzie reset.
- Przyśpieszanie pracy systemu – jeżeli komputer jest włączony non-stop i nie grozi mu utrata zasilania wówczas warto umieścić pewne pliki na ramdysku (np.: zamontować na nim katalog /usr/bin/ w systemach unix-like).
- Tymczasowa przechowywalnia plików przeznaczonych do umieszczenia na zaszyfrowanej partycji – np.: coś ważnego trzeba szybko zrzucić na dysk, a partycja zaszyfrowana nie jest aktualnie dostępna.
- Składowisko wszelakiego "zua" – jeżeli ktoś lubi mieć pliki, których posiadania nie chce zdradzać lub zawierają one dane które nie mogą wpaść w niepowołane ręce może je umieścić na ramdysku, wtedy wyciągnięcie wtyczki z gniazdka zasilania często wystarczy aby doprowadzi do ich trwałego usunięcia.
Wymieniłem zastosowania ramdysku jakie przyszły mi do głowy w momencie pisania tego arta. Oczywiście zastosowań może być dużo więcej, o pomysłach proszę pisać w komentarzach.
Tworzenie ramdysku
Nastał czas abym opisał jak samodzielnie taki dysk stworzyć. Przedstawię to na przykładzie najpopularniejszych rodzin systemów operacyjnych czyli Windows i Unix. Faktem niezaprzeczalnym jest to, że w systemach unix-like takich jak Linux utworzenie ramdysku jest szybkie i banalnie proste. A Windowsy, co nie jest nowością mają wszystko to oprócz tego czego potrzeba, konieczne więc będzie ściągnięcie programu (lub napisanie własnego ;] )
Unix (Linux 2.6)
Jeżeli ktoś w /mnt czy /media tworzy katalogi na zapas wówczas utworzenie ramdysku ograniczy się do jednej prostej komendy, jeżeli nie będą to dwie komendy ;). A oto przykład: # mkdir /mnt/ramdisk # mount -t ramfs /dev/ram0 /mnt/ramdiskI to w zasadzie wszystko. Prosty ramdysk o zmiennej wielkości został utworzony.
W pewnych przypadkach zmienna wielkość takiego dysku może spowodować spore problemy, dlatego też ramdysk można utworzyć inną alternatywną, nieco trudniejszą metodą: # dd if=/dev/zero of=/dev/ram0 bs=1k count=16384 # mkfs.minix /dev/ram0 # mkdir /mnt/ramdisk # mount -t minix /dev/ram0 /mnt/ramdisk Jak widać powyższa metoda jest zdecydowanie bardziej skomplikowana od tej pierwszej. Utworzony został ramdysk o wielkości 16 MB (wielkość należy określić w KB jako parametr "count" programu dd). Systemu plików może być dowolny i w zasadzie nie ma większego znaczenia jaki on będzie (z pewnymi wyjątkami oczywiście), w tym przypadku użyty został przestarzały minix; po szczegółowe opisy przedstawionych poleceń zapraszam do man ;). Jak widać na koniec ramdysk został zamontowany w utworzonym wcześniej katalogu /mnt/ramdisk.
Dwie powyższe metody pozwalają już na stworzenie ramdysku zależnego od potrzeb użytkownika w systemach unix-like.
Niektórzy zapewne chcieliby aby taki dysk był tworzony automatycznie przy starcie systemu. W przypadku pierwszej metody można to zrobić dokładnie tak samo jak z partycjami dysku twardego, czyli dodając do pliku /etc/fstab: /dev/ram0 /mnt/ramdysk ramfs defaults 0 2 W przypadku drugiej metody należy dodać polecenia tworzące i montujące ramdysk do skryptów startowych. Jest jednak zależne od dystrybucji systemu operacyjnego, więc każdy musi sam sobie znaleźć metodę.
W zastosowaniach pisałem o tym, że dzięki ramdyskom każdy kolejny użytkownik może mieć możliwość pracy na świeżym systemie. Jeżeli użytkownik korzystający z komputera nie ma uprawnień administracyjnych powinno to być proste i ograniczać się w praktyce do przywrócenia zawartości katalogu domowego. Ramdysk należy więc zamontować np.: w /home/czytelnik. Jeżeli chce się aby w tym katalogu były po starcie jakieś pliki to należy przywracać obraz ramdysku przed zamontowaniem. dd if=OBRAZ_RAMDYSKU of=/dev/ram0 bs=1k Utworzenie obrazu ramdysku to odwrócenie parametrów if i of programu dd. Powyższe polecenie musi być wykonywane automatycznie po starcie systemu, aby spełniało swoją rolę.
Planowane wykorzystanie ramdysku pod Linuksem ogranicza się do prawidłowego wyboru miejsca montowania. Pod Windowsem nie jest już tak prosto i logicznie
Windows (Windows NT 5.1, znany jako Windows XP)
Wiele dostępnych w sieci artykułów o tworzeniu ramdysków w systemach z rodziny Windows jest już mocno przestarzała i mówi aby użyć programu xmsdsk.exe, ta metoda zadziała na systemach MS-DOS, w systemach z Windows NT (tzn.: Windows 2k/XP/Vista/7) mogą wystąpić spore problemy.
Co więc pozostaje? Po wpisaniu w wyszukiwarce ramdisk bardzo łatwo znajdzie się zapewne program o bardzo kojarzącej się z ramdyskiem nazwie "RAMDisk", program jest na licencji Shareware, a pełna wersja kosztuje ok. 49 USD. Serdeczne podziękowania. Pozostaje szukać dalej i znaleźć: Gavotte Ramdisk - ten program jest chyba najlepszym sposobem utworzenia ramdysku pod Windowsem.
Istnieje jeszcze wiele innych sposobów. Na przykład w Windows 2k/XP można skorzystać z porady znajdującej się na stronie producenta systemu operacyjnego: Przykładowy sterownik Ramdisk.sys dla systemu Windows 2000, można również spróbować wykorzystać wspominany wcześniej xmsdsk.
Aby szybko utworzyć ramdysk pod Windowsem używając Gavotte Ramdisk należy po pobraniu i rozpakowaniu programu należy uruchomić ramdisk.exe, oraz kliknąć "Install Ramdisk". Domyślnie utworzy się 16MB ramdysk, który będzie widziany jako dysk twardy oznaczony jako "R:". Wszystkie parametry można oczywiście zmienić, po więcej informacji należy sięgnąć do załączonego pliku README.TXT lub odwiedzić stronę http://www.mydigitallife.info/2007/05/27/free-ramdisk-for-windows-vista-xp-2000-and-2003-server/.
Podsumowanie
Jak widać tworzenie ramdysków jest banalnie proste, a korzyści jakie można osiągnąć są olbrzymie.