서론: 왜 Linux인가?

전 세계 서버의 약 96% 이상이 Linux 운영체제를 사용하고 있습니다. AWS, Google Cloud, Azure 등 주요 클라우드 서비스부터 Netflix, Facebook, Google 같은 거대 서비스까지, 모두 Linux 위에서 동작합니다. 서버 관리자, DevOps 엔지니어, 백엔드 개발자라면 Linux는 반드시 익혀야 할 필수 기술입니다.

이 시리즈는 Linux 서버 관리에 필요한 모든 것을 10편에 걸쳐 체계적으로 다룹니다. 첫 번째 편에서는 Linux의 기본 개념과 파일 시스템 구조를 이해하는 것부터 시작합니다.

1. Linux란 무엇인가?

1.1 Linux의 정의와 역사

Linux는 1991년 핀란드의 대학생 리누스 토르발스(Linus Torvalds)가 개발한 오픈소스 운영체제 커널입니다. Unix 운영체제의 철학을 기반으로 만들어졌으며, 누구나 무료로 사용하고 수정할 수 있는 것이 특징입니다.

Linux는 엄밀히 말하면 커널(Kernel)만을 지칭합니다. 우리가 흔히 "Linux"라고 부르는 것은 Linux 커널에 다양한 유틸리티와 응용 프로그램이 결합된 배포판(Distribution)입니다.

1.2 주요 Linux 배포판

서버 환경에서 주로 사용되는 배포판들입니다:

  • Ubuntu Server: 사용하기 쉽고 커뮤니티가 활발합니다. 초보자에게 추천됩니다.
  • CentOS / Rocky Linux / AlmaLinux: RHEL(Red Hat Enterprise Linux) 기반으로 안정성이 뛰어납니다. 기업 환경에서 많이 사용됩니다.
  • Debian: 안정성과 보안에 중점을 둔 배포판입니다. Ubuntu의 기반이기도 합니다.
  • RHEL: 기업용 유료 배포판으로, 전문 기술 지원을 제공합니다.

1.3 Linux의 핵심 구성 요소

Linux 시스템은 다음과 같은 핵심 요소로 구성됩니다:

  • 커널(Kernel): 하드웨어와 소프트웨어 사이의 중재자 역할을 합니다. 프로세스 관리, 메모리 관리, 장치 드라이버 등을 담당합니다.
  • 쉘(Shell): 사용자와 커널 사이의 인터페이스입니다. 명령어를 해석하고 실행합니다. Bash, Zsh 등이 있습니다.
  • 파일 시스템: 데이터를 저장하고 조직하는 방식입니다.
  • 시스템 유틸리티: 시스템 관리에 필요한 기본 프로그램들입니다.

2. Linux 파일 시스템 계층 구조 (FHS)

2.1 FHS(Filesystem Hierarchy Standard)란?

Linux는 FHS(Filesystem Hierarchy Standard)라는 표준에 따라 디렉토리 구조가 정해져 있습니다. 이 표준 덕분에 어떤 배포판을 사용하든 기본적인 디렉토리 구조는 동일합니다.

모든 것은 루트 디렉토리 /에서 시작합니다. Windows의 C:\, D:\ 같은 드라이브 개념이 없고, 단일 트리 구조로 모든 파일과 디렉토리가 연결됩니다.

2.2 주요 디렉토리 상세 설명

디렉토리용도주요 내용
/루트 디렉토리모든 디렉토리의 시작점
/bin필수 바이너리ls, cp, mv 등 기본 명령어
/sbin시스템 바이너리fdisk, iptables 등 관리자용 명령어
/etc설정 파일시스템 및 애플리케이션 설정
/home사용자 홈일반 사용자들의 개인 디렉토리
/rootroot 홈root 사용자의 홈 디렉토리
/var가변 데이터로그, 캐시, 메일 스풀 등
/tmp임시 파일재부팅 시 삭제되는 임시 저장소
/usr사용자 프로그램설치된 소프트웨어, 라이브러리
/opt선택적 패키지서드파티 소프트웨어 설치 위치
/dev장치 파일하드웨어 장치를 파일로 표현
/proc프로세스 정보실행 중인 프로세스와 시스템 정보
/sys시스템 정보커널과 장치 정보
/mnt임시 마운트임시로 마운트하는 파일 시스템
/media이동식 미디어USB, CD-ROM 등 자동 마운트

