본문 바로가기

AWS

[AWS] Root Volume을 다른 EC2 Instance에 붙이기

반응형

1. 개요

  • EC2에서 작업을 하다가 Critical한 이슈가 발생한 경우, EC2 Instance에 접근을 못하는 경우 등 여러가지 이유로 Root Volume을 다른 Instance에 붙여서 복구 작업을 진행해야 하는 경우가 있다
  • 사람일은 누구나 모르기 때문에 Root Volume을 다른 Instance에 붙여서 원인을 파악한 이후 복구하는 방법에 대해 알아보도록 하겠다.

2. 실습

  • 실습하기 전에 알아두면 좋은 내용들에 대해서 링크를 걸어둠
    • EC2에 Attach되는 Storage들은 타입이 무엇인지, Root Volume 전용인지 등에 따라 다르게 부여된다.

실습 환경

Public Subnet에 있는 EC2 Instance 2대

  • A : 접속이 불가능하며, 복구해야 할 EC2
  • ⇒ Root Volume을 B에 붙일 것임
  • B : 접속이 가능하며, 해당 인스턴스에 A의 Root Volume을 임시 마운트시켜 복구할 예정

1. 인스턴스에 문제가 발생

  • 'A' 인스턴스의 ec2-user 디렉터리의 권한을 600으로 고의로 수정

  • Server refused our key 오류가 발생함
  • (ec2-user 홈 디렉터리 내부에 접근을 못하기 때문, 결국 다른 Instance에 Mount하여 복구를 해야 함)

2. 인스턴스 Stop한 이후 Volume 옮기기

  1. Instance 중지
  2. Root Volume 떼어내기 (인스턴스에 붙어 있는 Root Volume 정보 적어둘 것 => 나중에 다시 Root Volume을 붙일 때 동일한 Device Name (/dev/xvda)으로 붙여야 하기 때문 )
  3. 떼어낸 볼륨을 다른 Instance에 Attach하기

 

3. Mount하기

  1. 특정 디렉터리( ex> /mount )에 Mount를 할 것
sudo su -

mkdir /mount

mount /dev/xvdf1 /mount

 

  • 만약 다른 인스턴스의 Root Volume과 떼어낸 Volume의 UUID가 같을 경우, mount를 할 때 오류가 발생할 수 있다. 아래 blkid 명령어로 확인해 본 결과 UUID가 같았다
  • 그럴 경우, uuidgen 명령어로 새로운 UUID를 받아내고 xfs_admin 명령어를 통해 새로운 UUID를 기입해준다 (해당 파일시스템 타입이 xfs이기 때문에 xfs_admin 명령어를 사용했지만 ext4일 경우 다른 명령어로 작업을 수행할 수 있을 것임)

1. uuidgen으로 UUID 발급받은 이후 수동 기입

uuidgen

xfs_admin -U <<UUID>> /dev/nvme2n1

2. generate로 자동 UUID 발급받아 기입하기

xfs_admin -U generate /dev/xvdf1
  •  이후 mount 명령어로 떼어낸 볼륨을 마운트 할 수 있을 것임

  • UUID 변경 후 Mount할 경우, 이전의 UUID를 기억하고 있어야 한다. 모든 작업을 마친 이후 UUID를 다시 원상복구 시켜주어야 함 ⇒ 원상복구 시키지 않으면, /boot/grub2/grub.cfg 의 UUID값과 다르기 때문에 부팅이 되지 않고, Status Check를 통과하지 못한다.
  • 만약 UUID를 변경하고 싶지 않으면 아래의 명령어로 Mount하면 된다.
mount -o nouuid /dev/xvdf1 /mount

4. Trouble Shooting 후 나머지 작업

  • 마운트 디렉터리로 이동하여 원상복구 시켜줌

  • umount로 마운트 해제 ( UUID를 변경한 이후 Mount 했다면 이전 UUID로 복구시킬 것 )

  • 다른 인스턴스로부터 Volume을 Detach하기
  • Stop 시켰던 원래의 Instance에서 Volume 다시 붙이기

  • ( 기입해놨던 Device명인 /dev/xvda 그대로 다시 적어준다. )
  • 인스턴스 재기동 이후 접속 여부 및 변경되었는지 확인

 

 

 

 

 

 

반응형