# gcp硬碟滿了無法連線 #### 發現vm無法連線,從gcp的記錄檔探索工具發現硬碟滿了 ## 擴增硬碟 ### 使用gcloud指令查看硬碟 ``` $ gcloud compute disks list NAME LOCATION LOCATION_SCOPE SIZE_GB TYPE STATUS DISK_NAME asia-east1-b zone 10 pd-balanced READY ``` ### 使用gcloud指令擴增硬碟 ``` $ gcloud compute disks resize DISK_NAME --size 20 This command increases disk size. This change is not reversible. For more information, see: https://cloud.google.com/sdk/gcloud/reference/compute/disks/resize Do you want to continue (Y/n)? ``` --- ## 擴充之後還是無法連線,所以要進行硬碟的空間釋放 ## 1. 快照無法登入vm(vm1)的硬碟(disk1) ``` $ gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk DISK1_NAME \ --source-disk-zone SOURCE_DISK_ZONE ``` ## 2. 將這個快照建立第二顆硬碟(disk2) ``` $ gcloud compute disks create DISK2_NAME \ --size=DISK_SIZE \ --source-snapshot=SNAPSHOT_NAME \ ``` ## 3. 建立一個新的vm(vm2),然後把 disk2掛載資料碟上 ``` $ gcloud compute instances create VM2_NAME \ --image-family=ubuntu-2004-lts \ --image-project=ubuntu-os-cloud --machine-type=e2-small ``` ``` $ gcloud compute instances attach-disk VM2_NAME \ --disk DISK2_NAME ``` ## 4. 連到vm2操作,刪除檔案 ``` $ gcloud compute ssh VM2_NAME (VM2)$ sudo mkdir -p /mnt/disk2 (VM2)$ lsblk # 確認 partition name (VM2)$ sudo mount /dev/<partition-name> /mnt/disk2 (VM2)$ find / -type f -exec du -h {} + | sort -rh | head -n 10 (VM2)$ sudo rm -rf /mint/disk2/<要移除的檔案或資料夾> ``` ## 5. 將 disk1 從 VM1 移除、disk2 從 VM2 移除 ``` $ gcloud compute instances stop VM1_NAME # boot disk 移除前必須先停掉 instance $ gcloud compute instances detach-disk VM1_NAME \ --disk=DISK1_NAME $ gcloud compute instances detach-disk VM2_NAME \ --disk=DISK2_NAME ``` ## 6. 將disk2掛到vm1並設定為開機磁碟 ``` $ gcloud compute instances attach-disk VM1_NAME \ --disk=DISK2_NAME \ --boot ``` --- [參考](https://sakonosana.medium.com/%E5%95%8A-ssh-%E9%80%A3%E4%B8%8D%E9%80%B2-gcp-%E7%9A%84-vm-712a3ba0f985) ---