F2FS 메타데이터 오버헤드를 줄이는 방법
F2FS로 포맷한 SSD/eMMC의 실제 사용 가능 용량은 명목 용량보다 항상 작다. 이 차이를 "메타데이터가 공간을 많이 차지해서"라고 뭉뚱그려 설명하는 경우가 많은데, 실제로는 구조적 메타데이터(SIT·NAT·SSA 등)와 오버프로비저닝(GC를 위해 남겨두는 여유 공간)이라는…
Linux Kernel
F2FS로 포맷한 SSD/eMMC의 실제 사용 가능 용량은 명목 용량보다 항상 작다. 이 차이를 "메타데이터가 공간을 많이 차지해서"라고 뭉뚱그려 설명하는 경우가 많은데, 실제로는 구조적 메타데이터(SIT·NAT·SSA 등)와 오버프로비저닝(GC를 위해 남겨두는 여유 공간)이라는…
epoll은 nginx, Node.js, Python asyncio, 각종 데이터베이스는 물론 안드로이드의 이벤트 루프까지 떠받치는 리눅스의 핵심 I/O 멀티플렉싱 기능입니다. 그런데 2026년 5월, 이 epoll 서브시스템에서 일반 사용자 권한만으로 root를 딸 수 있는…
KASAN(Kernel Address SANitizer)은 리눅스 커널에서 메모리 버그를 탐지하고 디버깅하는 도구로, 메모리 오버플로우 및 언더플로우, use-after-free 같은 일반적인 메모리 관련 오류를 검출하는 데 도움을 준다. 이 글에서는 KASAN 사용 방법에 대해…
Embedded SoC 중에는 HW 압축 Unit을 내장한 것들이 있고, 이런 유닛은 대개 리눅스 커널의 crypto subsystem에 압축 알고리즘으로 등록돼 zram 같은 모듈에서 바로 활용할 수 있다. 문제는 squashfs다. AppImage, snap,…
리눅스 커널의 CPU 스케줄러(CFS 등)는 범용 워크로드에 맞춰 설계됐지만, 게이밍처럼 짧은 지연시간이 중요한 워크로드와 데이터센터의 처리량 위주 워크로드, 배터리 절약이 우선인 모바일 워크로드를 하나의 스케줄링 정책으로 동시에 만족시키기는 어렵다. 과거에는…
dm-vdo를 도입할 때 흔히 하는 실수가 압축률과 중복제거율만 보고 "물리 디스크의 몇 배를 담을 수 있는가"로 용량 산정을 끝내는 것이다. 하지만 VDO는 논리-물리 블록 매핑(block map), 슬랩별 참조 카운터, 복구…
메모리가 부족한 서버나 컨테이너 환경에서는 스왑을 켜는 순간 디스크 I/O 지연이 그대로 애플리케이션 응답 속도로 이어진다. 반대로 스토리지 비용을 아끼려고 압축을 걸고 싶어도, 파일시스템 레벨 압축(Btrfs, ZFS 등)은 해당 파일시스템을…
F2FS와 Btrfs는 둘 다 Linux 커널에 포함된 파일시스템이면서 투명 압축(transparent compression)을 지원한다는 공통점이 있다. 하지만 압축을 구현한 방식과 실제로 얻을 수 있는 효과는 두 파일시스템의 근본적인 설계 철학 차이 —…
커널 함수 호출이나 스케줄링 이벤트가 실제로 어떤 순서로 일어나는지 확인하고 싶을 때, printk를 여기저기 넣고 재빌드하는 건 비효율적이다. ftrace(Function Tracer)는 커널을 재빌드하지 않고도 함수 호출과 이벤트를 추적할 수 있게 해주는…
리눅스 커널에는 파일시스템이 많지만, 그중 데이터를 투명하게 압축(transparent compression)해서 저장 공간을 아껴주는 것은 일부에 불과하다. 가장 많이 쓰이는 ext4나 XFS는 압축 기능 자체가 없고, Btrfs와 F2FS는 쓰기 가능한(writable) 파일시스템이면서 압축을…