さくらのVPS
バックアップ
centos7
MondoRescue
davfs2

さくらのVPSに無料の外部自動バックアップ機能を追加する方法

環境と概要

  • さくらのVPS
  • CentOS 7.4
  • SELinux無効

イメージバックアップツールで丸ごとバックアップ → マウントしたオンラインストレージに保存。
という疑似自動バックアップ機能構築のお話

さくらのVPSにはバックアップ機能がないため、もしもの場合に備えて外部への自動バックアップ機能を追加する
保存先をさくらインターネット外部(オンラインストレージ)にしたのは、さくら側の障害(事例1,事例2)によるデータ損失を防ぐため。

「さくらのVPS」でバックアップの機能はありますか

いいえ、「さくらのVPS」は、標準・オプション共に、バックアップの機能はございません。
同一ゾーンであれば複数台構成でのご利用が可能でございますため、他のサーバとデータを同期する、
重要なデータはローカル環境に保存するなど、ご対応ください。

機能要件

  • 定期的なバックアップ(毎日・3世代)
  • 保存先は外部ストレージ
  • 稼働サービスへの影響を最小限に留める(ネットワーク帯域のみ、その他はrconで)
  • 追加費用不要

使用ソフト・サービスと役割

TeraCLOUDについて

外部保存先オンラインストレージとしてTeraCLOUDを使用

TeraCLOUDの選択理由

  • 無料で15GBまで使用可※
  • WebDAVが使用可
  • 共有機能が使用不可(人為的ミス防止)
  • Oracle Solaris 11で堅牢
  • ZFS RAID-Z3(RAID6)で保全性が高い
  • 速度が安定
  • 帯域制限(10Mbps)がある(ネットワーク帯域専有防止)

※3世代ぐらいであれば十分

外部保存先のセットアップ

アカウント作成は下記参照。下記の手順通りで無料容量が10GB→15GBになる
速くてシンプルな国産オンラインストレージ「TeraCLOUD」 | ハルパス

アカウント準備後、マイページ(要ログイン)WebDAV接続URL(例:https://futtsu.teracloud.jp/dav/ )をメモ

さくらのVPSにマウント

davfs2のセットアップ

インストール
yum -y install davfs2
仮想保存先作成
mkdir /backup
マウント
mount -t davfs https://futtsu.teracloud.jp/dav/ /backup
  Username:    #TeraCLOUDユーザ名
  Password:    #TeraCLOUDパスワード
マウント確認
df -h
https://futtsu.teracloud.jp/dav/    26G   13G   13G   50% /backup

※認証が面倒であれば/etc/davfs2/secretsに書いておくとスキップ可(セキュリティ的には非推奨)

vi  /etc/davfs2/secrets

https://futtsu.teracloud.jp/dav/ ユーザ名 パスワード

バックアップ機能のセットアップ

Mondo Rescueのセットアップ

インストール
cd /etc/yum.repos.d/
wget http://www.mondorescue.org/ftp/centos/7/x86_64/mondorescue.repo
yum -y install mondo lzop

【CentOS7限定】エラー事前対策

mindi.conf
vi /etc/mindi/mindi.conf

EXTRA_SPACE=240000 #追記
BOOT_SIZE=100000 #追記

バックアップスクリプト

スクリプトの作成

自動化スクリプト
vi /etc/cron.daily/auto_backup.sh

次のシェルをコピペ

auto_backup.sh
#!/bin/bash
today=$(date +%Y%m%d)

#Backup_日付.isoのファイル名でバックアップ
mondoarchive -O -i -N -L -s16g -E"/backup" -d /var/tmp -p Backup_${today}
#バックアップイメージを移動
mv /var/tmp/Backup_${today}-1.iso /backup
#古いバックアップイメージを削除
find /backup -type f -mtime +4 -exec rm -f {} \;
オプション 意味
-O バックアップ
-V ベリファイを実行
-i ISOファイルとして出力
-num 圧縮レベル※
-L lzo圧縮を使用(高速化)
-N ローカルファイルのみバックアップ
-s 最大サイズ(指定なしの場合、)
-E 除外するディレクトリ (パイプ区切り)
-d 出力先ディレクトリ
-p 出力ファイル名

実行権限を付与

chmod 755 /etc/cron.daily/auto_backup.sh

~以上~

圧縮レベルについて

09で大きいほど高圧縮。指定なしの場合は3

サイズと速度関係
最大(9):2.7GB - 16分31秒
標準(3):3.0GB - 2分30秒
無圧縮 :4.6GB - 2分3秒

I/O、CPU負荷対策について(※追記 2018/5/20)

rconを使えばリソース制限が可
コマンド実行時のCPUやIOリソースを簡単に制御するツールrconを作った - 人間とウェブの未来

差分バックアップ(-D)でも良いが、3世代しか保持しないので親が消えて復元不可になる(未検証)

復元

バックアップメディアとして出力しているため、そのままブート可
ISOをカスタムOSインストール機能を使って起動、Automaticallyを選択で復元できる

参考

公式ドキュメント
Mondo RescueでCentOS6のフル/増分バックアップを行う | riscascape.net
findコマンドのmtimeオプションまとめ - Qiita
Mondo Rescue を使ったバックアップとリカバリ - Qiita
Linuxmania:Mondo Rescue の使いかた