Linux: Difference between revisions
(A-0: Linux page — --- (수평선) 제거하여 깔끔하게 정리) |
(Phase 0.4: Expand Linux) |
||
| Line 256: | Line 256: | ||
== Best Practices == | == Best Practices == | ||
== Security == | |||
Linux 서버 보안은 HPC 환경에서 필수. 방화벽, SSH 설정, 사용자 권한 관리, 정기 패치. | |||
=== Firewall (iptables/nftables) === | |||
<syntaxhighlight lang="bash"> | |||
# ufw 사용 (Ubuntu) | |||
sudo ufw allow 22/tcp # SSH | |||
sudo ufw allow 80/tcp # HTTP | |||
sudo ufw allow 443/tcp # HTTPS | |||
sudo ufw enable | |||
sudo ufw status | |||
# nftables (Ubuntu 22.04+) | |||
sudo nft add rule inet filter input tcp dport 22 accept | |||
sudo nft add rule inet filter input tcp dport 80 accept | |||
sudo nft add rule inet filter input tcp dport 443 accept | |||
</syntaxhighlight> | |||
=== SSH Security === | |||
<syntaxhighlight lang="bash"> | |||
# /etc/ssh/sshd_config 수정 | |||
PermitRootLogin no | |||
PasswordAuthentication no | |||
PubkeyAuthentication yes | |||
AllowUsers hpcmate admin | |||
sudo systemctl restart sshd | |||
</syntaxhighlight> | |||
=== User Management === | |||
<syntaxhighlight lang="bash"> | |||
# 사용자 추가 | |||
sudo useradd -m -s /bin/bash hpcuser | |||
sudo passwd hpcuser | |||
sudo usermod -aG sudo hpcuser | |||
# sudo 권한 설정 | |||
sudo visudo | |||
# hpcuser ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart docker | |||
</syntaxhighlight> | |||
=== Regular Patching === | |||
<syntaxhighlight lang="bash"> | |||
# Ubuntu/Debian | |||
sudo apt update && sudo apt upgrade -y | |||
# RedHat/CentOS | |||
sudo yum update -y | |||
</syntaxhighlight> | |||
== Monitoring == | |||
Linux 서버 모니터링은 시스템 상태 파악과 문제 조기 발견에 필수. | |||
=== System Metrics === | |||
<syntaxhighlight lang="bash"> | |||
# CPU/메모리 사용량 | |||
top -bn1 | head -20 | |||
htop | |||
# 디스크 사용량 | |||
df -h | |||
# 디스크 I/O | |||
iostat -x 1 5 | |||
# 네트워크 트래픽 | |||
iftop -i eth0 | |||
nload eth0 | |||
</syntaxhighlight> | |||
=== Log Monitoring === | |||
<syntaxhighlight lang="bash"> | |||
# systemctl 로그 | |||
journalctl -u sshd -f | |||
journalctl --since "1 hour ago" --priority=err | |||
# 시스템 로그 | |||
sudo tail -f /var/log/syslog | |||
sudo tail -f /var/log/messages | |||
</syntaxhighlight> | |||
=== Prometheus + Node Exporter === | |||
<syntaxhighlight lang="bash"> | |||
# Node Exporter 설치 | |||
cd /tmp | |||
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz | |||
tar xvfz node_exporter-*.tar.gz | |||
sudo cp node_exporter-*/node_exporter /usr/local/bin/ | |||
# systemd 서비스 생성 | |||
sudo tee /etc/systemd/system/node_exporter.service <<EOF | |||
[Unit] | |||
Description=Node Exporter | |||
After=network.target | |||
[Service] | |||
User=node_exporter | |||
ExecStart=/usr/local/bin/node_exporter | |||
[Install] | |||
WantedBy=multi-user.target | |||
EOF | |||
sudo systemctl enable --now node_exporter | |||
</syntaxhighlight> | |||
* Ubuntu LTS 버전 사용 (22.04/24.04) — 안정성 보장 | * Ubuntu LTS 버전 사용 (22.04/24.04) — 안정성 보장 | ||
Latest revision as of 13:37, 17 July 2026
Linux
Overview
Linux는 HPCMATE 서버의 기반 운영체제로, Ubuntu Server 기반의 안정적이고 고성능인 리눅스 환경입니다. AI/ML 워크로드, HPC 클러스터, 데이터센터 환경에 최적화된 커널 튜닝과 시스템 설정을 제공합니다.
Summary
- 무엇인가? — HPCMATE 서버의 기반 OS (Ubuntu Server 22.04/24.04 LTS 기반)
- 왜 필요한가? — AI/ML 워크로드 안정 실행, HPC 클러스터 관리, 수냉식 서버 제어
- 언제 사용하는가? — HPCMATE 서버 초기 설정, 성능 튜닝, 문제 해결, 모니터링
Purpose
이 문서가 존재하는 이유
- Goal: HPCMATE 서버 Linux 환경의 설정, 관리, 최적화를 한 곳에서 제공
- Scope: Ubuntu Server 기반 시스템 관리, 커널 튜닝, 서비스 설정, 모니터링, 보안
- Non-goals: 특정 배포판(Distribution)별 상세 설정은 하위 문서에서 다룸
Key Concepts
| Concept | Description | Related |
|---|---|---|
| Kernel | Linux의 핵심 — 하드웨어 추상화 및 자원 관리 (HPCMATE 서버용 커널 튜닝) | Linux Kernel Tuning |
| File System | 데이터 저장 및 조직화 구조 (ext4, XFS, ZFS 등) | Linux File System Types |
| Process | 실행 중인 프로그램 인스턴스 (systemd, cron 등 관리) | Linux Process |
| Permission | 파일/디렉토리 접근 제어 (rwx, ACL, SELinux) | Linux file permission |
| Network | 네트워킹 및 방화벽 (iptables, nftables) | Linux iptables |
| Sysctl | 커널 파라미터 런타임 조정 (네트워크, 메모리, 프로세스) | Linux kernel parameter |
| Package Manager | 소프트웨어 설치/관리 도구 (apt, yum/dnf) | Linux package manager |
| Signal | 프로세스 간 이벤트 알림 메커니즘 (SIGTERM, SIGKILL, SIGINT) | Linux signal |
| systemd | 시스템 및 서비스 관리자 (부팅, 서비스 시작/정지) | Systemd service and timer |
| journalctl | 시스템 로그 관리 (서비스 로그, 에러 확인) | Setup logwatch on Ubuntu |
Architecture
Linux 시스템은 다음과 같은 계층으로 구성됩니다:
graph TD
A[Hardware - CPU, GPU, RAM, Storage] --> B[Kernel - 커널, 드라이버]
B --> C[System Libraries - glibc, OpenSSL]
C --> D[System Utilities - systemd, sshd, nginx]
D --> E[Applications - AI/ML, HPC, Database]
B --> F[File System - ext4, XFS, ZFS]
B --> G[Process Manager - systemd, cron]
B --> H[Network Stack - TCP/IP, iptables]
Workflow
| Stage | Input | Output |
|---|---|---|
| Boot | Kernel image + initramfs | Running OS (Ubuntu Server) |
| Service Start | systemd unit file | Running process (sshd, nginx) |
| Package Install | .deb package (apt) | Installed software |
| Config Change | sysctl parameter | Runtime kernel tuning |
| Log Monitor | journalctl command | Service logs, error analysis |
| Backup | rsync/tar command | Configuration backup |
Detailed Explanation
Kernel
Linux 커널은 하드웨어와 소프트웨어 사이의 중재자입니다. 메모리 관리, 프로세스 스케줄링, 디바이스 드라이버, 네트워킹 스택을 담당합니다. HPCMATE 서버에서는 AI/ML 워크로드에 최적화된 커널 파라미터를 적용합니다.
File System
Linux는 다양한 파일 시스템 유형을 지원합니다 (ext4, XFS, Btrfs, ZFS 등). 각 파일 시스템은 특정 사용 사례에 최적화되어 있습니다. HPCMATE 서버에서는 데이터 무결성과 성능을 위해 ext4 또는 XFS를 권장합니다.
Process Management
Linux는 프로세스를 계층적으로 관리합니다. 각 프로세스는 고유한 PID를 가지며, 부모-자식 관계로 조직됩니다. HPCMATE 서버에서는 systemd를 통해 서비스를 관리합니다.
File Permissions
Linux 파일 권한은 소유자(owner), 그룹(group), 기타(others) 각각에 대해 읽기(r), 쓰기(w), 실행(x) 권한으로 구성됩니다. 민감한 파일은 600 권한, 실행 파일은 755 권한을 권장합니다.
Networking (iptables)
iptables는 Linux의 기본 방화벽 도구로, 패킷 필터링, NAT, 포트 포워딩을 지원합니다. HPCMATE 서버에서는 SSH(22), HTTP(80), HTTPS(443) 포트만 개방합니다.
Kernel Parameters (sysctl)
sysctl를 통해 런타임에 커널 파라미터를 조정할 수 있습니다. 재부팅 없이 네트워크, 메모리, 프로세스 관련 설정을 변경할 수 있습니다. HPCMATE 서버 특화 튜닝이 적용되어 있습니다.
Package Management
Debian/Ubuntu 계열은 `apt`, RHEL/CentOS 계열은 `yum`/`dnf`를 사용합니다. HPCMATE 서버는 Ubuntu Server LTS 버전을 기본으로 사용합니다.
Signals
Linux 시그널은 프로세스 간 이벤트 알림 메커니즘입니다 (SIGTERM, SIGKILL, SIGINT 등). 서비스 재시작, 프로세스 종료 시 사용됩니다.
systemd
systemd는 Linux의 초기 시스템 및 서비스 관리자입니다. 부팅 시 서비스를 시작하고, 서비스 상태를 모니터링하며, 로그를 관리합니다. HPCMATE 서버의 모든 서비스는 systemd로 관리됩니다.
journalctl
journalctl은 systemd 시스템 로깅 데몬인 journald의 명령줄 인터페이스입니다. 서비스 로그를 실시간으로 모니터링하고, 에러를 분석하는 데 사용됩니다.
Configuration
# === HPCMATE 서버 특화 sysctl 설정 ===
# 1. 현재 설정 확인
sysctl vm.swappiness net.core.somaxconn net.ipv4.tcp_tw_reuse
# 2. HPCMATE 최적화 설정 적용
cat << 'EOF' | sudo tee /etc/sysctl.d/99-hpcmate.conf
# 메모리 관리 — 스왑 최소화 (AI/ML 워크로드 최적화)
vm.swappiness=10
vm.min_free_kbytes=65536
# 네트워크 성능 — 커넥션 확장
net.core.somaxconn=65535
net.ipv4.tcp_max_syn_backlog=65535
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_fin_timeout=15
# 파일 설명자 제한 증가
fs.file-max=2097152
fs.nr_open=2097152
EOF
# 3. 설정 적용
sudo sysctl --system
# 4. 변경 확인
sysctl -p /etc/sysctl.d/99-hpcmate.conf
Examples
Example 1: 시스템 상태 확인
uname -a # 커널 버전
hostnamectl # 시스템 정보
df -h # 디스크 사용량
free -h # 메모리 사용량
nvidia-smi # GPU 상태 (HPCMATE 서버)
Example 2: 서비스 관리
systemctl status sshd # SSH 상태
systemctl enable --now sshd # SSH 자동 시작
systemctl list-units --type=service --state=running # 실행 중인 서비스
Example 3: 로그 확인
journalctl -u sshd -n 50 # SSH 로그 최근 50줄
journalctl -p err --since "1 hour ago" # 최근 1시간 에러
Example 4: 패키지 관리 (Ubuntu)
sudo apt update && sudo apt upgrade -y # 시스템 업데이트
sudo apt install htop net-tools jq # 필수 도구 설치
Example 5: 파일 권한 설정
sudo chmod 755 /opt/hpcmate/scripts/ # 실행 파일
sudo chmod 600 /etc/shadow # 민감 파일 보호
sudo chown -R hpcmate:hpcmate /opt/hpcmate # 소유자 변경
Best Practices
Security
Linux 서버 보안은 HPC 환경에서 필수. 방화벽, SSH 설정, 사용자 권한 관리, 정기 패치.
Firewall (iptables/nftables)
# ufw 사용 (Ubuntu)
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw enable
sudo ufw status
# nftables (Ubuntu 22.04+)
sudo nft add rule inet filter input tcp dport 22 accept
sudo nft add rule inet filter input tcp dport 80 accept
sudo nft add rule inet filter input tcp dport 443 accept
SSH Security
# /etc/ssh/sshd_config 수정
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AllowUsers hpcmate admin
sudo systemctl restart sshd
User Management
# 사용자 추가
sudo useradd -m -s /bin/bash hpcuser
sudo passwd hpcuser
sudo usermod -aG sudo hpcuser
# sudo 권한 설정
sudo visudo
# hpcuser ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart docker
Regular Patching
# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y
# RedHat/CentOS
sudo yum update -y
Monitoring
Linux 서버 모니터링은 시스템 상태 파악과 문제 조기 발견에 필수.
System Metrics
# CPU/메모리 사용량
top -bn1 | head -20
htop
# 디스크 사용량
df -h
# 디스크 I/O
iostat -x 1 5
# 네트워크 트래픽
iftop -i eth0
nload eth0
Log Monitoring
# systemctl 로그
journalctl -u sshd -f
journalctl --since "1 hour ago" --priority=err
# 시스템 로그
sudo tail -f /var/log/syslog
sudo tail -f /var/log/messages
Prometheus + Node Exporter
# Node Exporter 설치
cd /tmp
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar xvfz node_exporter-*.tar.gz
sudo cp node_exporter-*/node_exporter /usr/local/bin/
# systemd 서비스 생성
sudo tee /etc/systemd/system/node_exporter.service <<EOF
[Unit]
Description=Node Exporter
After=network.target
[Service]
User=node_exporter
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable --now node_exporter
- Ubuntu LTS 버전 사용 (22.04/24.04) — 안정성 보장
- apt update && apt upgrade 주기적으로 실행 (주 1회 권장)
- 불필요한 systemd 서비스 비활성화 (systemctl disable)
- 최소 권한 원칙: sudo 접근 최소화, SSH 키 기반 인증 사용
- sysctl 변경 전 백업: cp /etc/sysctl.conf /etc/sysctl.conf.bak
- HPCMATE 서버 특화 튜닝:
- vm.swappiness=10 (메모리 스왑 최소화) - net.core.somaxconn=65535 (네트워크 커넥션 확장) - net.ipv4.tcp_tw_reuse=1 (TCP 타임웨이스트 재사용)
- journalctl로 로그 모니터링: journalctl -u <service> -f
- 정기 백업: rsync 또는 tar로 설정 파일 백업
Limitations
- 특정 하드웨어에 대한 드라이버 지원 제한
- 실시간(Real-time) 커널 별도 설치 필요
- GUI 환경 설정 복잡성
- Ubuntu LTS 버전은 5년 지원 (Extended Security Maintenance 별도)
References
- https://ubuntu.com/server
- https://www.kernel.org/
- https://wiki.ubuntu.com/
- https://www.freedesktop.org/wiki/Software/systemd/
Related Pages
- Linux File System Types
- Linux Kernel Tuning
- Linux Process
- Linux file permission
- Linux iptables
- Linux kernel parameter
- Linux package manager
- Linux signal
- Systemd service and timer
- Setup logwatch on Ubuntu
Knowledge Graph
Related
→ Linux Kernel Tuning → systemd → LVM → iptables → Ubuntu → fstab → Linux Kernel → Linux File System Types → Linux Process → Linux file permission