파일을 묶는 폴더이다. 리눅스에서는에는 디렉토리도 디렉토리 엔트리라는 구조에 하위 정보를 가진 파일처럼 취급이 된다.
.txt같이 사람이 읽을 수 있는 순수한 문자 데이터를 담은 파일이다. 코딩에 따라 ASCII, UTF-8, EUC-KR 등 다양한 방식 사용한다. 참고로 자바스크립트는 UTF-8방식이라 문자열 하나당 2바이트이다.
.exe 같은 컴퓨터가 이해하기 위한 코드, 숫자, 구조체 등 텍스트가 아닌 이진 데이터가 저장된 파일이다.
가장 오래된 파일시스템 중 하나로 USB, 플로피디스크 등에 사용된다. 저장되는 데이터들은 클러스터라는 단위로 저장되는데, 이 데이터들이 메모리에 선형적으로 쭉 저장된 것이 아닌, 단편화를 막기 위해 띄엄띄엄 여기저기에 저장된 형태라 클러스터 단위로 다음에 읽어야할 파일 블록을 추적하는 연결 리스트 구조를 띈다.

FAT의 구조는 다음과 같은데 파일 내용은 모두 File Data 영역의 클러스터들에 저장되고, FAT 영역은 클러스터 간의 연결 관계를 저장한다. 이 모든 탐색은 디렉토리 엔트리를 기점으로 시작되며, 루트 디렉토리부터 차례대로 경로를 따라 내려가면서 하위 디렉토리의 디렉토리 엔트리를 계속 탐색하는 방식으로 이루어진다.
사용자가 특정 파일에 접근할 때, FAT 파일 시스템은 먼저 루트 디렉토리에 있는 디렉토리 엔트리를 탐색한다.
디렉토리 엔트리는 해당 파일의 이름, 속성, 크기, 그리고 파일이 시작하는 첫 번째 클러스터 번호 등을 담고 있는 메타데이터 블록이다.
FAT 시스템은 이 디렉토리 엔트리를 읽어 파일의 시작 클러스터를 확인한 뒤, FAT 영역을 따라가며 파일의 나머지 데이터를 추적하고 읽어간다.
파일시스템이란 컴퓨터에서 파일들을 쉽게 사용하고, 효율적으로 사용할 수 있도록 관리해주는 시스템이다.
그렇다면 운영체제에서 이 파일시스템은 정확히 어떤 역할을 하고 있을까.
디스크 파티션이라는 단위로 논리적으로 분할하는데, 보통의 일반 사용자 PC의 경우 Windows를 기준으로 2~3개의 파티션으로 디스크가 나누어져 있다. C드라이브, ESP(시스템에서 부팅에 필요한 파일을 저장하는 특수한 파티션), 복구 파티션. 이 각각의 파티션에는 자신만의 파일 시스템을 가지고 있고, 그 파일 시스템을 이용해 해당 파티션 안의 파일과 디렉토리를 관리한다.
리눅스 파일 시스템은 계층적인 구조를 가지고 있다. 모든 파일과 디렉토리는 단일 루트(/)에서 시작되며, 이 루트 아래에 여러 하위 디렉토리가 위치한다.
Ext4는 현재 가장 널리 사용되는 리눅스 파일 시스템으로, 대용량 파일 시스템과 파일을 지원하며, 저널링 기능을 통해 시스템 충돌 후 복구 시간을 단축할 수 있다.
저널링이란 파일 시스템의 변경 사항(데이터의 업데이트, 파일의 추가 및 삭제 등)을 파일 시스템에 적용하기 전에, 먼저 '저널'이라고 하는 특별한 영역에 기록한다. 이후 실제 파일 시스템에 변경 사항을 적용한다. 시스템 충돌이나 전원 문제로 인해 시스템이 예기치 않게 중단되더라도, 저널에 기록된 정보를 사용하여 파일 시스템을 안정적인 상태로 복구할 수 있다.

위 그림은 Ext4의 전체적인 파티션 구조를 나타낸 것이다. 하나의 파티션은 블록 단위로 구성되고, ext4에서는 파티션이 여러 개의 블록 그룹으로 나뉘며, 이 블록 그룹 안에서도 영역이 나뉜다.
VFS (Virtual File System)는 파일 시스템을 추상화해서 하나의 공통 인터페이스로 만든 것이다. 이렇게 되면 사용자에게는 다양한 파일시스템 호환성 제공과 일관된 인터페이스 제공이 가능해진다.
하나의 하드디스크에는 여러개의 파티션이 존재 가능하므로 당연히 여러개의 파일 시스템 타입이 존재할 수 있다. 그러나 이 VFS계층을 거치면, 사용자는 일관된 인터페이스를 통해 다양한 파일 시스템에 접근 할 수 있다.

윈도우 디스크 관리창에서 현재 하드디스크가 여러 파티션으로 분리되어 있는걸 볼 수 있다. C드라이브는 NTFS 파일 시스템을 사용한다.