토픽 60 / 85·파일 시스템, I/O, 시스템 구조
VFS (Virtual File System)
VFS (Virtual File System)
다양한 파일시스템(ext4, NTFS, FAT, NFS 등)에 대한 공통 인터페이스를 제공하는 커널의 추상화 레이어로, 응용 프로그램이 파일시스템 타입과 무관하게 동일한 시스템 콜로 파일에 접근하도록 지원
목적: 파일시스템 추상화, 통일된 인터페이스, 다중 파일시스템 지원, 플러그인 아키텍처
특징: 추상화 레이어, 공통 API, 파일시스템 독립적, 객체 기반, 캐시 통합
핵심 객체
- •superblock: 파일시스템 메타데이터(타입, 크기, 상태)
- •inode: 파일 메타데이터(크기, 권한, 블록 포인터)
- •dentry(directory entry): 파일명과 inode 연결, 디렉토리 캐시
- •file: 열린 파일 인스턴스, 파일 디스크립터
동작 흐름: 응용 프로그램 open() → VFS 레이어 → dentry 캐시 조회 → 해당 파일시스템 드라이버(ext4_open) → 실제 디스크 I/O
파일시스템 등록: register_filesystem()으로 커널에 등록, struct file_system_type
장점: 파일시스템 독립성, 확장 가능, 통일된 API, 캐시 공유, 플러그인
단점: 오버헤드(간접 호출), 추상화 복잡도, 성능 손실
적용사례: Linux VFS(모든 파일시스템), BSD VFS, Solaris VFS, 네트워크 파일시스템(NFS, SMB)
비교: VFS(추상화/통합) vs 직접 파일시스템 접근(빠름/비호환)
연관: 파일시스템, i-node, dentry, ext4, FUSE