[#] Tworzenie super-szybkiego magazynu używając tmpfs

( Ostatnio zmieniony ndz., 03/05/2009 - 13:32 )
 

Wstęp

Wszyscy wiedzą że RAM jest dużo szybszy od dysku twardego. Żeby zobrazować, dysk SATA posiada chwilowy maksymalny transfer 50MB/s, natomiast RAM w okolicy 1000 MB/s, co daje nam 20 krotne przyspieszenie.

Sposobów na wykorzystanie RAM-u jest wiele, oto kilka zaczerpniętych z doświadczenia:

* Jeśli uruchomiłeś serwer www, a twoje oprogramowanie do keszowania cały czas zapisuje dane na dysku to z pewnością nie będzie to wydajne rozwiązanie
* Jeśli udostępniasz duże pliki do pobrania przez internet przez wielu użytkowników, z pewnością spotkasz się z problemem I/O (wejścia/wyjścia)
* Jeśli posiadasz serwer PXE z obrazami ISO, wydajność odczytu obrazu ISO przez wiele stacji nie będzie zadowalająca
* Jeśli zajmujesz się obróbką wideo lub grafiki, to z pewnością nie raz odczuwałeś, że dysk twardy do wąskie gardło twojego komputera

A co jeśli wszystkie te pliki znajdowałyby się w RAM-ie ? Jakby to działało?

Metoda 1. Wykorzystanie /DEV/SHM

Wszyscy którzy używają systemu Linux, muszą posiadać użądzenie /dev/shm w swoim systemie. Jest to zamontowany system plików (tmpfs) w odniesieniu do pamięci wirtualnej zamiast dysku. Rozmiar tego katalogu rośnie automatycznie wraz z zapotrzebowaniem, jednak jego maksymalny domyślny rozmiar to połowa dostępnej pamięci RAM (przykład: jeśli masz 2GB RAM to /dev/shm będzie mógł mieć maksymalnie 1GB)

Tak więc, wszystko co skopiujemy do tego katalogu, faktycznie będzie znajdowało się w pamięci RAM a nie na dysku twardym. Taki stan rzeczy może okazać się przydatny podczas pracy z dużymi plikami (np. grafika, wideo)

Może sie zdarzyć, że limit do połowy fizycznej pamięci RAM jest nie wystarczający, w tym celu wykonajmy jego zwiększenie:

sudo mount -o remount,size=3G /dev/shm

Pamiętaj, że jeśli przekroczysz rozmiar dostępnej pamięci RAM, ten zabieg nic ci nie da

Metoda 2. Nowy system plików TMPFS

Przykład:

Tworzymy ramdysk w lokalizacji: /var/www/www.mojastrona.pl/ramdysk, o rozmiarze 500MB (naszej pamięci RAM) i modyfikowalny tylko przez użytkownika root, ale do odczytu przez wszystkich (np.: Apache)

mkdir -p /var/www/www.mojastrona.pl/ramdysk
mount -t tmpfs -o size=500M,mode=0744 tmpfs /var/www/www.mojastrona.pl/ramdysk

Przywracanie naszego ramdysku podczas startu maszyny:

W pliku /etc/fstab dopisujemy:

tmpfs /var/www/www.mojastrona.pl/ramdysk tmpfs size=500M,mode=0744 0 0

Metoda 3. Inna

sudo mkfs -t ext3 -q /dev/ram1 65536
sudo mkdir -p /ramdisk
sudo mount /dev/ram1 /ramdisk -o defaults,rw

UWAGA

Wszystkie dane które są przechowywane w tymczasowym systemie plików tmpfs, nie są zapisywane na dysku twardym. Jeśli uruchomisz ponownie komputer, dane te zostaną stracone.

Jeśli jednak potrzebujesz sposobu na auto-kopię i auto-przywrócenie, powinieneś posłużyć się skryptem uruchamianym podczas startu systemu, jego wyłączania, lub dodać zadanie do CRON-a

Źródło

http://kevin.vanzonneveld.net/…using_tmpfs/

5
Twoja ocena: Brak Średnio: 5 (5 głosów)