처리중입니다. 잠시만 기다려주세요.
TTJ 코딩클래스
정규반 단과 자료실 테크 뉴스 코딩 퀴즈
테크 뉴스
Hacker News 2026.06.16 28

파일시스템을 직접 만든다고? FUSE로 만드는 나만의 가상 파일시스템 입문

Hacker News 원문 보기
파일시스템을 직접 만든다고? FUSE로 만드는 나만의 가상 파일시스템 입문

파일 탐색기 속 그 폴더가, 사실은 '가짜'라면?

우리가 매일 쓰는 파일시스템, 그러니까 폴더를 만들고 파일을 저장하는 그 기능은 보통 운영체제의 가장 깊은 곳인 '커널(kernel)'에 들어 있어요. 커널이 뭐냐면요, 컴퓨터의 하드웨어와 프로그램 사이를 중재하는 핵심 두뇌 같은 부분이에요. 그래서 새로운 파일시스템을 만들려면 원래는 이 커널 코드를 직접 건드려야 하는데, 이게 정말 위험하고 어려워요. 한 줄만 잘못 짜도 컴퓨터 전체가 멈춰버리거든요(윈도우의 블루스크린 같은 거요). 그런데 이걸 평범한 앱 짜듯이 쉽게 만들 수 있게 해주는 기술이 있어요. 바로 FUSE(Filesystem in Userspace, 사용자 공간 파일시스템) 입니다.

FUSE가 어떻게 동작하냐면요

FUSE는 커널과 내 프로그램 사이를 이어주는 다리예요. 커널을 직접 건드리지 않고, 그냥 일반 앱(사용자 공간에서 도는 프로그램)을 짜듯이 파일시스템을 만들 수 있게 해주죠. 핵심 아이디어는 '콜백(callback)'이에요. 사용자가 터미널에서 ls(폴더 목록 보기)나 cat(파일 내용 보기) 같은 명령을 치면, 그 요청이 커널을 거쳐 FUSE를 통해 내가 짠 코드로 전달돼요. 그러면 내 코드가 '이 폴더엔 이런 파일이 있어', '이 파일 내용은 이거야'라고 대답해 주는 거죠.

내가 구현해야 하는 핵심 함수는 의외로 몇 개 안 돼요. getattr(파일의 크기·권한 같은 정보 알려주기), readdir(폴더 안 목록 보여주기), open(파일 열기), read(내용 읽어 돌려주기) 정도예요. 예를 들어 '항상 Hello, World 한 줄만 들어 있는 파일 하나짜리 파일시스템'을 만든다고 해볼게요. readdir에서는 파일 이름 하나만 돌려주고, getattr에서는 그 파일 크기를 알려주고, read에서는 그 글자들을 돌려주면 끝이에요. 실제 디스크에는 아무것도 저장하지 않았는데, 사용자 눈에는 진짜 파일처럼 보이는 거죠. 신기하지 않나요? 파일시스템이 꼭 '저장'을 의미하는 건 아니라는 발상의 전환이 FUSE의 매력이에요.

이게 왜 이렇게 강력하냐면

이 '가짜 파일처럼 보여주기'가 별것 아닌 것 같지만, 엄청나게 강력한 응용으로 이어져요. 대표적인 게 sshfs예요. 원격 서버를 SSH로 연결해서 마치 내 컴퓨터의 폴더인 것처럼 드래그 앤 드롭으로 파일을 옮길 수 있게 해주죠. 알고 보면 read 요청이 들어올 때마다 뒤에서 원격 서버에 접속해 파일을 가져오는 FUSE 프로그램인 거예요. 비슷하게 s3fs는 AWS의 클라우드 스토리지인 S3를 폴더처럼 보여주고, rclone은 구글 드라이브나 드롭박스를 로컬 폴더처럼 마운트해 줘요. 파일을 열면 자동으로 암호를 풀어주는 암호화 파일시스템도 같은 원리고요. 즉, '파일처럼 보이지만 뒤에서는 전혀 다른 일이 벌어지는' 거의 모든 마법이 FUSE로 가능해요.

업계 맥락과 성능 이야기

장점이 뚜렷한 만큼 약점도 있어요. 요청이 들어올 때마다 커널과 사용자 공간 사이를 왔다 갔다 해야 하는데(이걸 컨텍스트 스위칭이라고 해요), 이 과정에 시간이 걸려서 커널에 박혀 있는 진짜 파일시스템보다는 느려요. 그래서 초고성능이 필요한 데이터베이스 저장소 같은 데는 잘 안 써요. 다만 최근에는 리눅스의 io_uring 같은 빠른 입출력 기술과 결합해 이 오버헤드를 줄이려는 시도가 활발하고요, macOS에서는 macFUSE나 FUSE-T 같은 구현체로 같은 걸 할 수 있어요. 속도가 조금 느려도 '안전하고 개발이 쉽다'는 장점이 워낙 커서, 클라우드·백업·보안 도구 쪽에서는 사실상 표준처럼 쓰여요.

한국 개발자에게 주는 시사점

주니어 개발자라면 FUSE로 작은 파일시스템을 직접 만들어보는 걸 사이드 프로젝트로 강력 추천해요. 운영체제 수업에서 글로만 배우던 '시스템 콜', '커널과 사용자 공간', '파일 디스크립터' 같은 개념이 손에 잡히게 이해되거든요. 예를 들어 '내 메모(markdown 파일)들을 자동으로 정리해서 보여주는 가상 폴더'나 'API 응답을 파일처럼 읽게 해주는 파일시스템' 같은 걸 만들어보면 포트폴리오로도 훌륭해요. 실무에서도 클라우드 스토리지를 서버에 마운트하거나, 레거시 프로그램이 로컬 파일만 읽을 줄 알 때 그 사이에 FUSE를 끼워 넣는 식으로 활용도가 높아요.

핵심을 한 줄로 정리하면 이래요. FUSE는 '파일'이라는 익숙한 인터페이스 뒤에 무엇이든 숨길 수 있게 해주는, 가장 쉽게 시작하는 시스템 프로그래밍의 입구다. 여러분이라면 '파일처럼 보이는 마법'으로 어떤 도구를 만들어보고 싶으세요?


🔗 출처: Hacker News

이 뉴스가 유용했나요?

TTJ 코딩클래스 정규반

월급 외 수입,
코딩으로 만들 수 있습니다

17가지 수익 모델을 직접 실습하고, 1,300만원 상당의 자동화 도구와 소스코드를 받아가세요.

144+실전 강의
17개수익 모델
4.9수강생 평점
정규반 자세히 보기

"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"

실제 수강생 후기
  • 비전공자도 6개월이면 첫 수익
  • 20년 경력 개발자 직강
  • 자동화 프로그램 + 소스코드 제공

매일 AI·개발 뉴스를 받아보세요

주요 테크 뉴스를 매일 아침 이메일로 전해드립니다.

스팸 없이, 언제든 구독 취소 가능합니다.