관리 메뉴

c0smicb0y

Linux File System 본문

프로그래밍/Linux

Linux File System

2015. 9. 7. 00:16

파일시스템은 운영체제에서 파일을 쉽게 접근할 수 있도록 저장 또는 조직하는 체제를 가리키는 말이다.


운영체제마다 다르게 설계되어 있으며, 성능 또한 다르다.

리눅스는 ext4라는 파일시스템을 가장 많이 사용하고 윈도우는 NTFS, 솔라리스는 ufs라는 파일시스템을 사용하고 있다.


리눅스에서의 파일시스템을 이해하기 위해서는 i-node와 슈퍼블록에 대해 알아야한다.


i-node

리눅스는 파일을 생성할 때 두가지 과정을 거친다. 파일을 저장하기 위한 공간을 디스크에서 확보하고, 파일에 대한 정보를 저장하기 위해 i-node라는 구조를 만든다. 파일들은 각자의 i-node를 가지고 있으며 리눅스는 모든 i-node를 table에 저장한다.


[표 1] i-node의 내용

정보

 의미

 파일 모드

 파일과 관계된 접근과 실행 권한을 저장하는 16비트 플래그

 링크 수

 i-node 번호와 함께 entry를 가지고 있는 디렉토리 수

 소유자 ID

 파일의 소유자

 그룹 ID

 파일과 관계된 그룹 소유자

 파일 크기

 파일의 바이트 수

 파일 주소

 주소 정보

 액세스 시간

 마지막으로 파일에 접근한 시각

 mod 시간

 마지막으로 파일을 수정한 시각

 i-node 시간

 마지막으로 i-node 구조를 수정한 시각

 블록목록

 파일의 첫 번째 세그먼트를 가지고 있는 디스크 블록의 번호 목록

 간접목록

 다른 블록들의 목록


슈퍼블록

파일 시스템 자신에 대한 정보이다. 디스크 헤드와 실린더의 수, i-node 목록의 헤드 등에 대한 정보를 가지고 있다. 리눅스의 버전에 의존적이다.


파일의 종류

1. 일반 파일

대부분의 사용자들이 작업을 할 때 이용하는 것. 문서, 프로그램, 자료 등등

2. 디렉토리 파일

디렉토리에 포함된 다양한 파일들에 대한 위치, 크기, 생성한 시간 등의 정보를 가지고 있음.

.는 현재의 디렉토리

..는 부모 디렉토리를 뜻함

3. 특수 파일

리눅스에서는 주변장치에서 입력을 받거나 출력하려면 /dev 디렉토리에 존재하는 입출력파장치 파일들을 이용한다. 이러한 /dev 디렉토리내의 입출력장치 파일들을 특수 파일이라고 한다.

특수 파일은 문자 특수 파일과 블록 특수 파일로 나눌 수 있다.

문자 특수 파일: 버퍼가 없는 장치로 부터 한 번에 한 문자씩 입출력하는 것(키보드, 모니터, 마우스 등)

블록 특수 파일: 전송 효율을 높이기 위해 일정한 크기의 버퍼로 데이터를 묶어서 전송하는 것 (하드디스크 등)

4. 소켓

두 호스트 컴퓨터 사이의 전달을 담당하는 API. 네트워크 입출력을 담당한다.

5. 네임드 파이프

프로세스 간 통신을 수행하기 위해서 만들어진 파일

6. 심볼릭 링크

윈도우에서 바로가기 같은 개념. 실제 파일의 내용은 그대로 둔 채 그 파일을 가리키는 파일. 링크를 삭제할 때는 링크만 삭제 되고 원본 파일은 그대로 존재. 원본 파일을 삭제할 때도 원본 파일만 삭제되고 링크는 삭제되지 않음.

7. 하드 링크

심볼릭 링크가 원본에 대한 정보만을 가지고 있는 데 비해 하드링크는 원본을 복사한 사본을 생성함. 심볼릭 링크와 마찬가지로 파일을 수정하면 원본과 하드링크 된 파일이 모두 수정되어 같아짐.


리눅스 파일 시스템 구조



'프로그래밍 > Linux' 카테고리의 다른 글

doxygen 사용법  (9) 2015.12.19
Qt5 Install on Ubuntu  (0) 2015.11.18
GDB TUI  (0) 2015.11.18
Linux Kernel  (0) 2015.10.29
API & ABI  (0) 2015.09.05
Comments