개념 정의: 가상 파일시스템의 두 가지 유형
procfs(/proc)와 sysfs(/sys)는 모두 RAM 기반의 가상 파일시스템으로, 디스크 공간을 점유하지 않으며 부팅 시 자동으로 마운트됩니다. 하지만 용도와 구조가 완전히 다릅니다. procfs는 프로세스별 정보, 커널 전역 통계, 시스템 설정을 한곳에 혼합하여 제공하는 반면, sysfs는 Linux 2.6 도입 이후 kobject 아키텍처를 기반으로 장치, 드라이버, 커널 객체의 계층 구조를 엄격히 정렬하여 유지합니다.
아키텍처: procfs의 본원적 혼란과 sysfs의 구조적 개선
초기 Linux 커널 개발 초기, procfs는 단순히 프로세스 정보를 노출하기 위해 설계되었습니다. 그러나 시간이 지남에 따라 非프로세스 정보(IRQ, DMA, 버스 정보 등)가 무분별하게 추가되면서 파일 계층이 복잡해졌습니다. 이러한 문제를 해결하기 위해 Linux 2.5 개발 사이클에서 sysfs가 신규 드라이버 모델의 일부로 도입되었습니다. sysfs의 핵심은 kobject라는 커널 객체 관리 메커니즘으로, 모든 추상 커널 개체를 계층적 디렉토리 구조로 매핑합니다. procfs는 동적 콘텐츠 생성에 seq_file 인터페이스를 사용하며, sysfs는 ramfs 기반의 kernfs 계층을 통해 좀 더 효율적인 메모리 관리를 제공합니다.
주요 차이점: 파일 의미론과 사용 관례
sysfs가 procfs를 보완하는 가장 중요한 차이는 "한 파일 한 속성" 규칙입니다. sysfs의 모든 파일은 원칙적으로 단일 값만 포함하므로 자동화 파싱이 가능하고 API 안정성이 높습니다. 반면 procfs는 다중 값, 비구조화 텍스트, 도구별 커스텀 형식을 혼용하기 때문에 sed, awk 같은 특화된 도구가 필요합니다. procfs(/proc/sys/)의 설정은 sysctl 메커니즘으로 관리되지만, sysfs의 쓰기 가능한 파일은 디바이스 드라이버 속성으로 직접 작동합니다.
실무 관점: 선택과 마이그레이션 전략
신규 커널 기능과 장치 인터페이스는 sysfs 기반으로만 추가되므로, 최신 하드웨어 정보를 수집해야 한다면 /sys를 우선 확인해야 합니다. 기존 /proc/bus, /proc/fs 같은 항목들은 이미 /sys/bus, /sys/fs로 이전되었으나 호환성 유지를 위해 여전히 procfs에 남아있습니다. 따라서 장기 유지보수 가능성을 고려하면, 새로운 모니터링 스크립트는 sysfs 기반 구조화 인터페이스에 의존하고, procfs는 기존 도구와의 호환성이 필요한 경우에만 사용해야 합니다.