파일 시스템 기본 개념 & 구조

2016. 3. 9. 17:28리눅스

About File System


 

 

 

 

목차


  정의

 ♦ 역할

 ♦ 종류

 ♦ 구조

 ♦ 점검 & 복구

   


(1) 파일시스템는 무엇인가?

 

´  저장 장치에 미리 데이터를 저장할 방법을 정의하여 쉽고 빠르게 데이터를 찾을 수 있도록 도와주는 시스템.

컴퓨터에 데이터를 기록하기 위해서는 미리 하드디스크에 데이터를 읽고쓰고찾기 위한 준비를 해두어야 한다.

파일 시스템은 그 준비의 규칙을 정리해 놓은 것으로서 파일에 이름을 붙이고저장이나 검색을 위해 파일을 어디

  위치시킬 것인지를 나타내는 체계를 의미한다.

 

´ 간단히 말하면사용자의 요청에 따라 디스크와 같은 보조기억장치에 파일의 내용을 저장하고 저장된 파일의 내용을 

                         다시 사용할 수 있도록 사용자와 보조기억장치의 인터페이스 기능을 하는 것.

 

리눅스 : ext2 , ext3 , ext4

윈도우 : FAT16, FAT32, NTFS

 

 개발된 목적

1. HDD와 메인 메모리 속도차 줄이기

  - HDD에 저장된 데이터들은 HDD에서 실행되는 것이 아니라 메인 메모리에 Load 되어 사용된다.

  - 파일 시스템이 HDD에 저장된 데이터들의 목차가 되어 데이터를 실행하려고 클릭 했을 때 메인 메모리에 빠르게 

     load 될 수 있도록 역할을 한다.

2. 파일 관리 용이

3. HDD의 막대한 용량을 효율적으로 사용

 

 

 

 

(2) 파일시스템의 역할

 

 파일관리 : 파일 저장참조공유보호 메커니즘 제공

♦ 보조 저장소 관리 : 저장 공간 할당

♦ 파일 무결성(intergrity) 메커니즘 : 파일이 의도한 정보만 포함하고 있음을 의미

♦ 접근 방법 (access method) : 저장된 데이터에 접근할 수 있는 방법 제공

 

 

 

 

(3) 종류

 

 eq \o\ac(,1)1 디스크 파일 시스템


자료 기억 장치특히 컴퓨터에 연결된 디스크 드라이브에 파일을 저장하도록 설계된 시스템.

  - ext3 : ext2 + 저널링파일시스템

  - ext4 : 용량이 커지고 호환성이 좋음.

 

   * 저널링파일시스템 (Journaling file system)

 - 기계가 데이터를 쓰고 있는 중에 비정상적으로 종료가 되었을 때파일시스템이 손상 될 수 있는데이 손상을 복구 할 수 있는 파일시스템이다.

저널링을 위한 특별한 공간을 마련하고 거기에 저널링에 필요한 데이터를 저장한다.

 

 eq \o\ac(,2)2 데이터베이스 파일 시스템


최근에 등장한 새로운 개념의 파일 시스템

파일을 계층 구조로 관리하지 않고 파일의 형식주제만든이내용과 같은 여러 특성에 따라 시스템에서 자동으로 분류하여 관리.

쿼리 언어나 자연어 등으로 파일을 빠르게 찾을 수 있다.

 

* VFS (Virtual File System)

  목적 : 클라이언트 응용 프로그램이 여러 파일 시스템에 같은 방법으로 접근할 수 있게 하는 것.

      커널 실제 파일 시스템과의 인터페이스 규격을 정의

       - 그러므로  규격에 따라 간단히 새로운 파일 시스템을 커널에 추가할  있다.

 - VFS를 구현할 때는 주로 객체지향방식의 오버로딩 개념을 적용한다읽기/쓰기와 같은 시스템 호출 발생시

    해당 파일이 속한 파일 시스템에 맞는 동작이 수행될 수 있도록 맵핑해주는 것이다.

 

 eq \o\ac(,3)3 특수용도의 가상 파일 시스템


 swap : 스왑 영역 관리하가 위한 시스템

(데이터가 넘쳐 RAM에 여유가 없을 경우임시적으로 넘치는 데이터를 저장하는 목적의 swap 파티션에 사용되는 파일 시스템)

≫ tmpfs : 임시 파일을 저장하기 위한 파일 시스템 ex ) tmp

≫ proc : 커널의 현재 상태를 나타내는 파일

≫ ramfs : 램디스크를 지원

