Warum wurde / var / run nach / run migriert?


66

Aus der technischen Übersicht von Ubuntu 11.10 Oneiric :

Ubuntu 11.10 gewandert weg von /var/run, /var/lockund /dev/shmnun verwendet /run, /run/lockund /run/shmstatt (jeweils).

  • Ich habe diese Pfade in meinen Anwendungen fest programmiert. Warum wird diese Änderung an Oneiric vorgenommen?
  • Was kann ich tun, um meine Anwendungen abwärts- und vorwärtskompatibel zu machen? Gibt es einen besseren Weg, als zuerst die Existenz von /runund dann zu überprüfen /var/run?

Antworten:


58

Ziel ist es, die Anzahl der tmpfsDateisysteme zu reduzieren . Am 11.04 gibt es separate tmpfsDateisysteme /var/lockunter /var/runund /dev/shm. Wenn sich diese Verzeichnisse alle unter einem einzigen übergeordneten Verzeichnis befänden, tmpfswäre nur ein einziges erforderlich. Es bietet auch einen offensichtlichen Speicherort für weitere Laufzeitstatusdaten, die nach einem Neustart nicht bestehen bleiben sollten.

Sofern Ihre Anwendung nicht von kanonischen Dateipfaden abhängt, sollte Ihre Anwendung ohne Änderungen ausgeführt werden, da die alten Speicherorte mit den neuen verknüpft werden. Die AppArmor-Richtlinien sind ein Fall, der von den tatsächlichen Pfadnamen abhängt, weshalb dies ausdrücklich erwähnt wurde.

Die folgenden Links sollen die Begründung erläutern:


36
  1. /run ist ein neuer verteilungsübergreifender tmpfs-Speicherort für die Speicherung von Dateien mit vorübergehendem Status, d. h. Dateien, die Laufzeitinformationen enthalten, die möglicherweise zu Beginn des Startvorgangs geschrieben werden müssen oder nicht und die nicht über Neustarts hinweg aufbewahrt werden müssen.

    Die Bereitstellung des /runVerzeichnisses bringt uns dem Punkt einen Schritt näher, an dem es möglich ist, das System normalerweise mit dem schreibgeschützten Root-Dateisystem zu verwenden, ohne umständliche Problemumgehungen wie aufs/unionfsÜberlagerungen zu erfordern .

    /run ersetzt mehrere vorhandene Speicherorte, die im Dateisystem-Hierarchiestandard beschrieben sind:

    • /var/run/run
    • /var/lock/run/lock
    • /dev/shm/run/shm[Derzeit plant nur Debian dies zu tun]
    • /tmp/run/tmp[optional; derzeit plant nur Debian, dies anzubieten]
    • /run ersetzt auch einige andere Speicherorte, die für temporäre Dateien verwendet wurden:

    • /lib/init/rw/run

    • /dev/.*/run/*
    • /dev/shm/*/run/*
    • beschreibbare Dateien unter /etc/run/*

    (Sie können also wahrscheinlich erwarten, dass sich diese auch bewegen).

    Quelle: Debian-Veröffentlichungsziele

  2. Ich würde raten, einen Teil in Ihrer Software zu erstellen, in dem Sie diese Verzeichnisse in Variablen festlegen, Ihren Code so ändern, dass diese Variablen verwendet werden, und dann die Variablen basierend auf dem System ändern, auf dem sie verwendet werden (aber ich wette, Sie wussten das bereits).


1
Was meinst du mit beschreibbaren Dateien unter /etc. Die müssen alle nach dem Neustart bestehen bleiben, oder? Das sind nur generische Conf-Dateien.
Evan Carroll

6
Oh ich verstehe. Drei Dateien unter /etc, /etc/lvm/cache/ /etc/mtab /etc/network/run/ifstateund bald /etc/adjtime. Ich nehme an, es war schlecht für sie, /etcvon Anfang an dabei zu sein.
Evan Carroll


3

Hinweis: Seit der Einführung von / run können kleine Konfigurationen Probleme verursachen. Mein Ubuntu-Server hat 256Mo RAM und / run ist standardmäßig auf 49Mo eingestellt.
Beim Start füllt es das Dateisystem bis zur Fülle.
Das Vornehmen von Änderungen in fstab führt nicht dazu, dass tempfs / run size kleiner wird. Weder tut andere Verfahren, die ich auf gg gefunden habe.
Ich habe die Lösung gefunden, die ich im Init-Skript hinzufügen kann: /etc/rc.localDie Zeile mount -t tmpfs tmpfs /run -o remount,size=85M , die beim Start verlängert werden soll. (Die 85M ist für meine conf.)


2

Sie sollten keinen dieser /runPfade fest codieren !

  • Verwenden Sie /var/run, weil ein Symlink zu vorhanden sein wird, /runfalls zutreffend
  • /var/lock ist das gleiche wie oben
  • /dev/shmVerwenden Sie shm_openniemals Hardcode, sondern immer etc (die posix-API)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.