/run Forest, /run



Linuksowi administratorzy w nadchodzących wydaniach swoich ulubionych dystrybucji natkną się na nowy wpis w katalogu głównym. Będzie to /run.

Katalog /run jest dostępny zaraz po zamountowaniu głównego /, przed pojawieniem się /var, który może być na osobnym wolumenie. Zawiera rzeczy odnoszące się do aktualnie działających program‎ów i usług (nie przechowuje wpisów przy reboocie). Są to:

  • pliki blokad (/run/lock, dostępne również jako /var/lock)
  • różne pliki uruchomieniowe, dotąd w /var/run
  • zbiór rzeczy do tej pory ukrywanych w .katalogach w /dev:
    • dane udev z /dev/.udev
    • informacje przekazane przez programy z initramfs, działające przed zamountowaniem /, dotąd w /dev/.initramfs
    • informacje z systemach plików z /dev/.mount/utab (wszystko to, co nie jest zawarte w /proc/self/mounts)
    • pliki kontrolne w /dev/.systemd
    • pliki tymczasowe z /dev/.mdadm
  • pamięć podręczną z /etc/lvm2/cache
A także inne pliki tworzone przez dracut, plymouth, bootchart i wszystkie programy, które do tej pory potrzebowały takiego miejsca. Użycie /dev było podyktowane obecnością tego katalogu od samego początku uruchamiania systemu. Nie do końca prawidłowe jest jednak przechywanie w /dev wpisów nie będących urządzeniami, a zwłaszcza ukrywanie ich kropką w nazwach.

Poza nadużywaniem /dev, dystrybucje do problemu podchodziły różnie. Debian daje /lib/init/rw, który z kolei narusza przestrzeń /lib dla bibliotek. Ubuntu udostępnia /var/run i /var/lock przy starcie, a przy mountowaniu właściwego /var dokonuje przypięcia (bindmount). Jest to jednak rozwiązanie podatne na wyścigi.

Wynik międzydystrybucyjnych uzgodnień ogłosił Kay Sievers, jednocześnie odpowiedzialny za wdrożenie tego rozwiązania w SUSE. Zawtórował mu Scott James Remnant, opiekun upstart i członek rady technicznej Ubuntu. Rozwiązanie wdrożyła Fedora, poddane zostało również pod dyskusję w Debianie.

Nasuwać się może pytanie, co z File Hierarchy Standard? Wersja 2.3 nie zakazuje, jednak wymaga rozwagi:

Distributions should not create new directories in the root hierarchy without extremely careful consideration of the consequences including for application portability.
Twórcy najważniejszych dystrybucji porozumieli się między sobą i stosowna poprawka do FHS została zgłoszona. Ostatecznie będziemy mieli: /var do rzeczy zmiennych, dostępnych pomiędzy restartami i /run dla tych mających sens jedynie w działającym systemie (wskazane więc użycie tmpfs). Coraz bliżej jest do umożliwienia funkcjonowania systemu z kluczowymi katalogami (/usr, /etc itp.) zamountowanymi w trybie tylko-do-odczytu.

Archived comments:

liori 2011-03-30 18:38:34

Aaa... czym to się różni od /tmp? Tym że dane w środku będą jakoś konkretnie poukładane?

zdz 2011-03-30 18:42:43

/tmp też może znajdować się na osobnej partycji lub wolumenie wymagającym zachodu (składanie RAID, logowanie iSCSI itp). /tmp nie daje gwarancji, że dane tam zapisane nie znikną pomiędzy dwoma uruchomieniami programu. W końcu /tmp może być odrębne dla każdego użytkownika (chociaż /run jest dla rzeczy systemowych, nie związanych z użytkownikiem). I tak, /run ma odrobinę bardziej sformalizowaną zawartość.

mh 2011-03-30 18:49:27

Ja bym poszedł na całość:
runfs on /run type runfs

Stanisław 'dozzie' Klekot 2011-03-31 11:52:51

> Debian daje /lib/init/rw, który z kolei narusza przestrzeń /lib dla bibliotek

Osobiście bym się tym nie przejmował. Kernelowe moduły też naruszają tę przestrzeń, podobnie jak firmware dla modułów, baza terminfo (pod Debianem) czy binarki i skrypty udeva.

Comments


Comments powered by Disqus