tmpfs w Linux – pamięć jako system plików, zastosowania i bezpieczeństwo
Linux

tmpfs w Linux – pamięć jako system plików, zastosowania i bezpieczeństwo

tmpfs w Linux – pamięć jako system plików, zastosowania i bezpieczeństwo

W systemach Linux nie każdy katalog musi znajdować się na fizycznym dysku. Istnieją specjalne systemy plików, które działają bezpośrednio w pamięci RAM.

Jednym z najważniejszych jest tmpfs.

Administratorzy wykorzystują go między innymi do:

  • przyspieszania operacji tymczasowych,
  • izolacji danych,
  • zabezpieczania informacji wrażliwych,
  • optymalizacji pracy serwerów,
  • działania kontenerów.

Choć nazwa sugeruje tylko „tymczasowy katalog”, tmpfs jest znacznie bardziej zaawansowanym mechanizmem jądra Linux.


Czym jest tmpfs?

tmpfs (temporary filesystem) to system plików przechowujący dane w pamięci RAM oraz opcjonalnie w przestrzeni swap.

Najważniejsza cecha:

Dane zapisane w tmpfs nie trafiają standardowo na fizyczny dysk.

Schemat:

Aplikacja

↓

/tmp

↓

tmpfs

↓

RAM

↓

(opcjonalnie swap)

Po restarcie systemu zawartość tmpfs znika.


tmpfs a zwykły system plików

Klasyczny system plików:

Aplikacja

↓

Filesystem

↓

Dysk SSD/HDD

↓

Dane trwałe

tmpfs:

Aplikacja

↓

tmpfs

↓

RAM

↓

Dane tymczasowe

Gdzie Linux wykorzystuje tmpfs?

Współczesny Linux używa tmpfs bardzo często.

Typowe lokalizacje:

/run

/dev/shm

/tmp

Sprawdzenie:

mount | grep tmpfs

Przykład:

tmpfs on /run type tmpfs
tmpfs on /dev/shm type tmpfs

/run – dane runtime systemu

Katalog:

/run

zawiera dane potrzebne podczas działania systemu:

  • PID plików,
  • sockety,
  • informacje usług systemd,
  • blokady procesów.

Przykład:

/run/systemd/
/run/sshd/
/run/docker/

Po restarcie:

zawartość jest tworzona ponownie.


/dev/shm – pamięć współdzielona

/dev/shm jest używany przez mechanizmy IPC:

  • shared memory,
  • aplikacje wieloprocesowe,
  • bazy danych.

Przykład:

Program A:

zapisuje dane

↓

/dev/shm

↓

Program B odczytuje

Jest bardzo szybki, ponieważ operuje w RAM.


tmpfs jako /tmp

Niektóre systemy konfigurują:

/tmp

jako tmpfs.

Zalety:

  • szybkie operacje,
  • automatyczne czyszczenie po restarcie,
  • brak pozostawiania danych na dysku.

Wady:

  • ograniczona ilość pamięci,
  • dane znikają po restarcie.

Jak sprawdzić tmpfs?

Polecenie:

df -h

Przykład:

Filesystem      Size Used Avail Mounted on

tmpfs           8G   50M  7.9G /run

Dokładniej:

findmnt -t tmpfs

Jak działa tmpfs od strony jądra?

tmpfs nie rezerwuje całej pamięci podczas montowania.

Przykład:

Montujemy:

mount -t tmpfs -o size=10G tmpfs /mnt/ram

Nie oznacza to:

„zabierz 10 GB RAM”.

Oznacza:

„maksymalny limit może wynieść 10 GB”.

Pamięć jest przydzielana dynamicznie:

Pusty tmpfs

0 MB RAM


↓

Zapis danych

↓

100 MB RAM


↓

Więcej danych

↓

1 GB RAM

Montowanie własnego tmpfs

Tworzymy katalog:

mkdir /mnt/ramdisk

Montujemy:

mount -t tmpfs tmpfs /mnt/ramdisk

Sprawdzenie:

df -h /mnt/ramdisk

Ograniczenie rozmiaru

Bardzo ważne na serwerach.

Przykład:

mount -t tmpfs \
-o size=512M \
tmpfs /mnt/ramdisk

Maksymalnie:

512 MB

Uprawnienia tmpfs

Przykład bezpiecznego montowania:

mount -t tmpfs \
-o size=256M,noexec,nosuid,nodev \
tmpfs /tmp

Co oznaczają opcje?


noexec

Blokuje wykonywanie programów.

Przykład:

./malware

nie uruchomi się.


nosuid

Ignoruje bit SUID.

Chroni przed eskalacją uprawnień.


nodev

Blokuje urządzenia znakowe i blokowe.


tmpfs i bezpieczeństwo

tmpfs często jest wykorzystywany jako element hardeningu.

Przykład:

Atakujący pobiera malware:

Internet

↓

/tmp/malware

Jeżeli:

/tmp = tmpfs

+

noexec

utrudniamy wykonanie pliku.

 

tmpfs w Linux – pamięć jako system plików, zastosowania i bezpieczeństwo
tmpfs w Linux – pamięć jako system plików, zastosowania i bezpieczeństwo

