POSIX 是否限制操作系统根目录中的目录数量?

POSIX 是否限制操作系统根目录中的目录数量?

我正在尝试学习 POSIX 标准。使用 Unix 时,我有/bin/etc/dev/media和 通常/opt,但是这是标准化的还是符合您的规范实现?根目录下是否可以有很多目录,或者是受到标准的限制?

答案1

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

  • /
  • /dev,其中包含consolenulltty
  • /tmp,保证可写但不一定保留。

Linux 基金会维护着一个文件系统层次结构标准(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 不一定限制发行版可以在根级别放置的内容,但似乎确实声明符合其规范的应用程序不能假设它能够这样做。

答案2

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

就此而言,它似乎没有对其他目录的大小施加限制。

POSIX 在这一领域的注意力集中在共性而不是差异上。

答案3

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

POSIX 没有过多说明系统上文件的组织。它只要求存在一些文件。根目录中唯一的强制条目是/dev/tmp。其他习惯性的 Unix 条目如/usr/var/bin/etc/lib/home等是UnixPOSIX 未编码的约定。

在 Linux 上,FHS编纂了经典著作和其他一些著作。大多数 Linux 发行版都坚持使用 FHS 条目。其他 Unix 系统通常具有大部分相同的条目,可能有一些差异,但数量大致相同。

系统管理员可以创建更多,尽管这是不鼓励的:大多数东西都有明确定义的位置(软件在 或 下/usr/opt系统数据在 下/var,用户数据在 下/net,挂载点在/media或下/mnt,等等),所以很少有在顶层创建新目录的任何充分理由。

答案4

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

相关内容