Google Cloud Platform VM 快照功能,可以很容易的恢復一個 VM 執行個體,簡單來說,萬一你的 VM 主機崩潰救不回來了,這時可以使用「快照」來復原你的 VM 主機。
所以,快照也算是一個備份工具,詳細說明請參照 Creating Persistent Disk Snapshots 文檔。
https://cloud.google.com/compute/docs/disks/create-snapshots
目前這個快照功能,還是需要手動執行,非常不方便,如果太忙忘記做快照,主機的風險就會變大。既然可以拿來當作是一個備份主機的用途,當然是能自動製作快照是最好了。
執行自動快照腳本,先決條件是你的 VM 有足夠的權限,Compute Engine 這個功能必須是開啟的。
Snapshots 快照功能,讓您的 GCP 主機更有保障
所以當一開始建立一個 VM 個體時,「身分及 API 存取權」這一項目,建議選取「允許所有 Cloud API 的完整存取權」,如下圖:
進入 SSH 執行下面指令:
cd ~
wget https://raw.githubusercontent.com/jacksegal/google-compute-snapshot/master/gcloud-snapshot.sh
chmod +x gcloud-snapshot.sh
sudo mkdir -p /opt/google-compute-snapshot
sudo mv gcloud-snapshot.sh /opt/google-compute-snapshot/
手動測試執行一次快照製作:
sudo /opt/google-compute-snapshot/gcloud-snapshot.sh
你轉到網頁,可以看到快照已經開始工作了。
執行計畫腳本,每天 5 點開始執行快照:
crontab -e
0 5 * * * root /opt/google-compute-snapshot/gcloud-snapshot.sh >> /var/log/cron/snapshot.log 2>&1
EasyEngine 系統,請改成下面的指令
crontab -e
0 5 * * * sudo /opt/google-compute-snapshot/gcloud-snapshot.sh >> /var/log/cron/snapshot.log 2>&1
執行完快照程序後,並會產生一個 snapshot.log 日誌文件,用下面的方式來管理日誌:
sudo mkdir /var/log/cron
sudo touch /var/log/cron/snapshot.log
sudo chgrp adm /var/log/cron/snapshot.log
sudo chmod 664 /var/log/cron/snapshot.log
管理日誌文件,不要讓它變得太大:
sudo nano /etc/logrotate.d/cron
修改 cron 將下面的指令加進去
/var/log/cron/*.log {
daily
missingok
rotate 14
compress
notifempty
create 664 root adm
sharedscripts
}
這個自動腳本,可保存 7 日的快照,會自動將過期的快照刪除。
腳本內容,可參考這一篇:
https://github.com/jacksegal/google-compute-snapshot/issues/1
參考文件:
https://github.com/jacksegal/google-compute-snapshot
2019/04/29 補充說明:
今年 2 月 GCP 推出了「快照排程」的功能,用來自動排程對磁碟機建立快照,以達到備份的目的,頻率分為「每小時、每天、每週」,還能設定自動刪除舊的快照。
Compute Engine 永久磁盤的計劃快照介紹:
發佈留言