Почему в / run был перенесен / var / run?

66

Из технического обзора Ubuntu 11.10 Oneiric :

  

Ubuntu 11.10 переместился из /var/run , /var/lock и /dev/shm и теперь вместо этого использует /run , /run/lock и /run/shm (соответственно).

  • Я жестко задаю эти пути в своих приложениях, почему это изменение внесено в Oneiric?
  • Что я могу сделать, чтобы сделать мои приложения обратными и передовыми? Есть ли лучший способ, кроме проверки на наличие /run , а затем /var/run ?
задан Lekensteyn 16.08.2011 в 11:08
источник

5 ответов

57

Цель состоит в том, чтобы уменьшить количество файловых систем tmpfs . В 11.04 существуют отдельные файловые системы tmpfs в /var/lock , /var/run и /dev/shm . Если эти каталоги были все под одним родительским каталогом, тогда понадобится только один tmpfs . Он также обеспечивает очевидное местоположение для последующих данных состояния времени выполнения, которые не должны сохраняться при перезагрузке.

Если ваше приложение зависит от канонических путей файлов, ваше приложение должно работать без изменений, поскольку старые расположения будут привязаны к новым. Политики AppArmor - это один случай, который зависит от реальных имен путей, поэтому он был упомянут специально.

Следующие ссылки должны помочь объяснить обоснование:

ответ дан James Henstridge 16.08.2011 в 11:56
источник
36
  1. /run - новое местоположение tmpfs кросс-распределения для хранения файлов состояния переходного процесса, то есть файлы, содержащие информацию о времени выполнения, которая может быть написана или не потребоваться в начале процесса загрузки и которая не требует сохраняя при перезагрузке.

    Создание доступного каталога /run приближает нас к тому моменту, когда можно нормально использовать систему с корневой файловой системой, смонтированной только для чтения, без каких-либо неудобных обходных решений, таких как aufs/unionfs overlays.

    /run заменяет несколько существующих мест, описанных в стандарте иерархии файловой системы:

    • /var/run/run
    • /var/lock/run/lock
    • /dev/shm/run/shm [в настоящее время только Debian планирует это сделать]
    • /tmp/run/tmp [необязательно; в настоящее время только Debian планирует это предложить]
    • /run также заменяет некоторые другие местоположения, которые использовались для временных файлов:

    • /lib/init/rw/run

    • /dev/.*/run/*
    • /dev/shm/*/run/*
    • записываемые файлы в папке /etc/run/*

    (так что вы, вероятно, можете ожидать, что они тоже будут двигаться).

    Источник: цели выпуска debian

  2. Я бы посоветовал создать часть вашего программного обеспечения, где вы устанавливаете эти каталоги в переменных, меняете свой код на использование этих переменных, а затем изменяете переменные на основе используемой системы (но я уверен, вы знали это уже).

ответ дан Rinzwind 16.08.2011 в 11:50
4

Из того, что я прочитал, это было изначальное объяснение того, почему / run было введено. Ссылка

    
ответ дан gotunandan 16.08.2011 в 11:49
3

Примечание: с момента введения / запуска небольшие конфигурации могут вызвать проблемы. Мой сервер Ubuntu составляет 256 Мб ОЗУ, а / по умолчанию - 49 Мб.
При запуске он заполняет файловую систему до полноты.
Внесение изменений в fstab не работает, чтобы увеличить размер tempfs / run. Также нет других процедур, которые я нашел на gg.
Я нашел решение добавить в скрипт инициализации: /etc/rc.local строка     %код% для расширения при запуске. (85M для моего conf.)

    
ответ дан korrident 02.09.2012 в 14:48
2

Нельзя жестко указывать любой из этих путей /run !

  • Используйте /var/run , потому что символическая ссылка будет установлена ​​на /run , если применимо
  • /var/lock такое же, как указано выше
  • Не используйте hardcode /dev/shm , всегда используйте shm_open и т. д. (API-интерфейс posix)
ответ дан ramslök 10.07.2012 в 13:45