리눅스

[Linux: 수업3주차] 시스템 관리

palantirops 2026. 1. 22. 18:55

1. 시스템 서비스 제어 (systemctl)

systemd는 리눅스의 모든 프로세스를 관리하는 최상위 부모 프로세스입니다.

주요 명령어

systemctl start [서비스명]          # 서비스 즉시 시작
systemctl stop [서비스명]           # 서비스 즉시 종료
systemctl restart [서비스명]        # 서비스 재시작
systemctl reload [서비스명]         # 설정만 다시 읽기 (서비스 중단 없음)
systemctl enable [서비스명]         # 부팅 시 자동 시작
systemctl enable --now [서비스명]   # 자동 시작 설정 + 즉시 시작
systemctl daemon-reload             # 설정 파일 변경 시 systemd 반영

부팅 모드 설정

systemctl set-default multi-user.target    # CLI 모드로 부팅
systemctl set-default graphical.target     # GUI 모드로 부팅

2. 작업 스케줄링 (at, cron)

at - 1회성 예약 작업

at now + 2 minutes                 # 2분 후 실행
at 10:30                           # 오늘 10시 30분 실행
atq                                # 예약된 작업 목록 확인
atrm [작업번호]                     # 예약 작업 삭제

사용 제한: /etc/at.allow (허용), /etc/at.deny (차단)
Tip: 둘 다 있으면 at.allow가 우선, 양쪽에 있으면 허용됨

cron - 반복 예약 작업

crontab -e                         # 크론탭 편집
crontab -l                         # 크론탭 목록 확인

설정 형식: 분(0-59) 시(0-23) 일(1-31) 월(1-12) 요일(0-6)

0 4 1 * *        # 매월 1일 새벽 4시
30 1 * * 6       # 매주 토요일 새벽 1시 30분
*/30 * * * *     # 30분마다 실행

스크립트 예약 시 주의사항

  1. 절대 경로 사용: /home/user/shell.sh
  2. 실행 권한 부여: chmod +x shell.sh
  3. 출력 리다이렉션: >> /home/user/shell.log (성공 여부 확인용)

3. 하드디스크 추가 및 파일시스템 관리

표준 디스크 추가 절차

# 1. 디스크 확인
lsblk                              # 디스크 구조 확인
ls /dev/sd*                        # 디스크 목록 확인

# 2. 파티션 생성
sudo fdisk /dev/nvme0n2            # MBR 방식 (2TB 이하)
# n → p → 1 → Enter → +200M → w

# 3. 파일시스템 포맷
sudo mkfs.xfs /dev/nvme0n2p1       # XFS 포맷
sudo mkfs -t ext4 /dev/nvme0n2p1   # EXT4 포맷

# 4. 마운트 포인트 생성 및 마운트
sudo mkdir /mydata
sudo mount /dev/nvme0n2p1 /mydata

# 5. 영구 마운트 설정 (/etc/fstab)
/dev/nvme0n2p1  /mydata  xfs  defaults  0  0

# 6. 설정 반영
sudo systemctl daemon-reload

핵심 확인 명령어

lsblk                              # 디스크 구조 및 마운트 지점
df -Th                             # 전체 디스크 용량 및 타입
du -sh /경로                       # 특정 디렉토리 사용량

4. 디스크 쿼터 (Disk Quota)

사용자별 디스크 사용량을 제한하여 서버 자원 고갈 방지

제한 방식

  • Block Quota: 용량 제한 (KB 단위)
  • Inode Quota: 파일 개수 제한
  • Soft Limit: 경고 단계 (유예 기간 있음)
  • Hard Limit: 절대 초과 불가능

설정 프로세스

# 1. /etc/fstab 수정 (usrquota 옵션 추가)
/dev/nvme0n2p1  /mnt/mp1  xfs  defaults,usrquota  0  0

# 2. 재마운트
sudo mount -o remount /mnt/mp1

# 3. 쿼터 DB 생성
sudo quotacheck -cu /mnt/mp1       # aquota.user 파일 생성

# 4. 쿼터 활성화
sudo quotaon /mnt/mp1

# 5. 사용자 할당
sudo edquota -u username             # 대화형 편집
sudo setquota -u username 10000 20000 0 0 /mnt/mp1  # 명령어형

# 6. 설정 복사
sudo edquota -p sourceuser targetuser       # sourceuser 설정을 targetuser에 복사

# 7. 상태 확인
sudo repquota -a                   # 전체 사용자 쿼터 확인

Tip: 사용자가 파일을 한 번이라도 생성해야 목록에 나타남


5. 패키지 관리 (dnf)

로컬 저장소 설정 (인터넷 없는 환경)

# 1. 기존 저장소 백업
sudo mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/

# 2. 로컬 저장소 생성 (/etc/yum.repos.d/local.repo)
[LocalRepo]
name=Local Repository
baseurl=file:///run/media/admin/Rocky-9-7-aarch64-dvd
enabled=1
gpgcheck=0

# 3. 패키지 설치
sudo dnf install httpd mariadb-server

dnf 무한 로딩 해결

pkill -9 dnf                       # dnf 강제 종료
sudo rm -f /var/run/dnf.lock       # 락 파일 삭제

6. 쉘 스크립트 핵심 문법

#!/bin/bash

# 디렉토리 존재 확인
if [ -d /home/user/lab3 ]; then
    echo "directory exists"
else
    mkdir -p /home/user/lab3                    # 부모 디렉토리까지 생성
    cp /usr/bin/x* /home/user/lab3/             # 와일드카드 복사
    find /etc -name "b*" -exec cp {} /home/user/lab3/ \; 2>/dev/null
