6:バックアップをする

firewallのTCP 9101から9103を開けておきます。
いよいよbacula(mysqlも)を走らせます。
# service mysqld start
# service bacula-sd start
# service bacura-fd start
# service bacula-dir start
この起動順はあまり関係無いと思うが、どこかのWEBでこの順番だったので。又、再起動にそなえ
# chkconfig mysqld on
# chkconfig bacula-dir on
# chkconfig bacula-sd on
# chkconfig bacula-fd on
もう一つあるホストでも
# service bacula-fd start
# chkconfig bacula-fd on
コンソールを走らせます。bacula-dirをインストールしたホストで
# bconsole
Connecting to Director localhost:9101
1000 OK: bacula-dir Version: 5.0.0 (26 January 2010)
Enter a period to cancel a command.
*status all
bacula-dir Version: 5.0.0 (26 January 2010) x86_64-redhat-linux-gnu redhat
Daemon started 04-12��2013 19:33, 0 Jobs run since started.
Heap: heap=270,336 smbytes=46,669 max_bytes=47,246 bufs=226 max_bufs=227

Scheduled Jobs:
Level Type Pri Scheduled Name Volume
===================================================================================
Incremental Backup 10 05-12��2013 02:05 Backup-samba *unknown*
Incremental Backup 10 05-12��2013 02:05 Backup-web *unknown*
Full Backup 11 05-12��2013 02:10 Catalog-samba *unknown*
====

Running Jobs:
Console connected at 04-12��2013 19:35
No Jobs running.
====
No Terminated Jobs.
====
Connecting to Storage daemon File at 192.168.135.65:9103

bacula-sd Version: 5.0.0 (26 January 2010) x86_64-redhat-linux-gnu redhat
Daemon started 04-12��2013 19:33, 0 Jobs run since started.
Heap: heap=135,168 smbytes=13,943 max_bytes=77,749 bufs=53 max_bufs=54
Sizes: boffset_t=8 size_t=8 int32_t=4 int64_t=8

Running Jobs:
No Jobs running.
====

Jobs waiting to reserve a drive:
====

Terminated Jobs:
====
以下、省略
まだ何もバックアップしていないので、こんな感じ表示になると思います。
で、いよいよバックアップを試す。一番最初は自動的にフルバックアップになる見たい。
*run
Automatically selected Catalog: MyCatalog
Using Catalog “MyCatalog”
A job name must be specified.
The defined Job resources are:
1: Backup-samba
2: Backup-web
3: Catalog-samba
4: Restore-samba
5: Restore-web
Select Job resource (1-5): 1
Run Backup job
JobName: Backup-samba
Level: Incremental
Client: samba-fd
FileSet: Full samba
Pool: File (From Job resource)
Storage: File (From Job resource)
When: 2013-12-04 19:40:42
Priority: 10
OK to run? (yes/mod/no): yes
Job queued. JobId=1
You have messages.
*message
04-12月 19:41 bacula-dir JobId 1: No prior Full backup Job record found.
04-12月 19:41 bacula-dir JobId 1: No prior or suitable Full backup found in catalog. Doing FULL backup.
04-12月 19:41 bacula-dir JobId 1: Start Backup JobId 1, Job=Backup-samba.2013-12-04_19.41.03_03
04-12月 19:41 bacula-dir JobId 1: Created new Volume “Vol-0001” in catalog.
04-12月 19:41 bacula-dir JobId 1: Using Device “FileStorage”
04-12月 19:41 bacula-sd JobId 1: Labeled new Volume “Vol-0001” on device “FileStorage” (/Backup).
04-12月 19:41 bacula-sd JobId 1: Wrote label to prelabeled Volume “Vol-0001” on device “FileStorage” (/Backup)
04-12月 19:41 bacula-dir JobId 1: Max Volume jobs exceeded. Marking Volume “Vol-0001” as Used.
*
上記は run で Jobを表示させ、1でBackup-sambaを選び、yesでバックアップを開始し、messageでそのメッセージを表示している。
フルバックアップなのでかなり時間がかかる筈。気長に待つことにする。しばらくしてmessageとすると、結果が表示される(この時終わっていなければ、メッセージは無いと言われるので、終わっていない事が解る)
*message
04-12月 19:41 bacula-dir JobId 1: No prior Full backup Job record found.
04-12月 19:41 bacula-dir JobId 1: No prior or suitable Full backup found in catalog. Doing FULL backup.
04-12月 19:41 bacula-dir JobId 1: Start Backup JobId 1, Job=Backup-samba.2013-12-04_19.41.03_03
04-12月 19:41 bacula-dir JobId 1: Created new Volume “Vol-0001” in catalog.
04-12月 19:41 bacula-dir JobId 1: Using Device “FileStorage”
04-12月 19:41 bacula-sd JobId 1: Labeled new Volume “Vol-0001” on device “FileStorage” (/Backup).
04-12月 19:41 bacula-sd JobId 1: Wrote label to prelabeled Volume “Vol-0001” on device “FileStorage” (/Backup)
04-12月 19:41 bacula-dir JobId 1: Max Volume jobs exceeded. Marking Volume “Vol-0001” as Used.
*message
04-12月 19:42 samba-fd JobId 1: /net is a different filesystem. Will not descend from / into /net
04-12月 19:42 samba-fd JobId 1: /sys is a different filesystem. Will not descend from / into /sys
04-12月 19:42 samba-fd JobId 1: /root/.gvfs is a different filesystem. Will not descend from / into /root/.gvfs
04-12月 19:42 samba-fd JobId 1: /dev is a different filesystem. Will not descend from / into /dev
04-12月 19:42 samba-fd JobId 1: /misc is a different filesystem. Will not descend from / into /misc
04-12月 19:42 samba-fd JobId 1: /Download is a different filesystem. Will not descend from / into /Download
04-12月 19:48 bacula-sd JobId 1: Job write elapsed time = 00:07:51, Transfer rate = 3.900 M Bytes/second
04-12月 19:48 bacula-dir JobId 1: Bacula bacula-dir 5.0.0 (26Jan10): 04-12月-2013 19:48:56
Build OS: x86_64-redhat-linux-gnu redhat
JobId: 1
Job: Backup-samba.2013-12-04_19.41.03_03
Backup Level: Full (upgraded from Incremental)
Client: “samba-fd” 5.0.0 (26Jan10) x86_64-redhat-linux-gnu,redhat,
FileSet: “Full samba” 2013-12-04 19:41:03
Pool: “File” (From Job resource)
Catalog: “MyCatalog” (From Client resource)
Storage: “File” (From Job resource)
Scheduled time: 04-12月-2013 19:40:42
Start time: 04-12月-2013 19:41:05
End time: 04-12月-2013 19:48:56
Elapsed time: 7 mins 51 secs
Priority: 10
FD Files Written: 181,795
SD Files Written: 181,795
FD Bytes Written: 1,810,354,266 (1.810 GB)
SD Bytes Written: 1,837,013,316 (1.837 GB)
Rate: 3843.6 KB/s
Software Compression: 60.8 %
VSS: no
Encryption: no
Accurate: no
Volume name(s): Vol-0001
Volume Session Id: 1
Volume Session Time: 1386153227
Last Volume Bytes: 1,843,893,529 (1.843 GB)
Non-fatal FD errors: 0
SD Errors: 0
FD termination status: OK
SD termination status: OK
Termination: Backup OK

