POSIX ограничивает количество каталогов в корневом каталоге os?

12

Я пытаюсь выучить стандарт POSIX. При использовании Unix, я /bin, /etc, /dev, /media, и , как правило /opt, но в том , что стандартизованные или до вашей спецификации реализации? Может ли быть много каталогов в корне, или это ограничено стандартом?

Никлас
источник
3
POSIX не касается этой области.
Томас Дики

Ответы:

17

Согласно опубликованному стандарту The Open Group , единственными необходимыми каталогами являются:

  • /
  • /dev, В котором содержится console, nullиtty
  • /tmp, гарантированно записываемый, но не обязательно сохраненный.

Linux Foundation поддерживает стандарт иерархии файловых систем (FHS), который расширяет его и включает каталоги, которые вы обычно видите в системе Linux:

  • /bin: Основные пользовательские команды
  • /boot: Статические файлы загрузчика
  • /dev: Файлы устройств
  • /etc: Конфигурация конкретной системы
  • /home: Домашние каталоги пользователей (необязательно)
  • /lib: Необходимые общие библиотеки и модули ядра
  • /lib<qual>: Альтернативные форматы необходимых общих библиотек (необязательно)
  • /media: Точка монтирования для съемного носителя
  • /mnt: Точка монтирования для временно смонтированной файловой системы
  • /opt: Дополнительные программные пакеты
  • /root: Домашний каталог для пользователя root (необязательно)
  • /run: Данные переменной времени выполнения
  • /sbin: Системные двоичные файлы
  • /srv: Данные об услугах, предоставляемых этой системой
  • /tmp: Временные файлы
  • А также /usrиерархия и /varиерархия

Система FHS была разработана как можно более универсальной, чтобы ее можно было включить в любую систему UNIX. Дополнительные каталоги могут существовать в любой разумной системе, но это не предписано POSIX.

Тем не менее, обратите внимание, что The Open Group также заявляет, что

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

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

Лиса
источник
5
Вопрос не в том, какие каталоги являются стандартными , а в том, есть ли предел . POSIX не отвечает на этот вопрос.
Томас Дики
Это добавляет мнение, не указывая на цитату из POSIX.
Томас Дики
Последний абзац - это то, что я упомянул: «похоже, заявляет». POSIX избегает упоминания ограничения в этой области, фокусируясь на общности, а не на различиях.
Томас Дики
1
Спасибо, Фокс. Ваш ответ был информацией, которую я искал.
Никлас
13

В 10.1 Структура и файлы каталогов POSIX перечисляет каталоги, которые должны существовать. Но он не устанавливает ограничений на количество других каталогов, которые могут существовать на корневом уровне файловой системы.

В этом отношении, он, кажется, не ограничивает размер других каталогов.

Внимание POSIX в этой области сосредоточено на общности, а не на различиях.

Томас Дики
источник
Поскольку в системе * nix потенциально каждый каталог (включая /) может быть корневым каталогом, было бы довольно глупо накладывать верхний предел на количество записей в корневом каталоге. /не особенно особенный в этом отношении, следовательно, из этого следует, что было бы довольно одинаково глупо устанавливать верхний предел для количества записей в /частности.
CVn
8

Нет ограничений на количество записей в каталоге, как в POSIX, так и в типичных реализациях Unix. Может быть косвенное ограничение на количество подкаталогов, которое является максимальным количеством жестких ссылок ( ..запись каждого подкаталога является жесткой ссылкой на каталог); это 2 16 для многих общих файловых систем, что ограничивает каталог 65533 подкаталогами (по крайней мере для тех файловых систем, которые ..явно хранят записи). Вы начнете поражать плохую производительность до этого. Согласно POSIX, реализация может поддерживать только 8 жестких ссылок на файл ( _POSIX_LINK_MAX), но никакая фактическая реализация не ограничена 6 подкаталогами. И вообще, во многих файловых системах, включая ext4, количество жестких ссылок не поддерживается для.. записей, поэтому единственным ограничением является то, сколько места или сколько inode доступно в файловой системе.

POSIX мало что говорит об организации файлов в системе. Это только обязывает существование нескольких файлов . Единственными обязательными записями в корневом каталоге являются /devи /tmp. Другие привычные записи Unix , такие как /usr, /var, /bin, /etc, /lib, /homeи т.д., Unix конвенций, которые не кодифицированные POSIX.

В Linux FHS кодифицирует классику и еще пару. Большинство дистрибутивов Linux придерживаются записей FHS. Другие системы Unix обычно имеют в основном те же записи, возможно, с некоторыми отличиями, но число примерно одинаковое.

Системные администраторы могут создавать больше, хотя это не рекомендуется: для большинства вещей есть четко определенные места (программное обеспечение не работает /usrили /optсистемные данные не работают /var, пользовательские данные не работают /net, точки монтирования не работают /mediaили /mntи т. Д.), Поэтому редко любая веская причина для создания новых каталогов на верхнем уровне.

Жиль "ТАК - перестань быть злым"
источник
Это не правильно. Большинство «разумных» файловых систем имеют максимальное количество подкаталогов в каталоге или максимальное число inode на устройство. Тем не менее, он обычно непристойно велик по сравнению с количеством каталогов, которые вы, скорее всего, увидите в корне диска.
Кевин
@Kevin О, хорошо, в обычных файловых системах вы сначала наберете максимальное количество жестких ссылок, а это может быть всего 16 бит.
Жиль "ТАК - перестань быть злым"
@Kevin Хотя это не относится к ext4, похоже, что нет ограничения на количество подкаталогов, кроме доступного пространства (блоков или inode). Вы думали о каком-то другом ограничении количества подкаталогов в каталоге?
Жиль "ТАК - перестань быть злым"
Правильно разработанная файловая система не создает жестких ссылок на записи каталога .. В правильно спроектированной файловой системе количество ссылок на каталог равно 1, если нет жестких ссылок, созданных вручную.
Шили
1
Нет, такого ограничения нет на 100% POSIX-совместимой файловой системе. Как уже упоминалось, POSIX не требует. и ... быть жесткими ссылками на другие каталоги. Если это так, то это деталь реализации, которая является результатом взломов, введенных в файловой системе V7. Существуют другие POSIX-совместимые файловые системы, которые работают совершенно иначе.
Шили
2

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

Jasen
источник