FC2ブログ

スポンサーサイト

イトー/EP

-
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Posted byイトー/EP

GPUサーバー(Ubuntu 16.04LTS)定期バックアップ

イトー/EP

私の所属研究室ではRAID10で組んだNASを2台用意して片方をメイン、もう片方をバックアップとする冗長化体制を敷いてデータを守っています。

というわけで「データの喪失はまあよっぽど無い」と高を括っていたわけなんですが、昨年末に研究で使用しているGPUサーバーのうち最も強力な1台に積まれていたSSDが死を迎えるという事件が起き、卒論最終発表直前に実験データを喪失するという悲劇が発生しました。

そりゃあ能動的にNASに保存したデータは大丈夫でもローカルに置いてるデータはそうもいかないよなぁと思ったので、GPUサーバー向けに毎日自動でNASにバックアップする仕組みを用意しました。

研究室のGPUサーバーはUbuntu 16.04LTSで構築しています。別にGPU搭載機でなくても同じOSなら問題なく使用できると思うので、データ喪失に怯える人に向けて公開しておこうと思います。

流れ

  1. NAS(172.16.xx.xx)のバックアップ用フォルダーをGPUサーバーにマウント
  2. rsyncでマウントしたフォルダーに差分バックアップを実行
  3. アンマウント
  4. 上記をcronを用いて定期実行する

事前準備

  1. NAS側でNFSを有効にする(v2~v4まで全部有効にした)

  2. NAS側の共有フォルダーの権限で、バックアップ先のディレクトリにGPUサーバーに読み書きのアクセス権を与える

    使用しているNASによって操作法が違うと思うので、適宜対応してもらえればと思います。

  3. GPUサーバー側で以下を実行してNFSを扱えるようにする

sudo apt-get -y install nfs-common
  • マウントポイントのディレクトリを作成
sudo mkdir /media/serverfileGPU

NASの名前がserverfileGPUなので、serverfileGPUにしています。別に何でも大丈夫です。

スクリプト作成

  • ホームディレクトリにスクリプトを作る
sudo vim backup-to-nas.sh

内容は以下の通り

#!/bin/sh echo <パスワード> | sudo -S mount -t nfs 172.16.xx.xx:/<バックアップ先のフォルダ名> /media/serverfileGPU/ echo <パスワード> | sudo -S rsync -aurz --delete /home/<ユーザー名>/workspace/ /media/serverfileGPU/ echo <パスワード> | sudo -S umount /media/serverfileGPU

NASのバックアップ先ディレクトリをGPUサーバーにマウント→バックアップ→マウント解除の流れです。

うちのGPUサーバーでは/home/<ユーザー名>/にworkspaceというディレクトリを作り、データは基本的にここに置いています。というか、Jupyterの作業ディレクトリがここになっているので、ここさえバックアップ取ればOKという構成です。

乱暴なことに全部管理者権限で実行してます。これは管理者権限じゃないと実行できなかったり触れない場所だったりするためです。<パスワード>にはパスワードが平文で入っているので正直セキュリティ的にダメダメですが、パスワードを与えないとパスワードを入力する画面で止まるので、苦肉の策です。

  • 実行権限を付与
sudo chmod +x backup-to-nas.sh

定期実行

  • cronの動作状況をチェック
sudo service cron status
  • activeならOK、そうでなかったら以下コマンドでcronを起動
service crond start
  • cronの設定用のエディターを開く
crontab -u <ユーザー名> -e
  • 設定
0 1 * * * sh /home/<ユーザー名>/backup-to-nas.sh

上記は毎日1時になると実行という意味。

以下は設定の参考になりそうなQiitaの記事。

  • https://qiita.com/hikouki/items/e744b3a4d356d2af12cf

改良できそうなところ

  • パスワードを平文で保存しないようにする(大声)
  • nfsではなくsmb(cifs?)を使う
    • cifsを使ってマウントしようとしたところ失敗したので、オーバーヘッドが大きくなることを覚悟で汎用的なnfsを選んだ
  • nfsでマウントしたフォルダにバックアップを取るのではなく、rsync protocolなるバックアッププロトコルを使ってバックアップを取る
    • NAS側の対応が必要だが、オーバーヘッドが小さくバックアップが高速らしい
Posted byイトー/EP

Comments - 0

There are no comments yet.

Leave a reply

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。