Linux 7.3에 FailFS가 업스트림될 것으로 보임
요약
Linux 7.3에 모든 파일 시스템 작업을 실패하게 만드는 새로운 파일 시스템인 FailFS가 도입될 예정입니다. FailFS는 프로세스가 자신의 파일 시스템 상태를 완전히 벗어나도록 설계된 특수 목적의 파일 시스템입니다.
핵심 포인트
- FailFS는 모든 작업에 대해 EOPNOTSUPP 에러를 반환함
- 복제 불가능하며 사용자 공간에서 마운트할 수 없는 불변 특성 보유
- 프로세스가 기존 파일 시스템 상태를 완전히 격리하도록 지원
- Linux 7.3 병합 윈도우에 포함될 것으로 예상됨
Linux 7.3에 FailFS가 업스트림될 것으로 보임

NULLFS는 조회가 실패할 때 '파일 또는 디렉터리가 없음'을 의미하는 ENOENT 에러 코드를 반환하는, 영구적으로 비어 있고 불변(immutable)인 디렉터리를 제공합니다. 곧 출시될 FailFS의 경우, 파일 시스템에 도달하는 모든 작업은 '지원되지 않는 작업'을 의미하는 Linux 에러 코드인 EOPNOTSUPP를 반환합니다.
Christian Brauner는 VFS.git의 "vfs-7.3.failfs" Git 브랜치에 FailFS를 병합 대기열에 올리며 다음과 같이 설명했습니다:
"failfs는 부팅 초기 단계에서 kern_mount()를 통해 마운트되는 단일 인스턴스로 존재하며, 이는 모든 마운트 네임스페이스(mount namespace)와 논리적으로 구별됩니다.
이 마운트는 어떤 마운트 네임스페이스의 구성원도 아니므로, 여기에 마운트하는 것은 실패합니다. 따라서 그 위에 아무것도 마운트할 수 없습니다. OPEN_TREE_CLONE을 통해 복제될 수 없으며, statmount()/listmount() 또는 /proc/self/mountinfo에도 나타나지 않습니다. 파일 시스템이 등록되지 않았기 때문에 /proc/filesystems에서도 보이지 않으며 사용자 공간(userspace)에서 마운트할 수 없습니다.
이를 통해 태스크(tasks)는 자신의 파일 시스템 상태를 완전히 벗어던질 수 있습니다. 루트 디렉터리나 작업 디렉터리가 failfs에 있는 프로세스는 모든 경로 조회(path lookup)를 명시적인 파일 디스크립터(file descriptor)에 고정해야 하며, 그렇지 않으면 모든 조회가 실패하게 됩니다. 절대 경로, 절대 심볼릭 링크(absolute symlinks), 그리고 AT_FDCWD 상대 조회가 단순히 실패합니다. 후속 패치에서는 fchdir()과 새로운 fchroot() 시스템 호출에서 인식되는 새로운 FD_FAILFS_ROOT 파일 디스크립터 센티널(sentinel)을 통해 이를 노출할 예정입니다.
재미있는 사실은, PT_INTERP를 통한 동적 바이너리 실행 방식 때문에 현재는 동적 바이너리의 실행도 방지한다는 점입니다(selftests 참조)."
FailFS는 복제할 수 없고, 사용자 공간에서 마운트할 수 없으며, 그 위에 아무것도 마운트할 수 없습니다. FailFS 드라이버의 실제 드라이버 부분은 200라인 미만의 코드로 구성됩니다.
Brauner가 FailFS를 VFS.git 브랜치에 대기열로 올렸고 심지어 "7.3"으로 표시되어 있으므로, Linus Torvalds나 다른 저명한 커널 개발자들의 반대가 없다면 이번 달 말 Linux 7.3 병합 윈도우(merge window)에 FailFS가 제출될 것으로 예상됩니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Phoronix의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기