26. Ubuntu Server의 일반적인 문제 해결: 실용 가이드

소개

Ubuntu Server는 신뢰할 수 있고 널리 사용되는 Linux 배포판이지만, 가장 안정적인 시스템도 성능에 영향을 미치거나 운영을 중단시키는 문제에 직면할 수 있습니다. 일반적인 문제를 해결하는 방법을 이해하는 것은 가동 시간을 유지하고 원활한 기능을 보장하는 데 매우 중요합니다. 이 가이드 “Ubuntu Server의 일반적인 문제 해결” 에서는 부팅 실패, SSH 연결 오류, 네트워크 문제 등과 같은 빈번한 문제를 진단하고 해결하는 실용적인 기법을 살펴보겠습니다. 또한 시스템 로그를 효과적으로 활용하여 문제의 근본 원인을 파악하고 서버를 최적의 성능으로 복원하는 방법도 배우게 됩니다.


이전 문서:

01. Ubuntu Server 소개 – SysOSX: AI & Cloud

02. 첫 Ubuntu Server 설정 방법: 초보자 가이드 – SysOSX: AI & Cloud

03.Ubuntu Server를 위한 Linux 명령줄 익히기 – SysOSX: AI & Cloud

04. Ubuntu Server에서 사용자 및 권한 관리하기: 종합 가이드 – SysOSX: AI & Cloud

05. Ubuntu Server를 위한 네트워킹 기초: 종합 가이드 – SysOSX: AI & Cloud

06. Ubuntu Server에 소프트웨어 설치 및 관리하기: 완전 가이드 – SysOSX: AI & Cloud

07.Ubuntu Server 패치 및 업데이트하기: 종합 가이드 – SysOSX: AI & Cloud

08. Ubuntu Server 보호하기: 강화 및 보호를 위한 실용적인 단계 – SysOSX: AI & Cloud

09. Ubuntu 서버 감사 및 로깅

10. Ubuntu Server를 위한 시스템 모니터링 도구: 종합 가이드 – SysOSX: AI & Cloud

11. Ubuntu 서버를 위한 중앙 집중식 로깅: 필독 가이드 – SysOSX: AI & Cloud

12. Ubuntu Server 감사 및 규정 준수: 모범 사례 – SysOSX: AI & Cloud

13.Ubuntu Server 호스팅 및 웹 애플리케이션 설정하기: 완벽 가이드 – SysOSX: AI & Cloud

14. 하나의 Ubuntu Server에서 여러 웹사이트 호스팅하기: 유용한 팁 – SysOSX: AI & Cloud

15. Ubuntu Server에서 스토리지 및 디스크 관리하기: 간단 가이드 – SysOSX: AI & Cloud

16. Ubuntu Server에서 파일 공유 서비스 설정하기: 완전 가이드 – SysOSX: AI & Cloud

17. Ubuntu에서 안전한 데이터베이스 서버 설정하기: MySQL 대 MariaDB – SysOSX: AI & Cloud

18. Ubuntu Server에서 LVM 구성 및 사용 방법: 종합 가이드 – SysOSX: AI & Cloud

19. KVM을 이용한 가상화 소개: Ubuntu Server 초보자 가이드 – SysOSX: AI & Cloud

20. Ubuntu Server에 Docker 설치 방법: 컨테이너화 단계별 가이드 – SysOSX: AI & Cloud

21. LXD 시작하기: 손쉽게 컨테이너 설치하기 + 치트 시트 – SysOSX: AI & Cloud

22. Ubuntu Server에서 Podman 시작하기: 완전 가이드 – SysOSX: AI & Cloud

23. 클라우드에 Ubuntu Server 배포하기: 단계별 가이드 – SysOSX: AI & Cloud

24. Ansible로 Ubuntu Server 설정 자동화하기: 실용 가이드 – SysOSX: AI & Cloud

25.Ubuntu Server 22.04에서 24.04로 업그레이드하기: 단계별 가이드 – SysOSX: AI & Cloud


목차


일반적인 Ubuntu Server 문제와 해결 방법

1. 부팅 문제

부팅 문제는 손상된 파일, 하드웨어 오류, 구성 오류로 인해 발생할 수 있습니다.

증상:

  • 서버가 부팅되지 않고 빈 화면이나 오류 메시지가 표시됩니다.
  • GRUB 메뉴에 액세스할 수 없거나 표시되지 않습니다.
  • 시작 중 커널 패닉 오류가 나타납니다.

문제 해결 단계:

