【GCP教學】如何輕鬆備份 GCP 上 VM 的資料?快照 Snapshot 自動備份設定教學

【GCP教學】如何輕鬆備份 GCP 上 VM 的資料?快照 Snapshot 自動備份設定教學

上次分享完《【GCP教學】第一次開 Google VM 就上手 – Compute Engine 操作簡介》,接下來就是要學會備份 VM 的資料。

不管你的機器是在地端或雲端,「備份」這件事永遠不能忽略,也不要以為東西放在雲端,就一定高枕無憂喔!因為對你來說,GCP 是雲端,對 Google 來說還是機房。

備份概念

要怎麼備份 VM 的資料呢?首先要把資料分開放,我們在開 VM 時,原本的 Disk 當做開機磁碟 (Boot Disk),然後另外開一個資料磁碟 (Data Disk)。

因為如果放在一起主機掛了開不起來就會很難搞,你的資料比較難救,如果分開的話,主機掛了,直接開一台新的,再把Data Disk 掛起來就可以了。

新增 Data Disk

首先在 開 VM 時有一個進階選項,點擊 Disk ,我們就去新增一個空白 Disk

開機器VM時選選Disks,專門存放資料
開機器VM時選選Disks,專門存放資料

我多開了一個 Data Disk 20GB。

新增20GB Data Disk
新增20GB Data Disk

這是我開的 VM,裡面就多了一個 Data Disk。

帶有一個Data Disk的VM
帶有一個Data Disk的VM

接下來,我們先寫一點資料,然後試試看它的備份功功能。

我們 ssh 進去那台主機,寫一點資料,我寫了一個 abc 的檔案

在VM裡寫一個檔案
在VM裡寫一個檔案

建立快照Snapshot 備份

接下來我們做一個快照備份,Compute Engine=>Snapshot=>Create Snapshot

建立快照snapshot
建立快照 snapshot

指定要備份的 Disk 和備份的目的地,按下 Create

指定備份的Source Disk和存放目的地
指定備份的 Source Disk 和存放目的地

幾秒鐘後就看到快照建立完成,你可以看到快照所占的空間很小,因為它是做差異備份。

快照建立完成畫面
快照建立完成畫面

我們再回到 VM ,再做一個檔案 def 。

寫入不同檔案
寫入不同檔案

還原快照測試

那我們來試試看,還原成快照,看看 def 還在不在。

在這裡要注意的是,還原並不是直接拿快照把原有的 disk 蓋掉,而是用快照另外開一個 disk 再掛載起來。在這裡我們開另一台主機,把它掛回來看看。

我們可以在 Disks 頁面的 Source Snatshop 中,找到我們剛剛建立的快照,選擇 snatshop-1 後就按 Save。

開新機器掛載快照
開新機器掛載快照

然後我們 ssh 進去 aaron-web-restore 這台主機,看到 snapshot 還沒掛載起來,所以先查 device id 為 sdb ,然後進 /mnt 建立一個目錄 restore ,再把它掛起來。

在Linux掛載快照Disk
在 Linux 掛載快照 Disk

我們再進去 restore 這個目錄看看有沒有什麼檔案存在。

哇,看到原本的 abc 還在,但是沒有 def ,因為 def 是在建立快照後,才產生的。

確認備份的檔案存在
確認備份的檔案存在

所以這次的備份還原是成功的。

建立自動備份快照排程

但可以自動備份嗎?

可以,我們可以建立快照排程,接著往下看:

建立快照排程
建立快照排程

先做一些基本設定,取名稱和備份地點。

設定備份名稱和地點
設定備份名稱和地點

最重要的在這裡,備份的間隔時間,你可以每周、每天或甚至每小時都可以建立自動備份喔!

設定備份時間間隔
設定備份時間間隔

還能做到你要每幾小時做一次備份,切得真細啊!

再來要注意備份時間,它寫 UTC ,因為台灣是 UTC+8 ,多8小時,所以我們如果要設定時間,例如現在是下午三點,我要在下午四時開始備份,那就是 16-8=8 ,設定為 8:00 AM 。

