68 votes

Pourquoi /var/run a été migré vers /run ?

より aperçu technique d'Ubuntu 11.10 Oneiric :

Ubuntu 11.10 s'est éloigné de /var/run , /var/lock y /dev/shm et utilise maintenant /run , /run/lock y /run/shm à la place (respectivement).

  • Je code en dur ces chemins dans mes applications, pourquoi ce changement a-t-il été apporté à Oneiric ?
  • Que puis-je faire pour rendre mes applications compatibles en amont et en aval ? Existe-t-il un meilleur moyen que de vérifier d'abord l'existence de /run et ensuite /var/run ?

60voto

Mark S. Rasmussen Points 13313

L'objectif est de réduire le nombre de tmpfs systèmes de fichiers. Sous 11.04, il existe des tmpfs systèmes de fichiers à /var/lock , /var/run y /dev/shm . Si ces répertoires se trouvaient tous sous un seul répertoire parent, alors un seul fichier tmpfs serait nécessaire. Il fournit également un emplacement évident pour d'autres données d'état d'exécution qui ne devraient pas persister lors des redémarrages.

À moins que votre application ne dépende des chemins canoniques des fichiers, votre application devrait fonctionner sans modification puisque les anciens emplacements seront liés par des liens symboliques aux nouveaux. Les politiques d'AppArmor sont un cas qui dépend des noms de chemin réels, c'est pourquoi elles ont été mentionnées spécifiquement.

Les liens suivants devraient permettre d'expliquer le raisonnement :

37voto

Rinzwind Points 270388
  1. /run est un nouvel emplacement tmpfs multi-distribution pour le stockage des fichiers d'état transitoires, c'est-à-dire des fichiers contenant des informations d'exécution qui peuvent ou non être écrites au début du processus de démarrage et qui ne nécessitent pas d'être préservées lors des redémarrages.

    Faire le /run disponible nous rapproche un peu plus du point où il est possible d'utiliser le système normalement avec le système de fichiers racine monté en lecture seule, sans nécessiter de solutions de contournement encombrantes telles que aufs/unionfs des superpositions.

    /run remplace plusieurs emplacements existants décrits dans la norme sur la hiérarchie des systèmes de fichiers :

    • /var/run /run

    • /var/lock /run/lock

    • /dev/shm /run/shm (actuellement, seule Debian prévoit de le faire)

    • /tmp /run/tmp [facultatif ; actuellement, seule Debian prévoit de le proposer].

    • /run remplace également d'autres emplacements qui ont été utilisés pour des fichiers transitoires :

    • /lib/init/rw /run

    • /dev/.* /run/*

    • /dev/shm/* /run/*

    • des fichiers accessibles en écriture sous /etc /run/*

    (vous pouvez donc vous attendre à ce qu'ils bougent aussi).

    Source : objectifs de la version debian

  2. Je vous conseillerais de créer une partie de votre logiciel où vous définissez ces répertoires dans des variables, modifiez votre code pour utiliser ces variables et modifiez ensuite les variables en fonction du système sur lequel il est utilisé (mais je parie que vous le saviez déjà).

5voto

foxxtrot Points 6491

D'après ce que j'ai lu, c'était l'explication initiale donnée pour justifier l'introduction de /run. http://lwn.net/Articles/436012/

3voto

ramslök Points 12000

Vous ne devez pas coder en dur l'un de ces éléments /run des chemins !

  • Utilice /var/run car un lien symbolique sera mis en place pour /run si applicable
  • /var/lock est le même que ci-dessus
  • Ne pas coder en dur /dev/shm jamais, toujours utiliser shm_open etc (l'API posix)

3voto

Sven Künzler Points 935

Note : depuis l'introduction de /run, les petites configurations peuvent avoir des problèmes. Mon serveur Ubuntu a 256Mo de RAM et /run est par défaut configuré à 49Mo.
Au démarrage, il remplit le système de fichiers jusqu'à épuisement.
Faire des changements dans fstab ne fonctionne pas pour augmenter la taille de tempfs /run. Pas plus que les autres procédures que j'ai trouvées sur gg.
J'ai trouvé la solution pour ajouter dans init script : /etc/rc.local la ligne mount -t tmpfs tmpfs /run -o remount,size=85M à prolonger au démarrage. (Le 85M est pour ma conf.)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X