오늘은 Nutanix AOS 업그레이드 하면서 이슈사항을 하나 소개해 드립니다. 엔지니어라면 한 번쯤 겪을 수 있는 부분이기에 도움이 됩니다. 한번 저희 이야기를 들어보세요.
잘 돌아가던 LCM 업데이트, 왜 갑자기 뻗었을까?
AOS 6.5.3에서 6.10.1.6 LTS 버전으로 판올림을 진행하는 날이었다. 처음에는 분위기 진짜 나쁘지 않았지. 언제나 그렇듯 AOS 단은 아주 부드럽게 올라갔다. LCM 바가 쑥쑥 올라가는 걸 보면서 오늘은 야근 없이 조기 퇴근할지도 모른다는 헛된 희망을 품었다. 근데 꼭 이런 날 사고가 터진다. AHV 버전을 20220304.420에서 20230302.103014로 올리는 롤링 업그레이드 구간에 진입하자마자 노드들이 미친 듯이 에러를 뱉어내기 시작했다.
에러 메시지는 'ahv_reimage_success_check' 단계에서 멈춘 상태. 상태창에는 'Reimaging error:'라는 핏빛 텍스트가 깜빡거렸다. 진짜 등줄기에 식은땀이 확 흐르더라. 잘 돌아가던 가상머신(VM)들이 멈추는 건 아닌지 머릿속이 하얘지기 시작했다.
범인은 서버 안에 있었다 (진짜 어이없는 로그의 정체)
당장 뉴타닉스 글로벌 SRE 담당자를 호출해서 Zoom 미팅을 열고 이메일을 수십 통씩 주고받았다. 문제는 망할 사내 보안 정책. 로그 파일(PE.zip) 하나 외부로 반출하는데 결재가 꼬여서 시간이 하염 없이 지체되고 있었다.
금융권이나 대기업 폐쇄망에서 일해본 사람은 알 거다. 로그 하나 밖으로 빼내는 게 얼마나 피 말리는 짓인지. 글로벌 SRE는 화면 너머로 계속 "Can you upload the PE.zip?" 타령을 하고 있고, 나는 "보안팀 담당자가 자리를 비워서 승인이 늦어진다"는 구차한 변명만 파파고 돌려가며 더듬더듬 치고 있었다. Zoom 화면 속에는 숨 막히는 정적만 흘렀다. 고객사 담당자는 옆에서 한숨만 푹푹 쉬고, 나는 쓰린 속을 달래려 커피만 세 잔째 들이켰다. 시간은 벌써 자정을 향하고 있었다.
마냥 기다리다 미칠 것 같아서 정상적으로 붙은 노드랑 죽어버린 노드 설정 파일들을 하나씩 맨눈으로 뜯어보기 시작했다. 진짜 생노가다가 따로 없었지만 말야. 그러다 로그 모듈에서 이상한 흔적을 하나 발견했다. 백업 프로세스 트레이스백 기록에 선명하게 찍힌 UnicodeDecodeError. 리눅스 하부 커널 레벨 근처에서 유니코드 디코드 에러가 났다고?
범인은 진짜 어이없는 곳에 숨어 있었다. 호스트 서버 중 'xxx.xxx.xxx.136' IP를 가진 노드의 /etc/passwd 파일을 열어봤는데 내 눈을 의심했다. 리눅스 시스템 계정 파일 한복판에 한글 텍스트가 떡하니 박혀있는 거다.
![]() |
| /etc/passwd 에 한글 텍스트 확인 장면 |
왜 하이퍼바이저 코어 파일에 한글이 들어갔을까?
이게 어떻게 된 일인가 역추적해 봤더니 원인은 HIWARE(하이웨어) 시스템이었다. 보통 금융권이나 엔터프라이즈 환경에서 서버 접근제어 솔루션으로 하이웨어를 많이 쓴다. 이 녀석이 계정을 연동해서 밀어 넣을 때, 담당자 이름이나 소속 부서명 같은 한글 정보를 디스크립션(Description) 필드에 그대로 때려 박아버린 거다.
Nutanix 업그레이드 스크립트는 내부적으로 파이썬(Python) 기반으로 동작한다. 환경 설정 파일을 백업하려고 파싱하는 과정에서 비ASCII(Non-ASCII) 문자인 한글을 만나니까 컥 하고 목에 걸려버린 셈이다. 그냥 스크립트가 멈춰버렸고 그게 Reimaging error로 직결된 거다.
아니, 글로벌 벤더에서 만든 무결성 높은 스크립트가 한글 주석 하나에 뻗어버리다니. 파이썬 유니코드 예외 처리 좀 꼼꼼하게 해두지 하는 억울한 원망도 살짝 들더라.
이 경험을 통해 알게 된 시스템 업그레이드 실패 피하는 꿀팁
- 업그레이드 전 /etc/passwd 검증은 필수: LCM 돌리기 전에 무조건 전체 호스트 노드의 계정 파일을 까서 한글이나 특수문자가 섞인 계정 설명란이 없는지 눈으로 직접 확인해라. 스크립트 하나 짜두거나 미리확인만 해도 문제가 발생하지 않는다.
- 가장 안전한 한글 제거 명령어: vim으로 직접 파일을 수정하다가 오타라도 나면 시스템 부팅 자체가 안 될 수 있다. 터미널에
sudo usermod -c "" 사용자명이거 한 줄만 쳐라. 해당 계정의 코멘트(디스크립션) 정보만 깔끔하게 날려준다.- 서드파티 솔루션 연동 정책 점검: HIWARE뿐만 아니라 다른 계정 관리 솔루션도 마찬가지다. 리눅스 코어 시스템이랑 연동할 때는 제발 시스템 계정 생성 규칙을 '영문/숫자 전용'으로 철저히 통제해야 한다.
- 벤더사 지원을 위한 로그 반출 루트 확보: 폐쇄망 환경이라면 장애 발생 시 로그 반출 프로세스부터 미리 뚫어놔라. 안 그러면 이번 사태처럼 멍하니 아까운 시간만 날린다.
문제 해결, 그리고 지친 퇴근길
고객사 담당자와 둘이서 너무 어이가 없어서 헛웃음만 터뜨리다가 바로 조치에 들어갔다. 한글이 들어간 주석 줄을 명령어로 날려버리고 떨리는 손으로 업데이트를 재시작 했다.
솔직히 엔터 칠 때 손에 땀이 흠뻑 났다. 여기서 또 뻗으면 오늘 진짜 서버실 바닥에서 침낭 펴고 자야 한다는 생각뿐이었다. 그런데 놀랍게도 아까 ahv_reimage_success_check에서 피를 토하며 죽어버리던 그 마의 구간을 아무 일 없었다는 듯이 휙 넘어가 버렸다.
70%... 82%... 95%... 모니터에 표시되는 초록색 프로그레스 바가 그렇게 예뻐 보일 수가 없었지.ㅋ 마침내 100% 완료 메시지가 떴다. 롤링 업그레이드가 쭉쭉 진행되고, 죽었던 AHV 노드가 정상적으로 클러스터에 다시 조인하는 걸 확인하는 순간, 둘 다 약속이라도 한 듯이 의자에 등을 푹 기댔다. 진짜 허무함의 극치였다.
며칠을 피 말리게 했던 이 지원 케이스는 남은 노드들까지 스무스하게 업데이트를 마치자마자 장애심각도를 가장 낮은 P3로 내리고 쿨하게 Closed 처리해 버렸다.
인프라 환경이라는 게 늘 이렇다. 공식 릴리즈 노트를 수백 번 정독하고 패치 매뉴얼을 달달 외워도, 현장에서는 보안 솔루션이 무심코 밀어 넣은 한글 주석 한 줄 때문에 거대한 서버가 멈춘다. 이런 날 것의 변수들은 진짜 서버실 바닥에서 구르며 직접 두들겨 맞기 전까지는 절대 배울 수 없는 노하우다.
현장의 이슈사항을 최대한 전달하려고 작성해봤습니다. 많은 분들에게 도움이 되었으면 합니다.

0 댓글