POSIX는 OS 루트의 디렉토리 수를 제한합니까?


12

POSIX 표준을 배우려고합니다. 유닉스를 사용하는 경우, 내가 한 /bin, /etc, /dev, /media, 일반적으로 /opt,하지만 표준화 또는 최대 귀하의 사양 구현하는 것입니다? 루트에 많은 디렉토리가있을 수 있습니까, 아니면 표준에 의해 제한됩니까?


3
POSIX는이 영역을 건드리지 않습니다.
Thomas Dickey

답변:


17

The Open Group의 공개 표준 에 따르면 필요한 디렉토리는 다음과 같습니다.

  • /
  • /dev, 포함하는 console, nulltty
  • /tmp쓰기 가능하지만 반드시 보존 될 필요는 없습니다.

Linux Foundation 은 일반적으로 Linux 시스템에서 볼 수있는 디렉토리를 포함하도록이를 확장 하는 파일 시스템 계층 표준 (FHS)을 유지 합니다.

  • /bin: 필수 사용자 명령 바이너리
  • /boot: 부트 로더의 정적 파일
  • /dev: 장치 파일
  • /etc: 호스트 별 시스템 구성
  • /home: 사용자 홈 디렉토리 (선택 사항)
  • /lib: 필수 공유 라이브러리 및 커널 모듈
  • /lib<qual>: 대체 형식 필수 공유 라이브러리 (선택 사항)
  • /media: 이동식 미디어의 마운트 지점
  • /mnt: 임시로 마운트 된 파일 시스템의 마운트 지점
  • /opt: 애드온 응용 프로그램 소프트웨어 패키지
  • /root: 루트 사용자의 홈 디렉토리 (선택 사항)
  • /run: 런타임 변수 데이터
  • /sbin: 시스템 바이너리
  • /srv:이 시스템에서 제공하는 서비스 데이터
  • /tmp: 임시 파일
  • 뿐만 아니라 /usr계층 구조와 /var계층 구조

FHS는 모든 UNIX 시스템에 통합 할 수 있도록 가능한 한 일반적으로 설계되었습니다. 추가 디렉토리는 합리적인 시스템에 존재할 가능성이 있지만 POSIX에서는이를 요구하지 않습니다.

그러나 오픈 그룹은 또한

엄격하게 준수하는 응용 프로그램은 아래에 명시되지 않는 한 이러한 디렉토리에서 파일을 생성 할 수있는 능력을 갖지 않아야합니다.

디렉토리는 실제로 파일 일 뿐이므로 엄격하게 준수하는 응용 프로그램은 루트 수준에서 파일이나 디렉토리를 만들지 않습니다. 따라서 POSIX는 루트 수준에서 배포 할 수있는 대상을 반드시 제한하지는 않지만 해당 사양을 준수하는 응용 프로그램은 배포 할 수 있다고 가정 할 수 없습니다.


5
문제는 어느 디렉토리가 표준 인지에 대한 것이 아니라 한계 가 있는지 물었다 . POSIX는 그 질문에 대답하지 않습니다.
토마스 디키

POSIX의 인용문을 가리 키지 않고 의견을 추가합니다.
토마스 디키

마지막 단락은 내가 언급 한 것입니다 : "설명하는 것 같습니다". POSIX 차이보다는 공통성에 중점을 두어이 영역에서 제한을 언급하지 않습니다.
토마스 디키

1
여우 감사합니다. 당신의 대답은 내가 찾던 정보였습니다.
Niklas

13

에서 10.1 디렉토리 구조 및 파일 , POSIX 목록 디렉토리는 있어야 존재한다. 그러나 파일 시스템의 루트 수준에 존재할 수있는 다른 디렉토리의 수에는 제한이 없습니다.

그 문제에 대해서는 다른 디렉토리의 크기에 제한을 두지 않는 것 같습니다.

이 영역에서 POSIX의 관심은 차이점보다는 공통성에 중점을 둡니다.


* nix 시스템에서 잠재적으로 모든 디렉토리 (를 포함하여 /)는 루트 디렉토리 일 수 있으므로 루트 디렉토리의 항목 수에 상한을 적용하는 것은 매우 어리석은 일입니다. /이와 관련하여 특별히 특별하지는 않으므로, /구체적 으로 엔트리의 수에 상한을 부과하는 것은 상당히 어리석은 일 이다.
CVn

