Где в файловой системе я должен хранить общие данные?

44

Где в файловой системе unix находится обычное место для сохранения данных, не относящихся к пользователю, например, данных, передаваемых через nfs или ftp, или резервных копий?

Я мог бы, очевидно, создать и использовать любую произвольную папку (например, / home / shared, / data или / var / data), но мне действительно интересно, есть ли какие-либо "лучшие" или "общие" руководящие принципы практики. Filesystem Hierarchy Standard не определяет местоположение для общих данных.

Для резервных копий я обычно использую / var / backups, но поскольку несколько cronjobs пишут в него, нужно ли его оставить для использования?

misterben
источник

Ответы:

29

Этот вопрос , кажется, имеет четкий ответ в Стандарте иерархии файловой системы , который определяет /srvкак «содержащий [ing] специфичные для сайта данные, которые обслуживаются этой системой» . (3.16.1)

Эта основная цель определения этого заключается в том, чтобы пользователи могли находить местоположение файлов данных для конкретной службы , и чтобы службы, которым требуется одно дерево для данных только для чтения, данных для записи и сценариев

(мой акцент)

Примечание: «Обслуживается системой» не обязательно относится к Интернету. Это даже не означает сеть. Это применимо даже к общей системе. Кроме того, слова « сайт» и « сервис» следует понимать в их значении до Интернета. Ваш сайт может быть «отдел физики» или «офис финансов».

Это говорит:

В больших системах может быть полезно структурировать / srv по административному контексту, например, / srv / физика / www, / srv / compsci / cvs и т. Д. Эта настройка будет отличаться от хоста к хосту. Следовательно, ни одна программа не должна полагаться на конкретную структуру подкаталога существующей / srv или данные, которые обязательно должны храниться в / srv. Однако / srv всегда должен существовать в FHS-совместимых системах и должен использоваться в качестве местоположения по умолчанию для таких данных.

Поэтому вам следует дополнительно структурировать ваши данные в таких каталогах, как /srv/nfs, /srv/backupи так далее.

Я должен также упомянуть, что немногие люди делают это больше. Но нет веских причин, почему они этого не делают. Стандарт ни в коем случае не устарел.

/varтрадиционно используется для таких вещей, как print-spools и log-файлы, но также используется веб-сервером Apache (в любом случае, в системах Debian - SUSE use / srv); Кажется, нет единого мнения о том, /varявляется ли правильный каталог для общих данных. Но если вы решите использовать его вместо этого, я уверен, вы не пожалеете.

Обратите внимание: ответ Картика ни в коем случае не является неправильным. FHS говорит, что / srv «должен использоваться в качестве местоположения по умолчанию для таких данных», но стандарт оставляет некоторое пространство для ваших собственных предпочтений, в зависимости от того, как вы интерпретируете термины.

Стефано Палаццо
источник
4
Обратите внимание, что Debian (и Red Hat) начали помещать файлы Apache /var/www, прежде чем они /srv/стали частью FHS.
Mattdm
Хорошее объяснение, спасибо, хотя кажется, что ответ на вопрос: «На самом деле не существует стандарта, которому действительно следуют». Возможно, должно быть, возможно, это действительно не имеет значения.
Мистербен
Ну, вы всегда должны нарушать правила, когда у вас есть на то веские основания. Но я считаю, что этот стандарт тщательно соблюдается во многих крупномасштабных развертываниях.
Стефано Палаццо
Люди, которые хотели бы перейти к общему стандарту, должны найти этот ответ однозначно правильным на основе FHS.
Джереми
13
  • Данные, не относящиеся к пользователю, могут храниться в / usr / local / var, чтобы они больше не попадали в общий ресурс newtwork.
  • Все, что не находится под ../local/ .., может оказаться в общем ресурсе nfs, так что если вы хотите загрузить данные из общего ресурса nfs и убедиться, что они хранятся локально на жестком диске компьютера.
  • Затем вы должны выбрать путь с ... / local / .. в нем .... остальное зависит от природы данных, от их типа. Это может быть / local / var или / local / tmp и т. Д. ,

Иерархия файловой системы:
альтернативный текст

Также посмотрите на это

karthick87
источник
1
Хотя это полезное представление FHS, оно по-прежнему не предлагает стандартное местоположение для общего хранилища данных.
Мистербен
FSH утверждает, что: / usr - это общедоступные данные только для чтения. Это означает, что / usr должен быть общим для различных хостов, соответствующих FHS, и не должен записываться в него . Хммм, так что, похоже, это зависит от цели вашей доли.
htorque
@htorque Я склоняюсь к мысли, что где-то под / var лучше всего подходит для общего файлового ресурса, как вы предложили в своем (теперь удаленном) ответе.
Мистербен
1
Я удалил свой ответ, потому что FHS также утверждает, что: Приложения обычно не должны добавлять каталоги на верхний уровень / var. Такие каталоги следует добавлять только в том случае, если они имеют какое-либо общесистемное значение и в консультации со списком рассылки FHS. - FHS просто не хочет, чтобы вы делились (записываемыми) данными! : P
htorque
Спасибо, полезный обзор, и, как и другой ответ, он действительно служит для документирования того, что нет однозначного ответа, который сам по себе полезен.
Мистербен
5

Я не думаю, что FHS определяет какое-либо место для общих пользовательских данных. Это пользователи, которые хотят хранить там общие данные. Я обычно использую /usr/local/sharedили /home/shared.

binW
источник
1

Я видел /export, что /mntраньше работал с nfs и использовал для монтирования общего ресурса nfs локально, в корпоративной среде, как предложено в документации по NFS, стандарт, который, как я подозреваю, изначально пришел из Sun OS, позже переименованной в Solaris.

В /etc/exportsименах файлов экспортируемых томов и /exportsкаталоги служат им для удаленных пользователей, которые смонтируют их на /mnt. Хост сервера также может монтировать эти общие /mntресурсы при использовании того же демона nfs для использования любыми клиентами или процессами, запущенными локально на сервере, чтобы сохранить совместимость с любыми удаленными хостами и, возможно, сохранить функциональность выравнивания нагрузки, квот и т. Д.

Это настолько близко к «стандарту», ​​насколько это возможно. Обратите внимание, что /exportне в FHS, поэтому /exportбыл добавлен независимо, так что, вероятно, никто не доволен /srv. Вероятно, из-за возможной путаницы с «сервисами», работающими как демоны, а не как «обслуживаемые» тома. /exportоднозначно назван с небольшим шансом путаницы. Я никогда ничего не вижу в /srv.

cheryljosie
источник