1. 파일 시스템
ㅇ 운영체제가, 파일,디렉토리를 효율적/구조적으로 관리하기 위한,
- 계층적 트리구조 시스템을 총칭
2. 파일시스템 특징
ㅇ 계층적 트리구조를 갖음
- 이 구조의 중심에는 루트(root)라고 하는 디렉토리가 있고,
- 각 디렉토리가 하부 디렉토리를 가지고,
- 하부 디렉토리는 다시 또다른 하부 디렉토리들을 가지는 형태 임
ㅇ 많은 정보들을 관리 함
- 총 블록 수, 가용 블록 수, 블록 위치, 디렉토리 구조, 파일 정보 등
. 파일의 속성, 파일에 대한 연산 등도 파일시스템을 통해 이루어짐
ㅇ 파일시스템에 대한 실제 저장소는 디스크로써,
- 통상, 디스크 파티션 별로, 파일시스템을 하나씩 둘 수 있음
ㅇ 주로, 디스크 상의 자원을 추상화시킨 이름을 입력 받아서, 실제 데이터를 리턴해 주는 역할 임
3. 파일시스템 구성
ㅇ 저장된 파일 : 실제 정보 내용
ㅇ 디렉토리 : 정리, 검색 기능 제공
- 모든 파일에 대한 정보(파일 속성 등)를 유지함
ㅇ 소프트웨어 루틴 : 논리 구조 및 파일 엑세스를 조정
4. 주요 화일시스템 例
ㅇ FAT 16/32 : MS-DOS
ㅇ NTFS : 윈도 NT 등
ㅇ UFS : 유닉스 파일시스템
ㅇ CDFS : CD 저장매체(CD-ROM)의 표준 화일시스템 (ISO 9660)
ㅇ VFAT : USB용 파일시스템
ㅇ NFS : 로컬이 아닌 원격지 화일시스템
ㅇ ext(ext1), ext2, ext3, ext4 : 리눅스 확장 파일시스템 (extended file system)
- 리눅스 계열은 실험적인 것을 포함하여 40개도 넘는 파일시스템을 지원
- 리눅스 지원 例) ext2 ~ ext4, msdos, iso9660, nfs, ufs, vfat, hpfs, ntfs, sysv, hfs 등
. 주로, ext4가 기본적으로 많이 쓰임
.. ext4 : 물리 블록 번호가 48 비트로 1 EB까지 가능
5. [참고사항]
ㅇ 파일시스템은, 디스크를 논리적인 디스크 블록(disk block)들의 집합으로 봄
ㅇ 가상 파일 시스템 (VFS, Virtual File System)
- 여러 이질적인 파일시스템을, 하나의 디렉토리 구조에 통합시켜,
. 자연스럽게 옮겨다니며 사용할 수 있도록, 추상화시킨 메커니즘
- 이를 위해, 공통된 VFS 인터페이스를 정의하는 추상 계층을 추가시켜,
. 각 파일 시스템이 VFS 인터페이스의 구현을 제공토록 함
- (응용 프로그램) ↔ (가상 파일 시스템) ↔ (ext2, ext3, VFAT, NFS 등)
ㅇ 파일 시스템 접근에 따른 시스템 호출 동작들
- open(), read(), write(), lseek(), close(), truncate(), stat(), mount(), umount(), mmap(),
mkdir(),link(), unlink(), symlink(), rename() 등
ㅇ 파일 시스템 일관성 검사 명령어
- (Unix/Linux) fsck
- (윈도우즈) chkdsk, scandisk
ㅇ 저널링 (Journaling)
- 변경 있을 때 만, 기록 전에, 그 변경 사항을 저널 로그에 기록하는 것
. 데이터 무결성을 보장하기 위함이고,
.. 즉, 로그를 통해 시스템 장애나 오류 발생 시 데이터 손실의 방지 및 복구
. 대용량일 경우, 파일시스템 검사에 많은 시간이 걸려서, 이를 단축시키기 위함
- 단점 : 파일 갱신 시간이 길어짐
- 지원 : ext3, ext4, NTFS 등의 파일시스템이 이를 지원