26:Webサーバー間通信内容暗号化

ここも私のバイブルであるhttp://centossrv.com/apache-ssl.shtmlを参考
mod_sslのインストール
# yum -y install mod_ssl
ディレクトリーを移動する
# cd /etc/pki/tls/certs/
サーバー用証明書有効期限を1年から10年に変更
# sed -i ‘s/365/3650/g’ Makefile
サーバー用秘密鍵・証明書作成
# make server.crt

前略
Enter pass phrase: ← 任意のパスワードを入力、後で消去するので何でもいい※表示はされない
Verifying - Enter pass phrase: ← 入力したのパスワードを応答(確認)※表示はされない
中略
Enter pass phrase for server.key: ← 上記で応答したパスワードを応答※表示はされない
中略
Country Name (2 letter code) [GB]:JP ← 国名応答
State or Province Name (full name) [Berkshire]:Tokyo ← 都道府県名応答
Locality Name (eg, city) [Newbury]:Ota-ku ← 市区町村名応答
Organization Name (eg, company) [Default Company Ltd]:kinryokai.net ← サイト名応答(なんでもいい
Organizational Unit Name (eg, section) []: ← 空ENTER
Common Name (eg, your name or your server's hostname) []:kinryokai.net ← Webサーバー名応答
Email Address []:webmaster@kinryokai.net ← 管理者メールアドレス応答

サーバー用秘密鍵からパスワード削除
# openssl rsa -in server.key -out server.key
ちなみに最近世間を騒がしたSSLの問題は(ここに詳しく説明がある)
openssl-1.0.1e-16.el6_5.7以上がインストールされればOKです。
確認は
# yum list installed | grep openssl

カテゴリー: 省エネサーバー製作(CentOS 6) | コメントする

25:phpMyAdminをインストール

以前使っていた、phpmyadmin4.2.2をインストールしようと思いましたが、ここによると4.2.7.1未満のバージョンにはクロスサイトスクリプティングの脆弱性が存在するそうですので、最新の4.6.1にしようとか、でもこのバージョンはMySQL 5.5、php 5.5以上を要求します。CentOS 6.7 のphpは5.3.3でバージョンを上げてもいいのですが、phpの5.3と5.5では色々は細かな変更がある様で、XOOPSを使った(文字コード:EUCーJP)WEBに影響が出そうなので(http://xoops.ryus.co.jp/modules/d3blog/details.php?bid=382に解説がある)、もう少し勉強してからphpのバージョンを上げることにした。phpmyadminのバージョンを下げ4.0.10.15にする。https://www.phpmyadmin.net/downloads/から
phpMyAdmin-4.0.10.15-all-languages.tar.gzをダウンロードし、適当な場所に保存したら、ファイルを右クリックし、解凍をしておく。(phpMyAdmin-4.0.10.15-all-languagesというディレクトリーが出来るので、それを自分のWEBにコピー後、名前をphpMyAdminに変更しておく。そしてブラウザから自分のURL/phpMyAdmin(localhost/phpMyAdminでも可)にアクセス後、mysqlに登録しているユーザー名、パスワードでログインをする。
ログイン後、右ペインの下の方に4つの知らせが書いてあった。Screenshot

1つ目は”phpMyAdmin の新しいバージョンが提供されています。アップグレードの検討をお奨めします。最新バージョンは 4.4.15.5 で、2016-02-29 にリリースされています。”とバージョンが上がっていますとの事。これは先般承知なので、無視

2つ目は” phpMyAdmin 環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっています。理由についてはこちらをご覧ください。”とある。

3つ目は”設定ファイルに、暗号化 (blowfish_secret) 用の非公開パスフレーズの設定を必要とするようになりました。”とありこれは地色がピンクでいかにもやばそう。

4つ目は”お使いになっている PHP の MySQL ライブラリのバージョン 5.1.72 が MySQL サーバのバージョン 5.6.29 と異なります。これは予期しない不具合を起こす可能性があります。”とある。これはmysqlを5.6にバージョンアップしてあるので、出ているワーニング。

早速、2つ目から対処する。(参考:http://www.dbonline.jp/phpmyadmin/setting/index1.html)phpMyAdmin 上で、右ペインのインポートタブをクリックし、参照をクリックし、インストールしたexamplesの中にあるcreate_tables.sqlを指定 し、実行(スクロースダウンしないと見えない)をクリックし、phpmyadminデーターベースをインポートします。ブラウザの再読み込みを行うと、左 ペインにphpmyadminが出来ています。phpmyadmin用のユーザーの作成及びconfigファイルの設定をしていきます。
まず右ペインのSQLタブをクリックし、
GRANT ALL ON phpmyadmin.* TO pma@localhost IDENTIFIED BY ‘xxxxxxx’;
(xxxxxxx は設定したいパスワード)を入力し、実行をクリックするとユーザーが作成されます。その確認は左ペインのmysqlをクリックするとテーブルが表示されま すので、userをクリックすると、右ペインにユーザとしてpmaが出来ています。

URL/phpMyAdmin/に config.sample.inc.php がありますので、これをconfig.inc.phpに変更し、下記の設定をしますが(変更部分のみ抜粋)

/* User used to manipulate with storage */ 
$cfg['Servers'][$i]['controlhost'] = '';
$cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'xxxxxxx';
/* Storage database and tables */ 
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin'; 
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark'; 
$cfg['Servers'][$i]['relation'] = 'pma_relation'; 
$cfg['Servers'][$i]['table_info'] = 'pma_table_info'; 
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords'; 
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages'; 
$cfg['Servers'][$i]['column_info'] = 'pma_column_info'; 
$cfg['Servers'][$i]['history'] = 'pma_history'; 
$cfg['Servers'][$i]['table_uiprefs'] = 'pma_table_uiprefs'; 
$cfg['Servers'][$i]['tracking'] = 'pma_tracking'; 
$cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords'; 
$cfg['Servers'][$i]['userconfig'] = 'pma_userconfig'; 
$cfg['Servers'][$i]['recent'] = 'pma_recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
/* Contrib / Swekey authentication */
$cfg['Servers'][$i]['auth_swekey_config'] = '/etc/swekey-pma.conf';

$cfgで始まる行のコメントを外す。xxxxxxxは今、設定したパスワード。
phpMyAdminからログアウト後、ログインすればOK

3つ目はhttp://www.la-nouveau.mydns.jp/wordpress/?p=99を参考にexpectをインストールし、mkpasswdを行う
# yum -y install expect
# mkpasswd -l 46
でもって、ここで表示されたランダムのパスワードをphpMyAdminの下にあるconfig.inc.phpの$cfg[‘blowfish_secret’]の所に書き込めばOK。

4つ目は現時点では問題はなさそう。解決方法を研究中

カテゴリー: 省エネサーバー製作(CentOS 6) | コメントする

24:apacheの設定

基本的にはhttp://centossrv.com/apache.shtmlを参考にした。

やっとWEBサーバーの設定になりますが、まず必要なプログラムのインストール(apacheはデフォルトでインストール済み)
# yum -y install php php-mbstring mysql mysql-server php-mysql
作ろうとしているWEBはXOOPSを使用しておりますので、mysql関係が必要です。
/etc/httpd/conf/httpd.confの設定。基本的にはhttp://centossrv.com と同じだが、変更した部分だけを記す。

KeepAlive ON ←多分少しはコネクションをキープした方が良さそうだから。
ServerAdmin xxxxxx@kinryokai.net
#ServerName www.example.com:80 ←virtualhost.conf で設定
#DocumentRoot "/var/www/html" ←virtualhost.conf で設定

<Directory />
    Options Includes ExecCGI FollowSymLinks  ←Includes ExecCGI を記入
    AllowOverride None ←.htaccessは使わないので、noneのまま
</Directory>

<Directory "/var/www/html"> から </Directory> までを消去。
これはdocument rootの設定だが、virtualhost.conf で設定

DirectoryIndex index.html index.php index.html.var ←index.phpを追加

SetEnvIf Request_URI "\.(gif|jpg|png|JPG|GIF|PNG|bmp|css|ico|ICO)$" no_log ←追加
SetEnvIf Request_URI "default\.ida" no_log ←追加
SetEnvIf Request_URI "cmd\.exe" no_log ←追加
SetEnvIf Request_URI "root\.exe" no_log ←追加
SetEnvIf Request_URI "Admin\.dll" no_log ←追加
SetEnvIf Request_URI "NULL\.IDA" no_log ←追加
SetEnvIf Remote_Addr 192.168 no_log ←追加
SetEnvIf Remote_Addr 127.0.0.1 no_log ←追加
#CustomLog logs/access_log combined env=!no_log ←コメントアウト、virtualhost.confで設定

Alias /icons/ "/xxxxx/icons/" ←場所を変更
<Directory "/xxxxx/icons">

#<IfModule mod_dav_fs.c> ←webdav.conf で設定
    # Location of the WebDAV lock database.
#    DAVLockDB /var/lib/dav/lockdb
#</IfModule>

#ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"  ←virualhost.confで設定
#<Directory "/var/www/cgi-bin">
#    AllowOverride None
#    Options None
#    Order allow,deny
#    Allow from all
#</Directory> 

をしていく。最後の方のパーティションを作るあたりは今回は既に出来ているので、無視していい。
AllowOverride None は説明が要るかな。

https://httpd.apache.org/docs/current/ja/howto/htaccess.html
の ”いつ .htaccess ファイルを使う(使わない)か。”を参照してください。

virtualhost の設定をする。
/etc/httpd/conf.d/virtualhost.conf に

NameVirtualHost *:80
# kinryokai
<VirtualHost *:80>
    DocumentRoot /xxxxxxx/public/kinryokai
    ServerName www.kinryokai.net
    ServerAlias kinryokai.net
    ErrorLog logs/kinryokai_error_log
    CustomLog logs/kinryokai_access_log combined env=!no_log
    <Directory "/xxxxx/public/kinryokai/upfiles">
        SetEnvIf Referer "^http://www\.kinryokai\.net" ref_ok
        order deny,allow
        deny from all
        allow from env=ref_ok
    </Directory>
    <Directory "/xxxxx/public/kinryokai/uploads">
        SetEnvIf Referer "^http://www\.kinryokai\.net" ref_ok
        order deny,allow
        deny from all
        allow from env=ref_ok
    </Directory>
    ScriptAlias /cgi-kinryo/ "/xxxxx/cgi-kinryo/"
    <Directory "/xxxxx/cgi-kinryo">
        AllowOverride None
        Options None
        SetEnvIf Referer "^http://www\.kinryokai\.net" cgi-kinryo_ok
        order deny,allow
        deny from all
        allow from env=cgi-kinryo_ok
    </Directory>
</VirtualHost>

この設定の意味はcentocsrv.comを参考にしてください。
又、 “/xxxxx/public/kinryokai/upfiles”と “/xxxxx/public/kinryokai/uploads” の設定はここに画像などを置いておくので、他のWEBからリンクを張られ、遅くなるのを防ぐ設定です。
もう一度 conf のチェック
# apachectl configtest
ここを参考にmysqlの設定、起動をしてください。
デフォルトではアップ出来るサイズが小さいので、/etc/php.iniを変更します。

post_max_size = 50M
upload_max_filesize = 50M
date.timezone = Asia/Tokyo ← 先頭の;を取るのを忘れずに

上記のように3ヶ所変更をします。
webサーバーの起動
# service httpd start
# chkconfig httpd on
今はテストなので/etc/hostsにこのサーバーのIPとURLを設定し、
ブラウザでwww.kinryokai.net にアクセスし、表示されればOK。
マイグレーション時にルーターの設定を変更し、このサーバーにフォワードする。

カテゴリー: 省エネサーバー製作(CentOS 6) | コメントする

12:バックアップサーバーにwebサーバーを追加する

まだapacheなどの設定が終わっていませんが、作ったWEBサーバーがバックアップされるように設定をしていきます。
まずはwebサーバーでbaculaに必要なプログラムをインストール
# yum -y install bacula-client bacula-console
次に/etc/bacula/bacula-fd.confの設定
# gedit /etc/bacula/bacula-fd.conf

Director {
  Name = bacula-dir
  Password = "XXXX"
}
Director {
  Name = bacula-mon
  Password = "xxxx"
  Monitor = yes
}
FileDaemon {
  Name = web-fd       ← bacula-dir.confの名前に合わせる
  FDport = 9102        # where we listen for the director
  WorkingDirectory = /var/spool/bacula
  Pid Directory = /var/run
  Maximum Concurrent Jobs = 20
}
# Send all messages except skipped files back to Director
Messages {
  Name = Standard
  director = bacula-dir = all, !skipped, !restored
}

次に/etc/bacula/bconsoleの設定
# gedit /etc/bacula/bconsole.conf

Director {
  Name = bacula-dir
  DIRport = 9101
  address = 192.168.xxx.xxx ← directorの動いているホストの指定をする
  Password = "xxxxx"
}

bacula-fdをスタートしておく
# service bacula-fd start
# chkconfig bacula-fd on
*************
ここからバックアップサーバーの設定
/etc/bacula/bacula-dir にWEBサーバーを追加するが、追加する項目は
Job { Name = “Backup-web”
Job { Name = “Restore-web”
FileSet { Name = “Full web”
Client { Name = web-fd
の 四つであるが、それぞれ他のサーバーの設定から容易に設定内容が見当がつくと思われるので、ここでは表示しない。ただ FileSet の設定には注意の事。私の場合は/abcd1や/abcd2は別のパーティションをマウントしているので includeに設定が必要になる。
設定が終わったら、bcula-dir を再起動
# service bacula-dir restart
webサーバーの最初のバックアップをする
# bconsole

Connecting to Director localhost:9101
1000 OK: bacula-dir Version: 5.0.0 (26 January 2010)
Enter a period to cancel a command.
*run ← 緑は入力する文字
Automatically selected Catalog: MyCatalog
Using Catalog "MyCatalog"
A job name must be specified.
The defined Job resources are:
     1: Backup-samba
     2: Backup-kvm
     3: Backup-web
     4: BackupCatalog
     5: Restore-samba
     6: Restore-kvm
     7: Restore-web
Select Job resource (1-7): 3
Run Backup job
JobName:  Backup-web
Level:    Incremental
Client:   web-fd
FileSet:  Full web
Pool:     File (From Job resource)
Storage:  File (From Job resource)
When:     2014-05-20 21:46:47
Priority: 10
OK to run? (yes/mod/no): yes

これでバックアップが始まり、最初なのでかなり時間がかかる。

カテゴリー: Baclua(バックアップ)に挑戦 | コメントする

22:webサーバーを作る準備

ここを参照しクローンを作る。
次にこのサーバーにマウントする領域を設定していくが、このWEBサーバーの構成は
vda: ここにさらに領域が作られ、ルートが出来ている。
vdb: SWAP領域
vdc: /Downloadにマウントされる、他のサーバーと共有している。ここまではクローンで出来ている
vdd: /abcd1にマウント、ここにWEBコンテンツ、mysqlのデーターなどが保存される。
vde: /abcd2にマウント、ruby on rails のデーター保存場所
vdf: /abcd3にマウント、メールデーターの保存場所

マウント場所はダミーです。

元のサーバーとIPなどがダブっているが、参照先にその変更方法もあるので済まして置く。
次にサーバーを起動し、/etc/fstab を設定、下記を最後に追記

/dev/vdd		/abcd1	ext4	defaults		0 0
/dev/vde		/abcd2	ext4	defaults		0 0
/dev/vdf		/abcd3	ext4	defaults		0 0

新しいdirectoryの作成とアトリビュートの設定
# mkdir /abcd1
他のパーティションも設定する
そして設定の反映
# mount -a
次は本来ならapacheの設定だが、私はサーバーのマイグレーションをやろうとしているので、データーのコピーが必要。
色々考えたがrsyncを使うことにした。今はテストの段階だが、いずれデーターが必要なのでrsyncで同期をして置くことにした。
完全にテストが終わり、マイグレーションを実施する直前に再度 rsysnc で同期を取る。
rsyncの使い方はここに詳しく解説がある
rsyncデーモンをコピー元で動かすか、コピー先で動かすか迷ったが、コピー先つまりこのサーバーで動かすことにした。
CentOSではrsyncのデーモン動作はxinetd経由で動かすのだが、インストール済みである。また/etc/xinetd.d/rsync もxinetdのインストール時に出来ている。

service rsync
{
	disable	= no ← noに変更
# 	flags		= IPv6
 	socket_type     = stream
 	wait            = no
 	user            = root
 	server          = /usr/bin/rsync
 	server_args     = --daemon
 	log_on_failure  += USERID
}

flags=IPv6の設定の意味がよく分からない。これを行うとIPv4とIPv6の両方アクセプトするのか(多分この意味と思うが)、IPv6だけで通信を行うのか不明なのでコメントアウトしておいた。
次にrsyncの設定ファイルを作る
# gedit /etc/rsyncd.conf

# Global options
uid           = root
gid           = wheel
use chroot    = yes
log file      = /var/log/rsyncd.log
pid file      = /var/run/rsyncd.pid
hosts allow   = 192.168.xx.xx/24
hosts deny    = *
dont compress = *.gz *.tgz *.zip *.pdf *.sit *.sitx *.lzh *.bz2 *.jpg *.gif *.png

# Module options
[abcd1]
         comment      = rsync server
         path         = /abcd1
         auth users   = root
         secrets file = /etc/rsyncd.secrets
         read only    = no
[abcd2]
 	 comment      = rsync server
         path         = /abcd2
         auth users   = root
         secrets file = /etc/rsyncd.secrets
         read only    = no
[abcd3]
 	 comment      = rsync server
         path         = /abcd3
         auth users   = root
         secrets file = /etc/rsyncd.secrets
         read only    = no
 

hosts allow = で接続出来るホストをローカルネットワークに限定している。(xx.xx は環境に合わせる)
パスワードファイルの設定 /etc/rsyncd.secrets

root:xxxxxxxxx

ユーザー名:パスワードのように設定。
私はrsyncd.confに別のユーザーを指定したが出来なかった。rootにすると出来るようになった。又、このパスワードはOSのパスワードとは関係ない、勝手に決めてよい。
xinetdを再起動すればRQが来た時、動作する
# service xinetd restart
xinetdの再起動までやったが、ここはdaemonモードでやりたいので、rsyncをデーモンでスタートする
# rsync –daemon
ちなみに停止はPIDを調べてkillする
# ps auxww | grep ‘rsync –daemon’

root      2183  0.0  0.0 107624   536 ?        Ss   12:52   0:00 rsync --daemon
root      2328  0.0  0.0 107464   892 pts/0    S+   13:03   0:00 grep rsync --daemon

# kill 2183
***************
ここからはコピー元のサーバーの設定。
パスワードファイルを作る。これはなくてもパスワードを聞いてくるのですが、スクリプトを組、cronで定期的に実行するにはパスワードを聞いて来ては困るので、それに備え作っておく。
# gedit /etc/rsync.passwd

xxxxxxx

とパスワードだけを書いておくそうな。
rsyncのデーモン動作の解説WEBには複数のユーザー設定もあるが、ユーザー名の指定が無いがどう動作するのかなー?
早速コピーをするが、万が一コピー元とコピー先を間違えると全部消えるので、まずはドライラン(実際にコピーはせずテストのみする)
rsyncの書式は rsync オプション コピー元 コピー先なので
# rsync -avn –password-file=/etc/rsync.passwd /webdata/ rsync://192.168.xx.xx/abcd1
もし、ユーザー認証で跳ねられる時は、rsync.passwd とrsyncがデーモンで動いているホストの rsyncd.secrets のパーミッションが600になっているか確認。
大丈夫そうなので
# rsync -av –password-file=/etc/rsync.passwd /webdata/ rsync;//192.168.xx.xx/abcd1
もちろんIPは今制作中のホスト。
最初はrsyncd.confの auth users = root と secrets file = /etc/rsyncd.secrets をコメントアウトし、テストした方が問題が切り分けやすい。
もちろん –password-file=/etc/rsync.passwd は付けない
同様に他のパーティションもコピーするがその前に元のWEBサーバーに登録してあるユーザーをこのサーバーにも登録しておく。ただしUIDを同じにしないといけない。
書式:useradd オプション 登録するユーザー名
私はこのWEBサーバーにFTPで接続を許すユーザーがおり、homeディレクトリーが違う。そのようなユーザーには
# useradd -u 元のWEBと同じUID -d 指定するディレクトリー ユーザー名
新規ユーザー作成ではGIDも指定したUIDと同じだが、usermodでUIDを変更したら、group IDも変更しておく
# groupmod -g 元のWEBと同じGID グループ名
次に作ったユーザーのパスワードを設定
書式:passwd ユーザー名
で2回同じパスワードを入れ設定する。
必要であれば所有者の変更(UIDが違う場合)
書式:chown -R ユーザー名:グループ名 設定するdirectoryのフルパス
その後rsyncで/homeをコピーする
****************
その後、制作中のホストに戻っておく。

カテゴリー: 省エネサーバー製作(CentOS 6) | コメントする

11:リストア速度(Building directory treeの速度)が劇的に早くなった

今までBuilding directory treeに時間が掛かっていたのはMYSQLの設定だった。
時間が掛かりすぎるのでbacluaのメーリングリストで聞いたら、やっぱりおかしいようだ。
一番の問題点はMYSQLのデーターベースエンジンに MyISAMを使っている事みたい。
これをInnoDBに変更する。ALTER TABLE テーブル名 ENGINE=InnoDB; を行なえと書いてあるが、データーベースごとそっくり変更出来ないかと調べたが、テーブル単位でしか出来ないようだ。
それではとデーターベースをエクスポートして、データーベース名を変更し、新規にbaculaをInnoDBで作り、インポートしたらおかしくなっていた。インポートしたファイルを見るとDBの指定がMyISAMになっていた。
面倒くさいので、既存のDBのテーブルを一つずつInnoDBにしてから
http://bacula.us/tuning/ にあるように /etc/my.cnf に

    sort_buffer_size = 2MB
    innodb_buffer_pool_size = 128MB
    innodb_flush_log_at_trx_commit = 0
    innodb_flush_method = O_DIRECT

を追記し、mysqlを再起動、テストで

+-------+-------+----------+---------------+---------------------+------------+
| JobId | Level | JobFiles | JobBytes      | StartTime           | VolumeName |
+-------+-------+----------+---------------+---------------------+------------+
|     4 | F     |  258,441 | 2,262,481,683 | 2015-07-02 14:32:50 | Vol-0004   |
|    14 | I     |      158 |    79,623,411 | 2015-07-03 04:32:49 | Vol-0014   |
+-------+-------+----------+---------------+---------------------+------------+
You have selected the following JobIds: 4,14
Building directory tree for JobId(s) 4,14 ...

のケースではBuilding directory treeに5時間20分(リストア全体の時間ではない、Building directory treeだけにかかった時間)掛かっていたのが、10秒位で終わった。
何だこれは!!こんなに違うの!!そういえば以前は”Building directory tree”の時CPUのユーティライゼションが100%になっていた。この時SWAPの状態をチェックしていなかったが、もしかしたらSWAPが大量に発生していたのかも?
結論】baculaでmysqlを使うときは絶対にDBのベースエンジンは InnoDB にし、上記の設定を追加する事。その後私はメモリーに少し余裕があるので 

innodb_buffer_pool_size = 256M

に変更した

カテゴリー: Baclua(バックアップ)に挑戦 | コメントする

10:リストアに時間がかかりすぎる

11:リストアの時間が劇的に早くなったを参照の事。
どうもリストア時のファイルの作成(Building directory tree)に時間がかかりすぎる

+-------+-------+----------+---------------+---------------------+------------+
| JobId | Level | JobFiles | JobBytes      | StartTime           | VolumeName|
+-------+-------+----------+---------------+---------------------+------------+
|     4 | F     |  258,441 | 2,262,481,683 | 2015-07-02 14:32:50 | Vol-0004   |
|    14 | I     |      158 |    79,623,411 | 2015-07-03 04:32:49 | Vol-0014   |
+-------+-------+----------+---------------+---------------------+------------+
 You have selected the following JobIds: 4,14
 Building directory tree for JobId(s) 4,14 ...  +++++++++++++++++++++++++++++++++++++++++++
224,831 files inserted into the tree.

上記の分で5時間20分もかかっている。
誤解の無いように言っておくが、これはリストアにかかった時間ではない。Building directory treeだけにかかった時間である。
ここで不安になって来た。もし壊れて場合こんなに時間がかかっているとその間はサービスが無い状態になってしまう。
ここから mark * で少し時間がかかり(上にあるように224、831もファイルがあるのでそれに印を付けるため)それから、いよいよリストアになりこれにも時間がかかる。
上の場合はフルバックアップと一つのインクリメントファイルだけである。最悪の場合(土曜日の時)フル、差分、6個のインクリメントの計8個のファイルを使って、リストアするファイルを作るとすれば、一体どれだけ時間がかかるの?
それとも私のやり方が間違っているの?どれだけ時間がかかるか調べて見ようか。

ここを参照 劇的に早くなる

カテゴリー: Baclua(バックアップ)に挑戦 | コメントする

9:バックアップする設定を変更する

8:他のホストにリストアでも言っていますが、バックアップされるホストの全てのファイルを(マウントしている他の領域の分も含めて)FileSetで指 定してしまうと、リストア時にものすごく時間がかかってしまいます。ちなみに私はあるホストには/領域で6.7GB、マウントしている領域で2.4GBも う一つの領域で9.9GBをバックアップしたら、リストア時に8時間以上かかってしまいました。ここを参照 劇的に早くなる

(バックアップされたサイズは10.9GB)なので、方針 を変更し、それぞれのパーティション毎にJOBを作り、それに合わせてFILESETも作るようにしましたので、レストアー時はパーティション毎になります。

カテゴリー: Baclua(バックアップ)に挑戦 | コメントする

8:他のホストにリストア

バックアップしたデーターをリストアする時には同じホストへリストア(デフォルトの設定)すると、ディスクの空き容量が足りない事があります(使用容量と同じより大きい空きスペースがいる)。
私は大容量のディスクがある、バックアップサーバーにリストアしますが、これまでその方法が判らなかったのですが(回答がインターネットにあまり無い)。
やっと方法が判りましたが、簡単でした。ここをクリックし、最後の
OK to run? (yes/mod/no): まで進んで下さい。そこで下記のようにすると他のホストにリストアします

OK to run? (yes/mod/no): m
Parameters to modify:
      1: Level
      2: Storage
      3: Job
      4: FileSet
      5: Restore Client
      6: When
      7: Priority
      8: Bootstrap
      9: Where
     10: File Relocation
     11: Replace
     12: JobId
     13: Plugin Options
Select parameter to modify (1-13): 5
The defined Client resources are:
      1: smb5-fd
      2: kvm5-fd
      3: web5-fd
Select Client (File daemon) resource (1-3): 1
Run Restore job JobName:         Restore-web5
Bootstrap:       /var/spool/bacula/bacula-dir.restore.1.bsr
Where:           /Backup/Restores/web5
Replace:         always
FileSet:         Full web5
Backup Client:   web5-fd
Restore Client:  smb5-fd
Storage:         File
When:            2015-05-10 10:06:20
Catalog:         MyCatalog Priority:        10
Plugin Options:  *None*
OK to run? (yes/mod/no): y

この意味はmで編集を選び、5でリストアされたファイルを保存するホスト選択にし、1でディスク容量の余っているホストに保存の指定をし、yでリストアを始めます。
ここで気を付けなければならないのは、本体でディスクを分けてマウントしていても、リストアした分は( / ルート)以下がすべてリストアされますのでマウントしていたディスクのすべての使用容量分の空きスペースがいります。

これを避けるには、各パーティション毎にJOBを独立して作れば、リストアーはそのパーティション分になります。

カテゴリー: Baclua(バックアップ)に挑戦 | コメントする

7:リストアを試す

そろそろバックアップデーターも貯まって来たのでリストアをためします。

# bconsole
Connecting to Director 192.168.135.60:9101
1000 OK: bacula-dir Version: 5.0.0 (26 January 2010)
Enter a period to cancel a command.
* restore
Automatically selected Catalog: MyCatalog
Using Catalog "MyCatalog"

First you select one or more JobIds that contain files
to be restored. You will be presented several methods
of specifying the JobIds. Then you will be allowed to
select which files from those JobIds are to be restored.

To select the JobIds, you have the following choices:
     1: List last 20 Jobs run
     2: List Jobs where a given File is saved
     3: Enter list of comma separated JobIds to select
     4: Enter SQL list command
     5: Select the most recent backup for a client
     6: Select backup for a client before a specified time
     7: Enter a list of files to restore
     8: Enter a list of files to restore before a specified time
     9: Find the JobIds of the most recent backup for a client
    10: Find the JobIds for a backup for a client before a specified time
    11: Enter a list of directories to restore for found JobIds
    12: Select full restore to a specified Job date
    13: Cancel
Select item:  (1-13): 5
Defined Clients:
     1: samba-fd
     2: web-fd
Select the Client (1-2): 2
The defined FileSet resources are:
     1: Catalog
     2: Full web
Select FileSet resource (1-2): 2
+-------+-------+----------+----------------+---------------------+------------+
| JobId | Level | JobFiles | JobBytes       | StartTime           | VolumeName |
+-------+-------+----------+----------------+---------------------+------------+
|   214 | F     |  326,050 | 24,520,406,195 | 2013-12-03 02:16:20 | Vol-0132   |
|   229 | D     |    2,409 |    103,565,858 | 2013-12-08 02:10:13 | Vol-0147   |
|   232 | I     |   50,884 |    680,830,900 | 2013-12-09 02:06:08 | Vol-0150   |
|   237 | I     |   86,776 |  1,018,653,845 | 2013-12-10 02:06:18 | Vol-0153   |
+-------+-------+----------+----------------+---------------------+------------+
You have selected the following JobIds: 214,229,232,237

Building directory tree for JobId(s) 214,229,232,237 ...  

コ ンソールを立ち上げ、restoreコマンドをして、直近のバックアップを選び(5)、クライアントを選択し、ファイルセットを選べば上記のような表示に なります。最初のフルバックアップが示すように、圧縮後でも24Gもあるので、ここからすごく時間がかかります。私の場合は約4時間位かっかたみたいで す。ここを参照 リストアの時間が劇的に早くなる
ともかく

386,584 files inserted into the tree.

You are now entering file selection mode where you add (mark) and
remove (unmark) files to be restored. No files are initially added, unless
you used the "all" keyword on the command line.
Enter "done" to leave this mode.

cwd is: /
$ mark *
431,973 files marked.
$ done
Bootstrap records written to /var/spool/bacula/bacula-dir.restore.1.bsr

The job will require the following
   Volume(s)                 Storage(s)                SD Device(s)
===========================================================================
   
    Vol-0132                  File                      FileStorage              
    Vol-0147                  File                      FileStorage              
    Vol-0150                  File                      FileStorage              
    Vol-0153                  File                      FileStorage              

Volumes marked with "*" are online.


431,973 files selected to be restored.

The defined Restore Job resources are:
     1: Restore-samba
     2: Restore-web
Select Restore Job (1-2): 2
Run Restore job
JobName:         Restore-web
Bootstrap:       /var/spool/bacula/bacula-dir.restore.1.bsr
Where:           /Backup/BackupTemp/web
Replace:         always
FileSet:         Full web
Backup Client:   web-fd
Restore Client:  web-fd
Storage:         File
When:            2013-12-11 19:43:33
Catalog:         MyCatalog
Priority:        10
Plugin Options:  *None*
OK to run? (yes/mod/no): yes
Job queued. JobId=239
*
11-12月 19:43 bacula-dir JobId 239: Start Restore Job Restore-web.2013-12-11_19.43.40_04
11-12月 19:43 bacula-dir JobId 239: Using Device "FileStorage"
11-12月 19:43 bacula-sd JobId 239: Ready to read from volume "Vol-0132" on device "FileStorage" (/Backup).
11-12月 19:43 bacula-sd JobId 239: Forward spacing Volume "Vol-0132" to file:block 0:204.

Mark * で全ファイルに印を付け、doneでマークの作業を終われせ、2 でリストアするJOB(ホストの指定)し、yes でリストアの実行をします。
しばらくするとメールが着た。内容は下記の通り

11-12月 20:18 bacula-sd JobId 239: End of Volume at file 5 on device "FileStorage" (/Backup), Volume "Vol-0132"
11-12月 20:18 bacula-sd JobId 239: Ready to read from volume "Vol-0147" on device "FileStorage" (/Backup).
11-12月 20:18 bacula-sd JobId 239: Forward spacing Volume "Vol-0147" to file:block 0:204.
11-12月 20:18 bacula-sd JobId 239: End of Volume at file 0 on device "FileStorage" (/Backup), Volume "Vol-0147"
11-12月 20:18 bacula-sd JobId 239: Ready to read from volume "Vol-0150" on device "FileStorage" (/Backup).
11-12月 20:18 bacula-sd JobId 239: Forward spacing Volume "Vol-0150" to file:block 0:204.
11-12月 20:19 bacula-sd JobId 239: End of Volume at file 0 on device "FileStorage" (/Backup), Volume "Vol-0150"
11-12月 20:19 bacula-sd JobId 239: Ready to read from volume "Vol-0153" on device "FileStorage" (/Backup).
11-12月 20:19 bacula-sd JobId 239: Forward spacing Volume "Vol-0153" to file:block 0:204.
11-12月 20:21 bacula-sd JobId 239: End of Volume at file 0 on device "FileStorage" (/Backup), Volume "Vol-0153"
11-12月 20:21 bacula-sd JobId 239: End of all volumes.
11-12月 20:21 bacula-dir JobId 239: Bacula bacula-dir 5.0.0 (26Jan10): 11-12月-2013 20:21:30
  Build OS:               x86_64-redhat-linux-gnu redhat 
  JobId:                  239
  Job:                    Restore-web.2013-12-11_19.43.40_04
  Restore Client:         web-fd
  Start time:             11-12月-2013 19:43:42
  End time:               11-12月-2013 20:21:30
  Files Expected:         431,973
  Files Restored:         431,973
  Bytes Restored:         30,557,020,587
  Rate:                   13473.1 KB/s
  FD Errors:              0
  FD termination status:  OK
  SD termination status:  OK
  Termination:            Restore OK

11-12月 20:21 bacula-dir JobId 239: Begin pruning Jobs older than 43 years 5 months 25 days 11 hours 21 mins 30 sec.
11-12月 20:21 bacula-dir JobId 239: No Jobs found to prune.
11-12月 20:21 bacula-dir JobId 239: Begin pruning Jobs.
11-12月 20:21 bacula-dir JobId 239: Pruned Files from 4 Jobs for client web-fd from catalog.
11-12月 20:21 bacula-dir JobId 239: End auto prune.

19:43にリストアが始まり、20:21に終わり、約30GBをリストアした。

カテゴリー: Baclua(バックアップ)に挑戦 | コメントする