[#] 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/

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

Odpowiedzi : 5

Ostatni komentarz : pon., 15/06/2009 - 23:28

Genialne, abosultnie genialne! Nie znałem tego rozwiązania a bardzo mi się przyda. Pozdrawiam.

Bardzo miło słyszeć, że uda ci się rozwiązać dzięki temu problem. A mógłbyś przybliżyć do jakich celów będziesz używał powyższego? Może też się czegoś nauczę ...

witam

pomysl super i nie wydaje sie zbyt problematyczny dla laika,
tylko jak to moge wykorzystac w codziennej pracy?
znacie jakes tricki na system, moze jakis katalog podpiac pod to?

Możesz użyć do przechowywania cache Firefox'a... lub całego profilu FF.
Powiem tak: Przeglądarka śmiga!

Ja mam zrobionego symlinka z ~/tmp do /dev/shm, którego używam między innymi do przechowywania plików ściąganych z netu: co potrzebuje zostawić przegrywam, reszta ginie przy wyłączeniu

Dodaj nową odpowiedź

Informacja:

Osoby zamieszczające wypowiedzi naruszające prawo lub prawem chronione dobra osób trzecich, mogą ponieść z tego tytułu odpowiedzialność karną lub cywilną. Upewnij się, że twoja wypowiedź nie godzi w niczyje mienie.

  • Internal paths in single or double quotes, written as "internal:node/99", for example, are replaced with the appropriate absolute URL or path. Paths to files in single or double quotes, written as "files:somefile.ext", for example, are replaced with the appropriate URL that can be used to download the file.
  • Adresy internetowe są automatycznie zamieniane w odnośniki, które można kliknąć.
  • Dozwolone znaczniki HTML: <strong> <blockquote> <code>
  • Znaki końca linii i akapitu dodawane są automatycznie.

Więcej informacji na temat formatowania

Łapirobot
Proszę odpowiedzieć
C
b
F
i
Y
s
j
v
1
r
Enter the code without spaces and pay attention to upper/lower case.