04-12月 19:48 bacula-dir JobId 1: Begin pruning Jobs older than 43 years 8 months 18 days 10 hours 48 mins 56 sec.
04-12月 19:48 bacula-dir JobId 1: No Jobs found to prune.
04-12月 19:48 bacula-dir JobId 1: Begin pruning Jobs.
04-12月 19:48 bacula-dir JobId 1: No Files found to prune.
04-12月 19:48 bacula-dir JobId 1: End auto prune.

*
と 無事バックアップが終わった。このバックアップに 7 mins 51 secs かかり、そのサイズは 1.843 GB であった。この時のホストの使用量は /:4.7GB, /Smbdata 約300MB でした。(bcomsoleを抜けるにはexitを入力)
そしてメールが来る。他のホスト(Backup-web)と Catalog-samba をやって置く。その後 exit で bconsoleを終了する。
リストアもテストするがもう少しバックアップしたデータが貯まってから試す。

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

5:bacula-fdの設定

bacula-fd.confの設定をしていきますが、これはそれぞれのホストに設定をしていきますが、まずはこのホスト自身のバックアップも取るので、その設定(/etc/bacula/bacula-fd.conf)

# List Directors who are permitted to contact this File daemon
Director {
  Name = bacula-dir
  Password = "xxxxx"
}

Director {
  Name = bacula-mon
  Password = "xxxxx"
  Monitor = yes
}

# Restricted Director, used by tray-monitor to get the
#   status of the file daemon
# "Global" File daemon configuration specifications
FileDaemon {                          # this is me
  Name = samba-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
}

パスワード(データーベースに設定したPW)とName = samba-fd 以外はdefaultのままです。
次にもう一つのホストの設定ですが、その前にインストール
# yum install bacula-client bacula-console
でそのホストにbacula-clientとbacula-consoleをインストール。そして/etc/bacula/bacula-fd.confの設定

Director {
  Name = bacula-dir
  Password = "XXXX"
}

#
# Restricted Director, used by tray-monitor to get the
#   status of the file daemon
#
Director {
  Name = bacula-mon
  Password = "xxxx"
  Monitor = yes
}

