EC2 RHEL 환경에서 failed to load selinux policy freezing 에러 해결 방법

EC2 RHEL 환경에서 failed to load selinux policy freezing 에러를 해결하는 방법에 대해서 정리해 봤습니다.
2023.09.04

안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 EC2 RHEL 환경에서 failed to load selinux policy freezing 에러를 해결하는 방법에 대해서 정리해 봤습니다.

에러 발생

EC2 인스턴스를 재기동 했더니 상태 검사에서 에러가 발생 했습니다.

시스템 로그를 확인해 보니 SELinux 관련하여 정책이 잘못 설정 되어있어 서버를 재기동할 수 없는 상태입니다.

그 외, 상태 검사 에러에 관해서는 아래 공식 문서를 참고해 주세요.

에러 해결 방법

현재 인스턴스 상태가「실행 중」이지만, 서버에 접속이 불가능한 상태입니다.

EC2 직렬 콘솔을 이용하더라도 failed to load selinux policy freezing가 똑같이 출력됩니다.

※ 인스턴스 타입에 따라 EC2 직렬 콘솔 이용이 불가능할 수도 있습니다.

이럴 경우 이미지와 같이 새로운 EC2 인스턴스를 생성한 다음, 에러가 발생한 EC2 인스턴스의 볼륨을 연결하고 내부 파일을 수정해야 합니다.

대략적인 작업 순서는 다음과 같습니다.

  • 에러가 발생한 EC2 인스턴스 중지
  • EC2 인스턴스 볼륨 분리
  • config 파일을 수정하기 위한 EC2 인스턴스 생성
  • 생성한 EC2 인스턴스에 에러가 발생한 볼륨 연결
  • 볼륨 마운트 작업 실시
  • config 파일 수정
  • EC2 인스턴스에서 볼륨을 분리
  • 에러가 발생한 EC2 인스턴스에 볼륨 연결
  • 접속 확인

볼륨 연결

먼저 에러가 발생한 EC2 인스턴스를 중지시킵니다.

이어서 에러가 발생한 인스턴스의 볼륨을 분리합니다.

※ 만약을 위해 해당 볼륨의 스냅샷을 생성해두는 것이 좋으며, 볼륨을 다시 에러가 발생했던 인스턴스에 연결해야 하므로 디바이스 이름도 기억해둡니다.

분리한 볼륨을 연결할 EC2 인스턴스를 생성합니다.

새로 생성한 EC2 인스턴스에 에러가 발생한 볼륨을 연결합니다.

볼륨 마운트 및 config 수정

볼륨 마운트는 기본 아래 블로그의 절차를 따르고 있습니다.

[ec2-user@ip-xx-x-xx-xxx ~]$ lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0   8G  0 disk 
`-xvda1 202:1    0   8G  0 part /
xvdf    202:80   0  10G  0 disk 
|-xvdf1 202:81   0   1M  0 part 
`-xvdf2 202:82   0  10G  0 part

연결된 볼륨을 확인해 보면 xvdf라는 추가 볼륨이 문제 없이 연결된 것을 확인할 수 있습니다.

[ec2-user@ip-xx-x-xx-xxx ~]$ sudo file -s /dev/xvdf2
/dev/xvdf2: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)

이어서 파일 시스템을 확인합니다.

/dev/xvdf2가 마운트 대상이 되므로, /dev/xvdf2의 파일 시스템을 확인합니다.

※ data라고만 표시되는 경우 파일 시스템을 생성해야 합니다.

[ec2-user@ip-xx-x-xx-xxx ~]$ sudo mkdir /data 
[ec2-user@ip-xx-x-xx-xxx ~]$ sudo mount /dev/xvdf2 /data 
[ec2-user@ip-xx-x-xx-xxx ~]$ dmesg |tail 
[    4.587955] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    4.753123] xfs filesystem being remounted at /tmp supports timestamps until 2038 (0x7fffffff)
[    4.816357] xfs filesystem being remounted at /var/tmp supports timestamps until 2038 (0x7fffffff)
[    7.426945] xfs filesystem being remounted at /tmp supports timestamps until 2038 (0x7fffffff)
[    7.447741] xfs filesystem being remounted at /var/tmp supports timestamps until 2038 (0x7fffffff)
[  616.587641] blkfront: xvdf: barrier or flush: disabled; persistent grants: disabled; indirect descriptors: enabled; bounce buffer: disabled;
[  616.616004]  xvdf: xvdf1 xvdf2
[ 1303.257735] XFS (xvdf2): Mounting V5 Filesystem
[ 1303.300186] XFS (xvdf2): Ending clean mount
[ 1303.309318] xfs filesystem being mounted at /data supports timestamps until 2038 (0x7fffffff)

파일 시스템 확인이 끝났다면, 마운트 작업을 실시합니다.

이어서 dmesg 명령어로 리눅스 커널 로그를 확인하여 제대로 마운트 됐는지 확인합니다.

[ec2-user@ip-xx-x-xx-xxx ~]$ sudo vi /data/etc/selinux/config

에러가 발생한 selinux의 config 파일을 수정합니다.

SELINUX 혹은 SELINUXTYPE의 설정값을 수정하고 저장합니다.

EC2 재기동 확인

수정이 끝났다면 볼륨을 분리합니다.

에러가 발생했던 EC2 인스턴스에 볼륨을 연결합니다.

EC2 인스턴스를 재기동 시켜 보면 상태 검사를 무사히 통과한 것을 확인할 수 있습니다.

EC2 인스턴스 접속도 가능한 것을 확인할 수 있습니다.

본 블로그 게시글을 보시고 문의 사항이 있으신 분들은 클래스메소드코리아 (info@classmethod.kr)로 연락 주시면 빠른 시일 내 담당자가 회신 드릴 수 있도록 하겠습니다 !