1단계: GRUB 메뉴 액세스하기

서버를 다시 시작하고 Shift 키(UEFI 시스템에서는 Esc 키)를 누른 상태로 GRUB 메뉴에 액세스합니다.

2단계: 복구 모드로 부팅하기

다음을 선택합니다. Advanced Options > Recovery Mode 을(를) 선택하여 문제 해결을 위한 최소 환경으로 부팅합니다.

3단계: 시스템 로그 확인하기

다음을 검사합니다. 시스템 로그 에서 부팅 프로세스와 관련된 오류를 확인합니다.

sudo journalctl -b  

커널 모듈, 디스크 탑재, 서비스와 관련된 오류나 경고를 찾습니다.

4단계: 손상된 패키지 복구하기

손상된 패키지를 수정하려면 다음 명령을 실행합니다.

sudo apt update  
sudo apt install --fix-broken  

5단계: GRUB 다시 설치하기

GRUB이 손상된 경우 다시 설치합니다.

sudo grub-install /dev/sda  
sudo update-grub  

6단계: 디스크 상태 확인하기

다음을 사용합니다. fsck 을(를) 사용하여 디스크 오류를 확인하고 복구합니다.

sudo fsck /dev/sda  


2. SSH 오류

SSH 오류로 인해 서버에 원격으로 액세스할 수 없어 관리 및 자동화 작업이 중단될 수 있습니다.

증상:

  • SSH를 통해 서버에 연결할 수 없습니다.
  • “Connection refused” 또는 “Permission denied” 오류.
  • SSH가 멈추거나 시간 초과됩니다.

문제 해결 단계:

1단계: SSH 서비스 확인하기

SSH 서비스가 실행 중인지 확인합니다.

sudo systemctl status ssh  

서비스가 비활성화된 경우 시작합니다.

sudo systemctl start ssh  

2단계: SSH 로그 확인하기

자세한 오류 메시지를 확인하려면 SSH 로그를 검사합니다.

sudo tail -n 50 /var/log/auth.log  

일반적인 문제는 다음과 같습니다.

  • 인증 실패.
  • fail2ban 또는 방화벽 규칙으로 인한 IP 주소 차단.
3단계: 방화벽 규칙 확인하기

방화벽이 SSH 트래픽을 허용하는지 확인합니다.

sudo ufw allow OpenSSH  
sudo ufw status  

4단계: SSH 구성 검사하기

SSH 구성 파일에서 오류를 확인합니다.

sudo nano /etc/ssh/sshd_config  

변경한 뒤 SSH를 다시 시작합니다.

sudo systemctl restart ssh  

5단계: 네트워크 연결 확인하기

서버에 연결할 수 있는지 확인합니다.

ping <server-ip>  


3. 네트워크 연결 문제

네트워크 문제로 인해 서버가 인터넷에 액세스하거나 다른 장치와 통신하지 못할 수 있습니다.

증상:

  • 외부 웹사이트나 다른 서버에 ping을 보낼 수 없습니다.
  • DNS 확인 오류.
  • 네트워크 인터페이스가 다운되었거나 잘못 구성되었습니다.

문제 해결 단계:

1단계: 네트워크 인터페이스 확인하기

활성 네트워크 인터페이스를 나열합니다.

ip a  

인터페이스가 다운된 경우 활성화합니다.

sudo ip link set <interface-name> up  

2단계: 네트워크 오류 로그 확인하기

잠재적인 문제를 확인하려면 네트워크 관련 로그를 검사합니다.

sudo journalctl -u systemd-networkd

3단계: IP 구성 확인하기

서버의 IP 주소, 게이트웨이, DNS 설정을 확인합니다.