#
# "Global" File daemon configuration specifications
#
FileDaemon {                          # this is me
  Name = bacula-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.confの設定

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

2014-07-01追記:basula-fdをスタートさせ、再起動後もスタートするように
# service bacula-fd start
# chkconfig bacula-fd on

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

4:bacula-sdの設定

bacula-sd.confの設定

Storage {                             # definition of myself
  Name = bacula-sd
  SDPort = 9103                  # Director's port      
  WorkingDirectory = "/var/spool/bacula"
  Pid Directory = "/var/run"
  Maximum Concurrent Jobs = 20
}

# List Directors who are permitted to contact Storage daemon
Director {
  Name = bacula-dir
  Password = "xxxxx"
}

# Restricted Director, used by tray-monitor to get the
#   status of the storage daemon
Director {
  Name = bacula-mon
  Password = "xxxxxx"
  Monitor = yes
}

# Note, for a list of additional Device templates please
#  see the directory <bacula-source>/examples/devices
# Or follow the following link:
#  http://bacula.svn.sourceforge.net/viewvc/bacula/trunk/bacula/examples/devices/

# Devices supported by this Storage daemon
# To connect, the Director's bacula-dir.conf must have the
#  same Name and MediaType. 
Device {
  Name = FileStorage
  Media Type = File
  Archive Device = /Backup ← バックアップfileを保存する場所
  LabelMedia = yes;                   # lets Bacula label unlabeled media
  Random Access = Yes;
  AutomaticMount = yes;               # when device opened, read it
  RemovableMedia = no;
  AlwaysOpen = no;
}

# Send all messages to the Director, 
# mount messages also are sent to the email address
Messages {
  Name = Standard
  director = bacula-dir = all
}

パスワード(データーベースに登録したPW)とArchive Device = /Backup以外はデフォールトまま。Archive Device は物理的に別のディスク(このホスト自身のバックアップも取るから)で容量の大きなDiskを使う。

bconsole.confの設定

Director {
  Name = bacula-dir
  DIRport = 9101
  address = localhost
  Password = "xxxxx"
}

パスワード(データーベースに設定したPW)以外はdefaultのままです。

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

3:bacula-dirの設定

まずは/etc/bacula/bacula-dir.confの設定(かなり長いですが)。http://lunatear.net/archives/001067.html も参考にしました

Director {                      # define myself
  Name = bacula-dir
  DIRport = 9101                # where we listen for UA connections
  QueryFile = "/usr/libexec/bacula/query.sql" ← こんなファイルは存在しないが、問題無い見たい
  WorkingDirectory = "/var/spool/bacula"
  PidDirectory = "/var/run"
  Maximum Concurrent Jobs = 1
  Password = "xxxxxx" ← database baculaに設定したパスワード
  Messages = Daemon
}

# Define the main nightly save backup job
#   By default, this job will back up to disk in /tmp
Job {
  Name = "Backup-samba" ← 私は二つのホストをバックアップするのでホスト毎に設定
  Client = samba-fd ← 私は二つのホストをバックアップするのでホスト毎に設定
  FileSet = "Full samba" ← 私は二つのホストをバックアップするのでホスト毎に設定
  JobDefs = "DefaultJob" ← このJobの定義はDefaultJobに定義してある
}

Job {
  Name = "Backup-web" ← 私は二つのホストをバックアップするのでホスト毎に設定
  Client = web-fd ← 私は二つのホストをバックアップするのでホスト毎に設定
  FileSet = "Full web" ← 私は二つのホストをバックアップするのでホスト毎に設定
  JobDefs = "DefaultJob" ← samba-fdと同じJobDefsを使う。つまり共通する部分をまとめてDefaultJobとして定義する
}

JobDefs {
  Name = "DefaultJob" ← 上の二つの定義をする
  Type = Backup ← バックアップをする
  Level = Incremental ← 増分の指定
  Schedule = "WeeklyCycle" ← スケジュールはWeeklyCycleを使う
  Storage = File ← ストレージのタイプはFileである。つまりディスクにファイルとして保存する
  Messages = Standard ← e-mailの内容はStandardに定義する
  Pool = File ← Poolはfile
  Priority = 10 ← プライオリティは数が少ないほど高い
  Write Bootstrap = "/var/spool/bacula/%c.bsr" ← Bootstrupファイルを記録するパス。下記参照
}

# Backup the catalog database (after the nightly save)
Job {
  Name = "Catalog-samba" ←名前の定義
  Client = samba-fd ←clientはsamba-fdを使う
  JobDefs = "CatalogJob" ←jobの定義はCatalogJobに書く
}

JobDefs {
  Name = "CatalogJob"
  Type = Backup ← バックアップをする
  Level = Full ← いつもfullバックアップをとる
  FileSet= "Catalog" ← FileSetとして、Catalogに定義する
  Schedule = "WeeklyCycleAfterBackup" ← スケジュールはWeeklyCycleAfterBackupを使う
  Storage = File ← ストレージのタイプはFileである。つまりディスクにファイルとして保存する
  Messages = Standard ← messageはStandardを使う
  Pool = File
  # This creates an ASCII copy of the catalog
  # Arguments to make_catalog_backup.pl are:
  #  make_catalog_backup.pl <catalog-name>
  RunBeforeJob = "/usr/libexec/bacula/make_catalog_backup.pl MyCatalog"
  # This deletes the copy of the catalog
#  RunAfterJob  = "/usr/libexec/bacula/delete_catalog_backup"
  Write Bootstrap = "/var/spool/bacula/%n.bsr" ← 下記参照
  Priority = 11
}

# Standard Restore template, to be changed by Console program
#  Only one such job is needed for all Jobs/Clients/Storage ...
#
Job {
  Name = "Restore-samba" ← 私は二つのホストをバックアップするのでホスト毎に設定
  Type = Restore ← リストアを定義している
  Client= samba-fd ← 私は二つのホストをバックアップするのでホスト毎に設定
  FileSet= "Full samba"                  
  Storage = File
  Pool = Default
  Messages = Standard
  Where = /Backup/Restores/samba ← リストアされるファイルの場所を指定
}

Job {
  Name = "Restore-web"
  Type = Restore
  Client= web-fd
  FileSet= "Full web"                  
  Storage = File
  Pool = Default
  Messages = Standard
  Where = /Backup/Restores/web ← リストアされるファイルの場所を指定
}

# List of files to be backed up
FileSet {
  Name = "Full samba" ← バックアップされるFileSetの名前
  Include {
    Options {
      signature = MD5
      Compression = GZIP ← GZip圧縮を使ってバックアップする
    }
    File = /
    File = /Data ← パーティションが違うので指定
    File = /Download ← パーティションが違うので指定
  }
  Exclude { ← バックアップしたくないディレクトリーをこれ以下に入れる
    File = /Backup ← パーティションが違うので指定しなくてもよいが念の為
    File = /var/spool/bacula ← defaultでbaculaが使うディレクトリ、私は変更しているので指定しなくてもよい
    File = /tmp ← 除外するディレクトリーの指定、最後に / を付けてはいけない
    File = /proc
    File = .journal ← 除外ファイルの指定、*.journal* と言う意味らしい
    File = .fsck
    File = .lock
  }
}

FileSet {
  Name = "Full web"
  Include {
    Options {
      signature = MD5
      Compression = GZIP
    }
    File = /
    File = /Maildata ← パーティションが違うので指定
    File = /webdata ← パーティションが違うので指定
    File = /Davdata ← パーティションが違うので指定
  }
  Exclude {
    File = /var/spool/bacula
    File = /tmp
    File = /proc
    File = .journal
    File = .fsck
    File = .lock
  }
}

# This is the backup of the catalog
FileSet {
  Name = "Catalog"
  Include {
    Options {
      signature = MD5
    }
    File = "/var/spool/bacula/bacula.sql" ← こんなファイルは無いが問題無いみたい
  }
}

# When to do the backups, full backup on first sunday of the month,
#  differential (i.e. incremental since full) every other sunday,
#  and incremental backups other days
Schedule {
  Name = "WeeklyCycle"
  Run = Full 1st sun at 2:05
  Run = Differential 2nd-5th sun at 2:05
  Run = Incremental mon-sat at 2:05
}

# This schedule does the catalog. It starts after the WeeklyCycle
Schedule { ← この指定はカタログの分、
  Name = "WeeklyCycleAfterBackup"
  Run = Full sun-sat at 2:10
 # 2:10にバックアップするが、このスケジュールを使うCatalogJobの定義にPriority = 11があるので、
 # 各ホストのバックアップが終わってから始まる
}

# Client (File Services) to backup
Client {
  Name = samba-fd
  Address = 192.168.xxx.xxx ← このサーバー自体の設定なので自分のIPを指定
  FDPort = 9102
  Catalog = MyCatalog
  Password = "xxxxxx"              # password for FileDaemon
  File Retention = 62 days         # カタログDBからバックアップしたファイル一覧が削除されるまでの期間
  Job Retention = 3 months         # カタログDBからジョブの記録が消えるまでの期間
  AutoPrune = yes                  # Prune expired Jobs/Files
}

Client {
  Name = web-fd
  Address = 192.168.xxx.xxx ← バックされるもう一つのホストのIP
  FDPort = 9102
  Catalog = MyCatalog
  Password = "xxxxxx"              # password for FileDaemon
  File Retention = 62 days         # カタログDBからバックアップしたファイル一覧が削除されるまでの期間
  Job Retention = 3 months         # カタログDBからジョブの記録が消えるまでの期間
  AutoPrune = yes                  # Prune expired Jobs/Files
}

# Definition of file storage device
Storage {
  Name = File
# Do not use "localhost" here    
  Address = 192.168.xxx.xxx ← ストレージのホストつまり自分のIP、必ずIPで指定
  SDPort = 9103
  Password = "xxxxxx"
  Device = FileStorage
  Media Type = File
}

# Definition of DVD storage device
#Storage {
#  Name = "DVD"
#  Do not use "localhost" here
#  Address = storage.example.com     # N.B. Use a fully qualified name here
#  SDPort = 9103
#  Password = "@@SD_PASSWORD@@"
#  Device = "DVD Writer"
#  MediaType = "DVD"
#}

# Generic catalog service
Catalog {
  Name = MyCatalog
  dbname = "bacula"; dbuser = "bacula"; dbpassword = "xxxxx"
}

# Reasonable message delivery -- send most everything to email address
#  and to the console
Messages {
  Name = Standard
# NOTE! If you send to two email or more email addresses, you will need
#  to replace the %r in the from field (-f part) with a single valid
#  email address in both the mailcommand and the operatorcommand.
#  What this does is, it sets the email address that emails would display
#  in the FROM field, which is by default the same email as they're being
#  sent to.  However, if you send email to more than one address, then
#  you'll have to set the FROM address manually, to a single address. 
#  for example, a 'no-reply@mydomain.com', is better since that tends to
#  tell (most) people that its coming from an automated source.
  mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
  operatorcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Intervention needed for %j\" %r"
  mail = xxxxx@asahi.email.ne.jp = all, !skipped ← メールを送るメアドの指定
  operator = xxxxx@asahi.email.ne.jp = mount ← メールを送るメアドの指定
  console = all, !skipped, !saved
# WARNING! the following will create a file that you must cycle from
#          time to time as it will grow indefinitely. However, it will
#          also keep all your messages if they scroll off the console.
  append = "/var/spool/bacula/log" = all, !skipped
  catalog = all
}

#
# Message delivery for daemon messages (no job).
Messages {
  Name = Daemon
  mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula daemon message\" %r"
  mail = xxxx@asahi.email.ne.jp = all, !skipped            
  console = all, !skipped, !saved
  append = "/var/log/bacula.log" = all, !skipped
}

# Default pool definition
Pool {
  Name = Default
  Pool Type = Backup
  Maximum Volume Jobs = 1	# これを指定しないと、同一ファイルに追記し差分や増分のファイルも一つになる
  Recycle = yes			# Bacula can automatically recycle Volumes
  AutoPrune = yes		# Prune expired volumes
  Volume Retention = 3 months	# 3ヶ月
}

# File Pool definition
Pool {
  Name = File
  Pool Type = Backup
  Maximum Volume Jobs = 1	# これを指定しないと、同一ファイルに追記し差分や増分のファイルも一つになる
  Recycle = yes			# Bacula can automatically recycle Volumes
  AutoPrune = yes		# Prune expired volumes
  Volume Retention = 3 months	# 3ヶ月
  Maximum Volume Bytes = 50G	# Limit Volume size to something reasonable
  Maximum Volumes = 200		# Limit number of Volumes in Pool
  Label Format = "Vol-"
}

# Scratch pool definition
# この定義を使っているものは無いが、defaultで存在していたので、残してある。多分無くてもOK
Pool {
  Name = Scratch
  Pool Type = Backup
}

# Restricted console used by tray-monitor to get the status of the director
#
Console {
  Name = bacula-mon
  Password = "xxxxxx"
  CommandACL = status, .status
}

Write Bootstrapにある%c.bsrはclientの名前に展開される。この場合はsamba-fd.bsrとweb-fd.bsr。%n.bsrはこのJebDefsを使っているjobの名前に変換される。この場合はCatalog-samba.bsr。
各パスワードはデーターベースbacluaのパスワードしか登録していないので、全部に同じパスワードを指定する。
私は後で出てくるbacula-sd.confのDevice{ でArchive Device で/Backup(バックアップしたデーターを保存する場所)を指定しているが、物理的に独立したHDDにする事、またもちろんバックアップ対象には入れない。
Schedule { Name = “WeeklyCycle”は、これで毎月最初の日曜日にフルバックアップし、それ以外の日曜日に差分バックアップし、それ以外の日では増分バックアップをすると言う設定。
Schedule { の Name = “WeeklyCycleAfterBackup”はバックアップが行われたら、その後にカタログを作るためにこのスケジュールがある。JobDefs{ のCatalogJobの所に Priority = 11 があるので、バックアップが終わってからスタートする。
リストア時に保存されるDirectoryは(/Backup/Restores/sambaなど)作らなくても自動で作ってくれる様だ

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

2:インストールとmariadb(mysql)の設定

11:リストアの時間が劇的に早くなった を参照してください。このままでは遅いです。
2022-09-07追記:リポジトリを入れておきます。/etc/yum.repos.d/に移動してから
# wget https://copr.fedorainfracloud.org/coprs/slaanesh/Bacula/repo/epel-7/slaanesh-Bacula-epel-7.repo
これでリポジトリが出来ます。
そして、インストール。バキュラをインストールするホストで(私はサーバー自身もバックアップするので)
# yum install bacula-storage-mysql bacula-director-mysql bacula-console mysql-server  mariadb-server bacula-client mysql
とbaclua関連とmysqlをインストールします。baculaは前項の参考URLで示したWEBにあるようにカタログと呼ばれるデータをmysqlに保存をしますので、まずはmysqlの設定から(/etc/my.cnf)

[mysqld]
datadir=/XXXX/mysql ← オリジナルの場所から変更しています
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
character-set-server = utf8 ← 追記

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

そしてmysqlをスタート
# service mysqld start
最初のスタートでは色々と表示が出るが、ようはrootのパスワードを設定しろよと言う事など。忘れないように再起動後も起動するように
# chkconfig mysqld on
そして初期設定をする
# mysql_secure_installation
注:mariadb(10.7.3)の場合は mariadb-secure-installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MySQL to secure it, we'll need the current
password for the root user.  If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):  Enterのみを入力
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

Set root password? [Y/n] Enterのみを入力
New password: パスワードを入力
Re-enter new password: パスワードを再度入力
Password updated successfully!
Reloading privilege tables..
 ... Success!

By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n]  Enterのみを入力
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n]  Enterのみを入力
 ... Success!

By default, MySQL comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n]  Enterのみを入力
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n]  Enterのみを入力
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!

