¿POSIX limita el número de directorios en la raíz del sistema operativo?

12

Estoy tratando de aprender el estándar POSIX. Al usar Unix, He /bin, /etc, /dev, /media, y por lo general /opt, pero es que estandarizada o hasta su aplicación de especificaciones? ¿Podría haber muchos directorios en la raíz, o está limitado por el estándar?

Niklas
fuente
3
POSIX no toca esta área.
Thomas Dickey

Respuestas:

17

Según el estándar publicado de The Open Group , los únicos directorios requeridos son:

  • /
  • /dev, Que contiene console, nullytty
  • /tmp, garantizado de escritura pero no necesariamente conservado.

La Fundación Linux mantiene un Estándar de Jerarquía del Sistema de Archivos (FHS) que extiende esto para incluir los directorios que normalmente verá en un sistema Linux:

  • /bin: Binarios de comandos de usuario esenciales
  • /boot: Archivos estáticos del gestor de arranque
  • /dev: Archivos del dispositivo
  • /etc: Configuración del sistema específica del host
  • /home: Directorios de inicio de usuario (opcional)
  • /lib: Bibliotecas compartidas esenciales y módulos del núcleo
  • /lib<qual>: Bibliotecas compartidas esenciales de formato alternativo (opcional)
  • /media: Punto de montaje para medios extraíbles
  • /mnt: Punto de montaje para un sistema de archivos montado temporalmente
  • /opt: Paquetes de software de aplicación complementaria
  • /root: Directorio de inicio para el usuario root (opcional)
  • /run: Datos variables en tiempo de ejecución
  • /sbin: Binarios del sistema
  • /srv: Datos de los servicios prestados por este sistema
  • /tmp: Archivos temporales
  • Así como la /usrjerarquía y la /varjerarquía

El FHS fue diseñado para ser lo más genérico posible, para permitir la incorporación en cualquier sistema UNIX. Es probable que existan directorios adicionales en cualquier sistema razonable, pero POSIX no lo exige.

Sin embargo, tenga en cuenta que The Open Group también afirma que

Las aplicaciones estrictamente conformes no deben asumir la capacidad de crear archivos en ninguno de estos directorios, a menos que se especifique a continuación.

Dado que los directorios son realmente solo archivos, esto implica que una aplicación estrictamente conforme no creará ningún archivo o directorio en el nivel raíz. Por lo tanto, POSIX no limita necesariamente lo que puede colocar una distribución en el nivel raíz, pero parece indicar que una aplicación que se ajusta a su especificación no puede asumir que podrá hacerlo.

zorro
fuente
55
La pregunta no era qué directorios son estándar , pero se preguntó si había un límite . POSIX no responde esa pregunta.
Thomas Dickey
Agrega una opinión sin señalar una cita de POSIX.
Thomas Dickey
El último párrafo es a lo que me referí: "parece indicar". POSIX evita mencionar un límite en esta área, enfocándose en la comunidad en lugar de las diferencias.
Thomas Dickey
1
Gracias zorro. Su respuesta fue la información que estaba buscando.
Niklas
13

En 10.1 Estructura de directorios y archivos , POSIX enumera los directorios que deben existir. Pero no especifica ningún límite en el número de otros directorios que pueden existir en el nivel raíz de un sistema de archivos.

Por lo demás, no parece poner límites al tamaño de otros directorios.

La atención de POSIX en esta área se centra en la comunidad en lugar de las diferencias.

Thomas Dickey
fuente
Como en un sistema * nix, potencialmente cada directorio (incluido /) puede ser un directorio raíz, sería bastante tonto imponer un límite superior en el número de entradas en un directorio raíz. /no es particularmente especial en este sentido, por lo tanto, se deduce que sería igualmente tonto imponer un límite superior en el número de entradas /específicamente.
un CVn
8

No hay limitación para el número de entradas en un directorio, ya sea en POSIX o en implementaciones típicas de Unix. Puede haber un límite indirecto para el número de subdirectorios, que es el recuento máximo de enlaces duros (la ..entrada de cada subdirectorio es un enlace duro al directorio); eso es 2 16 para muchos sistemas de archivos comunes, lo que limita un directorio a 65533 subdirectorios (al menos para aquellos sistemas de archivos que almacenan ..entradas explícitamente). Comenzarás a alcanzar un bajo rendimiento antes de eso. Según POSIX, una implementación puede admitir solo 8 enlaces duros en un archivo ( _POSIX_LINK_MAX), pero ninguna implementación real está limitada a 6 subdirectorios. Y de todos modos, en muchos sistemas de archivos, incluido ext4, el recuento de enlaces duros no se mantiene para.. entradas, por lo que el único límite es cuánto espacio o cuántos inodos están disponibles en el sistema de archivos.

POSIX no dice mucho sobre la organización de los archivos en el sistema. Solo exige la existencia de unos pocos archivos . Las únicas entradas obligatorias en el directorio raíz son /devy /tmp. Otras entradas habituales de Unix, tales como /usr, /var, /bin, /etc, /lib, /home, etc, son Unix convenciones que no están codificados por POSIX.

En Linux, el FHS codifica los clásicos y un par más. La mayoría de las distribuciones de Linux se adhieren a las entradas de FHS. Otros sistemas Unix suelen tener casi las mismas entradas, tal vez con algunas diferencias, pero el número es casi el mismo.

Los administradores del sistema pueden crear más, aunque esto se desaconseja: hay lugares bien definidos para la mayoría de las cosas (el software se cae /usro /opt, los datos del sistema se hunden /var, los datos del usuario se hunden /net, los puntos de montaje se hunden /mediao /mnt, etc.), por lo que rara vez hay Cualquier buena razón para crear nuevos directorios en el nivel superior.

Gilles 'SO- deja de ser malvado'
fuente
Esto no es correcto. La mayoría de los sistemas de archivos "razonables" tienen un número máximo de subdirectorios por directorio, o un número máximo de inodos por dispositivo. Sin embargo, generalmente es obscenamente grande en relación con el número de directorios que probablemente verá en la raíz de la unidad.
Kevin
@ Kevin Oh, buen punto, en los sistemas de archivos comunes, primero alcanzarías el conteo máximo de enlaces duros, y eso podría ser tan bajo como 16 bits.
Gilles 'SO- deja de ser malvado'
@ Kevin Aunque este no es el caso en ext4, no parece haber un límite en el número de subdirectorios que no sean espacio disponible (bloques o inodes). ¿Estaba pensando en algún otro límite en el número de subdirectorios por directorio?
Gilles 'SO- deja de ser malvado'
Un sistema de archivos diseñado adecuadamente no crea enlaces duros a las entradas del directorio. En un sistema de archivos diseñado correctamente, el recuento de enlaces de un directorio es 1 a menos que haya enlaces duros creados manualmente.
schily
1
No, no existe dicho límite en un sistema de archivos 100% compatible con POSIX. Como ya se mencionó, POSIX no requiere. y .. ser enlaces a otros directorios. Si lo son, este es un detalle de implementación que es el resultado de los hacks introducidos en el sistema de archivos V7. Hay otros sistemas de archivos compatibles con POSIX que funcionan completamente diferentes.
schily
2

a diferencia de FAT, los sistemas de archivos utilizados por UNIX no tienen un límite de tamaño especial en el directorio raíz, pero una vez que la partición esté llena, no podrá agregar más.

Jasen
fuente