tmpfs w kontenerach Docker

Kontenery często używają tmpfs.

Przykład:

docker run \
--tmpfs /run \
nginx

Efekt:

Kontener

/run

↓

RAM

Zastosowania:

  • dane tymczasowe,
  • sekrety,
  • cache,
  • sockety.

tmpfs i Kubernetes

Kubernetes wykorzystuje tmpfs przez:

emptyDir:
  medium: Memory

Przykład:

volumes:
- name: cache
  emptyDir:
    medium: Memory

Dane istnieją tylko w pamięci.


tmpfs a bezpieczeństwo sekretów

Dobrym zastosowaniem jest przechowywanie:

  • kluczy tymczasowych,
  • tokenów,
  • certyfikatów runtime.

Przykład:

Aplikacja

↓

tmpfs

↓

klucz prywatny

↓

restart

↓

usunięty

tmpfs vs ramfs

Często mylone rozwiązania.

Cecha tmpfs ramfs
RAM Tak Tak
Limit rozmiaru Tak Nie
Swap Może używać Nie
Bezpieczeństwo Lepsze Ryzyko OOM
Zalecane Tak Rzadko

tmpfs vs dysk SSD

Cecha tmpfs SSD
Prędkość Bardzo wysoka Wysoka
Trwałość Brak Tak
Restart Dane znikają Dane zostają
RAM potrzebny Tak Nie
Zastosowanie Dane tymczasowe Dane produkcyjne

Najczęstsze błędy administratorów

1. Brak limitu rozmiaru

Źle:

mount -t tmpfs tmpfs /tmp

Może pozwolić na zużycie dużej ilości pamięci.

Lepiej:

-o size=1G

2. Trzymanie danych trwałych

tmpfs nie nadaje się do:

  • baz danych,
  • dokumentów,
  • backupów.

Po restarcie:

dane znikają.


3. Zapomnienie o RAM

Duży cache w tmpfs może doprowadzić do:

  • presji pamięci,
  • użycia swap,
  • spadku wydajności.

Monitoring tmpfs

Sprawdzenie zużycia:

df -h

Pamięć:

free -h

Procesy:

top

Praktyczne zastosowania administratora

Serwer WWW

/tmp

↓

tmpfs + noexec

Ogranicza ryzyko wykorzystania katalogów tymczasowych.


Serwer baz danych

/dev/shm

↓

shared memory

Poprawia komunikację między procesami.


Kontenery

Secrets

↓

tmpfs

↓

kontener

Systemy bezpieczeństwa

Tymczasowe dane:

  • tokeny,
  • klucze,
  • pliki sesji.

tmpfs i systemd

systemd wykorzystuje tmpfs bardzo intensywnie.

Przykład:

/run

↓

systemd runtime

↓

usługi

Jeżeli /run jest niedostępny, wiele usług systemowych przestanie działać.


Podsumowanie

tmpfs jest jednym z najważniejszych, ale często niedocenianych mechanizmów Linux.

Pozwala traktować pamięć RAM jak szybki system plików i znajduje zastosowanie w:

  • systemd,
  • kontenerach,
  • Kubernetes,
  • bezpieczeństwie serwerów,
  • optymalizacji wydajności.

W połączeniu z innymi mechanizmami:

  • namespaces,
  • cgroups v2,
  • Seccomp,
  • AppArmor/SELinux,
  • nftables,
  • auditd,
  • journald,

tworzy fundament nowoczesnej administracji Linux.

Dla administratora bezpieczeństwa tmpfs jest szczególnie ciekawy, ponieważ pozwala ograniczyć trwałość danych i zmniejszyć ryzyko pozostawienia wrażliwych informacji na dysku.

Polecane wpisy
Konfiguracja SSH dla początkujących
Konfiguracja SSH dla początkujących

Konfiguracja SSH dla początkujących SSH, czyli Secure Shell, to protokół sieciowy umożliwiający bezpieczne zdalne logowanie i zarządzanie systemem. Jest to Czytaj dalej

Jak skonfigurować kontrolę rodzicielską w Linuxie? – blokowanie stron, limity czasu, filtrowanie treści
Jak skonfigurować kontrolę rodzicielską w Linuxie? – blokowanie stron, limity czasu, filtrowanie treści

Jak skonfigurować kontrolę rodzicielską w Linuxie? – blokowanie stron, limity czasu, filtrowanie treści Linux to system wyjątkowo elastyczny — nie Czytaj dalej

Marek "Netbe" Lampart Inżynier informatyki Marek Lampart to doświadczony inżynier informatyki z ponad 25-letnim stażem w zawodzie. Specjalizuje się w systemach Windows i Linux, bezpieczeństwie IT, cyberbezpieczeństwie, administracji serwerami oraz diagnostyce i optymalizacji systemów. Na netbe.pl publikuje praktyczne poradniki, analizy i instrukcje krok po kroku, pomagając administratorom, specjalistom IT oraz zaawansowanym użytkownikom rozwiązywać realne problemy techniczne.