
파일은 데이터를 저장하고 관리하는 기본 단위입니다. 이는 컴퓨터 시스템에서 중요한 역할을 하며, 파일 시스템은 이러한 파일들을 체계적으로 관리하는 시스템입니다. 이 문서에서는 파일과 파일 시스템의 개념, 디렉토리 엔트리, 링크, 권한, 마운트, 파일 할당, 그리고 EXT 파일 시스템에 대해 자세히 설명합니다.
파일은 데이터를 담는 그릇입니다. 이는 연속적인 데이터를 유의미한 구분으로 나누기 위해 존재하며, 텍스트 파일, 이미지 파일, 비디오 파일 등 다양한 형태로 존재할 수 있습니다. 각 파일은 이름, 크기, 수정 날짜 등 여러 메타데이터를 포함합니다.
파일 시스템은 파일을 저장하고 관리하는 시스템입니다. 이는 파일의 메타데이터(이름, 확장자, 권한 등)를 이용해 파일을 관리하며, 이러한 메타데이터는 디렉토리에 저장됩니다. 디렉토리는 파일과 파일의 메타데이터를 담고 있는 파일로서, 트리 구조로 구성됩니다. 🌳
디렉토리 엔트리는 디렉토리를 표현하는 자료구조입니다. 각 디렉토리 엔트리는 파일의 이름과 inode를 가리키는 포인터로 구성됩니다. inode는 파일 이름을 제외한 파일 메타데이터를 포함하며, 파일의 실제 데이터를 가리킵니다.
링크는 파일 시스템에서 파일이나 디렉토리에 대한 참조를 만드는 방법입니다. 링크에는 소프트 링크(심볼릭 링크)와 하드 링크 두 가지가 있습니다.
소프트 링크는 파일의 포인터(경로)만 링크합니다. 이는 파일의 경로를 참조하며, 원본 파일이 삭제되면 소프트 링크는 깨집니다. 소프트 링크는 디렉토리를 링크할 수 있습니다.
하드 링크는 파일의 원본 내용을 다른 이름(경로)로 만듭니다. 이는 파일의 inode 번호를 공유하므로 원본 파일이 삭제되더라도 하드 링크는 계속 존재합니다. 하드 링크는 디렉토리를 링크할 수 없습니다.
디렉토리는 트리 구조로 구성됩니다. 링크를 사용하면 서로 다른 말단 노드에서 파일을 참조할 수 있지만, 트리 구조는 깨지지 않습니다. 소프트 링크는 파일의 경로를 참조하기 때문에 트리 구조를 변경하지 않습니다. 하드 링크는 디렉토리를 링크할 수 없으므로 순환 참조 문제를 방지합니다.
파일 시스템에서 파일과 디렉토리의 접근 권한은 중요합니다. 각 파일과 디렉토리는 소유자(user), 그룹(group), 그리고 기타 사용자(others)에게 서로 다른 권한을 설정할 수 있습니다.
권한은 r(읽기), w(쓰기), x(실행)로 나타내며, chmod 명령어를 통해 수정할 수 있습니다.
chmod u+rwx,g+rx,o+r file.txt
위 명령어는 파일 소유자에게 읽기, 쓰기, 실행 권한을, 그룹 사용자에게 읽기, 실행 권한을, 기타 사용자에게 읽기 권한을 부여합니다.
마운트는 HDD, USB 등의 2차 저장장치를 로컬 파일 시스템에 연결하는 과정입니다. 각각의 장치는 자체 루트를 가진 파일 시스템이지만, 마운트를 통해 하나의 파일 시스템 안에 있는 것처럼 관리할 수 있습니다. 예를 들어, 외장 하드를 /mnt/external 디렉토리에 마운트할 수 있습니다.
mount /dev/sdb1 /mnt/external
위 명령어는 /dev/sdb1 장치를 /mnt/external 디렉토리에 마운트합니다.
디스크에 파일을 저장하기 위해 공간을 관리하는 방법에는 연속 할당, 연결 할당, 색인 할당 등이 있습니다. 리눅스에서는 주로 색인 할당 방식을 사용합니다.

연속 할당(Contiguous Allocation)
연속 할당은 파일의 모든 블록이 디스크 상에서 연속된 위치에 저장되는 방식입니다. 이는 빠른 접근 속도를 제공하지만, 파일 크기가 변경될 때 조각화(fragmentation)가 발생할 수 있습니다.
연결 할당(Linked Allocation)
연결 할당은 파일의 각 블록이 다음 블록을 가리키는 포인터를 포함하는 방식입니다. 이는 파일 크기 변경에 유연하지만, 블록을 순차적으로 읽어야 하기 때문에 접근 속도가 느릴 수 있습니다.
색인 할당(Index Allocation)
색인 할당은 파일의 모든 블록 주소를 색인 블록에 저장하는 방식입니다. 이는 연속 할당의 조각화 문제와 연결 할당의 느린 접근 속도를 해결할 수 있습니다.
EXT3와 EXT4 파일 시스템은 저널링 기능을 제공합니다.
저널링은 파일 시스템의 메타데이터를 기록하여 시스템 충돌이나 비정상적인 종료 후 데이터를 복구할 수 있게 합니다. 저널링은 데이터를 캐시에 넣은 뒤, 원본과 캐시의 상태가 달라질 수 있기 때문에 업데이트 상태를 관리합니다.
EXT4는 EXT3보다 향상된 기능을 제공합니다. 이는 더 큰 파일과 볼륨을 지원하며, 효율적인 공간 할당과 빠른 파일 시스템 검사를 제공합니다.