8

POSIX 또는 일반적인 Unix 구현에서 디렉토리의 항목 수에는 제한이 없습니다. 최대 하드 링크 수인 각 서브 디렉토리 수에 대한 간접 한계가있을 수 있습니다 (각 서브 디렉토리의 ..항목은 디렉토리 에 대한 하드 링크입니다). 2 사용자들은 16 (즉, 저장하는 파일 시스템에 대한 최소한 65,533 하위 디렉토리에 디렉토리를 제한하는 많은 일반적인 파일 시스템에 대한 ..항목을 명시 적으로). 그 전에 성능이 저하되기 시작합니다. POSIX에 따르면 구현은 파일 ( _POSIX_LINK_MAX) 에서 8 개의 하드 링크 만 지원할 수 있지만 실제 구현은 6 개의 서브 디렉토리로 제한되지 않습니다. 어쨌든 ext4를 포함한 많은 파일 시스템에서 하드 링크 수는 유지되지 않습니다... 파일 시스템에서 사용 가능한 공간 또는 inode 수는 제한됩니다.

POSIX는 시스템의 파일 구성에 대해별로 말하지 않습니다. 단지 몇 개의 파일 만 존재해야 합니다 . 루트 디렉토리의 유일한 필수 항목은 /dev/tmp입니다. 같은 다른 습관 유닉스 항목 /usr, /var, /bin, /etc, /lib, /home, 등은 유닉스 POSIX에 의해 성문화되지 않은 규칙.

Linux에서 FHS 는 고전과 몇 가지를 체계화합니다. 대부분의 Linux 배포판은 FHS 항목을 따릅니다. 다른 유닉스 시스템은 일반적으로 항목이 거의 같지만 약간의 차이가있을 수 있지만 그 수는 거의 같습니다.

권장하지는 않지만 시스템 관리자는 더 많은 것을 만들 수 있습니다. 대부분의 사물에 대해 잘 정의 된 장소가 있습니다 (소프트웨어는 /usr또는로 /opt, 시스템 데이터는로 /var, 사용자 데이터는로 /net, 마운트 포인트는 /media또는 /mnt로 등). 최상위 디렉토리에 새 디렉토리를 작성해야하는 좋은 이유.


이것은 정확하지 않습니다. 대부분의 "합리적인"파일 시스템은 디렉토리 당 최대 서브 디렉토리 수 또는 장치 당 최대 inode 수를 갖습니다. 그러나 일반적으로 드라이브 루트에 표시되는 디렉토리 수에 비해 음란하게 큽니다.
Kevin

@Kevin 오, 좋은 점은 일반적인 파일 시스템에서 최대 하드 링크 수에 먼저 도달했을 때 16 비트 정도로 낮을 수 있다는 것입니다.
Gilles 'SO- 악한 중지'

@Kevin ext4에서는 그렇지 않지만 사용 가능한 공간 (블록 또는 inode) 이외의 하위 디렉토리 수에는 제한이없는 것으로 보입니다. 디렉토리 당 서브 디렉토리 수에 대한 다른 제한 사항을 생각 했습니까?
Gilles 'SO- 악마 그만해'

올바르게 설계된 파일 시스템은 .. 디렉토리 항목에 대한 하드 링크를 만들지 않습니다. 올바르게 설계된 파일 시스템에서 수동으로 생성 된 하드 링크가 없으면 디렉토리의 링크 수는 1입니다.
schily

1
아니요, 100 % POSIX 호환 파일 시스템에는 그러한 제한이 없습니다. 이미 언급했듯이 POSIX는 필요하지 않습니다. 그리고 ..는 다른 디렉토리에 대한 하드 링크입니다. 만약 그렇다면, 이것은 V7 파일 시스템에 도입 된 핵의 결과 인 구현 세부 사항입니다. 완전히 다른 다른 POSIX 호환 파일 시스템이 있습니다.
schily

2

FAT와 달리 UNIX에서 사용하는 파일 시스템에는 루트 디렉토리에 대한 특별한 크기 제한이 없지만 파티션이 가득 차면 더 이상 추가 할 수 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.