cat /etc/netplan/*.yaml  

구성이 잘못된 경우 파일을 편집하고 변경 사항을 적용합니다.

sudo nano /etc/netplan/*.yaml  
sudo netplan apply  

Netplan 구성 예시:
network:  
  version: 2  
  ethernets:  
    eth0:  
      dhcp4: true  

4단계: DNS 확인 테스트하기

DNS 확인을 검증합니다.

nslookup google.com  

DNS 확인에 실패하면 다음 파일을 업데이트하세요. /etc/resolv.conf (유효한 DNS 서버 사용):

nameserver 8.8.8.8  
nameserver 8.8.4.4  


4. 디스크 공간 문제

디스크 공간이 부족하면 애플리케이션이 충돌하거나 업데이트가 중단될 수 있습니다.

증상:

  • “No space left on device” 오류.
  • 서버가 응답하지 않습니다.

문제 해결 단계:

1단계: 디스크 사용량 확인하기

다음을 사용합니다. df 을(를) 사용하여 디스크 사용량을 확인합니다.

df -h  

2단계: 큰 파일 식별하기

디스크 공간을 차지하는 큰 파일을 찾습니다.

sudo du -ah / | sort -rh | head -n 10  

3단계: 로그 파일 크기 확인하기

로그 파일이 과도하게 커질 수 있습니다. 다음을 확인하세요. /var/log 에서 크기가 큰 로그를 확인합니다.

sudo du -sh /var/log/*  

오래된 로그를 제거하거나 보관합니다.

sudo rm -rf /var/log/*.gz  
sudo rm -rf /var/log/*.log.old  

4단계: 디스크 공간 확장하기

디스크가 가득 찬 경우 볼륨을 확장합니다(AWS, Azure, GCP와 같은 클라우드 플랫폼에서는 디스크 크기 조정이 가능합니다).


5. 패키지 설치 오류

패키지 설치 오류는 손상된 종속성이나 리포지토리 문제로 인해 발생할 수 있습니다.

증상:

  • 설치 중 “Unable to locate package” 또는 “Dependency errors”.

문제 해결 단계:

1단계: 패키지 오류 로그 확인하기

다음 로그를 검사합니다. apt 로그에서 자세한 오류를 확인합니다.

sudo tail -n 50 /var/log/apt/history.log  

2단계: 패키지 인덱스 업데이트하기

패키지 인덱스가 최신 상태인지 확인합니다.

sudo apt update  

3단계: 손상된 종속성 수정하기

종속성 문제를 해결하려면 다음 명령을 실행합니다.

sudo apt install --fix-broken  

4단계: 누락된 리포지토리 추가하기

패키지를 사용할 수 없는 경우 필요한 리포지토리를 추가합니다.

sudo add-apt-repository universe  
sudo apt update  


6. 높은 CPU 또는 메모리 사용량

과도한 리소스 사용은 성능 저하와 느린 응답 시간을 유발할 수 있습니다.

증상:

  • 서버가 응답하지 않습니다.
  • 애플리케이션이 충돌하거나 시간 초과됩니다.

문제 해결 단계:

1단계: 리소스 사용량 모니터링하기

다음을 사용합니다. top 또는 htop 을(를) 사용하여 CPU 및 메모리 사용량을 모니터링합니다.

top  

2단계: 애플리케이션 오류 로그 확인하기

다음 위치의 애플리케이션별 로그를 검사합니다. /var/log 에서 높은 리소스 사용량을 유발하는 오류를 확인합니다.

3단계: 리소스를 많이 사용하는 프로세스 식별하기

과도한 리소스를 사용하는 프로세스를 찾습니다.

ps aux --sort=-%cpu | head -n 10  
ps aux --sort=-%mem | head -n 10  

4단계: 불필요한 프로세스 종료하기

리소스를 많이 사용하는 프로세스를 종료합니다.

sudo kill <pid>  


문제 해결을 위한 로그 활용

로그는 서버 문제를 해결할 때 가장 유용한 도구 중 하나입니다. 일반적인 문제에 대한 로그를 확인하는 방법은 다음과 같습니다.

  1. 시스템 로그: sudo journalctl -xe 시스템 수준 오류 및 경고에 대한 자세한 로그를 제공합니다.
  2. 인증 로그: sudo tail -n 50 /var/log/auth.log SSH 및 로그인 관련 문제를 진단하는 데 유용합니다.
  3. 애플리케이션별 로그:
    다음을 확인합니다. /var/log 에서 애플리케이션별 로그를 확인합니다(예: Apache, MySQL).
  4. 커널 로그: sudo dmesg 커널 관련 메시지를 표시하며 하드웨어 및 부팅 문제에 유용합니다.

결론

Ubuntu Server 문제를 해결하려면 문제를 진단하고 해결하기 위한 체계적인 접근 방식이 필요합니다. 이 가이드에서는 다음을 다루었습니다.

  • 부팅 문제, SSH 오류, 네트워크 연결 문제 해결.
  • 디스크 공간 및 패키지 설치 오류 수정.
  • 문제를 진단하기 위한 로그의 효과적인 활용.

이러한 단계를 따르고 로그를 활용하면 서버 문제를 효율적으로 식별하고 수정하여 안정적이고 신뢰할 수 있는 Ubuntu Server 환경을 보장할 수 있습니다.

댓글 남기기