Linux 7.0의 Rust 안정화와 OPEN_TREE_NAMESPACE 컨테이너 성능 변화
Linux 7.0의 Rust 공식 안정화, OPEN_TREE_NAMESPACE 기반 컨테이너 생성 개선, 메모리 안전 커널 아키텍처를 정리한다.
2026-08-14 · 최초 발행 2026-04-23
버전 번호 변경보다 중요한 변화
Linux 7.0은 2026년 4월 12일 릴리스됐다. 6.19에서 7.0으로 넘어간 이유는 기술적 단절이라기보다, 마이너 버전이 20을 넘을 때 큰 번호 사이의 변화가 작아 보이는 혼란을 피하려는 넘버링 관례다. 2011년 Linux 3.0과 같은 맥락이다.
이번 릴리스에는 Rust 지원의 공식 안정화와 OPEN_TREE_NAMESPACE 병합이 함께 들어갔다. 전자는 커널에서 메모리 안전 코드를 유지하는 방식의 변화이고, 후자는 컨테이너 생성 경로에서 불필요한 마운트 복제를 줄이는 변화다.
주요 변경사항은 다음과 같다.
- Rust 지원 공식 안정화 및 experimental 레이블 제거
OPEN_TREE_NAMESPACE를 통한 컨테이너 생성 40% 가속- NULLFS 지원 병합
- Post-Quantum Cryptography(ML-DSA) 도입
- XFS self-healing 기능
- io_uring 개선
- SPARC, Alpha CPU 신규 코드 추가
Rust는 커널의 정식 유지보수 대상이 됐다
2025년 일본 도쿄 Linux Kernel Maintainers Summit에서는 Rust를 커널의 영구적 구성 요소로 공식 인정하는 결정이 내려졌다. 핵심 메인테이너 Greg Kroah-Hartman은 “Rust 드라이버가 C 드라이버보다 안전하다”고 공개적으로 지지했고, 그 결정이 Linux 7.0 코드베이스에 반영됐다.
2026년 기준으로 500명 이상의 기여자가 Rust 코드를 유지보수하고 있다. 빌드 요구사항도 바뀌었다. 이전에는 Nightly 컴파일러가 필요했지만, 이제는 Stable Rust 릴리스 트랙만 요구한다. 최소 지원 버전은 Debian stable 툴체인을 기준으로 한 Rust 1.93이다.
Rust 드라이버와 커널 모듈은 커널 트리에 공식 편입되며 C 드라이버와 같은 코드 리뷰·유지보수 절차를 거친다. 새 드라이버를 제출할 때 Rust 구현도 선택할 수 있다.
Linux 7.1에서는 CONFIG_RUST_INLINE_HELPERS 옵션으로 C helper 함수를 Rust 코드에 인라인 처리하는 타겟 LTO 방식을 계획하고 있다. Rust null block 드라이버에서는 약 2%의 추가 성능 향상이 확인됐으며, gccrs 프로젝트는 2026년 말 버전 0.1.0 출시를 예정해 GCC 기반 커널 빌드를 목표로 한다.
필요한 마운트만 복사하는 컨테이너 생성 경로
기존 컨테이너 생성은 unshare(CLONE_NEWNS)로 전체 마운트 네임스페이스를 복사하고, pivot_root()를 실행한 뒤 필요 없는 마운트를 즉시 파기하는 순서였다. 컨테이너에 필요하지 않은 마운트까지 복제한 후 버리는 구조이므로, 호스트의 마운트 포인트가 많아질수록 오버헤드는 선형적으로 증가했다.
Microsoft 엔지니어 Christian Brauner가 개발한 OPEN_TREE_NAMESPACE는 open_tree() 시스템콜에 같은 이름의 플래그를 추가한다. 컨테이너가 실제로 사용할 특정 마운트 트리만 선택해 복사하는 Partial Namespace Duplication 방식이다.
벤치마크에서는 기존 pivot_root() 방식이 60초 안에 73,000개를 생성한 반면, OPEN_TREE_NAMESPACE 방식은 109,000개를 생성했다. 향상률은 약 40% 증가다.
| 방식 | 60초 내 컨테이너 생성 수 |
|---|---|
기존 pivot_root() |
73,000개 |
신규 OPEN_TREE_NAMESPACE |
109,000개 |
| 향상률 | 약 40% 증가 |
성능 외에도 unshare(CLONE_NEWNS)와 pivot_root() 단계를 하나의 원자적 작업으로 결합한다. 컨테이너 루트가 언마운트된 뒤 하위 마운트에 접근하려는 공격을 차단하며, Docker와 Kubernetes 같은 컨테이너 워크로드 전반에 자동 적용된다.
C 코어와 Rust 드라이버가 만나는 경계
Linux 커널의 Rust 코드는 C를 한 번에 대체하지 않는다. C 코어는 그대로 운영하고, 새 모듈을 Rust로 작성하는 Strangler Fig 패턴을 취한다. 두 언어는 FFI(cxx, bindgen)를 통해 통신하며, 위험도가 높은 코드부터 점진적으로 Rust로 옮긴다.
Bindings 계층인 rust/bindings/에는 bindgen이 C 헤더에서 자동 생성한 Raw FFI 선언이 들어간다. 모든 내용은 unsafe로 표시되고, LLVM의 libclang이 C 코드를 파싱한다.
그 위의 rust/kernel/ Abstractions 계층은 안전한 Rust 래퍼를 제공한다. 타입 시스템에 불변 조건(invariants)을 인코딩하고, Mutex, SpinLock, RwLock, IRQ 핸들링, 네트워킹, 파일시스템 인터페이스를 다룬다.
드라이버와 서브시스템 계층은 이 안전한 Abstraction 계층만 사용하며 Bindings를 직접 호출하지 않는다. 따라서 드라이버 개발자는 unsafe 코드를 직접 작성하지 않아도 된다.
메모리 오류를 좁은 신뢰 경계로 밀어 넣는 방식
Rust의 소유권(Ownership) 모델은 컴파일 시점에 메모리 해제 시점을 결정해 use-after-free를 막는다. 수명(Lifetime) 시스템은 댕글링 포인터를 컴파일 타임에 차단하며, 타입 시스템은 특정 논리 오류를 이 시점에 포착한다. GC 없이 C와 동등한 런타임 성능을 내는 제로 비용 추상화도 이 구조의 일부다.
2026년 벤치마크에서는 Rust 기반 드라이버가 C 대비 메모리 관련 버그를 75% 줄였다. Android ashmem 구현은 C 대비 35% 지연 감소와 메모리 단편화 개선을 보였다.
Asterinas 프로젝트의 Framekernel 아키텍처는 unsafe 코드를 최소한의 감사 가능한 범위에 제한한다. 10만 줄 이상의 Rust로 구현됐고 230+ Linux 시스템콜을 지원하며, 성능은 Linux와 동등하거나 일부 시나리오에서 이를 초과한다.
실제 배포된 Rust 커널 코드
NVIDIA Nova GPU 드라이버는 Turing 세대 하드웨어인 RTX 20 시리즈와 GTX 1600 시리즈를 위한 완전한 DRM 드라이버다. nova-core는 하드웨어 초기화와 통신을, nova-drm은 Linux DRM API 구현을 맡는 2개 크레이트 구조다. GSP(GPU System Processor) 펌웨어가 하드웨어 추상화 레이어 역할을 맡아 드라이버 복잡도를 대폭 줄인다.
Google Android ashmem은 Linux 커널 6.12 기반 Android 16에 탑재됐다. 수억 대의 Android 기기에 실제 배포된 프로덕션 Rust 커널 코드이며, C 구현 대비 35% 지연 감소와 메모리 단편화 개선이 보고됐다.
현재 운영 중인 Rust 커널 컴포넌트에는 다음이 포함된다.
rnull: null block 장치 드라이버- ASIX AX88772A: 네트워크 드라이버
- Realtek Generic FE-GE: 네트워크 드라이버
- QR 코드 DRM: 커널 패닉 핸들러
릴리스에 포함된 성능 지표
| 항목 | 개선 내용 | 비고 |
|---|---|---|
| 컨테이너 생성 속도 | 40% 향상 | OPEN_TREE_NAMESPACE |
| 스레드 생성/종료 | 10~16% 향상 | PID 할당 알고리즘 개선 |
| 파일 open/close | 4~16% 향상 | 멀티코어 환경 |
| 대용량 메모리 블록 할당 | 3.6초 → 0.43초 | 메모리 관리 서브시스템 전면 개편 |
| Redis 벤치마크 | 20% 속도 향상 | 스와핑 처리 방식 정리 |
| 메모리 관련 버그 | 75% 감소 | Rust 드라이버 대비 C 드라이버 |
Linux 7.0은 컨테이너의 마운트 네임스페이스 처리와 Rust 커널 코드의 지위를 함께 바꿨다. OPEN_TREE_NAMESPACE의 원자적 마운트 트리 복사는 수백만 컨테이너를 운영하는 클라우드 환경에서 처리량 향상을 제공한다. Bindings, Abstractions, Drivers로 이어지는 경계 위에서 메모리 오류를 컴파일 타임에 줄이는 작업도 공식적인 전환점에 들어섰다.
Sources
- Linux Kernel 7.0 Released, This Is What's New — Linuxiac
- Linux Kernel 7.0 is Out — StorageNewsletter
- Rust Goes Stable in Linux Kernel 7.0 — Botmonster Tech
- OPEN_TREE_NAMESPACE To Provide A Security & Performance Win — Phoronix
- NULLFS & OPEN_TREE_NAMESPACE Features Merged For Linux 7.0 — TechEduByte
- Rust's Quiet Surge: Memory Safety Fuels Linux Speed — WebProNews
- Nova GPU Driver — Rust for Linux
- Android ashmem — Rust for Linux
- Rust for Linux — Rust Project Goals 2026
- Asterinas: Kernel Memory Safety — Asterinas
- Memory Safety for the World's Largest Software Project — Prossimo