TECH 으로 돌아가기
TECH HACKER NEWS 오늘 8분 읽기 22 READS

OpenBSD에 Plan 9 파일시스템 GEFS가 온다, 초기 프리뷰로 본 의미

무슨 일이 있었나요

OpenBSD 개발자들이 모이는 tech 메일링리스트에 흥미로운 글이 하나 올라왔어요. GEFS라는 파일시스템을 OpenBSD로 포팅한 초기 프리뷰예요. "early preview"라는 표현 그대로 아직 실험 단계라 실제 서버에 올릴 물건은 아니지만, OpenBSD를 오래 지켜본 사람이라면 꽤 눈이 번쩍 뜨일 소식이거든요.

왜냐면 OpenBSD의 기본 파일시스템은 FFS(Fast File System)인데, 이게 1980년대 BSD 시절에 설계된 물건이에요. FFS2로 개선되긴 했지만, 요즘 파일시스템이 당연하게 갖추는 스냅샷, 데이터 체크섬, 카피 온 라이트 같은 기능이 없어요. 전원이 갑자기 나가면 fsck로 한참 검사해야 하고, 디스크가 조용히 데이터를 망가뜨려도 파일시스템 차원에서는 알아챌 방법이 없죠.

GEFS가 뭐냐면

GEFS는 "Good Enough File System"의 줄임말이에요. 이름부터 겸손하죠. Ori Bernstein이라는 개발자가 9front라는 운영체제를 위해 만들었는데요. 9front는 벨 연구소가 만든 Plan 9의 커뮤니티 후속 버전이에요. Plan 9는 "모든 것은 파일이다"라는 유닉스 철학을 극단까지 밀어붙인 실험적인 OS로 유명하고요.

GEFS의 설계를 보면 현대 파일시스템의 핵심 아이디어가 아주 작은 코드 안에 압축되어 있어요. 하나씩 풀어볼게요.

카피 온 라이트(Copy-on-Write)가 뭐냐면, 데이터를 수정할 때 원래 자리에 덮어쓰지 않고 새로운 자리에 쓴 다음 "이제 여기가 최신이야" 하고 포인터만 바꾸는 방식이에요. 문서를 고칠 때 원본에 줄 긋는 게 아니라 새 종이에 쓰고 목차만 바꾸는 거죠. 이렇게 하면 쓰다가 전원이 나가도 원본은 멀쩡하니까 크래시에 안전하고, 옛날 포인터를 그냥 남겨두면 그게 곧 스냅샷이 돼요. 스냅샷이 거의 공짜로 생기는 셈이에요.

Bε-트리(B-엡실론 트리)는 GEFS의 진짜 특징이에요. 보통 파일시스템은 B-트리로 메타데이터를 관리하는데, GEFS는 각 노드에 작은 버퍼를 두고 변경 사항을 거기 모아뒀다가 버퍼가 차면 한꺼번에 아래로 내려보내요. 택배를 하나씩 배달하는 대신 동네별로 모아서 한 번에 나가는 거랑 비슷해요. 그래서 랜덤 쓰기가 크게 줄어들고 쓰기 성능이 좋아져요. 학계에서는 오래 연구된 구조인데 실제 파일시스템에 적용한 사례는 드물어요.

체크섬도 있어요. 데이터를 저장할 때 지문 같은 값을 함께 기록해두고, 읽을 때 다시 계산해서 비교하는 거예요. 디스크가 조용히 데이터를 망가뜨리는 "사일런트 데이터 손상"을 잡아낼 수 있죠.

그리고 이 모든 게 대략 만 줄 안팎의 C 코드에 들어 있어요. 비교하자면 ZFS는 수십만 줄, btrfs도 십만 줄이 넘어요. 작다는 건 읽을 수 있고, 감사할 수 있고, 고칠 수 있다는 뜻이에요.

왜 하필 OpenBSD인가

여기서 OpenBSD의 성격을 알아야 해요. OpenBSD는 보안과 코드 품질에 거의 집착하는 프로젝트예요. 커널에 들어가는 코드는 개발자들이 직접 읽고 검토할 수 있는 크기여야 한다는 원칙이 있어요. 그래서 FreeBSD는 ZFS를 받아들였지만 OpenBSD는 받아들이지 않았어요. ZFS의 CDDL 라이선스가 BSD 라이선스와 궁합이 좋지 않다는 문제도 있지만, 코드가 너무 크고 복잡하다는 이유가 컸어요. DragonFly BSD의 HAMMER2도 있지만 그건 그쪽 커널에 깊이 얽혀 있고요.

이런 상황에서 GEFS는 딱 맞는 후보예요. 코드가 작고, 라이선스도 자유롭고, 현대적 기능은 다 갖췄으니까요. 다만 포팅이 쉬운 건 아니에요. Plan 9와 OpenBSD는 커널 인터페이스가 완전히 다르거든요. 파일시스템이 커널과 대화하는 방식, 버퍼 캐시, 락킹 모델 전부 새로 맞춰야 해요. 그래서 "초기 프리뷰"라는 말이 붙은 거예요. 어느 정도까지 동작하는지, 어떤 제약이 있는지는 메일링리스트 원문을 직접 읽어보시길 권해요.

업계 흐름에서 보면

파일시스템 세계는 지금 재밌는 시기예요. 리눅스에서는 btrfs가 오래 신뢰성 논란을 겪었고, bcachefs는 커널 메인라인에 들어갔다가 개발 과정의 갈등으로 제외되는 일이 있었죠. ZFS는 여전히 훌륭하지만 라이선스 때문에 리눅스 커널에 정식으로 들어가지 못하고 있고요. 애플은 APFS로, 마이크로소프트는 ReFS로 각자 갈 길을 갔어요.

이 와중에 "작고 이해 가능한 현대적 파일시스템"이라는 틈새는 거의 비어 있었어요. GEFS의 OpenBSD 포팅이 성공한다면 그 틈새를 채우는 첫 사례가 될 수 있어요.

한국 개발자에게는

솔직히 당장 실무에 쓸 일은 없어요. 하지만 두 가지 관점에서 볼 가치가 있어요.

첫째, OpenBSD를 방화벽이나 소규모 서버로 쓰는 분들이라면 장기적으로 스냅샷과 무결성 검사를 기본 파일시스템에서 얻게 될 가능성이 열린 거예요. 지금은 이런 기능이 필요하면 다른 OS를 골라야 했거든요.

둘째, 파일시스템을 공부하고 싶은 분들에게 GEFS는 좋은 교재예요. ZFS 코드를 읽으려면 몇 달이 걸리지만, GEFS는 주말 며칠이면 전체 구조를 훑을 수 있는 크기예요. 카피 온 라이트, 스냅샷, Bε-트리가 실제 코드에서 어떻게 구현되는지 보고 싶다면 9front 저장소의 GEFS 소스를 한번 열어보세요.

정리하면

1980년대 파일시스템을 쓰던 OpenBSD에, 만 줄짜리 현대적 파일시스템이 포팅되기 시작했다. 아직 실험 단계지만 방향이 중요해요.

여러분은 어떻게 생각하세요? 파일시스템에서 "기능이 많은 것"과 "코드가 작아서 검증 가능한 것" 중 어느 쪽을 더 신뢰하시나요? 그리고 OpenBSD가 이걸 정식으로 받아들일 거라고 보시나요?


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://marc.info/?l=openbsd-tech&m=178948744271633&w=2
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기
처리 중...