tmpfs

tmpfs (skrót od T e mp orary File System ) to paradygmat tymczasowego przechowywania plików zaimplementowany w wielu systemach operacyjnych typu Unix . Ma wyglądać jak zamontowany system plików , ale dane są przechowywane w pamięci ulotnej zamiast w trwałym urządzeniu pamięci masowej. Podobną konstrukcją jest dysk RAM , który pojawia się jako wirtualny dysk i obsługuje dyskowy system plików .

Semantyka

Wszystko przechowywane w tmpfs jest tymczasowe w tym sensie, że żadne pliki nie zostaną utworzone bezpośrednio na nieulotnej pamięci masowej , takiej jak dysk twardy (chociaż przestrzeń wymiany jest używana jako magazyn zapasowy zgodnie z zasadami wymiany stron systemu operacyjnego). Po ponownym uruchomieniu wszystko w tmpfs zostanie utracone.

Pamięć używana przez tmpfs rośnie i kurczy się, aby pomieścić zawarte w niej pliki.

Wiele dystrybucji systemu Unix domyślnie włącza i używa tmpfs dla gałęzi /tmp systemu plików lub dla pamięci współdzielonej . Można to zaobserwować za pomocą df , jak w tym przykładzie:

Używany rozmiar systemu plików Dostępność Wykorzystanie % Montowane na tmpfs 256M 688K 256M 1% /tmp

domyślnie zamontowanego tmpfs w /tmp ; w takim przypadku pliki w /tmp będą przechowywane w tym samym systemie plików co / .

W prawie wszystkich dystrybucjach Linuksa tmpfs jest montowany w /run/ lub /var/run/ w celu przechowywania tymczasowych plików czasu wykonywania, takich jak pliki PID i gniazda domeny Unix. Tymczasowe pliki systemowe, takie jak zmienne oprogramowania układowego, są przechowywane w katalogu /sys

Implementacje

Istnieje kilka niezależnych wariantów koncepcji tmpfs. Jeden z najwcześniejszych został opracowany przez Sun Microsystems dla SunOS, a inne systemy operacyjne, takie jak BSD i Linux, dostarczyły własne.

SunOS

SunOS 4 zawiera najprawdopodobniej najwcześniejszą implementację tmpfs; po raz pierwszy pojawił się w SunOS 4.0 pod koniec 1987 roku, wraz z nowym ortogonalnym zarządzaniem przestrzenią adresową, które umożliwiało mapowanie pamięci dowolnego obiektu.

Solaris / tmp został domyślnie ustawiony jako system plików tmpfs, począwszy od Solaris 2.1, wydanego w grudniu 1992 r. Dane wyjściowe polecenia Solaris df pokażą swap jako pamięć masową w tle dla dowolnego woluminu tmpfs:

# df -k Używany system plików w kilobajtach dostępna pojemność Zamontowany na swapie 601592 0 601592 0% /tmp/test

Linuks

tmpfs jest obsługiwany przez jądro Linuksa począwszy od wersji 2.4. Linux tmpfs (wcześniej znany jako shmfs ) jest oparty na kodzie ramfs używanym podczas uruchamiania i korzysta również z pamięci podręcznej stron , ale w przeciwieństwie do ramfs obsługuje zamianę mniej używanych stron w celu wymiany przestrzeni, a także rozmiar systemu plików i limity i-węzłów, aby zapobiec pamięci (domyślnie odpowiednio połowa fizycznej pamięci RAM i połowa liczby stron pamięci RAM).

BSD

4.2BSD wprowadziło MFS, oparty na pamięci system plików zaimplementowany poprzez zastosowanie istniejącego dyskowego systemu plików FFS do wirtualnego regionu pamięci.

tmpfs, system plików pamięci zaimplementowany przy użyciu konwencjonalnych struktur danych w pamięci w celu poprawy wydajności MFS, został włączony do oficjalnego drzewa źródłowego NetBSD 10 września 2005 r.; jest dostępny w wersji 4.0 i nowszych.

FreeBSD przeniósł implementację NetBSD, gdzie jest ona dostępna w wersji 7.0 i późniejszych.

DragonFly BSD przeniósł również implementację NetBSD, gdzie jest ona dostępna w wersji 2.5.1 i późniejszych.

OpenBSD przeportował również implementację tmpfs NetBSD, początkowo zapoczątkowaną przez Pedro Martelletto i ulepszoną przez wielu innych. Został włączony w kompilacjach od 17 grudnia 2013 r. Pierwsze wydanie OpenBSD z dołączonym tmpfs to 5.5. OpenBSD 6.0 wyłączył tmpfs z powodu braku konserwacji.

Zalety

Ze względu na wyższą prędkość pamięci RAM w porównaniu z pamięcią dyskową, tmpfs pozwala na znacznie szybsze przechowywanie pamięci podręcznej w jednym, co prowadzi do bardziej wydajnego całego systemu, chociaż systemy operacyjne z pamięcią podręczną stron odniosą mniejsze korzyści, ponieważ ostatnio używane strony plików pozostają w pamięci, jeśli wystarczająca ilość wolnej pamięci. Ponieważ pamięć RAM jest czyszczona po ponownym uruchomieniu, tmpfs zapobiega zbytniemu zagraceniu systemów bez konieczności ręcznego usuwania plików tymczasowych przez użytkownika. Ponadto przechowywanie plików w pamięci RAM zapobiega zbyt szybkiemu zapełnianiu się dysków i wydłuża żywotność dysków SSD , zmniejszając liczbę zapisów.

Niedogodności

W systemach bez przestrzeni wymiany lub w których kończy się przestrzeń wymiany, tmpfs może zużywać duże ilości pamięci.

Jeśli pliki pamięci podręcznej są przechowywane w tmpfs, programy utracą swoje dane z pamięci podręcznej po ponownym uruchomieniu.

Linki zewnętrzne