2.3 중요 디렉토리 심층 분석

/etc - 시스템의 두뇌

/etc는 시스템 설정의 중심입니다. 서버 관리자가 가장 자주 방문하는 디렉토리입니다:

/etc/passwd      # 사용자 계정 정보
/etc/shadow      # 암호화된 비밀번호
/etc/group       # 그룹 정보
/etc/fstab       # 파일 시스템 마운트 설정
/etc/hosts       # 호스트명-IP 매핑
/etc/ssh/        # SSH 서버 설정
/etc/nginx/      # Nginx 웹서버 설정
/etc/systemd/    # systemd 서비스 설정

/var - 동적 데이터의 저장소

시스템 운영 중 지속적으로 변하는 데이터가 저장됩니다:

/var/log/        # 시스템 및 애플리케이션 로그
/var/www/        # 웹서버 문서 루트 (관례)
/var/lib/        # 애플리케이션 상태 정보
/var/cache/      # 캐시 데이터
/var/spool/      # 메일, 프린트 대기열

/proc - 가상 파일 시스템

/proc는 실제 디스크에 존재하지 않는 가상 파일 시스템입니다. 커널이 실시간으로 생성하는 시스템 정보를 파일 형태로 제공합니다:

cat /proc/cpuinfo    # CPU 정보
cat /proc/meminfo    # 메모리 정보
cat /proc/version    # 커널 버전
cat /proc/loadavg    # 시스템 부하

3. 파일 시스템 유형

3.1 Linux에서 사용되는 파일 시스템

Linux는 다양한 파일 시스템을 지원합니다:

  • ext4: 가장 널리 사용되는 Linux 파일 시스템입니다. 안정적이고 성숙한 기술입니다.
  • XFS: 대용량 파일과 높은 성능이 필요한 환경에 적합합니다. RHEL 계열의 기본 파일 시스템입니다.
  • Btrfs: 스냅샷, 압축, 서브볼륨 등 고급 기능을 제공합니다.
  • ZFS: 데이터 무결성과 볼륨 관리에 강점이 있습니다.

3.2 파일 시스템 확인 명령어

# 마운트된 파일 시스템 확인
df -Th

# 특정 디렉토리의 파일 시스템 확인
stat -f /home

# 블록 장치 정보 확인
lsblk -f

4. 기본 파일/디렉토리 명령어

4.1 탐색 명령어

# 현재 디렉토리 확인
pwd

# 디렉토리 이동
cd /var/log          # 절대 경로로 이동
cd ..                # 상위 디렉토리로 이동
cd ~                 # 홈 디렉토리로 이동
cd -                 # 이전 디렉토리로 이동

# 디렉토리 내용 보기
ls                   # 기본 목록
ls -l                # 상세 정보 (권한, 소유자, 크기, 날짜)
ls -la               # 숨김 파일 포함
ls -lh               # 사람이 읽기 쉬운 크기 표시
ls -lt               # 시간순 정렬

4.2 파일/디렉토리 조작

# 디렉토리 생성
mkdir mydir                    # 단일 디렉토리 생성
mkdir -p parent/child/grand    # 중첩 디렉토리 한번에 생성

# 파일 생성 및 내용 확인
touch newfile.txt              # 빈 파일 생성
cat file.txt                   # 파일 전체 내용 출력
head -n 20 file.txt            # 처음 20줄 출력
tail -n 20 file.txt            # 마지막 20줄 출력
tail -f /var/log/syslog        # 실시간 로그 모니터링

