GCP VM 無法SSH連線: no space left on device
首先 : 會發生SSH無法連線的狀況很多,這個方法不一定適用所有的狀況
可以先到GCP VM中打開”啟用序列埠連線”,就可以看到VM中目前的錯誤狀況為何
參考文件
https://www.cloudbooklet.com/attach-and-mount-disks-to-vm-instance-in-google-cloud/
https://discuss.devopscube.com/t/solved-wrong-fs-type-bad-option-bad-superblock-on-dev-sdb-error/206
https://askubuntu.com/questions/859787/how-to-unmount-and-mount-pen-drive-in-ubuntu-via-command-line
確認錯誤狀況
從控制介面中點入無法SSH登入的主機,選擇右上角編輯
在畫面中打勾”啟用序列埠連線”
按下儲存後,回到VM列表,點選”重置”讓機器重新啟動一次,接著再點選進入VM中”連線至序列控制台”就可以開啟畫面,看到目前VM上的錯誤訊息了
如果你跟我一樣看到 “no space left on device”,那麼就是跟我一樣的狀況了,boot device已經沒有空間
處理邏輯
1.將這台VM的boot device退出
2.開一台新的VM(或其他可用VM都行),把這顆硬碟掛入其他其他硬碟中
3.進入這台新的VM將硬碟磁區掛入Linux目錄
4.這時候就可以開始整理就硬碟了,整理好之後將硬碟退出
5.將舊硬碟退出新的VM,再掛回原VM的開機硬碟中
6.順利開機
首先,要注意的是,開一台新的VM必須要跟原本無法登入的那台VM在同一個地區,這樣才有辦法掛他的硬碟
將boot device退出
進入VM後點選”編輯”,找到”boot disk”,按下右邊的X移除掉
最後按下儲存就可以了,放心這個最後處理完成後可以再將這顆硬碟綁回來
綁定到新VM
接著,開一台新的VM(或既有的VM都可以),一樣點進去”編輯”
找到”其他磁碟”這個區域,按下”連接現有磁碟”,然後在畫面下拉選單中,找到剛剛被你按下X移除掉的硬碟
如果在這個畫面沒有看到那顆硬碟,那就有可能VM在不通區域看不到,或者原本的硬碟還沒有解除綁定
可以到左選單中的”儲存空間” –> “磁碟”,看一下這顆硬碟目前是不是在使用者這個欄位不是空的
硬碟Mount到OS中
這個步驟要注意的是,不必綁定整個硬碟,只要綁定已經沒有空間可以使用的那個資料夾即可
可以用以下指令來看目前的磁碟綁定狀態
1 |
lsblk |
假設sda1 是已經要滿的那個資料夾,那我們就只要綁定這個就可以了(實際上掛上去的硬碟應該會是sdbXX之類的)
接著,我們把sda1這個資料夾掛載到/mnt/new_disk 這個資料夾中,就可存取到了
1 2 |
sudo mkdir /mnt/new_disk sudo mount /dev/sda1 /mnt/New_disk |
這樣子就完成了
清理資料
這時候就可以進入到/mnt/new_disk這個目錄就可以看到原硬碟的資料了
掛回原VM中開機
mount完之後,接著要umount
1 |
sudo umount -l /mnt/new_disk |
然後一樣回到GCP的控制畫面中,對新的VM按下編輯,找到剛剛掛上的硬碟在他旁邊按下X後儲存即可
儲存完畢後回到原本不能登入的VM中,一樣按下編輯找到”boot disk”,按下”+”符號,從下拉選單中就可以看到原本的硬碟了
選擇他,按下儲存後開機即可
接著,應該就可以正常使用了
開機後,如果你想要擴增硬碟空間,可以直接參考這篇的做法