반응형
파일 시스템이란?
- 운영체제에서 파일을 저장하는 데에 쓰이는 수단이며, 운영체제가 파티션이나 디스크에 파일들을 저장하기 위한 방법들이고 자료 구조, 파일들이 디스크 상에서 구성되는 방식, 파일을 저장하는 데 사용되는 파티션이나 디스크를 가리킬 때 지칭하는 용어이기도 함.
- 파일 시스템은 운영체제마다 다르게 설계되어 있으며, 성능 또한 다름.
- 리눅스에서는 ext4 파일 시스템을 제일 많이 사용하며, 솔라리스의 경우엔 ufs 파일 시스템을 사용
- 디스크에 구성되는 파일시스템은 디텍터리, 서브디렉터리, 개별 파일들로 구성
- 디텍터리 트리의 최상위 레벨에는 루트 디렉터리가 있으며, '/'로 표시
- 파일 시스템의 개별 파일이 디스크에 저장되는 방법을 이해하려면 i-node와 슈퍼블록의 개념이 필요
i-node
- 리눅스에서 파일을 생성할 때, 먼저 파일의 데이터를 저장하기 위한 디스크 내의 공간을 확보하고 파일에 대한 기본 정보를 저장하기 위한 i-node(index node)라는 구조를 만듦.
- i-node에는 리눅스가 파일을 사용하기 위한 모든 정보를 저장
- 리눅스는 모든 i-node를 테이블에 보관하고 테이블 안에서 각각의 i-node는 i-number라고 지칭
- 모든 디렉터리는 파일의 이름과 i-number를 가지고 있고 이를 "디렉토리 안에 파일이 있다"라고 말함
i-node의 내용
정보 | 의미 |
모드 | 파일의 타입과 허가 마스크(mask) |
링크 카운트 | i-node 번호와 함께 entry를 가지고 있는 디렉터리 수 |
사용자ID | 파일의 소유자 ID |
그룹ID | 파일의 소유 그룹 |
크기 | 파일의 크기 |
액세스 시간 | 파일의 최근 액세스 시간 |
mod 시간 | 파일의 최근 갱신일 |
i-node 시간 | i-node 구조를 마지막으로 수정한 시간 |
블록목록 | 파일의 첫 번째 세그먼트를 가지고 있는 디스크 블록 번호 목록 |
간접목록 | 다른 블록들의 목록 |
슈퍼블록
- 디스크에 저장되는 가장 중요한 정보
- 디스크의 헤드와 실린더 등의 수, i-node 목록의 헤드, 자유 블록에 대한 정보를 가짐.
- 슈퍼블록은 모든 블록 그룹에 똑같은 복사본을 갖도록 시스템에서 자동으로 생성
- 파일 시스템이 손상되면 슈퍼블록들을 이용하여 복구 가능
파일의 종류
일반 파일
- 좁은 의미의 파일은 일반 사용자가 작성한 문서, 프로그램, 자료 등을 말함
- 작업 전용으로 대부분 쓰이며 vi 등의 문서편집기로 작성한 파일들
- ex : readme.txt, helloworld.c, work.hwp
디렉터리 파일
- 디렉터리 파일은 디렉터리에 포함된 다양한 파일들에 대한 위치, 크기, 생성한 시간 등의 정보를 지님
- 모든 디렉터리는 .(현재의 디렉터리라는 의미), ..(한 단계 위의 디렉터리라는 의미)라는 두 파일을 기본적으로 가지고 있음
- 모든 사용자는 홈 디렉터리라는 자신 만의 디렉터리를 가지고 있고 로그인을 하면 자동적으로 홈 디렉터리로 위치하게 됨
특수 파일
- 리눅스 시스템 은 주변장치로부터 데이터를 입출력하기 위해 /dev 디렉터리에 존재하는 입출력장치 파일들을 사용
- /dev 디렉터리 내의 입출력장치들을 모두 특수 파일이라 부름
- 특수 파일은 문자 특수 파일과 블록 특수 파일로 나뉘어짐
- 문자 특수 파일은 버퍼가 없는 장치로부터 한 번에 한 문자씩 입출력을 하기 위해 쓰임
- 블록 특수 파일은 일정한 크기의 묶음으로 자료를 입출력하는 장치에서 쓰이며, 버퍼 기술을 사용하여 자료 전송 효율을 높임
- 키보드와 모니터 등의 단말기는 문자 특수 파일을 이용, 하드 디스크는 문자 또는 블록 특수 파일을 이용
소켓(Socket)
- 두 호스트 컴퓨터 사이의 송수신 전달을 담당하는 응용프로그램 인터페이스
- 네트워크의 입출력 담당
- 소켓 생성 후 로컬호스트와 원격호스트의 주소를 설정하면 소켓을 사용할 수 있음
- 연결되지 않은 소켓으로 호스트끼리 통신하는 방법도 있음
- 연결 소켓은 연결이 성립된 두 지점 간의 자료를 전송해주나, 비연결 소켓은 매번 목표 지점을 정해주어야 전송이 가능
네임드 파이프(Named pipes)
- 프로세스 간 통신을 수행하기 위해 만들어진 파일
- 두 프로세스 간의 데이터를 중개
- 네임드 파이프에 데이터를 써서 보내고 동시에 데이터를 읽어서 받음
- 데이터는 선입선출 방식인 FIFO(First-In First-Out) 방식으로 다룸
심블릭 링크(Symbolic link)
- 링크(Link)라고 하면 심볼릭 링크(Symbolic link) 혹은 소프트 링크(Soft link)를 뜻함(ex : 윈도우의 바로가기 기능, 단축 아이콘)
- 실제 파일의 내용에는 아무런 영향없이 그대로 두고, 그 파일을 가리키도록 만드는 것
- 불필요한 파일 복사를 줄이고 파일 시스템을 보다 기능적으로 사용하기 위함이 주 목적
- 여러 디렉토리에서 동일한 라이브러리를 요구할 경우 또는 동일 파일을 여러 유저가 공동으로 관리, 사용해야 할 경우에도 사용
- 디렉터리도 파일처럼 링크가 가능
- 링크를 삭제하면 링크 만이 삭제되고 원본 파일은 그대로 존재
- 반대로 원본 파일을 삭제해도 링크 파일은 그대로 존재
하드 링크(Hard link)
- 원본을 복사한 사본을 생성
- 심볼릭 링크와 마찬가지로 링크, 원본으로 파일의 내용을 수정하면 원본과 링크된 파일이 모두 수정되어 항상 같은 내용을 유지
- 자원을 공유하되 데이터를 안전하게 관리할 목적으로 사용
파일 시스템의 구조
/
- 리눅스에서 가장 위쪽의 디렉터리는 루트 디렉터리(root directory)라 부름
- 모든 파일과 디렉터리는 루트 디렉터리로부터 포함되어 시작함
/bin
- binaries의 약자, 많은 필수 프로그램들(cp, ls, mv 등등) 및 실행 파일들이 모인 디렉터리
/dev
- 디바이스 드라이버들이 모인 디렉터리
- 디스크 드라이버, 모뎀, 메모리 등과 같은 시스템 디바이스나 자원들을 액세스하는 데에 사용(ex : /dev/mouse를 액세스함으로써 마우스로부터 입력되는 정보를 읽어옴)
- fd로 시작하는 파일들은 플로피 장치들이며, fd0은 첫 번째 플로피 디스크 드라이브, fd1은 두 번째 플로피 디스크 드라이브
- hd로 시작하는 파일들은 하드디스크를 액세스하며, /dev/hda는 첫 번째 하드디스크 전체, hda1은 첫 번째 하드디스크의 첫 번째 파티션을 의미
- sd로 시작하는 파일들은 SCSI 하드디스크 드라이브나 테이프 드라이브 등의 SCSI 장치들
- lp로 시작하는 디바이스 이름은 병렬 포트를 가리키며, /dev/lp1은 도스의 LPT1과 같음
- /dev/null은 블랙홀이란 별명을 가지고 있으며, 주로 출력 데이터를 버리는 데에 사용
- /dev/tty로 시작되는 디바이스 이름은 시스템에 있는 가상 콘솔(virtual console), 가상 콘솔은 한 화면이 여러 개의 가상 터미널을 갖는 것이며 각각의 터미널은 alt + F1, alt + F2 등으로 전환할 수 있음
/etc
- 시스템 설정 파일, 프로그램, 유틸리티 등 다양한 프로그램들이 존재
- 대부분의 파일들은 관리자가 사용
- 시스템 전반에 걸친 설정 파일들 및 초기 스크립트 파일들이 존재
- 시스템에 어떠한 문제가 발생하거나 시스템 전체 환경에 관한 설정을 바꾸기 위해서는 /etc 내의 파일을 조작해야함
/home
- 사용자들의 홈 디렉터리
- 리눅스 os가 처음 설치되면 아무 것도 들어있지 않음
/lib
- 공유 라이브러리 이미지를 포함
- 여러 프로그램들에게서 호출되는 코드들을 포함
- 공유될 수 있는 루틴들을 많은 사용자들과 공유할 수 있음
/proc
- 가상 파일 시스템
- 다양한 프로세서들에 관한 내용과 프로그램에 대한 정보 포함
- 이 디렉터리에서 볼 수 있는 것은 실제 드라이브에 저장되는 내용이 아닌, 메모리 상에 저장된 내용들
/tmp
- 특정 데이터를 임시 파일 안에 저장시켜야하는 프로그램들이 있을 때, 그러한 데이터들이 위치하는 디렉터리
/usr
- 응용 패키지들이 설치되어 있는 디렉터리
- 윈도우 운영체제의 Program Files 디렉터리와 같은 역할이며, 많은 서브디렉터리 포함(ex : X Window 설치시 /usr/X386 디렉터리에 위치)
/opt
- 리눅스에서 제공되지 않는 프로그램을 추가로 설치할 경우에 사용되는 디렉터리
/mnt
- 마운트 디렉터리(mount directory)라고도 불리며, 각종 입출력장치와 연결할 때 사용
- 마운트하지 않으면 빈 디렉터리로 존재하지만, 입출력장치를 마운트하면 해당 파일 시스템의 내용이 /mnt 디렉터리에 위치하게 됨
/var
- 로그 파일, 스풀 파일처럼 시스템 작동 중 변경되는 파일들이 위치
- 다른 시스템과 공유되지 않음
/lost+found
- 파일 시스템의 이상 유무를 진단하고 복구하는 프로그램인 fsck(file system check)에 의해서 사용되는 디렉터리
- 손상된 파일이나 디렉터리를 /lost+found 디렉터리에 연결시켜서 오류를 수정
/media
- 시디롬이나 플로피 디스크 혹은 USB 메모리 등이 임시로 마운트되는 디렉터리
/boot
- 리눅스 시스템 부팅에 관련한 모든 파일이 포함
/sbin
- standalone binary를 뜻하는 디렉터리명, 시스템 운영에 필요한 명령어들을 포함
- 슈퍼유저(root) 만이 사용할 수 있는 halt, shutdown 등의 명령어가 존재
반응형
'리눅스 > 메모' 카테고리의 다른 글
리눅스 로그인과 쉘($, %) 프롬프트 개념 (0) | 2020.01.05 |
---|