fi

실행 방법

chmod +x shell.sh                  # 실행 권한 부여
./shell.sh                         # 현재 경로 명시 필수

7. 심볼릭 링크 & 특수 권한

심볼릭 링크 (소프트 링크)

ln -s /etc/hosts hosts.soft        # 원본이 삭제되면 링크 깨짐
ln /etc/hosts hosts.hard           # 하드 링크 (원본 삭제되도 유지)

특수 권한

권한 숫자 기호 위치 용도

SUID 4000 s 소유자 실행권한 일반 사용자가 root 권한으로 실행
SGID 2000 s 그룹 실행권한 그룹 권한 상속 (협업)
Sticky Bit 1000 t 기타 실행권한 본인 파일만 삭제 가능
chmod 4755 /usr/bin/passwd         # SUID 설정
chmod u+s /usr/bin/passwd          # 기호 방식
find / -perm -4000                 # SUID 파일 찾기

8. 리눅스 디렉토리 구조 (FHS)

핵심 디렉토리

/                  # 루트 (최상위)
├── /etc           # 모든 설정 파일 (/etc/nginx/nginx.conf)
├── /dev           # 하드웨어 장치 파일
├── /var           # 자주 변하는 데이터
│   ├── /var/www/html    # 웹 서버 소스 파일
│   └── /var/log         # 로그 파일 (에러 확인용)
├── /home          # 일반 사용자 홈 디렉토리
├── /root          # root 사용자 홈 디렉토리
├── /tmp           # 임시 파일 (재부팅 시 삭제)
├── /bin, /usr/bin # 일반 명령어 (ls, cp 등)
└── /sbin          # 시스템 관리자 명령어

파일 위치 찾기

which nginx                        # 실행 파일 위치
whereis nginx                      # 실행 파일 + 소스 + 매뉴얼

9. SELinux 보안 설정

getenforce                         # 현재 상태 확인
sudo setenforce 0                  # Permissive 모드 (경고만)
sudo setenforce 1                  # Enforcing 모드 (강제)

# 포트 허용 (예: 웹 서버 8888 포트)
sudo semanage port -a -t http_port_t -p tcp 8888

10. 권한 관리 핵심

sudo -i                            # root 계정 전환
chmod u+x,go+w testfile            # 복합 권한 설정
chmod go=rx testfile               # 절대 권한 설정
chown admin:admin testfile         # 소유자:그룹 변경
chgrp admin testfile               # 그룹만 변경

 


11. RAID

RAID란?

RAID (Redundant Array of Independent Disks)는 여러 개의 하드디스크를 하나로 묶어서 사용하는 기술입니다.

RAID의 목적

  • 데이터 안정성 향상 - 디스크 고장 시 데이터 보호
  • 성능 향상 - 여러 디스크에 데이터를 분산 저장
  • 용량 확장 - 여러 디스크를 하나의 큰 저장공간으로 활용

주요 RAID 레벨

RAID 0 (Striping)

  • 특징: 데이터를 여러 디스크에 분산 저장
  • 장점: 속도 빠름, 용량 100% 활용
  • 단점: 디스크 하나만 고장나도 모든 데이터 손실
  • 용량: 디스크 개수 × 디스크 용량
  • 예시: 1GB + 1GB = 2GB 사용 가능

RAID 1 (Mirroring)

  • 특징: 같은 데이터를 2개 디스크에 동일하게 저장
  • 장점: 디스크 하나 고장나도 데이터 안전
  • 단점: 용량 50%만 사용 가능
  • 용량: 전체 용량의 50%
  • 예시: 1GB + 1GB = 1GB 사용 가능

RAID 5

  • 특징: 최소 3개 디스크 필요, 패리티 정보 분산 저장
  • 장점: 속도와 안정성의 균형, 디스크 1개 고장 복구 가능
  • 단점: 쓰기 속도가 약간 느림
  • 용량: (디스크 개수 - 1) × 디스크 용량
  • 예시: 1GB + 1GB + 1GB = 2GB 사용 가능

RAID 6

  • 특징: 최소 4개 디스크 필요, 패리티 정보 2중 저장
  • 장점: 디스크 2개까지 고장나도 복구 가능
  • 단점: RAID 5보다 쓰기 속도 느림
  • 용량: (디스크 개수 - 2) × 디스크 용량

RAID 10 (1+0)

  • 특징: RAID 1과 RAID 0의 조합, 최소 4개 디스크 필요
  • 장점: 빠른 속도 + 데이터 안정성
  • 단점: 용량 50%만 사용
  • 용량: 전체 용량의 50%

정리

RAID 레벨 선택 가이드:

RAID 레벨 최소 디스크 용량 효율 속도 안정성 추천 용도

RAID 레벨 최소 디스크 용량효율 속도 안정성 추천용도
RAID 0 2개 100% ⭐⭐⭐ 임시 데이터, 속도 중요
RAID 1 2개 50% ⭐⭐ ⭐⭐⭐ 중요 데이터 백업
RAID 5 3개 67~90% ⭐⭐ ⭐⭐ 범용 서버
RAID 6 4개 50~88% ⭐⭐ ⭐⭐⭐ 고가용성 필요 시
RAID 10 4개 50% ⭐⭐⭐ ⭐⭐⭐ 데이터베이스 서버

 

주의사항: RAID는 백업을 대체할 수 없습니다! 중요한 데이터는 반드시 별도로 백업하세요.