≫ roots : 시스템 초기화와 관리에 필요한 내용 관리.

 

 

 eq \o\ac(,4)4 트랜잭션 기반 파일 시스템


파일에 일어난 이벤트나 트랜잭션을 기록하는 시스템

모든 트랜잭션은 기록으로 남아 어디서 무슨 일이 언제 수행되었는지가 기록된다.

  - 시스템의 오류를 막기 위해 설계되었으며느리지만 안전하다고 볼 수 있다.

 

<예시>

상황 : 은행 계좌에서 돈을 이체하는 경우.

당신이 온라인으로 돈을 이체할 때 은행 컴퓨터는 상대방의 은행 컴퓨터에 "전송명령을 보내고 동시에 당신의 계좌에서 같은 금액을 줄일 것이다그런데 이때 시스템에 우연히 사고가 일어나 전송 명령이 보내지지 않았다면 상대방의 계좌에 돈은 입금되지 않았는데 당신의 계좌에서는 돈이 사라지는 일이 일어날 수 있다트랜잭션 기반 시스템은 이렇게 논리적으로 동시에 수행되어야 하는 작업들을 하나의 "트랜잭션"으로 묶어 만약의 사고가 일어났을 때 양쪽에서 트랜잭션을 다시 수행하여 오류를 막는다.

 

 

 


(4) 구조

 

- ext2 파일 시스템의 구조 : 부트섹터(Boot Sector) + 블록 그룹(Block Group)

    ´ 부트섹터(Boot Sector) – 디스크의 다른 부분에 저장되는 부팅 프로그램을 담을 수 있는

하드디스크 섹터

    ´ 블록 : ext2 파일시스템에서 기본적으로 데이터를 저장하는 단위.

             한번에 I/O과정에서 읽어 들이는 단위가 되기도 한다크기(1KB ~ 4KB)

 

´ 블록 그룹 : 블록들이 모인 것.

ext2 파일 시스템에서는 블록들을 여러 개의 그룹으로 나누어 파일 시스템의

정보 및 데이터를 저장한다.

 

 


<v:f eqn="if lineDrawn pixelLineWidth 0"> <v:f eqn="sum @0 1 0"> <v:f eqn="sum 0 0 @1"> <v:f eqn="prod @2 1 2"> <v:f eqn="prod @3 21600 pixelWidth"> <v:f eqn="prod @3 21600 pixelHeight"> <v:f eqn="sum @0 0 1"> <v:f eqn="prod @6 1 2"> <v:f eqn="prod @7 21600 pixelWidth"> <v:f eqn="sum @8 21600 0"> <v:f eqn="prod @7 21600 pixelHeight"> <v:f eqn="sum @10 21600 0"> </v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f> <o:lock v:ext="edit" aspectratio="t"> </o:lock> <o:lock v:ext="edit" aspectratio="f"> </o:lock>

 

 
 
 

 

 

´ 슈퍼블록 : 파일 시스템의 크기와 환경 설정 값들을 저장.

´ 그룹 디스크립터 테이블 : 그룹 디스크립터라는 파일 시스템의 블록 그룹에 대한 정보를 가지고 있다.

 

위의 두 곳(슈퍼블록그룹 디스크립터 테이블)에는 파일 시스템의 전체적인 정보가 저장되어있다.

그래서 주요 데이터가 손상 될 경우를 대비해 슈퍼 블록과 그룹 디스크립터 테이블의 사본이 모든 불록 그룹에 걸쳐 곳곳에 저장된다만약슈퍼 블록에 문제가 있다는 것을 감지하면 다른 블록 그룹에 있는 슈퍼 블록의 복사본을 이용할 수 있다.

 

사실 정상 동작하는 경우 커널은 0번 블록 그룹의 정보만을 사용하고 나머지 블록 그룹에 속한 슈퍼 블록과 그룹 디스크립터 테이블은 업데이트 되지 않는다.

      * 실질적으로 나머지 블록 그룹들의 정보가 이용되거나 업데이트될 떄는 /sbin/e2fsck 등의 프로그램이 파일시스템의 일관성 검사 수행 시 블록 그룹 0에 저장한 슈퍼 블록과 그룹 디스크립터 테이블을 나머지 블록 그룹에 복사한다.

 

    ´ 블록 비트맵 : 블록의 사용현황을 2진수로 표현 ( 0 : 사용 안 함 / 1 : 사용 중 )

    ´ 아이노드 비트맵 아이노드 사용현황을 2진수로 표현

    ´ 아이노드 테이블 : inode block num 정보를 가지고 있다.

    ´ 디렉토리 : 파일의 목록을 저장하기 위한 특수한 형태의 파일. (=디렉토리 파일)

                 a 파일명 / inode block num 으로 구성.

    ´ 데이터 블록 : 파일 또는 디렉토리의 내용이 저장.

 

