파일 시스템

DanChu 🌟·2022년 8월 20일
0

파일 시스템의 기능과 목적

파일이 제2저장장치에 보관될 때 사용자가 직접 개입하면 다른 사용자의 파일을 훼손하거나 저장장치 내부에 문제를 일으킬 수 있다. 이를 막기 위해 운영체제는 파일 관리자를 두고 저장장치의 전체를 관리하게 하는데, 이를 파일 시스템이라 한다.

파일 시스템에서 파일 관리자는 사용자의 요청에 따라 파일 테이블을 사용하여 파일을 저장하거나 내용을 읽어온다. 사용자의 방해없이 파일을 빠르게 읽고, 쓰고, 삭제하는 등의 기능을 수행하기 위한 목적을 가진 파일 시스템인만큼 사용자 영역이 아닌 커널 영역에서 동작한다. 사용자가 특정 파일에 접근하려면 파일 관리자로부터 파일 접근 권한인 파일 디스크립터 file discriptor 를 획득해야만 한다.

파일 시스템은 계층적 디렉토리 구조를 가지며, 파티션별로 하나씩 둘 수 있다. 이 시스템을 통해 HDD와 메인 메모리 속도차를 줄일 수 있으며 HDD의 막대한 용량을 효율적으로 이용하며 파일을 관리할 수 있다.



파일 시스템의 종류



FAT, File Allocation Table

파일을 할당한 정보를 테이블로 표현한 것이다. 어느 영역에 파일이 속해있는지, 공간에 여유가 있는지, 또 어디에 각 파일이 디스크에 저장되어 있는지에 대한 정보를 중심으로 테이블이 구성된다.

구조가 간단하여 현재에도 많이 사용되고 있는 방식으로, 크게 FAT12, FAT16, FAT32로 나뉜다. 뒤의 숫자는 최대 표현 가능한 클러스터의 수를 비트 수로 나타낸 것으로, 예를 들어 FAT12는 예약된 클러스터 12개를 포함하면 최대 2^12개의 클러스터를 표현할 수 있다.


FAT의 종류에 따라 조금씩 다르긴하나, 전체적인 FAT 파일 시스템의 구조는 위와 같다. Reserved 영역은 부트 섹터, FSINFO 등의 내용을 표현하거나 혹은 사용되지 않는 부분이다. Data 영역은 실제 데이터가 저장되는 공간이다.

FAT은 호환성이 좋으며 단순해 디스크 용량을 많이 소모하지 않는다. 저용량 볼륨에 최적화 되어있다고 볼 수 있다.
하지만 성능은 상대적으로 다른 파일 시스템보다 좋지 않다. 너무 단순한 자료구조를 사용하고 조그마한 파일이 많으면 공간 활용률이 적어지기 때문이다. 볼륨에 있는 파일에 대한 접근 제어가 불가능한 등의 보안에도 취약하다.

FAT12

  • MS-DOS 초기부터 주로 쓰임
  • 플로피 디스크에서 사용

FAT16

  • 32MB 이상의 하드 디스크를 지원하기 위해 MS-DOS 3.0과 함께 나왔으며, 윈도우 95까지 주로 이용됨
  • 최대 2GB 파티션을 지원

FAT32

  • 오래되고 많이 사용되는 파일 시스템
  • 지원하는 드라이브 최대 용량 32GB
  • 파일 하나당 저장할 수 있는 최대 크기 4GB
  • 안정성이 좋으며, 다양한 OS와 기기에 대한 호환성이 좋음

eFAT (extended file allocation table) = FAT64

  • NTFS의 호환성 문제를 극복하기 위해 개발된 방식
  • 지원하는 드라이브의 용량은 사실상 제한 없음
  • 파일 하나당 저장할 수 있는 최대 크기 또한 사실상 제한 없음
  • 안정성이 떨어짐. USB 안전제거 방식이 아니라 그냥 제거하는 경우 파일 소실 가능성 존재 (왜지.. 버퍼와 관련해서 추가로 찾아보기!)


NTFS, New Technology File System

FAT 시스템을 대체하기 위해 개발된 파일 시스템으로, 현재 윈도우에서 사용되는 파일 시스템이다. 사용자마다 다른 보안을 적용할 수 있고, 파일과 폴더에 개별적으로 권한을 설정할 수 있으며 폴더에 설정한 권한보다 파일에 설정한 권한이 우선된다. 시스템 폴더는 Administrators / Power Users 그룹만 수정이 가능하다.

파일 단위로 계정이 언제 파일을 열어보거나 열려다 실패했는지 알 수 있는 감사 Auditing 기능이 있으며, 기본 보안 설정은 Everyone 그룹에 대해 모든 권한 허용이다. 파일 경로가 260글자 이상은 불가하다. FAT 시스템을 NTFS 시스템으로 변환하고 싶을 때는 명령프롬프트 cmd를 관리자 권한으로 실행해서 convert 드라이브 할당 문자:/fs:ntfs 를 실행하면 된다.

NTFS는 마이크로소프트의 독점 기술이기 때문에 MacOS에서는 읽기만 가능하다. 쓰기를 지원하려면 Microsoft NTFS for Mac by Paragon Software 와 같은 타사의 드라이버 프로그램을 사용해야 한다.