mysqlへログインしデーターベースなどを作成
# mysql -u root -pXXXXXXX ←XXXXXXXは設定したパスワード -pの後にスペースは入れてはいけない
mysql> GRANT ALL PRIVILEGES ON bacula.* TO bacula@localhost IDENTIFIED BY “XXXXXXX”; ← XXXXXXXは設定したいパスワード、後でbaculaのconfファイルに記入する。
mysql> FLUSH PRIVILEGES;
mysql> CREATE DATABASE bacula;
mysql> quit
これでdatabaseが出来ましたので、用意されているスクリプトでtableを作ります
# /usr/libexec/bacula/make_mysql_tables -pXXXXXX ←XXXXXXは今設定したパスワード
Creation of Bacula MySQL tables succeeded.
次はいよいよbaculaの設定

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

1:Baculaの設定時に不明なだった点、注意点など

先ず、インストールする前にbaculaの概念を勉強しますが、不明な点がありましたので下記に示します。
*バックアップされたデータはどこに保存されるか?
bacula-sd.confの device{ の中に Archive Device = で指定された所に保存される
*リストアされたファイルは何処?
bacula-dir.confの Job{ の中の where =で指定された場所.
ここで注意しなくてはならないのは、この場所はディレクターが走っている場所で無く、
(設定はディレクターにあるが、)バックアップされるホストのdirectoryであると言う事。
私はてっきりディレクターが走っている ホストだと思っていたので、いくら待っても復元されなかった(と思った)。
又、バックアップされるホストと言う事はサイズに注意する事、つまり今使っているサイズと
同じサイズの空き領域がいる(全体をリストアする場合)。又、directoryがそのホストに存在しなくても、
baculaはエラーを出さず、強引に作るので、まず領域不足のエラーになる。
訂正:「8:他のホストにリストア」を参照してください。ディスク容量の余裕のあるホストにリストア出来ます。
*物理的に別のDisk/Partition になっているDirectoryがある時、バックアップの指定を/(ルート)にすると、バックアップされるのか?
バックアップされないので、bacula-dir.confのFileSet{ の中に File = で別に指定する事
*バックアップされるホストが復数台ある時は?
bacula-dir.confの中で、
Job{, として、ホスト毎にバックアップのJobを作る
Job{, として、ホスト毎にrestoreのJobを作る
FileSet{, として、ホスト毎にバックされるDirectoryを定義する
Client{, として、ホスト毎にホストの設定をしていく。
2014-04-14追記:ここで疑問がまだある。私の様に複数のディスク(パーティション)をアタッチし、そこにホスト特有のデーターを置くような場合ではFileSetが同じにな らないので、RestoreのJobも複数作ったので、復元されるデーターもこのRestoreのJobで指定されたホストになったのではないかと思う。 FileSetが共通になればもっと楽になりそうだが、FileSetに指定したディレクトリーが無い場合等はエラーになりそうなのでFileSetを分 けている。今度テスト環境でこれを調べてみる(ググったがこの事例のヒットは無かった)
*bacula-dir.confの Director{ の設定の中にあるdefaultで設定のあるquery.sqlファイルはインストールされていない?
confの中にある QueryFile = “/usr/libexec/bacula/query.sql
はインストールされていない!でも問題無い様だ。
/usr/share/doc/bacula-common-5.0.0/exampleにあるsample-query.sqlをリネームし
/usr/libexec/bacula/query.sql として保存すると、様々なqueryが出来る様だが試していない
*restoreする時は空きスペースに注意
既にふれたがバックアップされているホストに、bacula-dir.confのwhere(又は指定したホスト)にストアされたデーターが書かれるので、このDirectoryの空き容量に充分注意する事
*これが一番大事かな:mysqlを使用する時はDatabase engine は InnoDB にし、ここを参照、リストアの時間が劇的に早くなった 。

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

21:バックアップサーバーを作る

このサーバーの領域の構成は
vda: ここにさらに領域が作られ、ルートが出来ている。
vdb: SWAP領域
vdc: /Downloadにマウントされる、他のサーバーと共有している。ここまではクローンで出来ている
vdd: /SmbDataにマウントされる。後で追加するsambaを使ったアクティブディレクトリーの領域。
vde: /Backupにマウントされ、全てのサーバーのバックアップしたデーターの保存場所
まず、クローンで作ったサーバーを停止して置き、ここを参照してこのサーバーにマウントする領域を追加していきます。
次にサーバーをスタートし、追加したパーティションをマウントするために fstab を設定
# gedit /etc/fstab

/dev/vdd		/SmbData	ext4	  defaults		0 0
/dev/vde		/Backup 	  ext4   defaults		0 0

この2行を最後に追記(もちろん vdd vde は環境により変化)
マウントするdirectoryを作る
# mkdir /SmbData
# mkdir /Backup
マウントする
# mount -a
ここからはここに従い設定をしていきます。番号順に設定してね。
ただし、サブホストの webはまだないので3:bacula-dirの設定のbacula-dir.confの
Name=”Backup-web”, Name=”Restore-web”, Name=web-fdに関係する設定は#をつけコメントアウトにしておくこと。FileSetのFull webも関係するが、あっても問題ないと思うのでそのまま。
無事テストでバックアップが出来た。
このサーバーは後でアクティブディレクトリーを使ったファイルサーバーを入れるが、とりあえず、他のサーバーを作る。

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

20:バックアップサーバーを作る前の準備

やっとベースとなるサブホストの設定が終わったので、いよいよ本チャン用のサブホストを作ります。このサブホストは後で、samba4をインストールし、アクティブディレクトリーも構築しますが、まずはバックアップ用のサブホストを作ります。ベースとなるサブホストは停止して置き、
画 像1の様に、仮想マシンマネージャーで、作成した雛形用のサブホストを右クリックし、クローン(C)をクリックすると、新しいウィドウが開き(左側の画 像)そこに表示された領域をクリックすると、詳細…が現れ、それをクリックすると、画像2が表示されますので、参照をクリックし、割り当てたい領域を 選択後、OKをクリックし、同様に他の領域に付いても行います。私は全ての領域はLVMでそれぞれ作成し、Dowloadの領域は全てのサブホストで共有 する設定にしてあります。
デフォルトでは親ホストの領域の中に、ディスクイメージを作るような設定なので、それをする為には、親ホストの領域をその分を見込みかなり大きく割り当てておく必要があります。
うっ かりサブホストの設定をデフォルトのままにしてしまったので、混乱を防ぐため、サブホストの名前を変更します。クローンで出来たサブホストを選択後、開く アイコンをクリックし、iのアイコンをクリックし、右ペインでOverviewが選択されていれば、右ペインの名前の所で、設定したい名前を変更できま す。
クローンで出来たサブホストは元のサブホストとhostname,IPアドレスなどがダブっていますので、変更をします。元のサブホストは停 止したまま(IPアドレスが同じなので問題が出る)クローンされたサブホストを右クリックで実行します。実行中にAlt+d で詳細を表示させて見ていると、

Bringing up interface eth0: Device eth0 does not seem to be present, delaying initialization [FAILED]

とエラーが出ていた。
まずはこの問題を解決する。rootでログインし、/var/log/dmseg 開き ethで検索し調べると udev: renamed network interface eth0 to eth1 があった。
これでググると http://d.hatena.ne.jp/ngyuki/20110805/p1 に回答があった。
さっそく /etc/udev/rules.d/70-persistent-net.rules をどっかに移し、再起動すると、又同じエラーが出ている。
/etc/udev/rules.d/70-persistent-net.rules を開いてみると

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:81:1f:bd",
ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" ← eth1になっていたのでeth0に変更。実際は一行

再起動すると今度は

Bringing up interface eth0: Device eth0 has different MAC address than expected, ignoring. [FAILED]

とエラーが出た。これは /etc/sysconfig/network-scripts/ifcfg-eth0 MACアドレスの設定があるのが問題、なので

DEVICE=eth0
TYPE=Ethernet
#UUID=1f3d73ed-edc1-4939-a4d7-946d3bbd050a ← オリジナルのサブホストとかぶるのでコメントアウト
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
#HWADDR=52:54:00:49:9E:37 ← オリジナルのサブホストとかぶるのでコメントアウト
IPADDR=192.168.xx.xx ← ついでに設定したいIPにする
PREFIX=24
GATEWAY=192.168.xx.xx
#DNS1=192.168.xx.xx ← DNSは/etc/resolv.confで設定している
#DOMAIN=kinryokai.net
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"

次にホスト名を変更する。/etc/sysconfig/networkを

NETWORKING=yes
HOSTNAME=xxxx.kinryokai.net ← 設定したいホスト名に
GATEWAY=192.168.xx.xx ← IPアドレスは伏せてあります

ネットワークを再起動し、
# service network restart
ブラウザを立ち上げ、外部のWEBが見れる事を確認。
VNCのポートもダブっているので、外部から接続するために、ポート番号を変更しておく(LAN内部からだけならIPが違うので問題ない)(設定ファイルは /etc/services (ここを参照)。私のfirewallの設定はローカルネットワークからのRQは受け付けるように設定しているので問題ないが、そうでない時か、外部からVNCを受ける場合にはfirewallの設定で、VNCにアサインしたTCPポートを開けておく事。
このサブホストで使うディレクトリーをここを参照して作る。私はファイルサーバーのデーターの保存場所(/SmbData)とバックアップデータの保存場所(/Backup)を別パーティションとして作った。
その後再起動したらVNC経由でログインしてみる。
やっとこれで本題に入れる。

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

19:サブホストでテンキーが使えない

今日気がついたが、VNC経由でrootでログインすると、テンキーで入力しても数字が入力できない。
ブラウザ上:Num Lock キーが点いている時
数字7キー: 現在のカーソルから先頭までの選択
数字1キー: 現在のカーソルから行末までの選択
ブラウザ上:Num Lock キーが消えている時
数字7キー: 先頭へカーソル移動
数字1キー: 行末へカーソル移動
これはNum Lockキーが消えている時のキーアサインに似ている
terminal上:Num Lock キーが点いている時
数字2キー: Bが入力される
数字8キー: Aが入力される
同様に4:D、6:C。それ以外は無反応
terminal上:Num Lock キーが消えている時
Num Lockが消えている本来のカーソルの動きになる。

でもVNC経由でも、一般ユーザーなら問題はない。
ここまでなら、個人設定に問題有と思うが、
仮想マシンマネージャーから、開くをクリック後、ログインすると全てのユーザーで問題ない!!!
つまり、VNC経由のrootのログインだけ問題がある。
これって矛盾してるよねー、
ブラウザ上と、端末で動きが違うので、Xの設定がからんでいるみたい。心当たりを調べたが治らない。後日に回す。
追記:使えなかったのは15日、今日は16日。何もしていないのに今日は問題無し。サーバーがまだ完成していないので、電源を落としたから、何かのアップデートがあったとも考えにくい。電源を入れただけ、つまり再起動と同じ。だけど昨日は再起動しても直らなかった???
2014/05/20追記:又、テンキーが使えない。どうもサブホストを起動するときの状態によるみたいたが原因は特定できていない。
原因が判明:サブホストの起動時にキーボードの NumLock がONにしておかないとテンキーが使えない。又起動途中にOFFにしてもダメ。

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

18:サブホストの設定5、iptable,NTP等

ここを参考に iptablesを設定する。

次にNTPの設定。NTPサーバーは既に親ホストで動いているので、/etc/ntp.conf を(サブホストにもデフォルトでインストールされていた)

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.centos.pool.ntp.org iburst ← 先頭に#を付けコメントアウト
#server 1.centos.pool.ntp.org iburst ← 先頭に#を付けコメントアウト
#server 2.centos.pool.ntp.org iburst ← 先頭に#を付けコメントアウト
#server 3.centos.pool.ntp.org iburst ← 先頭に#を付けコメントアウト
server 192.168.xx.xx ← 親ホストのIP

ntpサーバーを起動し、再起動後も機動出来るように設定
# service ntpd start
# chkconfig ntpd on
後日サブホストを立ち上げても、親ホストと時間の同期が出来ていなかった。理由は不明。
# ntpq -p
をやっても同期していないみたい(もちろん5分後やっても同じく同期していない)何で?? NTPサーバーが立ち上がる時に、親ホストと同期しないのかなー? ntpdをリスタートしたら同期した。
次はここを参照し、侵入検知システムの導入(aide)をします。/etc/aide.confは親ホストの分をコピーした方がが早いと思う。
ここらで一度再起動しておくか。

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