Contents
see ListLinux 2025 핵심 변화
Linux 커널 6.x 시리즈와 systemd 258은 현대 서버 및 개발 환경 관리 방식을 크게 변화시켰습니다. cgroup v1 지원 종료, Rust 코드의 커널 도입 확대, Btrfs 성능 대폭 향상 등이 주요 변화입니다. 이 글에서는 실무 시스템 관리자와 DevOps 엔지니어가 알아야 할 최신 변경사항을 명령어 예제 중심으로 정리합니다.
1. systemd 258 주요 변경사항
cgroup v2 전면 전환
systemd 258(2025년 9월 릴리즈)에서 cgroup v1 지원이 완전히 제거되었습니다. cgroup v2('unified' hierarchy)가 표준이 됩니다.
# cgroup v2 마운트 확인
mount | grep cgroup
# cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime)
# 현재 cgroup 버전 확인
stat -fc %T /sys/fs/cgroup/
# cgroup2fs 출력 시 v2 사용 중
# 특정 서비스의 cgroup 리소스 사용량 확인
systemctl status nginx.service
# CGroup: /system.slice/nginx.service
# cgroup v2를 통한 메모리 제한 설정
systemctl set-property nginx.service MemoryMax=512M
systemctl set-property nginx.service CPUQuota=50%
# 설정 확인
cat /sys/fs/cgroup/system.slice/nginx.service/memory.max
systemd 서비스 관리 심화
# 서비스 상태 확인 (상세)
journalctl -u nginx.service -f --since "1 hour ago"
# 실패한 서비스 목록
systemctl list-units --state=failed
# 서비스 의존성 트리 확인
systemctl list-dependencies nginx.service
# 서비스 시작 시간 분석 (부팅 성능)
systemd-analyze blame | head -20
systemd-analyze critical-chain nginx.service
# 사용자 정의 서비스 유닛 파일 작성
cat /etc/systemd/system/my-app.service
[Unit]
Description=My Custom Application
After=network.target postgresql.service
Requires=postgresql.service
[Service]
Type=simple
User=myapp
WorkingDirectory=/opt/myapp
ExecStart=/opt/myapp/bin/start.sh
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=5
# 리소스 제한
MemoryMax=2G
CPUQuota=200%
TasksMax=1000
# 보안 강화
NoNewPrivileges=yes
PrivateTmp=yes
ProtectSystem=strict
ReadWritePaths=/opt/myapp/data
# 환경 변수
EnvironmentFile=/etc/myapp/env
[Install]
WantedBy=multi-user.target
# 유닛 파일 적용
systemctl daemon-reload
systemctl enable --now my-app.service
# systemd 258 신기능: udevadm 개선
udevadm info --name=/dev/sda
udevadm info --query=all --path=/sys/class/net/eth0
# 디바이스 ID로 직접 지정 (systemd 258 신기능)
udevadm info --device-id-of-file=/dev/sda1
udevadm trigger --verbose --device-id=/dev/disk/by-uuid/abc123
2. Linux Kernel 6.x 파일시스템 개선
Btrfs 성능 향상
# Btrfs 상태 확인
btrfs filesystem show
btrfs device stats /
btrfs filesystem df /
# 스냅샷 생성 (빠른 백업)
btrfs subvolume snapshot / /.snapshots/$(date +%Y%m%d_%H%M%S)
# 스냅샷 목록
btrfs subvolume list /
# 데이터 무결성 스크럽
btrfs scrub start /
btrfs scrub status /
# 압축 설정 (커널 6.x에서 성능 개선)
btrfs filesystem defragment -r -czstd /home
# 마운트 옵션에 압축 설정
# /etc/fstab
# UUID=... / btrfs defaults,compress=zstd:3,noatime 0 0
ext4 및 XFS 최적화
# ext4 파일시스템 상태 확인
tune2fs -l /dev/sda1 | grep -E "(Feature|Filesystem|Block|Inode)"
# 저널링 모드 최적화 (SSD 환경)
tune2fs -o journal_data_writeback /dev/sda1
# XFS 최적화 (병렬 처리 개선)
xfs_info /dev/sdb1
# XFS 조각화 확인 및 최적화
xfs_db -c frag -r /dev/sdb1
xfs_fsr /dev/sdb1
3. 현대적 CLI 도구 — 전통 명령어의 대체
# exa / eza: ls 대체 (Rust 기반)
# 설치: cargo install eza
eza -la --git --icons
eza --tree --level=2 src/
# bat: cat 대체 (구문 강조, 줄 번호)
# 설치: apt install bat 또는 cargo install bat
bat src/main.py
bat --diff file1.py file2.py
# ripgrep (rg): grep 대체 (훨씬 빠름)
# 설치: apt install ripgrep
rg 'function.*auth' src/ --type py
rg -i 'error|exception' /var/log/nginx/error.log
# fd: find 대체
# 설치: apt install fd-find
fd '*.log' /var/log --exec rm {}
fd -e py -x wc -l
# dust: du 대체 (디렉토리 용량 시각화)
# 설치: cargo install du-dust
dust /var/log
# bottom (btm): top/htop 대체
# 설치: cargo install bottom
btm
# delta: diff/git diff 시각화 개선
# ~/.gitconfig
# [core]
# pager = delta
# [delta]
# navigate = true
# line-numbers = true
# syntax-theme = Dracula
4. 메모리 관리 — Multi-Gen LRU
# MGLRU 활성화 확인 (커널 6.x에서 기본 활성화)
cat /sys/kernel/mm/lru_gen/enabled
# 0x0007 출력 시 활성화됨
# 메모리 사용량 상세 분석
smem -r -k | head -20 # 프로세스별 실제 메모리 사용량
# 메모리 압박 확인
psi-top # Pressure Stall Information
cat /proc/pressure/memory
# 스왑 사용량 확인
swapon --show
cat /proc/swaps
# zram 설정 (메모리 압축 스왑 — SSD 없는 환경에서 효과적)
modprobe zram
zramctl --find --size=4G --algorithm=zstd
# /dev/zram0 장치 생성됨
mkswap /dev/zram0
swapon -p 100 /dev/zram0
5. 네트워크 관리 — 현대적 도구
# ip 명령어 (ifconfig 대체)
ip addr show
ip link set eth0 up
ip route show
ip route add 192.168.10.0/24 via 192.168.1.1
# ss 명령어 (netstat 대체)
ss -tulnp # 수신 대기 포트 및 프로세스
ss -s # 소켓 요약
ss -tp # TCP 연결 및 프로세스
# NetworkManager 관리 (nmcli)
nmcli device status
nmcli connection show
nmcli connection add type ethernet ifname eth0 con-name "my-connection"
# 네트워크 성능 테스트
iperf3 -s # 서버 모드
iperf3 -c 192.168.1.100 -t 30 # 클라이언트 모드
# DNS 진단
resolvectl status
resolvectl query google.com
6. 보안 강화: SELinux와 AppArmor
# SELinux 상태 확인
getenforce
# Enforcing | Permissive | Disabled
# SELinux 컨텍스트 확인
ls -Z /var/www/html/
# 거부된 작업 확인
avc_context_check /var/log/audit/audit.log
audit2allow -a | head -50
# AppArmor 프로필 관리 (Ubuntu/Debian)
aa-status
aa-genprof /usr/bin/myapp # 새 프로필 생성
aa-complain /usr/bin/myapp # 학습 모드
aa-enforce /usr/bin/myapp # 강제 적용
# 파일 무결성 모니터링
apt install aide
aide --init
aide --check
7. 컨테이너와 Linux 커널 통합
# cgroup v2 기반 컨테이너 리소스 제한 (Docker)
docker run -d \
--name myapp \
--memory=1g \
--cpus=2 \
--pids-limit=100 \
myapp:latest
# 컨테이너 리소스 사용량 실시간 모니터링
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}"
# Podman (루트리스 컨테이너)
podman run --rm -it \
--userns=keep-id \
--volume ./data:/data:z \
python:3.12 python /data/script.py
# namespace 확인
lsns -p $(pgrep nginx)
ls -la /proc/$(pgrep -f 'nginx: master')/ns/
Linux 커널 6.x와 systemd 258은 현대 클라우드 네이티브 환경의 요구사항에 맞춰 성능, 보안, 관리 편의성을 대폭 향상시켰습니다. 특히 cgroup v2 전면 전환은 컨테이너 기반 워크로드의 리소스 관리를 더 정밀하게 만들었으며, Btrfs와 XFS의 성능 개선은 데이터 집약적 워크로드에서 체감 가능한 차이를 만들어냅니다. Rust 기반 CLI 도구들로의 전환도 생산성 향상에 크게 기여합니다.