파일시스템 개요
본문 바로가기
File System

파일시스템 개요

by bsp-martin 2021. 11. 15.

파일시스템에는 클러스터, 파일과 디렉토리, 그리고 나머지 부가요소로 나뉩니다.

 

1. 클러스터

 

클러스터는 OS 가 다루는 Storage(저장소)에 접근하여 read/write 의 기본단위입니다.

클러스터 사이즈는 파일시스템에 따라 고정되어있거나 생성시 결정될수도 있습니다.

클러스터 사이즈를 크게 잡으면 전체 파일시스템의 포멧시간이 줄어들고 인덱싱이 빨라지며 단순하게 관리가 쉬워질것입니다. 하지만 낭비되는 영역도 존재하게됩니다.

클러스터 사이즈를 작게 잡으면 전체 파일시스템의 포멧시간이 늘어나고 인덱싱이 상대적으로 느려지며 세세하게 관리가 가능합니다. 또한 낭비되는 영역이 상대적으로 작을것입니다.

 

하나의 파일시스템을 예를 들어보면

- 전체 Storage 사이즈를 1GB 로 가정합니다.

 

* (클러스터가 큰     예시) 클러스터 사이즈를 32K 로 잡았다고 가정해봅시다.

1G = 2의 30 제곱입니다.

32K 는 2의 16 제곱입니다.

즉 32K 를 사용하게되면 클러스터들의 개수는 2의 30-16승인 2^14 입니다. 이는 16K 갯수가 됩니다.

포멧을 진행하면 1G 의 공간을 32K 클러스터 * 16K 갯수로 나뉠수있습니다.

-> (장점) 관리하는 인덱스는 16K 가 되고 인덱싱은 worst case 로 16K 번 수행하면 되겠습니다.

-> (단점) 4K 를 사용하는 파일을 저장하려면 클러스터 최소단위인 32K 공간이 사용됩니다, 32K-4K 인 28K 공간이 낭비되었습니다.

클러스터사이즈를 4K 설정시 사용되는 공간과 낭비되는 공간

* (클러스터가 작은  예시) 클러스터 사이즈를 1K 로 잡았다고 가정해봅시다.

1G = 2의 30 제곱

1K 는 2의 10 제곱입니다. 

즉 1K 를 사용하게되면 클러스터들의 개수는 2의 30-10승인 2^20 입니다. 이는 1M 갯수가 됩니다.

포멧을 진행하면 1G 의 공간을 1K 클러스터 * 1M 갯수로 나뉠수있습니다.

-> (단점) 관리하는 인덱스는 1M 가 되고 인덱싱은 worst case 로 1M 번 수행해야합니다. (위보다 32배 더 수행해야함)

-> (장점) 4K 를 사용하는 파일을 저장하려면 클러스터 4개를 사용하면됨, 공간낭비가 없습니다.

 

2. 파일

파일은 메타데이터와 데이터파일로 나뉜다.

데이터파일은 실제 파일이 쓰여져 있는곳이고 메타 데이터는 이런 파일의 이름과 파일속성(읽기/쓰기/실행) 생성일자 그리고 데이터의 위치를 기록하고있다.

 

 

3. 디렉토리

 

디렉토리는 파일의 구조화 계층화를 가능하게 합니다.

파일이 연속적인 데이터들에 대한 순서적 기록이라면

디렉토리는 이런 파일들을 그룹화가 가능하고 상/하 계층화 하여 보다 입체적 관리가 가능토록 도와줍니다.

 

 

정리하면 다음과 같습니다.

 

.클러스터:

- OS가 Storage 에 read/write 의 기본단위.

- 파일시스템에 따라 크기가 고정/가변(생성시)

- 클러스터가 4KB 라 가정하면, 1KB 를 쓸때 4096에 쓰게됨으로 나머지 부분이 낭비됨

.파일

1. 메타데이터

├── 파일명

├── 읽기속성

├── 날짜

└── 데이터의 위치

2. 파일데이터

└── 파일의 데이터영역

.디렉토리

1. 정의

파일을 계층화, 그룹화 가능

상,하위 개념의 디렉토리와 이를 링크로 제공하는 파일시스템도 있다.

파일과 비슷한 구조, 속성정보를 따로 만들어 놓고 이를통해 구분함

디렉토리의 데이터영역은 하위에 존재하는 파일리스트나 디렉토리가 존재

2. 구조

(1) Directory Meta Data

├── 파일명

├── 읽기속성

├── 날짜

└── 데이터의 위치

(2) Directory Data

├── Directory1

├── ...

├── DirectoryN

├── File1

├── ...

└── FileN

.부가요소

1. 소유권

- 개인용/서버용 컴퓨터간은 각 파일들의 접근에 대한 제한을 관리할수있음

2. 동기화

- 하나의 파일에 여러 Process 접근(멀티태스킹)시 주의되는 요소

- Lock 이용(세마포어->스핀락), 파일시스템 제작의 경우 각별히 신경써서 구현해야함

3. 일관성 체크와 저널링

(1) 배경: 얘기치 못한상황에 대해서...파일을쓸때 메타데이터와 파일데이터를 쓰는 순서를 고려

(2) 메타데이터 쓰고 파일데이터 쓰는 경우

- 파일데이터 쓰는도중 시스템 중단되면

- 파일리스트를 출력시는 정상적으로 보이지만,

- 막상 데이터를 읽어보면 쓰레기 데이터가 들어가 있을수있음

(3) 파일데이터 쓰고 메타데이터 쓰는 경우

- 파일데이터는 쓰는 도중 시스템이 멈추면

- 메타데이터는 나중에 쓰여짐으로 파일 리스트에 나오지 않으며 해당 파일데이터가 쓰여진곳은 어차피 비어진 영역임

- 나중에 다른 데이터가 쓰여져도 문제 없음

(4) chkdsk.exe (FAT,NTFS), e2fsck(Ext2)

- 프로그램들은 파일시스템에 존재하는 모든 메타 데이터를 검색하여 문제가 있다고 판단되는 부분을 수정함

- 저널링기능소개(GB 파일시스템시 chkfs 시간이 걸림으로인함)

(5) 저널링(최근 File System에서 모두 사용됨)

- 데이터베이스서 일관성 체크를 위해 사용되는 방법을 파일시스템에 적용한 것

- 파일을 쓸때 로그를 기록(메타,파일) 문제가 생길경우 해당로그를 참조

- 업데이트를 취소할수있고, 파일시스템에 적용 완료(commit) 할수도 있다.

- 큰장점은 업데이트 로그를 기록하고 있기 때문에 일관성 체크를 위해 파일시스템 전 영역을 검색할 필요없음

4. 보안

(1) 배경: 파일소유권, 실행권한은 OS를 통한것이지 물리적 접근을 막을수는 없음

(2) 암호화 기법 도입

- 서버급 OS 에서 암호화 기능 기본적으로 제공

- 최근에는 관련툴이 다양하게 나와있음

- 가상파일시스템과 파일시스템 자체에도 적용가능

- 메타데이터 암호화와 파일데이터 암호화도 압축을통한 암호화를 진행

- 디렉토리및 파일등을 선택 적용 가능

반응형

댓글