[CentOS Stream 9] kernel 또는 systemd를 갱신한 뒤 운영체제 망가짐

  CentOS Stream 9을 쓰고 있던 웹 서버에서 dnf로 커널(kernel)을 5.14.0-412.el9으로 갱신(업데이트)했더니, 운영체제 명령어를 쓸 수 없는 상태로 빠졌다. SSH로 접속하려고 하면 "Network error: Connection refused"라고 뜨고 접속할 수 없었다.

PuTTY Fatal Error - Network error: Connection refused

  이 오류가 뜬다면 HTTP를 비롯한 다른 포트를 쓰는 서비스도 모조리 먹통이 된다. 쓸 수 있는 상태로 부팅이 되는 때가 낮은 확률로 있긴 있었지만, 운영체제를 다시 띄우면 먹통인 상태로 돌아간다.

  dnf로 커널 또는 systemd를 새 판으로 올렸을 때에 이 문제가 나타나는 것 같다. 글쓴이만 겪는 문제인지도 모르지만, 같은 갱신 작업만 하면 같은 일이 거듭 벌어지고 있다. 혹시나 램 용량이 모자라거나 다른 쪽에서 작업이나 설정을 잘못해서 그런 것은 아닌지 확인해 보고 있지만 아직까지는 별다른 원인을 찾지 못했다.주1

  CentOS 8까지는 RHEL보다 업데이트 지원이 늦는 대신에 높은 안정성을 기대할 수 있었는데, Centos Stream 9은 RHEL의 시험판 성격이어서 높은 안정성은 바랄 수 없다. CentOS Stream 9을 쓰는 서버에서는 보완판이 나오자마자 갱신 작업을 하는 것은 위험한 일인 것 같고, 시험 기간을 두면서 조심해야 할 것 같다.

  아래는 dnf 명령으로 커널을 갱신했을 때에 Input/output error 등이 있어나며 운영체제의 명령어를 쓸 수 없게 먹통이 되는 모습이다.

more..

more..

more..

▣ 해결책 (2024.2.5)

systemctl disable dnf-makecache.timer
systemctl stop dnf-makecache.timer
sysctl vm.swappiness=60
dnf clean all
dnf update

  디스크 스왚을 막으려고 vm.swappiness를 0으로 두었는데 dnf-makecache.timer로 dnf가 주기에 따라 실행되는 것이 원인이었던 것 같다. CentOS Stream 9에서는 vm.swappiness 값을 0으로 놓으면 기본 메모리가 모자랄 때 스왚 메모리가 넉넉히 있어도 프로그램 실행이 중도에 멈추곤 한다.주2 CentOS 7에서는 문제를 겪지 않았는데, dnf가 실행되다가 도중에 멈춘 적이 있을 때에 dnf에 쌓인 캐시 정보가 깨진 것 때문에 말썽이 난 것 같다.

  위처럼 디스크 스와핑이 일어나게 하고 dnf에 쌓인 정보를 말끔히 비운 뒤에 dnf를 실행하면 잘 되는 것 같다.

  다만 이미 dnf에서 오류가 나서 운영체제의 명령어를 쓸 수 없는 상태에 빠지고 나면 이 해결책이 뜻이 없다. 운영체제가 아직 깨지지 않았거나 깨지지 않은 운영체제를 미리 여벌뜨기(백업)해 두어서 다시 불러올 수 있을 때에 뜻이 있다.

※ 교훈(?)

  • CentOS Stream 9 쓰면서 백업을 게을리하지 않아야 함
    (CentOS 7 때처럼 마음놓고 쓰다가 큰 코 다칠 수 있음)
  • dnf나 yum을 쓸 때 특히 조심할 듯
  • 램 용량이 적은 환경에서 vm.swappiness 값에 주의해야 (0으로 두면 위험함)

※ 바뀐 vm.swappiness=0의 뜻 (2024.2.13)

  • vm.swappiness=0은 스왚 파일을 되도록 만들지 않되 전혀 만들지 않는다는 뜻은 아니었지만, 리눅스 커널 3.5-rc1부터 vm.swappiness=0은 스왚 파일을 전혀 만들지 않는다는 뜻으로 바뀜
    (참고 : Solved: Why not set swappiness to zero? - Cloudera Community - 149228)
  • 예전 리눅스 커널에서의 vm.swappiness=0은 요즘 리눅스 커널에서의 vm.swappiness=1와 비슷하다고 하지만, 위에서 겪은 것처럼 요즘 리눅스 커널에서 메모리 할당에 문제가 생기므로 설정한 효과가 똑같지 않음

more..

〈주석〉
  1. 쓰고 있는 호스팅 업체(아마존 라이트세일) 쪽 문제도 의심해 보았지만, 아직 확실히 아는 것은 없다. back
  2. vm.swappiness=1일 때에는 프로그램은 잘 실행되는 것 같지만, dnf에서 메모리 할당이 잘 되지 못하는 것 같은 정황이 보인 적은 있었다. back
글 걸기 주소 : 이 글에는 글을 걸 수 없습니다.

덧글을 달아 주세요