{{위키데이터 속성 추적}}
{{다른 뜻|유닉스 파일 시스템||수많은 유닉스 및 유닉스 계열 운영 체제에 사용되는 파일 시스템의 하나}}
[[파일:Version 7 UNIX SIMH PDP11 Filesystem Layout.png|섬네일|[[버전 7 유닉스]] 파일시스템 레이아웃: "/"와 "/usr"의 하위 디렉터리들]]
[[파일:Standard-unix-filesystem-hierarchy.svg|섬네일|[[유닉스]] 파일시스템 레이아웃의 개요]]

[[유닉스]] 및 유닉스에 영향을 받은 [[운영 체제]]에서 [[파일 시스템]]은 운영 체제의 핵심적인 부분으로 간주된다.<ref name=" Ritchie">{{저널 인용|last1= Ritchie |first1= D.M. |authorlink1= Dennis Ritchie |last2= Thompson |first2= K. |authorlink2= Ken Thompson  |title= The UNIX Time-Sharing System |journal= Bell System Tech. J. |volume= 57 |issue= 6 |pages= 1905–1929 |date= July 1978 |doi=10.1002/j.1538-7305.1978.tb02136.x|citeseerx= 10.1.1.112.595 }}</ref> [[유닉스의 역사|1969년으로 거슬러 올라가]] [[켄 톰프슨]]이 최초 실험 버전의 유닉스에 설계하고 구현한 시스템의 최초 부분 가운데 하나이기도 했다.<ref name="evolution"/>

다른 운영 체제들과 비슷하게 파일 시스템은 정보 스토리지와 검색을 제공하며 그리고 여러 형태의 [[프로세스 간 통신]] 가운데 하나로서 전통적으로 유닉스 시스템을 형성하는 수많은 작은 크기의 프로그램들이 파일에 정보를 저장시킬 수 있어서 다른 프로그램들이 이것들을 읽을 수 있다. [[파이프 (유닉스)|파이프]]가 [[리서치 유닉스|제3판]]을 기점으로 이 역할을 보충해준다. 또, 파일시스템은 [[단말기|터미널]], [[프린터]], [[마우스]]로의 진입점인 이른바 [[장치 파일]]을 통해 다른 리소스로의 접근을 제공한다.

이 문서의 나머지 부분은 [[상표의 보통명칭화|보통명칭]]으로서 오리지널 유닉스 운영 체제와 그에 속하는 수많은 [[유닉스 계열|계열]]을 모두 의미하는 "유닉스"를 사용한다.

== 원리 ==
파일시스템은 여러 디렉터리가 있는 하나의 [[나무 그래프|루트 트리]]로 등장한다.<ref name="Ritchie"/> [[디스크 파티션]], 이동식 미디어, [[공유 자원|네트우크 자원]] 등 별도의 볼륨을 별도의 트리로 주소화(마치 [[도스]]와 [[마이크로소프트 윈도우|윈도우]]에서 하는 것처럼, 각 "드라이브"가 드라이브 문자를 가짐으로써 파일 시스템 트리의 루트를 나타내는 것)하는 대신 이러한 볼륨들은 디렉터리를 [[Mount (유닉스)|마운트]]시킴으로써 볼륨의 파일 시스템 트리가 더 큰 트리의 디렉터리로 보이게 만든다.<ref name="Ritchie"/> 전체 트리의 루트가 <code>/</code>로 표시된다.

오리지널 [[리서치 유닉스|벨 연구소 유닉스]]에서는 2 디스크 셋업이 관례적이었으며 첫 번째 디스크는 시작 프로그램을 담고 있었으며 두 번째 디스크는 사용자의 파일과 프로그램들을 담았다. 이 두 번째 디스크는 첫 번째 디스크에서 <code>usr</code>이라는 이름의 빈 디렉터리에서 마운트되었으므로 두 번째 디스크가 하나의 파일 시스템으로 보이게 되며 두 번째 디스크의 내용은 <code>/usr</code>에서 볼 수 있다.

