본문 바로가기

꿀팁!

GCP, 구글클라우드 서버운영 중 SSH 갑자기 접속이 안될때

구글클라우드를 통해 서버운영중에 갑자기 SSH접속이 계속 실패하는 현상이 있었고 SSH키 직접할당 등 여러 삽질 끝에

 

 

https://hyungin0505.tistory.com/61

 

[GCP] SSH authentication has failed 디스크 용량 부족으로 인한 SSH 접속 실패 해결

2024-01-29 작성됨Ubuntu 20.04 LTSGoogle Cloud Platform Service 얼마 전 연재했던 GCP 마인크래프트 24시간 서버 열기의 연장선이라고 할 수 있겠다지금껏 서버에서 발생한 여러 가지 사소한 오류들을 해결해

hyungin0505.tistory.com

이블로그를 통해 해결했다.

 

No space left on device

세부정보에 직렬포트의 로그를 봤을때 똑같이 해당 구문이 있었고 결국은 디스크 용량이 꽉차 리눅스의 모든 작업이 안되는 현상이였다. 해결방법중에 직렬포트를 이용한 방법이 있다고 적혀있으나 리눅스의 대부분의 기능은 디스크에 읽고 쓰는작업을 하기에 직렬포트로 연결해도 로그인자체가 되지 않아 의미가 없었다.

 

결론: 부팅디스크 수정하는 방법이 가장 효과가 좋다!

 

인스턴스에가서 수정버튼을 누른후 용량이 꽉찬 부팅디스크를 분리해주고

스토리지의 디스크부분에 가서 크기를 늘려준다.

그리고 백업용으로 스냅샷으로가서 스냅샷을 찍어준다.

 

그리고 원래의 서버와 동일한(운영체제, CPU종류, 영역- asia-northeast3-b ) VM 인스턴스를 생성해주고

한번 실행시키고 종료한뒤 해당 VM의 수정으로가서 추가 디스크부분에 기존디스크 연결로 문제가 있던 디스크를 할당해준다.

VM생성할때 동시에 연결해두면 되지않나?-> 부팅할때 전과 똑같이 에러가 발생했으나 사람마다 다를수있다.

 

이후 연결해준뒤 SSH로 들어가서

sudo lsblk

명령어를 통해 연결된 디스크상태를 봐준다.

아마 클라우드상으로 40GB를 할당해줘도 보이는 sdb1은 이전의 용량일것이다->이것을 늘리는 작업을 해야 리눅스 시스템에서 인식한다.

 

클라우드 상에서 용량을 안늘리고 기존파일을 삭제하겠다!

sudo mkdir -p /[디렉토리 이름]
sudo mount -o discard,defaults /dev/sdb1 /[디렉토리 이름]
sudo chmod a+w /[디렉토리이름]
cd /[디렉토리 이름]

임시 디렉토리에 mount후에 삭제 작업을 진행하면된다.

 

클라우드 상에서 용량을 늘렸으나 위에 말한것처럼 인식이안된다!

sudo parted /dev/sdb

(parted) resizepart
Partition number? 1
Warning: Partition /dev/sdb1 is being used. Are you sure you want to continue? Yes
End? 100%
(parted) quit

sudo partprobe /dev/sdb
sudo resize2fs /dev/sdb1

다음처럼 하면된다. (sudo lsblk을 통해 타겟 디스크 확인하기)

 

umount /dev/sdb1

위에서 mount했다면 안전하게 해당명령어를 입력후 종료하면된다.

 

종료후에는 똑같이 임시로만든 vm에서 (추가디스크)를 분리한 후 원래 있던 서버(부팅디스크)에 다시 넣으면된다.

그러면 정상적으로 접속이 될것이다. 정상작동을 확인했으면 만들어줬던 VM인스턴스를 삭제하자!