≫ Inode / Data Block 자세히 알아보기

 

 


 Inode

파일 시스템에서 사용하는 자료구조

정규 파일디렉토리 등 파일 시스템에 관한 정보를 가지고 있다.

한 개의 inode  = 한 개의 file

a 파일시스템 내의 파일들은 고유한 아이노드 숫자를 통해 식별 가능.

파일 명타입소유자사용권한 등 파일 속성에 관한 기록

파일 데이터 블록포인터 – 실제 데이터에 접근할 수 있도록 하는 역할

리눅스에서 파일이나 디렉토리를 삭제하는 것은 물리적으로 데이터를 지우는 것이 아니라 이 inode와 

  물리적 데이터 간의 연결고리를 끊어줌으로써 삭제된 것처럼 보이게 하는 것이다.

 

 

 


 

   ´ 계층 구조

 

     - 리눅스의 파일 시스템에는 많은 수의 디렉터리와 파일이 존재하고 하나의 디렉터리 안에는 또 다른 디렉터리나 파일이        존재

 

     c 트리(tree)모양의 계층적인 구조


 

 

 

<o:lock v:ext="edit" grouping="t"> <w:bordertop type="single" width="8"> <w:borderleft type="single" width="8"><w:borderbottom type="single" width="8"> <w:borderright type="single" width="8"> </w:borderright></w:borderbottom></w:borderleft></w:bordertop></o:lock>

 

 

´ 리눅스 표준디렉토리


 

 

1) bin user binaries : 사용자가 실행시킬 수 있는 명령어들이 들어있다.

2) etc : 시스템 환경설정과 관련된 파일을 포함하는 디렉토리

3) home : 사용자의 홈 디렉토리와 관련한 정보를 포함하는 디렉토리

                - 모든 사용자에게는 home 디렉토리가 있으며 사용자의 파일을 만들 수 있다.

                - 개별 설정 사항들이 보호된다. ex) . profile(숨김파일로 보관)

4) tmp : 임시파일로 사용되는 디렉토리

5) var : 다양한 유틸리티에서 사용하는 로그파일이나 사용자 mail을 관리하는 파일을 포함하는 관리 디렉토리,

           시스템의 동작에 필요한 작업 공간.

6) dev : 각종 장치에 입출력하기 위해 사용되는 장치 파일이 들어있는 디렉토리

7) usr : 시스템 파일의 주요 기능이 들어있는 디렉토리,

8) lib : 프로그램 개발시 사용되는 라이브러리가 포함되어 있다.

9) sbin admin binaries : 시스템 관리에 필요한 명령들이 들어있다.

 root 관리자만 이 명령들을 수행할 수 있음.

 

 

 

 

(5) 점검 및 복구

 

´ ext2파일시스템을 사용하면서 비정상적인 종료시에는 재부팅과정을 거치면서 파일시스템을 체크하도록 되어 있다.

    체크하면서 아무런 문제가 없으면 OK 사인이 떨어지지만 문제가 발생하는 경우에는 root패스워드를 입력하라는 

    화면이 나타나면서 부팅을 멈추게 된다 .

´ ext3파일시스템은 자동으로 복구가 되도록 되어있지만 ext2파일시스템은 상황에 따라 관리자가 파일시스템인 

      복구시에 사용하는 e2fsck명령으로 복구해야 한다.


   ´ 파일시스템손상과 복구


     1) 파일시스템의 복구가 쉬운 경우이 경우에 /etc/fstab파일에 check가 설정되어 있으면 자동으로 복구시킨다.

      참조되지 않은 inode

      납득할 수 없이 큰 링크의 갯수

      블록맵에 기록되지 않거나 사용되지 않는 데이터블록

      파일에서 사용하고 있지만 비어있다고 기록된 데이터블록

      슈퍼블록에서 부정확한 요약정보

    

 2) 파일시스템의 복구가 어려운 경우 : e2fsck같은 명령어를 이용하여 수동복구해야 한다.

      하나이상의 파일이 요구되는 블록

      파일시스템의 범위밖에서 요구하는 블록

      너무 작은 링크의 개수

      셀수없는 블록

      할당되지 않는 inode를 가리키는 디렉토리

 

      다양한 포맷 에러


----------------------------------------------------------------------------------------------