유닉스 디렉터리는 파일을 담고있지 않다. 그 대신 이른바 [[아이노드]]의 참조와 쌍을 이루는 파일들의 이름을 담는다. 그리고 이 아이노드는 파일과 파일 [[메타데이터]](소유자, 권한, 마지막 접근 시간 등, 그러나 이름은 미포함)를 담는다. 파일 시스템의 여러 개의 이름은 동일한 파일을 가리킬 수 있으며 이 기능의 이름은 [[하드 링크]]라고 부른다.<ref name="Ritchie"/> 하드 링크의 수학적 특성으로 말미암아 파일 시스템을 유한한 유형의 [[유향 비순환 그래프]]로 만들어주지만 디렉터리는 일반적으로 하드 링크될 수 없기 때문에 여전히 트리를 구성한다.<!--'하드 링크' 문서에 따르면 맥 OS X은 트리의 하드 링크를 허용함--> 1969년 원래 예상한 바 그대로 유닉스 파일 시스템은 유닉스 파일 시스템은 사실상 경로 이름 대신 내비게이션을 제공하는 디렉터리에 대한 하드 링크가 있는 일반 그래프로 사용된다.<ref name="evolution">{{콘퍼런스 인용 |first=Dennis M. |last=Ritchie |year=1979 |title=The Evolution of the Unix Time-sharing System |conference=Language Design and Programming Methodology Conf. |url=http://cm.bell-labs.com/cm/cs/who/dmr/hist.html |access-date=2020-05-08 |archive-date=2015-04-08 |archive-url=https://web.archive.org/web/20150408054606/http://cm.bell-labs.com/cm/cs/who/dmr/hist.html |url-status=dead }}</ref>)

=== 파일 유형 ===
{{본문|유닉스 파일 유형}}

오리지널 유닉스 파일 시스템은 3가지 파일 유형을 지원하였다: 일반 파일, [[디렉토리|디렉터리]], "특수 파일"(또는 장치 파일).<ref name="Ritchie"/> [[BSD]]와 [[유닉스 시스템 V|시스템 V]]는 각각 [[프로세스 간 통신]]을 위해 사용할 파일 유형을 추가하였다: BSD는 [[버클리 소켓|소켓]]을,<ref name="43bsd">{{서적 인용|last1= Leffler |first1= Samuel J. |authorlink1= Samuel J Leffler |last2= McKusick |first2= Marshall Kirk |authorlink2= Marshall Kirk McKusick |last3= Karels |first3= Michael J. |authorlink3= Michael J. Karels |last4= Quarterman |first4= John S. |authorlink4= John Quarterman |title= The Design and Implementation of the 4.3BSD UNIX Operating System |date= October 1989 |publisher= [[:en:Addison-Wesley]] |isbn= 978-0-201-06196-3 |url-access= registration |url= https://archive.org/details/designimplementa0000unse }}</ref> 시스템 V는 [[명명된 파이프|FIFO 파일]]을 추가하였다.

또, BSD는 일련의 파일 유형에 대한 [[심볼릭 링크]](이른바 symlink)를 추가하였다. 이것들은 다른 파일을 가리키는 파일들이며 보완 방식의 하드 링크들이다.<ref name="43bsd"/> 심볼릭 링크는 [[멀틱스]]에 비슷한 기능 이후 모델링된 것으로,<ref name="FFS">{{웹 인용|last1=McKusick|display-authors=etal|first1=Marshall Kirk|title=A Fast Filesystem for Unix|url=https://docs.freebsd.org/44doc/smm/05.fastfs/paper.pdf|website=Freebsd.org|publisher=CSRG, UC Berkeley|accessdate=16 November 2016}}</ref> 파일시스템을 아우르는 하드 링크와는 구별하며 이들의 존재하는 대상 오브젝트와는 독립적이다. 다른 유닉스 시스템들은 추가 유형의 파일을 지원할 수 있다.<ref>{{man|2|stat|Linux}}</ref>

== 전통적인 디렉터리 레이아웃 ==
프로그램, 시스템 구성 파일, 사용자의 [[홈 디렉터리]] 등 일부 유형의 파일을 위치시키기 위한 특정한 전통이 존재한다. 이것들은 [[버전 7 유닉스]] 이후로 <code>hier(7)</code> [[Man page]]에 처음 문서화되었다.<ref name="v7">{{man|7|hier|v7}}</ref> 이후 버전과 파생판, 클론들은 일반적으로 비슷한 매뉴얼 문서를 제공한다.<ref>{{man|7|hier|FreeBSD}}</ref><ref name="openbsd">{{man|7|hier|OpenBSD}}</ref><ref>{{웹 인용|title=hier(7) man page for 2.9.1 BSD|url=http://www.freebsd.org/cgi/man.cgi?query=hier&manpath=2.9.1+BSD}}</ref><ref>{{웹 인용|title=hier(7) man page for ULTRIX 4.2|url=http://www.freebsd.org/cgi/man.cgi?query=hier&manpath=ULTRIX+4.2}}</ref><ref>{{웹 인용|title=hier(7) man page for SunOS 4.1.3|url=http://www.freebsd.org/cgi/man.cgi?query=hier&manpath=SunOS+4.1.3}}</ref><ref>{{man|7|hier|Linux}}</ref>

디레터리 레이아웃의 세세한 부분은 시간이 지남에 따라 다양해지고 있다. 파일 시스템 레이아웃이 [[단일 유닉스 규격]]의 일부가 아니지만 [[유닉스 시스템 V|시스템 V]] [[응용 프로그램 이진 인터페이스]], [[인텔 이진 호환 표준]], 공통 운영 체제 환경, [[리눅스 재단]]의 [[파일시스템 계층구조 표준]](FHS) 등 표준화를 위한 여러 시도가 존재한다.<ref>{{웹 인용|title=Where to Install My Products on Linux? |url=http://www.linuxjournal.com/article/4121 |website=[[리눅스 저널]] |date=1 November 2000 |author=George Kraft IV |accessdate=13 November 2014}}</ref>

다음은 유닉스 운영 체제의 파일의 일반적 위치를 나타낸 개요이다:
{| class="wikitable"
!디렉터리 또는 파일
!설명
|-
|<code>/</code>
|단독 슬래시 <code>/</code> 문자는 파일시스템 트리의 루트를 나타낸다.
|-
|
:<code>/bin</code>
|[[컴퓨터 프로그램|이진 파일]]을 대표한다. 시스템 V.4에서 이것은 <code>/usr/bin</code>의 심볼릭 링크이다. 그 밖의 경우 루트 파일시스템 그 자체여야 한다.
|-
|
:<code>[[/boot]]</code>
|성공적인 부팅 프로세스에 필요한 모든 파일을 포함한다. [[리서치 유닉스]]에서 이것은 디렉터리가 아닌 하나의 파일이었다.<ref name="upe">{{서적 인용|first1=Brian W. |last1=Kernighan |authorlink1=Brian Kernighan |first2=Rob |last2=Pike |authorlink2=Rob Pike |title=The UNIX Programming Environment |publisher=Prentice-Hall |year=1984 |pages=[https://archive.org/details/unixprogramminge0000kern/page/63 63–65]|title-link=The UNIX Programming Environment |bibcode=1984upe..book.....K }}</ref>
|-
|
:<code>[[장치 파일|/dev]]</code>
|장치를 대표한다. 주변 장치와 [[장치 파일|의사 장치]]들의 [[장치 파일|대표 파일]]들을 포함한다.
|-
|
:<code>/etc</code>
|시스템 전체의 구성 파일과 시스템 데이터베이스 파일을 포함한다.
|-
|
:<code>/home</code>
|리눅스와 기타 일부 시스템의 사용자 홈 디렉터리를 포함한다. 오리지널 버전의 유닉스에서 홈 디렉터리는 <code>/usr</code>를 대신 사용하였다.<ref name="notes72">{{웹 인용|last=Ritchie|first=Dennis|title=Unix Notes from 1972|url=https://www.bell-labs.com/usr/dmr/www/notes.html|accessdate=14 January 2018}}</ref> 일부 시스템들은 여전히 다른 위치를 사용한다: [[macOS]]는 <code>/Users</code>에 홈 디렉터리를 보관하며 구형 버전의 BSD는 <code>/u</code>에, [[FreeBSD]]는 <code>/usr/home</code>에 위치한다.
|-
|
:<code>/lib</code>
|근본적으로 필수적인 라이브러리들: [[C (프로그래밍 언어)|C]] 라이브러리, 그러나 [[포트란]] 라이브러리는 아님.<ref name="upe"/>
|-
|
:<code>/media</code>
|USB 스틱, 미디어 플레이어 등 이동식 장치의 기본 마운트 지점이다.
|-
|
:<code>/mnt</code>
|마운트를 대표한다.
|-
|
:<code>/opt</code>
|로컬에 설치된 소프트웨어를 포함한다.
|-
|
:<code>/proc</code>
|[[프로세스]]에 관한 정보를 파일로 표시하는 [[Procfs]] 가상 [[파일 시스템]]이다.
|-
|
:<code>/root</code>
|[[슈퍼유저]] 루트(시스템 관리자)를 위한 홈 디렉터리이다.
|-
|
:<code>/sbin</code>
|[[컴퓨터 프로그램|시스템(또는 슈퍼유저) 바이너리]]를 대표하며 시스템의 기동, 관리, 복구에 필수적인 <code>init</code> 등 중요 유틸리티를 포함한다.
|-
|
:<code>/srv</code>
|서버 데이터(시스템이 제공하는 서비스 데이터)이다.
|-
|
:<code>/sys</code>
|일부 [[리눅스 배포판]]에서 하드웨어와 운영 체제와 관련한 정보를 담고있는 [[Sysfs]] 가상 [[파일 시스템]]을 포함한다.
|-
|
:<code>/tmp</code>
|재부팅 시에도 생존할 것으로 예측되지 않는 임시 파일을 위한 장소이다.
|-
|
:<code>/unix</code>
|리서치 유닉스와 [[유닉스 시스템 V|시스템 V]]의 유닉스 [[커널 (컴퓨팅)|커널]]이다.<ref name="upe"/>
|-
|
:<code>/usr</code>
|사용자 파일 시스템이다. 원래는 사용자 홈 디렉터리들을 보관하는 디렉터리이지만,<ref name="notes72"/> 제3판 [[리서치 유닉스]](1973년 경)에 의해 이미 운영 체제의 프로그램들을 두 개의 디스크(이 중 하나느 256K 고정 헤드 드라이브)에 분리시키기 위해 재사용되었으며 기본적인 명령어들이 <code>/bin</code> 또는 <code>/usr/bin</code>에 나타나게 된다.<ref name="reader">[[더글러스 매클로이|M. D. McIlroy]] (1987). [http://www.cs.dartmouth.edu/~doug/reader.pdf A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986]. CSTR 139, Bell Labs.</ref> 현재는 [[X 윈도 시스템]], [[KDE]], [[펄]] 등 시스템에 중요하지 않은 실행 파일, 라이브러리, 공유 리소스를 보관한다.
구 유닉스 시스템에서 사용자 홈 디렉터리는 프로그램을 포함하는 디렉터리들과 함께 <code>/usr</code>에 등장하였으며 1984년까지 로컬 시스템에 의존하였다.<ref name="upe"/>
|-
|
::<code>/include</code>
|시스템 전반의 개발 헤더를 저장한다.
|-
|
::<code>/lib</code>
|<code>/usr</code> 또는 다른 곳에 저장된 프로그램을 위한 필요 라이브러리, 데이터 파일을 저장한다.
|-
|
::<code>/libexec</code>
|사용자가 직접 실행하는 것이 아닌, 다른 프로그램들이 실행하는 프로그램을 보관한다. 이를테면 [[Sendmail]] 실행 파일은 이 디렉터리에서 볼 수 있다.<ref>{{웹 인용 |url=http://docs.cray.com/books/S-2341-22/html-S-2341-22/z1028736068smg.html |website=[[UNICOS]]/mp Networking Facilities Administration |publisher=[[크레이 (기업)]] |title=Chapter 7. sendmail |accessdate=14 September 2013 |archive-date=2017-11-09 |archive-url=https://web.archive.org/web/20171109075438/http://docs.cray.com/books/S-2341-22/html-S-2341-22/z1028736068smg.html |url-status=dead }}</ref> 2011년 FHS에서 등장하였다.<ref>{{웹 인용 |url=http://bzr.linuxfoundation.org/loggerhead/lsb/devel/fhs-spec/revision/44 |title=fhs-spec revision 44 |확인날짜=2020-05-08 |보존url=https://web.archive.org/web/20170305015621/http://bzr.linuxfoundation.org/loggerhead/lsb/devel/fhs-spec/revision/44 |보존날짜=2017-03-05 |url-status=dead }}</ref> 리눅스 배포판은 전통적으로 이 디렉터리의 내용을 <code>/usr/lib</code>로 이동시켰다.
|-
|
::<code>/local</code>
|구조적으로 <code>/usr</code>와 유사하지만 하위 디렉터리는 운영 체제 배포판의 일부가 아닌 추가물에 사용된다. (예: [[BSD]] [[포츠 컬렉션]]의 사용자 지정 프로그램인 파일) 일반적으로 <code>/usr/local/lib</code> 또는 <code>/usr/local/bin</code> 등의 하위 디렉터리를 포함한다.
|-
|
::<code>/share</code>
|아키텍처에 독립적인 프로그램 데이터이다.
|-
|
:<code>/var</code>
|변수를 대표한다. 특히 프로세스 ID [[파일 잠금|잠금 파일]], 시스템 사용자에게 보내는 이메일 등 크기 면에서 변동이 있는 파일들을 위한 장소이다.
|-
|
::<code>/log</code>
|시스템 로그 파일을 포함한다.
|-
|
::<code>/mail</code>
|들어오는 메일이 저장되는 장소이다. root가 아닌 사용자들은 자신만의 메일에만 접근이 가능하다. 이 디렉터리는 <code>/var/spool/mail</code>의 [[심볼릭 링크]]인 경우가 있다.
|-
|
::<code>/spool</code>
|[[스풀링|스풀]] 디렉터리이다. 인쇄 잡, 메일 스풀, 기타 큐의 작업을 포함한다.
|-
|
::<code>/src</code>
|컴파일되지 않은 일부 프로그램의 소스 코드가 위치하는 장소이다.
|-
|
::<code>/tmp</code>
|<code>/var/tmp</code> 디렉터리는 시스템 재부팅 간 보존되어야 하는 임시 파일을 위한 장소이다.
|}

== 같이 보기 ==
* [[Btrfs]]
* [[Ext2]]
* [[Ext3]]
* [[Ext4]]
* [[파일시스템 계층구조 표준]]
* [[유닉스 파일 시스템]]
* [[ZFS]]

== 각주 ==
{{각주}}

[[분류:파일 시스템 관리]]