Vraag Waarom is / var / run gemigreerd naar / uitgevoerd?


Van de technisch overzicht van Ubuntu 11.10 Oneiric:

Ubuntu 11.10 is gemigreerd van /var/run, /var/lock en /dev/shm en gebruikt nu /run, /run/lock en /run/shm in plaats daarvan (respectievelijk).

  • Ik codeer deze paden hard in mijn toepassingen, waarom wordt deze wijziging aangebracht in Oneiric?
  • Wat kan ik doen om mijn applicaties achterwaarts en vooruit compatibel te maken? Is er een betere manier dan eerst te controleren op het bestaan ​​van /run, en dan /var/run?

66
2017-08-16 09:08


oorsprong




antwoorden:


De bedoeling is om het aantal te verminderen tmpfs bestandssystemen. Op 11.04 zijn er afzonderlijke tmpfs bestandssystemen op /var/lock, /var/run en /dev/shm. Als deze mappen allemaal onder een enkele bovenliggende directory stonden, dan was het maar een single tmpfs nodig zou zijn. Het biedt ook een voor de hand liggende locatie voor verdere runtime-statusgegevens die bij het opnieuw opstarten niet moeten blijven bestaan.

Tenzij uw toepassing afhankelijk is van gangbare paden van bestanden, moet uw toepassing zonder wijzigingen worden uitgevoerd, omdat de oude locaties worden gemarkeerd met de nieuwe. Het AppArmor-beleid is één geval dat wel afhangt van de echte padnamen, en daarom is het specifiek vermeld.

De volgende links zouden de reden moeten uitleggen:


57
2017-08-16 09:56





  1. /run is een nieuwe cross-distribution tmpfs-locatie voor de opslag van transient state-bestanden, dat wil zeggen, bestanden met runtime-informatie die al dan niet vroeg in het opstartproces moeten worden geschreven en die geen heropstart van meerdere apparaten vereist.

    Het maken van /run directory beschikbaar brengt ons een stap dichter bij het punt waar het mogelijk is om het systeem normaal te gebruiken met het rootbestandssysteem als alleen-lezen gemonteerd, zonder dat dit enige onhandige workarounds zoals aufs/unionfs overlays.

    /run vervangt verschillende bestaande locaties beschreven in de Filesystem Hierarchy Standard:

    • /var/run → /run
    • /var/lock → /run/lock
    • /dev/shm → /run/shm [momenteel is alleen Debian van plan dit te doen]
    • /tmp → /run/tmp [Optioneel; momenteel is alleen Debian van plan dit aan te bieden]
    • /run vervangt ook enkele andere locaties die zijn gebruikt voor transiënte bestanden:

    • /lib/init/rw → /run

    • /dev/.* → /run/*
    • /dev/shm/* → /run/*
    • beschrijfbare bestanden onder /etc → /run/*

    (dus je kunt waarschijnlijk verwachten dat deze ook bewegen).

    Bron:debian-release doelen

  2. Ik zou adviseren over het maken van een rol in uw software, waarbij u deze mappen in variabelen instelt, uw code wijzigt om deze variabelen te gebruiken en vervolgens de variabelen wijzigt op basis van het systeem waarop het wordt gebruikt (maar ik wed dat u dat al wist).


36
2017-08-16 09:50



Wat bedoel je met beschrijfbare bestanden onder /etc. Die moeten allemaal blijven na een herstart, toch? Dat zijn gewoon generieke conf-bestanden. - Evan Carroll
Oh, ik begrijp het. Drie bestanden onder /etc, /etc/lvm/cache/  /etc/mtab  /etc/network/run/ifstate enzovoort /etc/adjtime. Ik veronderstel dat het slecht voor hen was om binnen te zijn /etc beginnen met. - Evan Carroll


Van wat ik heb gelezen, was dit de oorspronkelijke uitleg over waarom / run werd geïntroduceerd. http://lwn.net/Articles/436012/


5
2017-08-16 09:49



Hoewel dit theoretisch de vraag kan beantwoorden, het zou de voorkeur hebben om de essentiële delen van het antwoord hier op te nemen, en geef de link voor referentie. - Stefano Palazzo♦


Opmerking: sinds / run introductie, kunnen kleine configuraties problemen krijgen. Mijn Ubuntu-server is 256Mo RAM en / run is standaard ingesteld op 49Mo.
Bij het opstarten vult het het bestandssysteem tot volheid.
Veranderingen aanbrengen in fstab werkt niet om tempfs / run-size te verhogen. Noch andere procedures die ik op gg heb gevonden.
Ik vond de oplossing om in init script toe te voegen: /etc/rc.local de lijn      mount -t tmpfs tmpfs /run -o remount,size=85M uit te breiden bij het opstarten.(De 85M is voor mijn conf.) 


3
2017-09-02 12:48





Je moet deze niet hardcoden /run paden!

  • Gebruik /var/run, omdat er een symlink aanwezig is voor /run indien toepasselijk
  • /var/lock is hetzelfde als hierboven
  • Hardcodes niet /dev/shm altijd, altijd gebruiken shm_open etc (de posix API)

2
2017-07-10 11:45