오래된 Windows Server를 관리하다 보면 보안 취약점 조치 때문에 누적 업데이트를 직접 적용해야 하는 경우가 있다.
내가 관리하게 된 환경에서도 예전에 Fax 서버가 Windows Server로 운영되고 있었는데, 이전 담당자가 보안 취약점 조치를 위해 .msu 파일로 누적 업데이트를 진행하다가 OS가 정상적으로 올라오지 않는 문제가 발생한 적이 있었다.
결국 유지보수 업체에 연락해 대체 서버를 마련했고, 기존 서버 대신 대체 서버로 서비스를 운영하게 되었다고 들었다.
이 이야기를 듣고 나니 Windows Server 2012 R2 같은 오래된 서버에 누적 업데이트를 그냥 바로 적용하는 것은 생각보다 위험할 수 있다는 생각이 들었다.
그래서 비슷한 상황을 방지하기 위해 업데이트 전에 무엇을 확인해야 하는지 정리해보았다.
1. 누적 업데이트 전에 OS 상태부터 확인
가장 먼저 확인할 것은 현재 Windows 자체가 정상 상태인지다.
대표적으로 다음 명령을 사용할 수 있다.
sfc /scannow
sfc는 Windows 시스템 파일의 손상 여부를 확인하고, 복구 가능한 경우 자동으로 복구한다.
정상이라면 다음과 같은 결과가 나온다.
Windows Resource Protection did not find any integrity violations.
손상된 파일이 있었지만 복구가 완료되었다면 한 번 더 실행해서 최종적으로 이상이 없는지 확인하는 것이 좋다.
추가로 Windows Component Store 상태까지 확인하고 싶다면 다음 명령을 사용할 수 있다.
DISM /Online /Cleanup-Image /ScanHealth
SFC가 실제 시스템 파일을 검사한다면, DISM은 Windows 업데이트와 복구에 사용되는 Component Store 상태를
확인한다고 이해하면 된다.
Windows의 Component Store란?
Component Store는 Windows가 자기 자신을 설치·복구·업데이트하기 위해 보관해두는 시스템 구성요소 저장소이다.
Windows Server 2012 R2 기준에서는 아래의 경로가 핵심이다.
C:\Windows\WinSxS
위 경로에 Windows의 여러 버전의 시스템 파일, 역할/기능 설치에 필요한 구성요소,
업데이트 적용에 필요한 메타데이터 등이 들어 있다.
2. RestoreHealth는 무조건 실행할 필요는 없다
인터넷에서 Windows 업데이트 전 점검 방법을 찾아보면 다음 명령이 자주 나온다.
DISM /Online /Cleanup-Image /RestoreHealth
하지만 이 명령은 단순 점검이 아니라 손상된 Component Store를 실제로 복구하는 명령이다.
따라서
sfc /scannow 정상
DISM /ScanHealth 정상
이라면 굳이 RestoreHealth까지 실행할 필요는 없다.
반대로 SFC에서 손상 파일을 복구하지 못했거나 DISM 검사에서 Component Store 손상이 확인된다면
그때 RestoreHealth를 사용하는 것이 맞다.
3. SSU가 필요한지도 반드시 확인
Windows Server 2012 R2의 누적 업데이트를 수동으로 설치할 때는 SSU도 확인해야 한다.
SSU는 Servicing Stack Update의 약자로, 쉽게 말하면
Windows 업데이트를 설치해주는 내부 엔진 자체의 업데이트이다.
SSU
= 업데이트 설치 엔진
누적 업데이트
= 실제 보안 패치 및 버그 수정
Windows Server 2012 R2는 시기에 따라 SSU와 누적 업데이트가 서로 다른 .msu 파일로 제공되기도 한다.
따라서 최신 누적 업데이트를 바로 설치하기보다는, 해당 누적 업데이트의 Microsoft 문서에서 요구하는 SSU가 있는지 먼저 확인하는 것이 안전하다.
필요한 SSU가 있다면 보통 다음 순서로 진행한다.
SSU 설치
↓
누적 업데이트 설치
↓
재부팅
4. 업데이트 전에는 복구 가능 상태를 만들어야 한다
OS 업데이트에서 가장 중요한 것은 결국 실패했을 때 되돌릴 수 있느냐이다.
특히 물리 서버라면 가상화 환경처럼 Snapshot으로 쉽게 되돌릴 수 없기 때문에 더 신중해야 한다.
업데이트 전에는 최소한 다음을 확인하는 것이 좋다.
- C: 드라이브 여유 공간
- 현재 서비스 정상 여부
- 시스템 파일 손상 여부
- Component Store 상태
- 필요한 SSU 설치 여부
- OS 전체 복구가 가능한 백업 존재 여부
가능하다면 업데이트 전에 한 번 정상 재부팅을 해보는 것도 좋다.
오랫동안 재부팅하지 않은 서버는 업데이트 후 처음 재부팅하면서 기존 문제가 같이 나타나는 경우가 있기 때문이다.
5. 실제 업데이트는 한 단계씩 진행
가장 피하고 싶은 방식은 여러 개의 .msu 파일을 한꺼번에 설치한 뒤 마지막에 한 번 재부팅하는 것이다.
가능하면 다음과 같이 단계별로 진행하는 것이 좋다.
1. OS 상태 점검
2. 백업 확인
3. SSU 필요 여부 확인
4. SSU 설치
5. 누적 업데이트 설치
6. 재부팅
7. 서비스 정상 여부 확인
msu 파일이 있다고 바로 설치하는 것이 아니라, 현재 OS가 업데이트를 받을 수 있는 정상 상태인지 먼저 확인해야 한다.
특히 이전에 실제로 누적 업데이트 후 OS가 정상적으로 올라오지 않아 대체 서버까지 투입했던 사례가 있었던 만큼, 운영 서버에서는 업데이트 자체보다 업데이트 전 점검과 복구 준비가 더 중요하다.