Gce

[GCP] 不停機擴增 Linux 主機硬碟空間

  • POSTS
GCP 在開 Compute Engine (GCE)的新機器時,預設的主硬碟(Root Volume)大小是 10GB,一開始可能很夠用,為了節省費用,也不會一次就把硬碟大小設定太大,但隨著時間推移,可能硬碟用量突然增加很多,造成硬碟空間不足的情況,但機器都架好了,要重架、移機也很麻煩,如果是不能關機的線上服務又更棘手。或是額外掛載一顆硬碟上去,分割並製作檔案系統後,再將部份的資料搬移到新的硬碟中,這個方式會需要檔案搬移的時間。還好 GCP 支援動態調整已經掛載正在使用的硬碟大小,而且還不需要停機,再加上 Linux 裡面相關的磁碟分割及檔案系統操作,可以無痛擴充硬碟空間大小。 GCP 的主控台已經將擴充硬碟容量這件事情變得非常方便,首先從 GCP Console - Compute Engine - Disks 找到對應的專案內需要擴充容量的硬碟,可以看到目前的硬碟大小為 10GB,進入右上方的編輯(Edit),即可直接調整硬碟大小(最大 64TB),完成後按下下方藍色儲存(Save)按鈕,就完成了硬碟容量的擴充。 不過需要注意一些事情: 由於 GCP 上開機硬碟使用 MBR 開機,本身有 2TB 的上限,開機硬碟擴充容量時不能超過 2TB 的限制 擴充硬碟是不可反悔的,因此只能擴大,不能縮小硬碟大小 如果是習慣用 gcloud 指令,也可以透過指令完成一樣的操作: # gcloud compute disks resize [DISK_NAME] --size [DISK_SIZE] 例如將 instance-1 硬碟擴增為 20GB: # gcloud compute disks resize instance-1 --size 20GB This command increases disk size. This change is not reversible. For more information, see: https://cloud.

[GCP] 將 VM 搬移至另一個 Zone

  • POSTS
GCP 的 Compute Engine 在開虛擬機的時候,需要同時選擇虛擬機所在的機房(Region)及子區域(Zone),一般來說在虛擬機建立時,選好 Region 及 Zone 之後,就不能再更換或搬家,只能刪掉重建,不過 gcloud 指令提供了換 Zone 的功能,讓這件事情變得很簡單,只需要一行指令: gcloud compute instances move example-instance --zone us-central1-a --destination-zone us-central1-f 上面的範例,即可把 example-instance 這台 VM 從 us-central1-a 搬到 us-central1-f。 整個搬遷的過程需要點時間,在過程間 GCP 控制界面上並不會有防呆機制,因此千萬不要在這過程中修改任何相關的設定或資源,以免搬遷過程失敗。 另外需要注意,該虛擬機必須要在「開機」的狀態下才能用,如果是關機狀態,會出現 ERROR: (gcloud.compute.instances.move) Instance cannot be moved while in state: TERMINATED 也就是說,要先把這台虛擬機開機,才能使用 gcloud compute instances move 指令搬機器。 – 指令簡單歸簡單,深入研究可以發現,這個指令其實只是把一連串固定的操作全部整合成一個指令而已。GCP 也提供了全手動的方式幫機器搬家,整個操作步驟大約就是關閉關機後自動刪除硬碟功能、將硬碟建立 snapshot、刪除舊虛擬機、以 snapshot 在指定的 Zone 建立新虛擬機、開機,步驟有點複雜,有興趣可以翻閱參考連結的第一個,裡面有詳盡的步驟。 最後就是換 Region,理論上可以辦得到,但一直出現 ERROR: (gcloud.compute.instances.move) Instances belonging to subnetworks cannot be moved interregionally.