VBR과 MFT 영역을 사용하는데, 여기에서 MBR의 크기는 정해지지 않는다. 파일 및 폴더는 MBR 부분에 하나 또는 이상의 MFT entry가 할당되어지는데, 데이터가 많아져서 MFT영역을 초과하게되면 DATA영역을 사용하여 MFT영역을 늘리게 된다. VBR영역은 부트 섹터와 추가 부트 섹터로 이루어져 있다. MAC(Modified, Accessed, Created) 타임, 파일의 실제 위치 등에 대한 정보가 있다.

대용량 볼륨에 대한 효과적 지원으로 빠른 파일 접근이 가능하며, 클러스터의 크기가 작아 디스크 공간을 효과적으로 사용할 수 있다. 보안 또한 견고하며 별도의 압축 프로그램 없이도 파일과 폴더를 압축할 수 있다.
단점으로는 다른 운영체제와 호환성 문제와 저용량 볼륨에서는 FAT보다 속도가 느릴 수 있다는 점이 있다.



EXT, Extended File System

리눅스용 파일 시스템 가운데 하나로, 오늘날 많은 리눅스 배포판에서 주 파일 시스템으로 쓰이고 있다. Ext, Ext2, Ext3, Ext4가 있으며, 숫자가 높아질 수록 더 나중에 나온 것이다. 현재는 Ext3이 보편적으로 많이 사용되고 있다.

Ext

  • 리눅스 첫 번째 파일 시스템
  • 최대 파일 시스템 크기 2GB 지원 (MFS (MINIX File System)의 단점인 최대 크기 64MB를 보완)
  • 분리 접근, 아이노드 수정, 자료 수정, 타임 스탬프 기능 지원 안됨

Ext2

  • FSCK (File System Check) 이라는 파일 시스템 검사 및 복구 기능 지원
  • 최대 파일 크기 2GB까지 지원
  • 최대 파일 시스템 크기 4TB까지 지원
  • 서브 디렉토리 개수 제한 32,768개
  • 캐시에 저장되어 있는 데이터들을 디스크로 저장하는 도중 문제가 발생할 경우 파일 시스템이 손상
  • FSCK 기능은 있지만 시간이 오래걸리며, 시스템 복구 기능을 사용하는 동안 다른 시스템 작업을 할 수 없음

Ext3

  • Ext2에서 Ext3으로 손상없이 전환이 가능
  • 최대 개별 파일 크기는 16GB ~ 2TB
  • 전체 파일 시스템 크기는 2TB ~ 16TB
  • 저널링 기술을 도입하여 빠르고 안정적인 복구 가능 (주 파일 시스템을 수정 전에 저널에 수정 사항을 먼저 기록하는 것으로, 전원이 갑자기 나가거나 시스템 충돌이 일어났을 때 데이터 손실을 줄일 수 있음)
  • 온라인 조각모음 프로그램이 없음
  • 현재 가장 많이 사용되고 있는 파일 시스템

Ext4

  • Block Mapping 방식 대신 Extends 방식을 새로 사용하여 조각화 현상을 줄이고 큰 파일 처리가 개선됨
  • 최대 개별 파일 크기 16GB ~ 16TB
  • 최대 파일 시스템 크기는 1EB(exabyte)
  • 지연된 할당 (allocate-on-flush) 기능 제공
  • Ext3에는 없던 저널 체크섬 기능이 추가되어 파일 시스템 손상 가능성이 더 줄어듬
  • 디스크 공간 할당을 마지막까지 지연하므로 성능이 향상
  • Ext2, Ext3을 Ext4 방식으로 마운트하여 성능이 향상된 상태로 사용 가능


HFS, Hierachical File System

애플이 MacOS를 구동하는 컴퓨터 시스템에 사용할 목적으로 개발한 파일 시스템이다.



APFS, Apple File System

애플에서 MacOS, iOS, watchOS, tvOS등에서 범용으로 사용하고자 만든 HFS+ 대체 파일 시스템이다. 암호화에 중점을 두고 개발되었으며, 디스크 전체를 한 개의 볼륨인 컨테이너 디스크로 포맷한 후 그 컨테이너 볼륨 안에 APFS 볼륨을 생성하는 방식이다.
MacOS Mojave 부터는 HFS+로 포맷하더라도 APFS 볼륨으로 자동으롤 포맷되기 때문에 굳이 HFS를 선택할 필요가 없다.




파일 분류와 확장자

모든 파일은 0과 1의 비트 패턴 bit pattern 으로 이루어지며, 운영체제 입장에서는 크게 실행 파일과 데이터 파일로 나뉜다.

실행 파일

운영체제가 메모리로 가져와 CPU를 이용하여 작업을 하는 파일이다. 즉 사용자의 요청으로 플세스가 된 파일을 말한다.

데이터 파일

실행 파일이 작업하는데 필요한 데이터를 모아놓은 파일로 이미지 뷰어 프로그램의 사진 파일, 뮤직 플레이어의 음악 파일, 워드프로세서의 문서 파일 등을 예로 들 수 있다. 데이터 파일은 스스로 프로세스가 될 수 없고, 운영체제가 전송하거나 보관만 할 뿐 특별하게 다루지 않는다.

모든 파일에는 고유한 헤더가 달려있는데, 헤더에는 파일의 이름, 버전, 크기, 만든 날짜, 접근 권한 등의 정보가 저장되어있다.





references

further readings

0개의 댓글