バックアップ処理にどれくらい時間がかかっているのか知る為に、Mondo Rescue によるバックアップのシェルスクリプトに手を加え、開始時刻と終了時刻を表示させてみました。
# nano -K /scripts/do_backup.sh
#!/bin/bash stime=$(date) today=$(date +%Y%m%d) /usr/sbin/mondoarchive -OiL -d /home/satoh163/mondo/centos_backup -E /mnt/usb_hdd -s 4480m -S /var/mondo/scratch -T /home/satoh163/mondo/tmp -p ${today} $ ftime=$(date) echo '■フルバックアップ' echo '■開始:'$stime echo '■終了:'$ftime df -h /dev/sdb1 ls -la /mnt/usb_hdd
- シェルスクリプトを実行するインタプリタを指定(1行目、シバンと言うらしい)
- バックアップ処理開始前に変数stimeに時刻をセット(2行目)
- ファイル名には「年月日」を付加(3行目)
- メインのバックアップ処理(4行目)
- バックアップ処理終了後に変数ftimeに時刻をセット(5行目)
- 判りやすいように「■フルバックアップ」と表示(6行目)
- 開始時刻(7行目)を表示
- 終了時刻(8行目)を表示
- HDD使用率などを表示(9行目)
- ファイル一覧を表示(10行目)
作成したスクリプトを実行。
# sh /scripts/do_backup.sh
その結果は以下の通り。
: (途中省略) : ---evalcall---E--- Call to mkisofs to make ISO (ISO #1) ...OK Done. Done. Backup and/or verify ran to completion. Everything appears to be fine. /var/cache/mindi/mindi.iso, a boot/utility CD, is available if you want it. Data archived OK. Mondoarchive ran OK. See /var/log/mondoarchive.log for details of backup run. Execution run ended; result=0 Type 'less /var/log/mondoarchive.log' to see the output log ■フルバックアップ ■開始:2016年 12月 29日 木曜日 22:49:18 JST ■終了:2016年 12月 29日 木曜日 23:58:22 JST : (以下省略) :
引き算の結果、バックアップの所要時間は、1時間9分4秒となりました。
・・・もっと少ない時間でバックアップを終わらせたい。
今回、USB2.0での接続をUSB3.0に変更して転送速度の改善を図るため、I/FカードとHDDケースを新調しました。
パーツ購入は、久しぶりに弘前市内のPCショップを利用しました。
・・・たまには地元にお金を落とさないとね・・・。
「USB3.0 PCI-Express I/Fカード」(税別1,780円)をPCに取り付けます。(補助電源SATAコネクタを差し込む事も必要)、2.5インチHDDを「USB3.0ケース」(税別1,280円)にセットしたら、付属のUSB3.0ケーブルで増設カードのUSB3.0ポートに取り付けます。
再起動だけで、ドライバなどが適用されたのか、ちゃんと認識してくれました。
fdisk -l コマンドを実行してみます。
# fdisk -l Disk /dev/sda: 1000.2 GB, 1000204886016 bytes, 1953525168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト Disk label type: dos ディスク識別子: 0x00011af8 デバイス ブート 始点 終点 ブロック Id システム /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 1953523711 975712256 8e Linux LVM Disk /dev/mapper/cl_centos-root: 53.7 GB, 53687091200 bytes, 104857600 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト Disk /dev/mapper/cl_centos-swap: 4160 MB, 4160749568 bytes, 8126464 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト Disk /dev/sdb: 1000.2 GB, 1000204885504 bytes, 1953525167 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト Disk /dev/mapper/cl_centos-home: 941.3 GB, 941273120768 bytes, 1838424064 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト #
/dev/sdbが、1000.2GBと表示されており、今回USB3.0で接続したHDDと思われる。
(これまでのUSB2.0接続では/dev/sdfだったので設定の変更が必要になります。)
今回も、SMARTコマンドで、HDDの情報を表示しようとしたが、USB3.0 I/Fが認識できない(?)ようでエラー表示となりました。
一旦 # fdsik /dev/sdb でパーティションを削除し、再度パーティションを追加してみました。今回はデバイスが追加され、/dev/sdb1 となりました。その後、設定をテーブルに書き込みます。(詳細省略)
その後、# mkfs.ext4 /dev/sdb1 を実行し、ext4 でフォーマットしました。
それでも # smartctl -i /dev/sdb1 コマンドはNG。・・・S.M.A.R.T. が使えない事は無視します。
USB-HDDをマウントします。(マウント先のディレクトリは前回作成した/mnt/usb_hdd )
# mount /dev/sdb1 /mnt/usb_hdd
シンボリックリンクは前回と変わらないので、変更設定なし。
( # ln -s /mnt/usb_hdd /home/satoh163/mondo/centos_backup )
-
(ちょっと寄り道・・・ファイルコピーにかかる時間をテスト)
4.2GBのファイルを内臓HDDからUSB2.0ポートに接続してのコピー時間は142秒でした。
4.2GBのファイルを内臓HDDからUSB3.0ポートに接続してのコピー時間は98秒でした。
・・・う~ん、もっと時短できるかと期待したのだが・・・
変更したシェルスクリプトを手動で実行してみます。
# sh /scripts/do_backup.sh
: (途中省略) : ---evalcall---E--- Call to mkisofs to make ISO (ISO #1) ...OK Done. Done. Backup and/or verify ran to completion. Everything appears to be fine. /var/cache/mindi/mindi.iso, a boot/utility CD, is available if you want it. Data archived OK. Mondoarchive ran OK. See /var/log/mondoarchive.log for details of backup run. Execution run ended; result=0 Type 'less /var/log/mondoarchive.log' to see the output log ■フルバックアップ ■開始:2016年 12月 30日 金曜日 18:49:52 JST ■終了:2016年 12月 30日 金曜日 19:58:42 JST ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/sdb1 917G 4.2G 866G 1% /mnt/usb_hdd 合計 4299540 drwxr-xr-x 3 root root 4096 12月 30 19:56 . drwxr-xr-x. 4 root root 34 12月 23 20:01 .. -rw-r--r-- 1 root root 4402702336 12月 30 19:58 20161230-1.iso drwx------ 2 root root 16384 12月 29 22:45 lost+found
USB3.0接続でのバックアップ所要時間の結果は、1時間8分50秒でした。
USB2.0で1時間9分48秒だったので、大きな違いは無しです。
・・・どうやら、USB2.0はボトルネックではなかったようです。
・・・純粋にMondo Rescueの処理(PC本体内蔵3.5″HDD上での処理)に時間がかかっているのでしょう。
時短にはならなかったが、せっかくUSB3.0を使用可能としたので、そのまま使うことにします。
気を取り直して、再起動したときの自動マウント設定/etc/fstabを修正。
# nano -K /etc/fstab
# # /etc/fstab # Created by anaconda on Thu Dec 15 16:48:54 2016 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/cl_centos-root / xfs defaults 0 0 UUID=4f8c910d-1724-401b-8cad-169b59119976 /boot xfs defaults 0 0 /dev/mapper/cl_centos-home /home xfs defaults 0 0 /dev/mapper/cl_centos-swap swap swap defaults 0 0 # #/dev/sdf /mnt/usb_hdd ext4 nofail 0 0 /dev/sdb1 /mnt/usb_hdd ext4 nofail 0 0
試しに、reboot し、再起動後に自動マウントされているか、ディスクの使用量は何%か、ファイルが表示されるか確認しておきます。
# mount | grep /dev/sdb1 /dev/sdb1 on /mnt/usb_hdd type ext4 (rw,relatime,data=ordered) # df -h /dev/sdb1 ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/sdb1 917G 4.2G 866G 1% /mnt/usb_hdd # ls -la /mnt/usb_hdd 合計 4299540 drwxr-xr-x 3 root root 4096 12月 30 19:56 . drwxr-xr-x. 4 root root 34 12月 23 20:01 .. -rw-r--r-- 1 root root 4402702336 12月 30 19:58 20161230-1.iso drwx------ 2 root root 16384 12月 29 22:45 lost+found #
先ほど、手動でシステム全体をバックアップしたISOファイルが見えたらOKです。
これで、Mondo Rescue が出力するバックアップファイルの保存先が、USB3.0接続のHDDになりました。
・・・USB3.0接続にすれば時間短縮されるかと思いましたが、思惑がハズレて、残念です。
差分バックアップを設定
バックアップ時間短縮とディスク使用量削減の為に差分バックアップを利用するよう設定してみます。
差分バックアップ用のシェルスクリプトを用意します。
# cp /scripts/do_backup.sh /scripts/do_backup_diff.sh # nano -K /scripts/do_backup_diff.sh
#!/bin/bash stime=$(date) today=$(date +%Y%m%d) /usr/sbin/mondoarchive -OiLD -d /home/satoh163/mondo/centos_backup -E /mnt/usb_hdd -s 4480m -S /var/mondo/scratch -T /home/satoh163/mondo/tmp -p ${today} $ ftime=$(date) echo '■差分バックアップ' echo '■開始:'$stime echo '■終了:'$ftime df -h /dev/sdb1 ls -la /mnt/usb_hdd
変更箇所は以下の2か所です。
- mondoarchiveのオプションに「-D」(差分バックアップ)を追加(4行目)
- 判りやすいように「■差分バックアップ」と表示(6行目)
実行権を与えます。
# chmod +x /scripts/do_backup_diff.sh
差分バックアップ用シェルスクリプトを手動で実行してみます。
# sh /scripts/do_backup_diff.sh
: (途中省略) : ---evalcall---E--- Call to mkisofs to make ISO (ISO #1) ...OK Done. Done. Backup and/or verify ran to completion. Everything appears to be fine. /var/cache/mindi/mindi.iso, a boot/utility CD, is available if you want it. Data archived OK. Mondoarchive ran OK. See /var/log/mondoarchive.log for details of backup run. Execution run ended; result=0 Type 'less /var/log/mondoarchive.log' to see the output log ■差分バックアップ ■開始:2016年 12月 30日 金曜日 21:37:22 JST ■終了:2016年 12月 30日 金曜日 21:42:03 JST ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/sdb1 917G 4.5G 866G 1% /mnt/usb_hdd 合計 4632292 drwxr-xr-x 3 root root 4096 12月 30 21:41 . drwxr-xr-x. 4 root root 34 12月 23 20:01 .. -rw-r--r-- 1 root root 4402702336 12月 30 19:58 20161230-1.iso -rw-r--r-- 1 root root 340736000 12月 30 21:42 20161230-1.iso drwx------ 2 root root 16384 12月 29 22:45 lost+found
差分バックアップなので、所要時間は数分と短めでした。
フルバックアップを月曜に実施し、火~日曜は差分バックアップを実施するように、# crontab -e で設定。
# crontab -e
エディタが起動するので、以下のように設定を変更します。
MAILTO=info@a21-hp.com 00 03 * * 1 /scripts/do_backup.sh 00 03 * * 2-7 /scripts/do_backup_diff.sh 30 02 * * * /scripts/do_virusscan.sh 20 02 * * * /scripts/clamav-update.sh
フルバックアップは毎週月曜の03:00から/scripts/do_backup.shを実行(2行目)。
差分バックアップは毎週火~日曜の03:00から/scripts/do_backup_diff.shを実行(3行目)。
クーロンデーモンによる定期バックアップを実行した結果、以下のようなメールが来ました。
1/23月にフルバックアップ、1/24火〜1/29日は差分バックアップが実行されています。差分バックアップは6分ほどで済み、作業時間が短縮できています。差分バックアップなので、ディスク使用量も削減できています。
・・・USB3.0接続は無駄だったかも知れませんが、差分バックアップの利用に踏み切ることができました。
・・・何事もやってみることが大事で、別の価値を見いだすキッカケになるうる!(かも知れない)
・・・と言う事にしておきましょう。