文章段落
上次分享完《【GCP教學】第一次開 Google VM 就上手 – Compute Engine 操作簡介》,接下來就是要學會備份 VM 的資料。
不管你的機器是在地端或雲端,「備份」這件事永遠不能忽略,也不要以為東西放在雲端,就一定高枕無憂喔!因為對你來說,GCP 是雲端,對 Google 來說還是機房。
備份概念
要怎麼備份 VM 的資料呢?首先要把資料分開放,我們在開 VM 時,原本的 Disk 當做開機磁碟 (Boot Disk),然後另外開一個資料磁碟 (Data Disk)。
因為如果放在一起主機掛了開不起來就會很難搞,你的資料比較難救,如果分開的話,主機掛了,直接開一台新的,再把Data Disk 掛起來就可以了。
新增 Data Disk
首先在 開 VM 時有一個進階選項,點擊 Disk ,我們就去新增一個空白 Disk

我多開了一個 Data Disk 20GB。

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

接下來,我們先寫一點資料,然後試試看它的備份功功能。
我們 ssh 進去那台主機,寫一點資料,我寫了一個 abc 的檔案

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

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

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

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

還原快照測試
那我們來試試看,還原成快照,看看 def 還在不在。
在這裡要注意的是,還原並不是直接拿快照把原有的 disk 蓋掉,而是用快照另外開一個 disk 再掛載起來。在這裡我們開另一台主機,把它掛回來看看。
我們可以在 Disks 頁面的 Source Snatshop 中,找到我們剛剛建立的快照,選擇 snatshop-1 後就按 Save。

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

我們再進去 restore 這個目錄看看有沒有什麼檔案存在。
哇,看到原本的 abc 還在,但是沒有 def ,因為 def 是在建立快照後,才產生的。

所以這次的備份還原是成功的。
建立自動備份快照排程
但可以自動備份嗎?
可以,我們可以建立快照排程,接著往下看:

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

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

還能做到你要每幾小時做一次備份,切得真細啊!
再來要注意備份時間,它寫 UTC ,因為台灣是 UTC+8 ,多8小時,所以我們如果要設定時間,例如現在是下午三點,我要在下午四時開始備份,那就是 16-8=8 ,設定為 8:00 AM 。

但要注意,備份也是會佔空間的,所以要考慮一下資料還原和成本的取捨。
最後,系統還會問你,舊的快照要不要自動刪除,幫你節省成本,實在是太貼心了啊!!
它的自動刪除天數,是可以跟你的設定連動的。

如果沒問題我們就按下方的 Create 。
確認排程生效
確認排程有沒有生效,要去 Disks 頁面看一下:

沒有排程?原因是主機是先開好的,後來才建立排程,所以新建的排程不會對現有的主機生效。我們可以去編輯這個 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電腦為例》這篇文章。

您好,因為您沒有留下聯絡方式,請來電02-2377-2766討論謝謝!
1.看你的用途各有優缺點
2.可以
3.還原後只是獨立VM
您好,請問已按您的教學順利創一個範本與instance group & 做好快照了&機器映象檔了。要還原時,是在 VM執行個體=>建立類似的虛擬機器,還是在機器映象檔這裡建立執行個體呢 ? 2者那個地方較佳,又有何不同呢 ?
第2個問題是,還原後的機器,IP不同對嗎 ? 能不能把原先的那個個體先固定IP後,再指派給新的(還原出來的)個體呢 ?
第3個問題是,還原後的機器,也一樣還在 instance group中嗎 ? (因為不想離開先前創的舒適圈了…..healthy check + LB 設定 + auto scaling )
Hi~~Nicole您好,
建立的快照就會在「快照」這一頁看到已建立的快照列表,如果要用到其他環境,可先轉成image再匯出到Google Cloud Storage。
費用如下,台灣的話每GB 0.026美金。
https://cloud.google.com/compute/disks-image-pricing?hl=zh-tw
Aaron你好~請問建立了快照之後,它是存在哪裡呢? 這樣會佔空間或增加GCP花費嗎? 需不需要把快照存在別的地方呢?
謝謝!