본문 바로가기

Programming/Linux_Kernel

File System의 개요

원문 : http://cafe.naver.com/ghson/164


파일시스템을 이해하는데 기초 자료로서 너무나 설명이 잘 되어 있다.

자료 보존 차원에서 옮겨 왔다.






파일시스템은 '6.device file의 개요'에서 설명한 바와 같이 섹터로 나누어진 물리적인 디스크를 운영체제가 사용하기 좋게 블럭단위로 나누어 각 블럭에 주소를 부여함으로써 운영체제가 디스크를 관리할 수 있게끔 디스크에 지도를 그리는 작업이라 할 수 있다.

 

1. 파일시스템의 구조

   파일시스템은 루트디스크를 시작으로 디렉토리 트리나 계층구조로 이루어지며, 각 파일시스템은 물리적으로 같은 디스크에

   존재할 수도 있고 다른 디스크에 따로 존재할 수 있다. 또한 각 파일시스템안에는 크게 User Data와 Meta Data로 구분되는

   구조로 관리되며, User Data에는 실제로 파일에 저장되어 있는 일반적인 데이터를 저장하고, Meta Data에는 파일시스템의

   구조 정보와 관련된 정보가 저장된다.

 

   그림 15.1은 파일시스템의 구조의 예를 나타낸 것으로 /(루트) 파일시스템 밑으로 여러 개의 파일시스템이 계층 구조로 존재

   하고 있는 것을 알 수 있다. 각 파일시스템은 각각 User Data와 Meta Data를 갖고 있으며, 그림 15.1은 home라는 파일시스템

   의 구조를 예로 보여주고 있다.

 

   이 파일시스템의 구조를 보고 home 디렉토리의 구조와 혼동하는 일이 없기를 바란다. 각 파일시스템에 Meta Data와 User

   Data가 존재한다고 해서 그림과 같이 home 밑에 Meta Data와 User Data 디렉토리가 존재하는 것이 아니라 Meta Data와 User

   Data는 각 파일시스템에 내부적으로 구조화 되어 있는 것이다.

 

   예를 들어 /home/ghson/a.txt 이라는 파일이 존재한다고 가정하면, home라는 파일 스템의 Meta Data에는 /ghson/a.txt의

   크기,위치,권한 등등 a.txt라는 파일을 관리하기 위한 정보가 저장되고 User Data 에는 a.txt파일에 User가 직접 기록한 Data가

   저장되어 있는 것이다. 다시 말해 User가 home라는 파일시스템에 파일이나 디렉토리를 만들어 사용할 때, User는 home 밑에

   /ghson/a.txt라는 파일을 만들어 사용할 뿐이고, 운영체제는 User가 이렇게 사용할 수 있도록 파일시스템 내에 내부적으로

   Meta Data와 User Data를 구분하여 관리하는 것이다.  

 





<그림 15.1> 파일시스템의 구조

 

   파일시스템은 각각 Meta Data와 User Data를 갖는다. User Data는 말 그대로 실제 파일에 저장되어 있는 내용이며, Meta Data는 이

   User Data를 관리하기 위해 필요한 정보가 저장되어 있는 Data를 말한다. 표 15.1은 각 Meta Data에 들어있는 정보를 나타낸다.

 

Meta Data

Description

Super Block

 

파일시스템의 첫머리 부근에 있는 8KB 크기의 디스크 블록으로 파일시스템에 대한 일반적인 정보

를 가지는 영역으로, 파일 시스템의 타입(type), 크기(size), 상태(status), 그 밖의 다른 파일 시스

의 metadata structure에 대한 포인터 등의 정보를 포함한다.

 

이러한 수퍼블록은 중요한 정보를 가지고 있기 때문에 모든 파일 시스템이 여러 개의 복사본을

가지고 있으며 sync 명령이 수행될 때마다 새롭게 갱신된다.

 

Inode

 

inode는 모든 파일의 속성에 대한 정보를 가지는 영역으로, 파일에 관한 이름정보를 제외한 파일의 타입(type), 권한 (permission), 소유자(owner), 그룹(group), 크기(size)등의 정보와 파일과 관련된 데이터 블록의 포인터를 가지고 있다

 

각각의 inode는 파일시스템 내에서 유일한 inode number가 있어 그 값으로 인식을 하고

'ls -i filename' 명령으로 inode 값을 볼 수 있다.

 

Directories

 

사용자나 어플리케이션은 파일을 inode값이 아닌 이름으로 참조 하게 되는데 디렉토리는 이러한 파일 이름과 inode number 사이의 mapping 정보를 가지고 있다.

 

<표 15.1> 각 Meta Data의 정보

 

2. 파일시스템의 종류

   HP-UX는 현재 기본 파일시스템으로 JFS를 사용하고 있으며, 필요 시 HP-UX에서 지원 가능한 파일시스템으로도 사용이 가능하다.

   표 15.2는 HP-UX에서 지원 가능한 파일시스템과 그 특징을 간략하게 설명하고 있다.

 

파일시스템의 종류

Description

HFS

 

HFS(High Performance File System)의 약자로 말 그대로 고성능 파일시스템이라는 뜻으로,

HFS 파일시스템은 HP-UX에서 사용하는 보통의 UNIX File System(UFS)으로서 구 버전의 HP-

UX에서 일반적으로 사용하던 파일 시스템이다.

 

현재는 구 버전의 HP-UX와의 호환성이 필요한 경우 사용하며, HP-UX의 커널 이미지를 저장하는 파일시스템(/stand)으로만 사용한다.

 

JFS

 

JFS(Journaled File System)의 약자로 Veritas File System (VxFS)로 알려져 있는 파일시스템의

특징 중 신속한 파일시스템의 복구 및 온라인 백업, 온라인 리사이징, 온라인 재구성 정도 등의

제한된 기능만을 가지고 있다.

 

Online JFS는 Base JFS와 달리 별도로 구입해야 하지만 다음과 같은 기능을 제공하며, 부트 할 수 있는 파일시스템에는 사용할 수 없다

 - online defragmentation and reorganization
 - online expantion and contraction of file system size
 - online backup
 

NFS

 

NFS(Network File System)의 약자이며 클라이언트/ 서버 환경에서 다수의 시스템이 동일한 파

일들을 공유할 수 있도록 하는 파일 시스템이다. 원격 시스템의 파일시스템을 마치 자신의 파

 시스템인 것처럼 사용하는 기술로 네트워크상에 존재하는 어떤 서버든지 서버의 디렉토리를

export 하는 것으로 클라이언트가 사용이 가능하다
 

CDFS

 

CDFS(CD-ROM File System)의 약자로 CD-ROM에 담겨있는 데이터를 access하기 위한 파일

시스템이다. CD-ROM 파일 시스템은 읽기전용이므로 CD에서 읽을 수는 있으나 쓸 수는  없다.

LOFS

 

LOFS(Loopback File System)의 약자로 기존디렉토리를 다른 디렉토리로 마운트하는 경우 사용할 수 있다. 여러 곳에서 같은 파일 계층구조를 나타낼 수 있으며 개발환경의 사본을 만들 때 유용하다.

 

<표 15.2> 파일시스템의 종류