접속 불가 상태의 LightSail 인스턴스에서 데이터 복구하기
SSH 접속이 안 되는 LightSail 인스턴스의 스냅샷을 EC2로 내보내고, 볼륨을 다른 인스턴스에 붙여 데이터를 살려낸 과정.
시리즈 · Infra1 / 3
- 접속 불가 상태의 LightSail 인스턴스에서 데이터 복구하기
- Terraform CI/CD 구축 (1): GitHub PR과 Jenkins 연동
- Terraform CI/CD 구축 (2): Jenkinsfile로 Plan 결과를 PR에 남기기
LightSail 인스턴스에 접속할 수 없게 되어 디스크의 데이터를 복구했던 과정을 정리한다.
상황
- LightSail의 스냅샷을 바탕으로 새 인스턴스를 시작했다.
- SSH 접속이 되지 않는다. 브라우저 기반 접속도 마찬가지였다.
AWS에 문의하니 Python 패키지 오류로 cloud-init 서비스가 정상 동작하지 않는다는 답변을 받았다. 인스턴스를 되살리기는 어려웠고, 디스크의 데이터라도 살려야 했다.
방법은 스냅샷을 EC2로 내보낸 뒤, 그 볼륨을 정상 동작하는 다른 EC2 인스턴스에 붙여서 읽는 것이다.
1. 스냅샷을 EC2로 Export
LightSail의 스냅샷 메뉴에서 Export to Amazon EC2를 선택한다.

2. AMI로 EC2 인스턴스 생성 (EC2-A)
Export가 끝나면 LightSail 스냅샷을 기반으로 한 AMI가 EC2에 생성된다. 이 AMI로 인스턴스를 만든다. 이 인스턴스를 EC2-A라고 하겠다.

LightSail에서 부팅 후 접속이 안 됐으니 EC2-A도 똑같이 접속이 안 된다. EC2-A를 만드는 목적은 접속이 아니라, 스냅샷의 내용이 담긴 EBS 볼륨을 얻는 것이다.
3. 복구용 EC2 인스턴스 생성 (EC2-B)
Amazon Linux 기반의 새 EC2 인스턴스를 만든다. 이 인스턴스를 EC2-B라고 하겠다.
4. 볼륨을 분리해 EC2-B에 연결
- EC2-A를 중지한다.
- EC2-A를 선택하고 하단의
스토리지탭에서 사용 중인 볼륨을 확인한다. - 해당 볼륨을 선택한 뒤
작업→볼륨 분리를 누른다.

분리된 볼륨은 볼륨 목록에서 사용 가능 상태로 표시된다. 같은 메뉴의 볼륨 연결로 EC2-B에 연결한다.
5. 마운트 후 백업
EC2-B에 접속해 lsblk로 연결된 디스크를 확인하고 마운트하면, LightSail에서 쓰던 OS의 파일 시스템이 그대로 보인다. 여기서 필요한 데이터를 백업하면 된다.
볼륨을 마운트하는 방법은 AWS 문서 - Amazon EBS 볼륨 사용을 참고한다.