POSIX是否限制os根目录中的目录数?


12

我正在尝试学习POSIX标准。当使用Unix的,我/bin/etc/dev/media,通常/opt,但是,这是标准化或到你的规范实施?根目录中可能有许多目录,还是受标准限制?


3
POSIX不在此区域上。
托马斯·迪基

Answers:


17

根据The Open Group的发布标准,唯一需要的目录是:

  • /
  • /dev,其中包含consolenulltty
  • /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不会回答该问题。
Thomas Dickey

它添加了一个观点,但没有指出POSIX的引用。
Thomas Dickey

最后一段是我所提到的:“确实在陈述”。POSIX 避免提及该领域的局限性,而只关注共性而不是差异。
Thomas Dickey

1
谢谢你福克斯。您的答案就是我要找的信息。
尼克拉斯

13

10.1目录结构和文件中,POSIX列出了必须存在的目录。但是,它对文件系统的根级别上可以存在的其他目录的数量没有限制。

因此,似乎没有限制其他目录的大小。

POSIX在这方面的注意力集中在通用性而不是差异上。


就像在* nix系统上,每个目录(包括/)可能都是根目录一样,对根目录中的条目数施加上限是很愚蠢的。/在这方面不是特别特殊,因此可以得出结论,特别地对条目的数量施加上限是相当愚蠢的/
CVn

8

在POSIX或典型的Unix实现中,目录中的条目数没有限制。子目录的数量可能有一个间接限制,即最大的硬链接数(每个子目录的..条目都是该目录的硬链接);对于许多常见文件系统而言,该值为2 16,这将目录限制为65533个子目录(至少对于那些..显式存储条目的文件系统而言)。在此之前,您将开始遇到性能不佳的问题。根据POSIX,实现只允许支持文件(_POSIX_LINK_MAX)上的8个硬链接,但没有实际实现限于6个子目录。而且无论如何,在包括ext4在内的许多文件系统上,都不会维护硬链接数.. 条目,因此唯一的限制是文件系统上可用的空间或索引节点的数量。

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位。
吉尔斯(Gilles)“所以,别再邪恶了”

@Kevin尽管在ext4上不是这种情况,但除了可用空间(块或索引节点)外,子目录的数量似乎没有限制。您是否在考虑对每个目录的子目录数进行其他限制?
吉尔斯(Gillles)“所以-别再作恶了”

设计正确的文件系统不会创建到..目录条目的硬链接。在设计合理的文件系统中,除非手动创建硬链接,否则目录的链接计数为1。
2016年

1
不,对于100%符合POSIX的文件系统没有这样的限制。如前所述,POSIX不需要。和..是与其他目录的硬链接。如果是这样,则这是实现细节,这是V7文件系统中引入的黑客攻击的结果。还有其他兼容POSIX的文件系统,它们的工作原理完全不同。
2016年

2

与FAT不同,UNIX使用的文件系统对根目录没有特别的大小限制,但是一旦分区已满,您将无法添加更多文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.