Unix 파일 시스템
Unix filesystem![](http://upload.wikimedia.org/wikipedia/commons/thumb/7/76/Version_7_UNIX_SIMH_PDP11_Filesystem_Layout.png/220px-Version_7_UNIX_SIMH_PDP11_Filesystem_Layout.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/f/f3/Standard-unix-filesystem-hierarchy.svg/220px-Standard-unix-filesystem-hierarchy.svg.png)
Unix 및 Unix에서 영감을 받은 운영 체제에서는 파일 시스템이 [1]운영 체제의 중심 구성 요소로 간주됩니다.1969년 [2]UNIX의 첫 번째 실험 버전에서 Ken Thompson에 의해 설계되고 구현된 시스템의 첫 번째 부분 중 하나이기도 합니다.
다른 운영 체제와 마찬가지로, 파일 시스템은 정보 저장 및 검색과 프로세스 간 통신의 여러 형식 중 하나를 제공합니다. 그 점에서 전통적으로 Unix 시스템을 형성하는 많은 작은 프로그램들이 파일에 정보를 저장하여 다른 프로그램들이 읽을 수 있도록 할 수 있습니다. 비록 파이프가 Thi로 시작하는 이 역할에서 정보를 보완합니다.rd 에디션또한 파일 시스템은 터미널, 프린터 및 마우스의 진입점인 이른바 장치 파일을 통해 다른 리소스에 대한 액세스를 제공합니다.
이 문서의 나머지 부분에서는 Unix를 일반 이름으로 사용하여 원래 Unix 운영 체제와 많은 작업을 나타냅니다.
원칙
파일 시스템은 디렉토리의 [1]루트 트리로 표시됩니다.디스크 파티션, 리무버블 미디어 및 네트워크 공유와 같은 개별 볼륨을 별도의 트리로 지정하는 대신(DOS 및 Windows에서처럼 각 드라이브에는 파일 시스템 트리의 루트를 나타내는 드라이브 문자가 있음), 이러한 볼륨을 디렉토리에 마운트할 수 있으므로 볼륨의 파일 시스템 트리가 더 큰 디렉터리로 표시됩니다.트리.[1] 트리 전체의 루트가 표시됩니다./
.
원래의 Bell Labs Unix에서는, 2개의 디스크 셋업이 관례로 행해지고 있었습니다.첫 번째 디스크에는 스타트업 프로그램이 포함되어 있었고, 두 번째 디스크에는 사용자의 파일과 프로그램이 포함되어 있었습니다.이 두 번째 디스크는 다음 이름의 빈 디렉토리에 마운트되었습니다.usr
첫 번째 디스크에서는 두 개의 디스크가 하나의 파일 시스템으로 표시되며 두 번째 디스크의 내용은 다음 위치에서 볼 수 있습니다./usr
.
UNIX 디렉토리에는 파일이 포함되어 있지 않습니다.대신, 파일 이름에는 이른바 inode에 대한 참조와 쌍을 이룬 파일 이름이 포함되어 있으며, 파일 이름과 메타데이터(소유자, 권한, 마지막 액세스 시간 등)가 모두 포함됩니다.파일 시스템의 여러 이름은 하드 [1]링크라고 불리는 기능인 동일한 파일을 참조할 수 있습니다.하드 링크의 수학적 특성은 파일 시스템이 여전히 트리를 형성하고 있지만 일반적으로는 하드 링크되지 않을 수 있지만 파일 시스템을 방향 비순환 그래프의 제한된 유형으로 만듭니다. (원래 1969년에 상상된 바와 같이 Unix 파일 시스템은 사실 p 대신 네비게이션을 제공하는 디렉토리에 대한 하드 링크가 있는 일반 그래프로 사용됩니다.이름을 지정합니다.)[2]
파일 형식
원래 Unix 파일시스템은 일반 파일, 디렉토리 및 디바이스 파일이라고도 불리는 "특수 파일"[1]의 세 가지 파일을 지원했습니다.BSD(Berkeley Software Distribution)와 시스템 V는 각각 프로세스 간 통신에 사용할 파일 유형을 추가했습니다. BSD는 [3]소켓을 추가하고 시스템 V는 FIFO 파일을 추가했습니다.
BSD는 또한 심볼 링크(종종 "symlinks"라고 불린다)를 다른 파일을 참조하는 파일 형식 및 [3]하드 링크를 보완하는 파일 형식 범위에 추가했습니다.Symlinks는 Multics의 [4]유사한 기능을 기반으로 모델링되었으며 파일 시스템에 걸쳐 있을 수 있고 대상 개체와 독립적이라는 점에서 하드 링크와 다릅니다.다른 Unix 시스템에서는 추가 [5]파일 형식을 지원할 수 있습니다.
기존의 디렉토리 레이아웃
프로그램, 시스템컨피규레이션파일, 사용자의 홈디렉토리 등 일부 종류의 파일을 찾기 위한 특정 규칙이 있습니다.이러한 내용은 에서 최초로hier(7)
버전 7 [6]Unix 이후의 man 페이지. 후속 버전, 파생 모델 및 클론에는 일반적으로 man 페이지가 [7][8][9][10][11][12]유사합니다.
디렉토리 레이아웃의 자세한 내용은 시간이 지남에 따라 다릅니다.파일 시스템 레이아웃은 단일 UNIX 사양의 일부가 아니지만 System V Application Binary Interface, Intel Binary Compatibility Standard, Common Operating System Environment, Linux Foundation의 FHS([13]Filesystem Hierarchy Standard) 등 파일 시스템 레이아웃을 표준화하려는 시도가 여러 번 있습니다.
다음은 Unix 운영 체제 상의 일반적인 파일 위치에 대한 일반적인 개요입니다.
디렉토리 또는 파일 | 묘사 |
---|---|
/ | 슬래시/ character만 파일 시스템트리의 루트를 나타냅니다. |
| 바이너리(binary)의 약자로 다음과 같은 특정 기본 유틸리티를 포함합니다.ls 또는cp 탑재에 필요한 것/usr 개별 파일 시스템인 경우 또는 단일 사용자(보조) 모드로 실행되는 경우/usr 탑재할 수 없습니다.System V.4에서는 이 링크는/usr/bin 그렇지 않으면 루트 파일 시스템 자체에 있어야 합니다. |
부트 프로세스의 성공에 필요한 모든 파일이 포함되어 있습니다.Research Unix에서 이것은 디렉토리가 [14]아닌 하나의 파일이었다.오늘날에는 시스템이나 부트로더 등이 특별히 필요로 하지 않는 한 일반적으로 루트 파일 시스템 자체에서 이루어집니다. | |
디바이스의 약자입니다.페리페럴 디바이스 및 의사 디바이스의 파일 표현이 포함됩니다.「Linux Assigned Names and Numbers Authority」를 참조해 주세요.루트 파일 시스템 자체에 있어야 합니다. | |
| 시스템 전체의 컨피규레이션파일 및 시스템데이터베이스가 포함됩니다.이름은[14] etera를 나타내지만, 현재는 편집 가능한 텍스트 설정이 개선되었습니다.당초에는 다음과 같은 '위험한 유지보수 유틸리티'도 포함되어 있었습니다.init 단, 일반적으로는 다음 주소로 이동됩니다.[6]/sbin 또는 다른 곳에서.루트 파일 시스템 자체에 있어야 합니다. |
| Linux 및 기타 시스템의 사용자 홈 디렉토리를 포함합니다.Unix 의 초기 버전에서는, 홈 디렉토리는/usr 대신.[15]일부 시스템에서는 다른 위치를 사용하거나 사용하고 있습니다.macOS에는 홈 디렉토리가 있습니다./Users , 구버전의 BSD에서는,/u , FreeBSD에는/usr/home . |
| 원래 필수 라이브러리: C 라이브러리이지만 Fortran 라이브러리에는 [14]해당되지 않습니다.최신 시스템에서는 프로그램에 필요한 공유 라이브러리가 포함되어 있습니다./bin 로딩 가능한 커널 모듈 또는 디바이스 드라이버.Linux 디스트리뷰션에는 종류가 있을 수 있습니다./lib32 그리고./lib64 멀티아키텍처 지원. |
| USB 스틱, 미디어 플레이어 등 리무버블 디바이스의 디폴트 마운트 포인트일반적으로 하위 디렉토리가 마운트 지점인 디렉토리 자체는 루트 파티션 자체에 있습니다. |
| 마운트를 나타냅니다.시스템 관리자가 임시 마운트 지점으로 일반적으로 사용하는 빈 디렉토리입니다.일반적으로 하위 디렉토리가 마운트 지점인 디렉토리 자체는 루트 파티션 자체에 있습니다. |
| 로컬에 설치된 소프트웨어가 포함됩니다.이 디렉터리에 소프트웨어를 설치하는 패키지 관리자가 있는 시스템 V에서 발생합니다([16]패키지당 하위 디렉터리 1개). |
| procfs 가상 파일 시스템은 프로세스에 대한 정보를 파일로 표시합니다. |
| superuserroot의 홈 디렉토리, 즉 시스템 관리자.이 계정의 홈 디렉토리는 보통 초기 파일 시스템에 있으므로 특정 유지보수를 수행해야 하는 경우 다른 파일 시스템을 사용할 수 없는 /home(다른 파일 시스템의 마운트 지점일 수 있음)에 있지 않습니다.예를 들어 하드 디스크 드라이브에 장애가 발생하여 제대로 마운트할 수 없는 경우 이러한 문제가 발생할 수 있습니다.일반적으로 이 디렉토리는 루트 파티션 자체에 있습니다.어느 경우든 이 디렉토리는 에 대한 링크가 아닙니다./home/root 뭐 그런 거 있잖아요. |
| system(또는 superuser) binary(바이너리)의 약자로 다음과 같은 기본 유틸리티를 포함합니다.init 시스템 부팅, 유지보수 및 복구에 보통 필요합니다.루트 파티션 자체에 있어야 합니다. |
| 서버 데이터(시스템에서 제공하는 서비스의 데이터). |
| 일부 Linux 배포에서는 하드웨어 및 운영 체제와 관련된 정보를 포함하는 sysfs 가상 파일 시스템이 포함되어 있습니다.BSD 시스템에서는 일반적으로 의 커널 소스에 대한 심볼링크/usr/src/sys . |
| 재부팅 후 생존할 수 없는 임시 파일을 저장할 수 있는 장소입니다.많은 시스템에서는, 기동시에 이 디렉토리를 클리어 하거나 tmpfs 를 사용해 실장하고 있습니다. |
| Research Unix 및 System [14]V의 Unix 커널.3BSD에 가상 메모리 지원이 추가되어 이름이 변경되었습니다./vmunix . |
| "사용자 파일 시스템": 원래 사용자 홈 [15]디렉토리를 유지하는 디렉토리입니다.그러나 이미 1973년 Research Unix 제3판에 의해 운영체제의 프로그램을 2개의 디스크(그 중 하나는 256K 고정 헤드 드라이브)로 분할하여 기본 명령어가 다음 중 하나에 표시되도록 재사용되었습니다./bin 또는/usr/bin 이제 X Window 시스템, 창 관리자, 스크립트 언어 등 시스템에 중요하지 않은 실행 파일, 라이브러리 및 공유 리소스를 보유하고 있습니다.[17]이전 UNIX 시스템에서는 사용자 홈 디렉토리가 에 표시되는 경우가 있습니다./usr 1984년에는 지역 [14]풍습에 따라 달라졌지만 프로그램이 포함된 디렉토리와 함께. |
| 시스템 전체에서 사용되는 개발 헤더를 저장합니다.헤더 파일은 주로 에 의해 사용됩니다.#include directive는 C언어로 지정됩니다.이거는 지금까지 이 디렉토리의 이름이 선택된 방법입니다. |
| 저장된 프로그램에 필요한 라이브러리 및 데이터 파일을 저장합니다./usr 또는 다른 곳에서. |
| 사용자가 직접 실행하는 것이 아니라 다른 프로그램에 의해 실행되는 프로그램을 유지합니다.예를 들어 Sendmail 실행 파일은 [18]이 디렉토리에서 찾을 수 있습니다.2011년까지는 [19]FHS에 존재하지 않습니다.Linux 디스트리뷰션에서는 이 디렉토리의 내용이 이전되어 왔습니다./usr/lib 4.3에도 거주했습니다.BSD |
| 닮다/usr 구조상에서는, 그 서브 디렉토리는 커스텀 프로그램이나 BSDPorts 컬렉션의 파일 등, operating system 배포의 일부가 아닌 추가에 사용됩니다.통상, 다음과 같은 서브 디렉토리가 있습니다./usr/local/lib 또는/usr/local/bin . |
| 아키텍처에 의존하지 않는 프로그램 데이터.Linux 및 최신 BSD 파생 버전에서 이 디렉토리에는 다음과 같은 하위 디렉토리가 있습니다.man 맨페이지에서 바로 아래에 나타나던 것/usr 이전 버전에서는. |
| variable을 나타냅니다.자주 변경될 수 있는 파일(특히 시스템 사용자에게 발송된 전자 메일이나 프로세스 ID 잠금 파일 등)을 보관하는 장소입니다. |
| 시스템 로그 파일이 포함됩니다. |
| 모든 수신 메일이 저장되는 장소.사용자(외)root )는, 자신의 메일에만 액세스 할 수 있습니다.대부분의 경우 이 디렉토리는 에 대한 심볼릭 링크입니다./var/spool/mail . |
| 스풀 디렉토리인쇄 작업, 메일 스풀 및 기타 대기 중인 태스크를 포함합니다. |
| 일부 프로그램의 컴파일되지 않은 소스 코드가 있는 위치입니다. |
| 그/var/tmp directory는 시스템 재부팅 사이에 보존해야 하는 임시 파일을 보관하는 장소입니다. |
참고 항목
참조
- 이 문서에는 Creative Commons Attribution-ShareAlike 3.0 Unported License에 따라 라이센스가 부여되지만 GFDL에 따라 라이센스가 부여되지 않은 Citizendium 기사 "Unix filesystem"의 자료가 포함되어 있습니다.
- ^ a b c d e Ritchie, D.M.; Thompson, K. (July 1978). "The UNIX Time-Sharing System". Bell System Tech. J. 57 (6): 1905–1929. CiteSeerX 10.1.1.112.595. doi:10.1002/j.1538-7305.1978.tb02136.x.
- ^ a b Ritchie, Dennis M. (1979). The Evolution of the Unix Time-sharing System. Language Design and Programming Methodology Conf.
- ^ a b Leffler, Samuel J.; McKusick, Marshall Kirk; Karels, Michael J.; Quarterman, John S. (October 1989). The Design and Implementation of the 4.3BSD UNIX Operating System. Addison-Wesley. ISBN 978-0-201-06196-3.
- ^ McKusick, Marshall Kirk; et al. "A Fast Filesystem for Unix" (PDF). Freebsd.org. CSRG, UC Berkeley. Retrieved 16 November 2016.
- ^ Linux 프로그래머 매뉴얼– 시스템 콜 –
- ^ a b 버전 7 Unix 프로그래머 매뉴얼 –
- ^ FreeBSD 기타 정보 매뉴얼 –
- ^ OpenBSD 기타 정보 매뉴얼 –
- ^ "hier(7) man page for 2.9.1 BSD".
- ^ "hier(7) man page for ULTRIX 4.2".
- ^ "hier(7) man page for SunOS 4.1.3".
- ^ Linux 프로그래머 매뉴얼– 개요, 표기법 및 Miscellanea –
- ^ George Kraft IV (1 November 2000). "Where to Install My Products on Linux?". Linux Journal. Retrieved 13 November 2014.
- ^ a b c d e Kernighan, Brian W.; Pike, Rob (1984). The UNIX Programming Environment. Prentice-Hall. pp. 63–65. Bibcode:1984upe..book.....K.
- ^ a b Ritchie, Dennis. "Unix Notes from 1972". Retrieved 14 January 2018.
- ^ System V Application Binary Interface Edition 4.1(1997-03-18)
- ^ M.D. 매킬로이(1987년).Research Unix 리더: 프로그래머 매뉴얼, 1971-1986. CSR 139, Bell Labs에서 발췌한 주석.
- ^ "Chapter 7. sendmail". UNICOS/mp Networking Facilities Administration. Cray. Retrieved 14 September 2013.
- ^ "fhs-spec revision 44".