設定備份開始時間,在台灣要往回推8小時
設定備份開始時間,在台灣要往回推8小時

但要注意,備份也是會佔空間的,所以要考慮一下資料還原和成本的取捨。

最後,系統還會問你,舊的快照要不要自動刪除,幫你節省成本,實在是太貼心了啊!!

它的自動刪除天數,是可以跟你的設定連動的。

設定自動刪除的時間,節省成本
設定自動刪除的時間,節省成本

如果沒問題我們就按下方的 Create 。

確認排程生效

確認排程有沒有生效,要去 Disks 頁面看一下:

確認備份排程是否生效
確認備份排程是否生效

沒有排程?原因是主機是先開好的,後來才建立排程,所以新建的排程不會對現有的主機生效。我們可以去編輯這個 Disk :

編輯Disk以套用備份排程
編輯 Disk 以套用備份排程

在 Snapshot schdule 選擇剛剛建立的 schedule-1 ,按 Save 即可。

選擇要套用的備份排程
選擇要套用的備份排程

完成了!!

確認備份排程已套用
確認備份排程已套用

以前針對 boot disk 要套用快照排程的話,還必須要先將機器關機,套用後再重開,現在不需要了,方便很多。

接下來就可以靜靜等待 GCP 幫你建立快照囉!!

確認自動備份成功

默默地經過了一個小時…………

快照出現了!!

確認排程的快照備份如期執行
確認排程的快照備份如期執行

我的排程是做在 Boot disk 上,所以 source disk 是 aaron-web ,而其中 Snapshot size 是 369MB ,因為是第一次做快照,它是比對空白 Disk 和裝了 Linux之後的Disk,所以佔比較大資料量,之後再做快照,就不會再佔這麼大空間了!

默默地,又經過了一個小時…………(我還真有耐心)

第二個備份出現了!!

第二個快照備份佔用的檔案小很多
第二個快照備份佔用的檔案小很多

如圖所示,第二個快照備份佔用的檔案小很多,果然是真的依照差異來備份的,不會佔用大量儲存空間。

參考文章在這裡:

建立快照
https://cloud.google.com/compute/docs/disks/create-snapshots?hl=zh-tw

建立快照排程
https://cloud.google.com/compute/docs/disks/scheduled-snapshots?hl=zh-tw

如果是針對特定資料夾做備份,可以參考《在Linux作業系統上同步備份資料到Google Cloud Storage- 以Mac電腦為例》這篇文章。

This Post Has 4 Comments

  1. Avatar
    Aaron Lee

    您好,因為您沒有留下聯絡方式,請來電02-2377-2766討論謝謝!
    1.看你的用途各有優缺點
    2.可以
    3.還原後只是獨立VM

  2. Avatar
    匿名訪客

    您好,請問已按您的教學順利創一個範本與instance group & 做好快照了&機器映象檔了。要還原時,是在 VM執行個體=>建立類似的虛擬機器,還是在機器映象檔這裡建立執行個體呢 ? 2者那個地方較佳,又有何不同呢 ?

    第2個問題是,還原後的機器,IP不同對嗎 ? 能不能把原先的那個個體先固定IP後,再指派給新的(還原出來的)個體呢 ?

    第3個問題是,還原後的機器,也一樣還在 instance group中嗎 ? (因為不想離開先前創的舒適圈了…..healthy check + LB 設定 + auto scaling )

  3. Avatar
    Aaron Lee

    Hi~~Nicole您好,
    建立的快照就會在「快照」這一頁看到已建立的快照列表,如果要用到其他環境,可先轉成image再匯出到Google Cloud Storage。
    費用如下,台灣的話每GB 0.026美金。
    https://cloud.google.com/compute/disks-image-pricing?hl=zh-tw

  4. Avatar
    Nicole

    Aaron你好~請問建立了快照之後,它是存在哪裡呢? 這樣會佔空間或增加GCP花費嗎? 需不需要把快照存在別的地方呢?
    謝謝!

發佈留言