# 복사, 이동, 삭제
cp source.txt dest.txt         # 파일 복사
cp -r srcdir destdir           # 디렉토리 복사 (재귀)
mv oldname newname             # 이름 변경 또는 이동
rm file.txt                    # 파일 삭제
rm -r directory                # 디렉토리 삭제 (재귀)
rm -rf directory               # 강제 삭제 (주의!)

4.3 파일 검색

# find - 파일명으로 검색
find /var -name "*.log"                    # 확장자로 검색
find /home -type f -mtime -7               # 7일 이내 수정된 파일
find / -size +100M                         # 100MB 이상 파일

# locate - 데이터베이스 기반 빠른 검색
locate nginx.conf

# which / whereis - 실행 파일 위치
which python
whereis nginx

4.4 파일 내용 검색

# grep - 파일 내용 검색
grep "error" /var/log/syslog               # 특정 문자열 검색
grep -i "error" file.txt                   # 대소문자 무시
grep -r "pattern" /etc/                    # 디렉토리 재귀 검색
grep -n "pattern" file.txt                 # 줄 번호 표시
grep -v "exclude" file.txt                 # 패턴 제외

5. 파일 권한과 소유권 기초

5.1 권한 이해하기

ls -l 명령어의 출력을 살펴봅시다:

-rw-r--r-- 1 user group 1024 Jan 21 10:00 file.txt
drwxr-xr-x 2 user group 4096 Jan 21 10:00 directory

첫 번째 문자는 파일 유형을 나타냅니다:

  • - : 일반 파일
  • d : 디렉토리
  • l : 심볼릭 링크

다음 9자리는 권한을 나타냅니다 (3자리씩 소유자/그룹/기타):

  • r (read) : 읽기 권한 (값: 4)
  • w (write) : 쓰기 권한 (값: 2)
  • x (execute) : 실행 권한 (값: 1)

5.2 권한 변경 기초

# 숫자 방식
chmod 755 script.sh    # rwxr-xr-x
chmod 644 file.txt     # rw-r--r--

# 문자 방식
chmod u+x script.sh    # 소유자에게 실행 권한 추가
chmod g-w file.txt     # 그룹에서 쓰기 권한 제거
chmod o=r file.txt     # 기타 사용자 읽기만 허용

권한 관리에 대한 자세한 내용은 2편 "사용자와 권한 관리"에서 다룹니다.

6. 실습: 기본 서버 환경 탐색

새로운 Linux 서버에 접속했을 때 수행하면 좋은 기본 점검 명령어들입니다:

# 1. 시스템 정보 확인
uname -a                       # 커널 버전
cat /etc/os-release            # 배포판 정보
hostnamectl                    # 호스트명과 시스템 정보

# 2. 리소스 상태 확인
free -h                        # 메모리 사용량
df -h                          # 디스크 사용량
uptime                         # 가동 시간과 부하

# 3. 네트워크 정보
ip addr                        # IP 주소 확인
ss -tuln                       # 열린 포트 확인

# 4. 실행 중인 서비스
systemctl list-units --type=service --state=running

# 5. 최근 로그인 기록
last -n 10

결론: 다음 단계를 향해

이번 편에서는 Linux의 기본 개념과 파일 시스템 구조를 살펴보았습니다. Linux 서버 관리의 가장 기초가 되는 내용으로, 이 개념들을 확실히 이해해야 이후 내용을 효과적으로 학습할 수 있습니다.

핵심 정리:

  • Linux는 오픈소스 운영체제 커널이며, 다양한 배포판이 존재합니다.
  • FHS 표준에 따라 디렉토리 구조가 정해져 있습니다.
  • /etc는 설정, /var는 가변 데이터, /home은 사용자 데이터를 저장합니다.
  • 기본 명령어(ls, cd, cp, mv, rm, find, grep)를 숙달하는 것이 중요합니다.

다음 2편에서는 사용자와 권한 관리를 다룹니다. 사용자 생성, 그룹 관리, 상세한 권한 설정 방법을 학습합니다.