리눅스 아키텍처, 커널만 알아서는 운영이 안 되는 이유
커널·배포판·파일시스템·프로세스·권한·네트워킹까지, 리눅스를 운영 관점에서 훑는다
2026-08-12 · 최초 발행 2026-01-12
"리눅스를 쓴다"고 말할 때 실제로 가리키는 건 리누스 토르발스가 1991년 헬싱키 대학 학생 시절 공개한 커널 하나가 아니다. 그 커널에 리처드 스톨먼이 1983년부터 이끈 GNU 프로젝트의 셸·컴파일러·유틸리티가 결합돼야 비로소 부팅되고 로그인할 수 있는 완전한 운영체제가 된다. 정식 명칭이 GNU/Linux인데도 다들 그냥 "Linux"라 부르는 이유는 커널이 시스템의 나머지를 규정하기 때문이다—어떤 배포판을 쓰든 결국 이 커널 위에서 돌아간다.
커널이 하는 일과 하지 않는 일
리눅스 커널은 하드웨어 자원 관리, 프로세스 스케줄링, 메모리 관리, 파일 시스템, 디바이스 드라이버를 담당하는 모놀리식(Monolithic) 커널이다. 모든 기능이 커널 공간에서 단일 주소 공간으로 실행되기 때문에 성능은 좋지만, 그만큼 커널 코드 전체가 한 덩어리로 신뢰돼야 한다는 뜻이기도 하다. 이걸 유연하게 만드는 장치가 커널 모듈이다—insmod, rmmod, lsmod로 디바이스 드라이버나 파일시스템 지원을 동적으로 넣고 뺄 수 있어서, 커널을 통째로 재컴파일하지 않고도 하드웨어 지원을 확장할 수 있다.
그 위에 glibc 같은 시스템 라이브러리가 printf, malloc, fopen 같은 시스템 콜 래퍼를 제공하고, Bash·ls·cp·mv·rm·grep·sed·awk·gcc 같은 GNU 유틸리티가 실제로 손에 잡히는 명령어를 구성한다. 사용자 공간에는 Apache·NGINX 같은 웹 서버, MySQL·PostgreSQL 같은 데이터베이스, GNOME·KDE 같은 GUI가 올라간다.
배포판을 고르는 기준은 결국 패키지 관리와 용도다
배포판 사이의 차이는 겉모습보다 패키지 관리 방식과 타겟 용도에서 갈린다. Debian 계열(Debian, Ubuntu, Linux Mint)은 apt·dpkg를 쓰고 안정성을 중시하며, Ubuntu는 2004년 Canonical이 Debian을 기반으로 사용자 친화성을 더해 데스크톱·서버·클라우드 전반에 퍼졌다. Red Hat 계열(RHEL, CentOS, Fedora)은 yum·rpm을 쓰며 RHEL은 기업 지원을 받는 상용 배포판이고, CentOS는 한때 그 무료 버전이었지만 2021년 CentOS Stream으로 전환됐다. Fedora는 Red Hat이 후원하는 최신 기술 실험대이자 RHEL의 업스트림 역할을 한다.
이 두 계열 밖에도 실무에서 자주 마주치는 선택지가 있다. Arch Linux는 롤링 릴리스로 항상 최신 상태를 유지하며 pacman으로 최소 설치·사용자 맞춤을 지향한다. SUSE는 독일 기반으로 커뮤니티판 openSUSE와 상용판 SLES로 나뉜다. 그리고 Alpine Linux—musl libc와 BusyBox 기반의 약 5MB짜리 초경량 배포판—는 Docker 이미지의 베이스로 특히 인기가 있는데, 이미지 크기가 곧 빌드·배포 속도와 직결되기 때문이다.
FHS 디렉토리는 지도다
Filesystem Hierarchy Standard(FHS)는 배포판이 달라도 어디에 뭐가 있는지 헤매지 않게 해주는 표준이다. /bin에는 ls, cp, mv, bash 같은 필수 실행 파일이, /boot에는 부트로더와 커널 이미지(vmlinuz, initrd)가, /etc에는 /etc/passwd·/etc/hosts 같은 설정 파일이, /var에는 /var/log 로그와 /var/tmp 같은 가변 데이터가 들어간다. /proc은 실제 파일이 아니라 /proc/cpuinfo, /proc/meminfo처럼 커널이 실시간으로 노출하는 가상 파일시스템이라 시스템 상태를 확인할 때 자주 들여다보게 된다.
파일 시스템 유형도 용도에 따라 갈린다. ext4는 저널링을 지원하고 최대 1EB까지 다루는 리눅스 기본 파일시스템이고, XFS는 고성능 저널링으로 RHEL의 기본값이다. Btrfs는 Copy-on-Write 기반으로 스냅샷과 압축을 지원하며, NFS는 네트워크로 파일시스템을 공유할 때 쓴다.
프로세스 상태, 그중 신호가 되는 것들
프로세스는 PID로 식별되고 PPID로 부모-자식 관계를 갖는다. 조회는 ps로 한다.
ps aux # 모든 프로세스 표시
ps -ef # 표준 출력
top이나 htop으로 CPU·메모리 사용률을 실시간 모니터링하며, kill로 제어한다.
kill PID # SIGTERM (정상 종료 요청)
kill -9 PID # SIGKILL (강제 종료)
systemd 기반 시스템에서는 systemctl로 서비스를 관리한다.
systemctl start nginx # 서비스 시작
systemctl stop nginx # 서비스 중지
systemctl status nginx # 상태 확인
systemctl enable nginx # 부팅 시 자동 시작
프로세스가 오갈 수 있는 상태는 Running(R, 실행 중 또는 대기), Sleeping(S, 인터럽트 가능한 대기), Uninterruptible Sleep(D, 인터럽트 불가 대기), Stopped(T, 정지), Zombie(Z, 종료됐으나 부모가 정리하지 않음) 다섯 가지다. 이 중 D 상태로 멈춘 프로세스는 보통 I/O 요청에 걸려 있다는 신호이고, Z 상태가 쌓이면 부모 프로세스가 자식을 제대로 회수(wait)하지 않고 있다는 뜻이라 kill로도 정리되지 않는다—원인이 되는 부모 프로세스를 찾아야 한다.
권한은 rwx 단위의 조합이다
파일 권한 표기는 소유자(owner)·그룹(group)·기타(others) 세 단위에 각각 읽기(r=4)·쓰기(w=2)·실행(x=1) 권한을 부여한 결과다.
-rwxr-xr-x 1 user group 4096 Jan 10 12:00 file.txt
\_/\_/\_/
| | |
| | +-- Others (기타)
| +----- Group (그룹)
+-------- Owner (소유자)
r: Read (4)
w: Write (2)
x: Execute (1)
chmod 755는 이를 숫자로, chmod u+x는 기호로 지정하는 방식이다.
chmod 755 file.txt # rwxr-xr-x
chmod u+x file.txt # 소유자에게 실행 권한 추가
소유권 자체를 바꾸려면 chown을 쓴다.
chown user:group file.txt
사용자 계정은 useradd·passwd로 만든다.
useradd username # 사용자 생성
passwd username # 비밀번호 설정
/etc/passwd에 사용자 정보가, /etc/shadow에 암호화된 비밀번호가 저장된다. su로 사용자를 전환하거나 sudo로 관리자 권한을 빌려 명령을 실행한다.
su username # 사용자 전환
sudo command # 관리자 권한으로 명령 실행
그룹은 groupadd로 만들고 usermod -aG로 사용자를 편입시킨다.
groupadd groupname
usermod -aG groupname username # 사용자를 그룹에 추가
네트워킹은 설정·방화벽·진단으로 나뉜다
네트워크 인터페이스를 다루는 도구는 세대가 갈린다—ifconfig는 구형이다.
ifconfig eth0 # 인터페이스 정보
ifconfig eth0 up # 인터페이스 활성화
ip가 최신 표준이다.
ip addr show # IP 주소 조회
ip link set eth0 up # 인터페이스 활성화
ip route show # 라우팅 테이블
설정 파일 위치도 배포판마다 달라서 Debian/Ubuntu는 /etc/network/interfaces, RHEL/CentOS는 /etc/sysconfig/network-scripts/ifcfg-eth0을 쓴다. 방화벽은 iptables로 직접 규칙을 넣는다.
iptables -L # 규칙 조회
iptables -A INPUT -p tcp --dport 80 -j ACCEPT # HTTP 허용
RHEL/CentOS 계열은 firewalld로 서비스 단위로 관리한다.
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
진단에는 ping(ICMP Echo)을 쓴다.
ping google.com # ICMP Echo 요청
경로를 추적하려면 traceroute를 쓴다.
traceroute google.com # 경로 추적
리스닝 포트 확인에는 netstat나 그보다 빠른 ss를 쓴다.
netstat -tuln # 리스닝 포트
ss -tuln # netstat 대체 (빠름)
DNS 조회에는 nslookup·dig를 쓴다.
nslookup google.com # DNS 조회
dig google.com
왜 서버부터 슈퍼컴퓨터까지 같은 커널인가
GPL 라이선스로 소스가 공개돼 있고 라이선스 비용이 없다는 점, 서버 장기 가동에 필요한 안정성과 빠른 보안 패치, 경량 배포판을 고를 수 있는 자원 효율성, 그리고 x86부터 ARM까지 아우르는 아키텍처 확장성—이 조합이 웹·DB·메일 서버, AWS/Azure/GCP 클라우드 인스턴스와 Docker/Kubernetes 컨테이너, 라우터·스마트TV·IoT 같은 임베디드 시스템, TOP500 슈퍼컴퓨터 전체, 그리고 커널을 기반으로 한 Android까지 같은 커널을 재사용하게 만든다. 데스크톱에서는 개발자와 파워 유저 중심으로 Ubuntu, Fedora, Linux Mint가 쓰이지만, 이 커널이 진짜 힘을 발휘하는 곳은 화면 없는 서버와 임베디드 환경이다.