GCP(Google Cloud Platform) 에서 Compute Engine을 사용하던 중
SSH 접속 불가 현상이 나타났다.
"연결할 수 없습니다. 다시 시도 중(2/3)"
멘트만 수십번...
팝업창에서 "시리얼 콘솔 출력"을 클릭해보니,
아래와 같은 로그를 찾을 수 있었다.
ERROR Exception calling the response handler.
[Errno 28] No space left on device.#012Traceback
팝업창에서 "도움말 문서" 를 클릭했더니,
아래의 도움말로 이동한다.
https://cloud.google.com/compute/docs/ssh-in-browser#couldnotconnecterror
# 원인
인스턴스의 부팅 디스크에 여유 공간이 부족합니다.
# 해결책
1. 인스턴스 부팅 영구 디스크의 크기를 조절해 크기를 늘립니다.
인스턴스에서 사용되는 운영체제 이미지가 자동 크기 조절을 지원한다면 이 방법이 가장 간편합니다.
인스턴스가 다시 시작되면 새 크기에 맞게 운영체제에서 루트 파티션의 크기가 자동으로 조절되기 때문입니다.
2. 어떤 파일이 디스크 공간을 사용하고 있는지 안다면
필요 없는 파일을 삭제해 인스턴스를 시작할 공간을 확보하는 시작 스크립트를 만듭니다.
이 스크립트를 실행해서 파일을 정리할 수 있도록 인스턴스를 다시 시작하세요.
올바른 명령어를 사용하고 올바른 파일을 삭제해야 합니다.
인스턴스 시작 후 SSH를 통해 인스턴스에 연결할 수 있다면
파일을 계속 삭제하지 않도록 startup-script 메타데이터 항목을 다시 설정하세요.
2번 해결책은 몬가 복잡해보이니,
일단 1번 해결책인 디스크 크기를 늘려보도록 하자!
(참고로 필자의 경우엔 1번 해결책이 먹히지 않아 다른 방법을 사용했다.
디스크 유형이 "표준 영구 디스크" 인 경우엔 1번 해결책이 적용되지 않는듯 하다.
"균형 있는 영구 디스크" 등인 경우엔 되는 것 같으니 한번 시도해보자.)
① 스토리지 > 디스크 메뉴 이동
② 인스턴스 이름 클릭
③ 수정 클릭
④ 크기를 수정하고 저장
- 기본은 10일텐데, 20 등으로 높여준다(요금이 약간 올라가는듯 하다.)
⑤ 확인
아래와 같이 되면 성공이다.
이제 SSH에 다시 접속해서 잘 되면 끝!
그러나 필자처럼 해결되지 않은 경우엔
2번 해결책을 사용해야한다.
하지만 필자는 이 방법이 매우 귀찮았다.
그래서 그냥 다른 방법을 사용하기로 했다.
현재 인스턴스를 백업하고, 인스턴스를 새로 만들어 적용하는 것이다.
1. 기존 인스턴스 백업(스냅샷)
2. 새 인스턴스 생성(by 스냅샷)
3. 기존 인스턴스 중지/삭제
이 경우 주의해야할 점은 새 인스턴스에는 새 IP가 할당된다는 것이다.
따라서 배포되어 있는 서비스라면, DNS 설정에서 A레코드 등을 변경해주어야 한다.
즉, 아래와 같은 순서로 작업을 진행하여 문제를 해결했다.
(다소 무식하지만 결과는 완전 깔끔!)
1. 기존 인스턴스 백업(스냅샷)
2. 스냅샷으로 새로운 인스턴스 생성
3. 새 인스턴스로 서비스 배포
4. DNS에서 IP 변경
5. 기존 인스턴스 중지/삭제
1~4번이 원활하게 수행된 다음에
기존 인스턴스를 제거하므로 나름 안전한 방법이기도 하다.
기존 인스턴스를 백업(스냅샷)하여 새로 인스턴스를 생성하는 방법은 아래 글을 참고하자.
[GCP] Compute Engine 인스턴스 백업 방법 (스냅샷 생성 및 적용)
DNS에서 도메인에 설정된 IP를 변경하는 방법은...
이용 중인 DNS 서비스에 따라 다르므로 각자 A레코드를 변경하든지 하자.
기존 인스턴스를 중지/삭제하는 방법은 아래 글을 참고하자.
[GCP] Compute Engine 인스턴스 중지/삭제 방법
인스턴스를 삭제하면 디스크도 함께 제거되니 주의하자.
'개발(Development) > Etc(기타)' 카테고리의 다른 글
[VS Code] .git 등 숨김 파일/폴더 표시 방법 (0) | 2022.08.19 |
---|---|
[AWS] EC2 Node.js, Mysql 설치 및 세팅 방법 (0) | 2022.07.04 |
[GCP] Compute Engine 인스턴스 중지/삭제 방법 (0) | 2022.01.29 |
[GCP] Compute Engine 인스턴스 백업 방법 (스냅샷 생성 및 적용) (0) | 2022.01.28 |
[Github] 터미널에서 GitHub Repository 연동 사용 방법: git remote, push (0) | 2021.08.28 |
댓글