Bacula & Nhiều thiết bị băng, v.v.


7

Bacula sẽ không sử dụng đồng thời 2 thiết bị băng. (Tìm kiếm # - # - # cho TL; DR)

Một chút nền tảng, có lẽ.

Trong quá trình cố gắng để có được một giải pháp sao lưu hoạt động tốt (sao lưu> 20TB không rẻ, hoặc dễ dàng) $dayjob, chúng tôi đã mua một loạt các thứ để làm cho nó hoạt động.

Đầu tiên, có một máy tự động Spectra Logic Jige, 40 khe cắm LTO5 và robot đó có một cặp ổ đĩa HH5 Ultrium LTO5 của IBM, được kết nối qua Vòng lặp được phân bổ theo FibreChannel tới máy chủ dự phòng của chúng tôi.

Có máy chủ dự phòng .. Một Dell R715 với CPU AMD 62xx 16 nhân và RAM 32 GB. Ngon ngon. Máy chủ đó có 2 thẻ Emulex FCe-12000E và một cổng kép 10GE NIC của Intel X520-SR.

Chúng tôi cũng đã bán Commvault Backup (không phải NDMP).

Đây là nơi nó thực sự phức tạp.

Spectra Logic và Commvault đều gửi các kỹ sư tương ứng, những người thiết lập thư viện và phần mềm. Commvault đã chạy tốt, cho đến khi bộ điều khiển hoạt động tốt. Máy chủ Dell có máy chủ Ubuntu 12.04 và chạy MediaAgent cho CommVault và gắn NAS BlueArc của chúng tôi dưới dạng NFS vào một số điểm gắn kết, như /homevà một số nội dung /mnt.

Khi sao lưu từ các điểm gắn kết NFS, chúng ta đã thấy ~ = 290GB/hrthông lượng. Đó là CRAP, xem xét chúng tôi có 20 TB lẻ để vượt qua, trong cửa sổ sao lưu <48 giờ. Tối đa được xếp hạng trên BlueArc là 700MB/s( 2460GB/hr), tốc độ ghi tối đa được xếp hạng trên các thiết bị băng là 140MB / s, trên mỗi ổ đĩa, do đó 492GB/hr(hoặc gấp đôi nó, cho tổng thông lượng).

Vì vậy, bước tiếp theo là đánh giá hiệu suất NFS với IOzone, và hóa ra chúng ta có hiệu suất ghi sử thi (trên> 20 luồng), và nó giống như ghi 1,5-2,5TB / giờ, nhưng hiệu suất đọc là vô vọng. Tôi không thể nhận được tối đa cao hơn 343GB / giờ. Vì vậy, giả sử rằng 343GB/hrmức tối đa về mặt lý thuyết cho hiệu suất đọc trên NAS, về lý thuyết chúng ta có thể lấy hiệu suất đó ra khỏi a) CommVault và b) bất kỳ tác nhân dự phòng nào khác.

Không phải vậy. Commvault dường như chỉ cung cấp cho tôi 200-250GB/hrthông lượng, và ngoài thử nghiệm, tôi đã cài đặt Bacula để xem trạng thái chơi ở đó là gì. Ví dụ, nếu Bacula cho hiệu suất và tốc độ tốt hơn so với Commvault, thì chúng ta có thể nói"**$.$ Refunds Plz $.$**"

# - # - #

Than ôi, tôi tìm thấy một vấn đề khác với Bacula. Commvault có vẻ khá vui khi đọc từ một phần của điểm gắn kết với một luồng và truyền luồng đó đến thiết bị Băng, trong khi đọc từ một thư mục khác với luồng khác và ghi vào ổ đĩa thứ 2 trong autochanger.

Tôi không thể cho cuộc sống của tôi có được Bacula để gắn kết và ghi vào hai ổ băng đồng thời .

Những điều tôi đã thử:

  • Thiết lập Maximum Concurrent Jobs = 20trong Daemon Giám đốc, Tệp và Lưu trữ
  • Đặt Prefer Mounted Volumes = notrong định nghĩa công việc
  • Đặt nhiều thiết bị trong tài nguyên Autochanger.

Tài liệu dường như là một trung tâm ổ đĩa đơn, và chúng tôi cảm thấy giống như chúng tôi đã gắn một tên lửa vào một con chuột đồng, với cái này. Phần lớn các cấu hình Bacula ví dụ là dành cho các ổ DDS4, hoán đổi băng thủ công và các hệ thống FreeBSD hoặc IRIX.

Tôi có lẽ nên nói thêm rằng tôi không quá bận tâm nếu điều này là không thể, nhưng tôi rất ngạc nhiên. Về cơ bản, tôi muốn sử dụng Bacula làm bằng chứng để gắn nó với các nhà cung cấp phần mềm mà họ định giá quá cao;)

Tôi đã đọc ở đâu đó rằng @KyleBrandt đã làm điều gì đó tương tự với một giải pháp Băng hiện đại ..

Tập tin cấu hình: bacula-dir.conf

#
# Default Bacula Director Configuration file

Director {                            # define myself
  Name = backuphost-1-dir
  DIRport = 9101                # where we listen for UA connections
  QueryFile = "/etc/bacula/scripts/query.sql"
  WorkingDirectory = "/var/lib/bacula"
  PidDirectory = "/var/run/bacula"
  Maximum Concurrent Jobs = 20
  Password = "yourekiddingright"         # Console password
  Messages = Daemon
  DirAddress = 0.0.0.0
  #DirAddress = 127.0.0.1
}

JobDefs {
  Name = "DefaultFileJob"
  Type = Backup
  Level = Incremental
  Client = backuphost-1-fd 
  FileSet = "Full Set"
  Schedule = "WeeklyCycle"
  Storage = File
  Messages = Standard
  Pool = File
  Priority = 10
  Write Bootstrap = "/var/lib/bacula/%c.bsr"
}

JobDefs {
  Name = "DefaultTapeJob"
  Type = Backup
  Level = Incremental
  Client = backuphost-1-fd
  FileSet = "Full Set"
  Schedule = "WeeklyCycle"
  Storage = "SpectraLogic"
  Messages = Standard
  Pool = AllTapes
  Priority = 10
  Write Bootstrap = "/var/lib/bacula/%c.bsr"
  Prefer Mounted Volumes = no

}

#
# Define the main nightly save backup job
#   By default, this job will back up to disk in /nonexistant/path/to/file/archive/dir
Job {
  Name = "BackupClient1"
  JobDefs = "DefaultFileJob"
}

Job {
  Name = "BackupThisVolume"
  JobDefs = "DefaultTapeJob"
  FileSet = "SpecialVolume"
}
#Job {
#  Name = "BackupClient2"
#  Client = backuphost-12-fd
#  JobDefs = "DefaultJob"
#}

# Backup the catalog database (after the nightly save)
Job {
  Name = "BackupCatalog"
  JobDefs = "DefaultFileJob"
  Level = Full
  FileSet="Catalog"
  Schedule = "WeeklyCycleAfterBackup"
  # This creates an ASCII copy of the catalog
  # Arguments to make_catalog_backup.pl are:
  #  make_catalog_backup.pl <catalog-name>
  RunBeforeJob = "/etc/bacula/scripts/make_catalog_backup.pl MyCatalog"
  # This deletes the copy of the catalog
  RunAfterJob  = "/etc/bacula/scripts/delete_catalog_backup"
  Write Bootstrap = "/var/lib/bacula/%n.bsr"
  Priority = 11                   # run after main backup
}

#
# Standard Restore template, to be changed by Console program
#  Only one such job is needed for all Jobs/Clients/Storage ...
#
Job {
  Name = "RestoreFiles"
  Type = Restore
  Client=backuphost-1-fd                 
  FileSet="Full Set"                  
  Storage = File                      
  Pool = Default
  Messages = Standard
  Where = /srv/bacula/restore
}

FileSet {
  Name = "SpecialVolume"
  Include {
    Options {
      signature = MD5
    }
  File = /mnt/SpecialVolume
  }
  Exclude {
    File = /var/lib/bacula
    File = /nonexistant/path/to/file/archive/dir
    File = /proc
    File = /tmp
    File = /.journal
    File = /.fsck
  }
}


# List of files to be backed up
FileSet {
  Name = "Full Set"
  Include {
    Options {
      signature = MD5
    }
    File = /usr/sbin
  }

  Exclude {
    File = /var/lib/bacula
    File = /nonexistant/path/to/file/archive/dir
    File = /proc
    File = /tmp
    File = /.journal
    File = /.fsck
  }
}

Schedule {
  Name = "WeeklyCycle"
  Run = Full 1st sun at 23:05
  Run = Differential 2nd-5th sun at 23:05
  Run = Incremental mon-sat at 23:05
}

# This schedule does the catalog. It starts after the WeeklyCycle
Schedule {
  Name = "WeeklyCycleAfterBackup"
  Run = Full sun-sat at 23:10
}

# This is the backup of the catalog
FileSet {
  Name = "Catalog"
  Include {
    Options {
      signature = MD5
    }
    File = "/var/lib/bacula/bacula.sql"
  }
}

# Client (File Services) to backup
Client {
  Name = backuphost-1-fd
  Address = localhost
  FDPort = 9102
  Catalog = MyCatalog
  Password = "surelyyourejoking"          # password for FileDaemon
  File Retention = 30 days            # 30 days
  Job Retention = 6 months            # six months
  AutoPrune = yes                     # Prune expired Jobs/Files
}

#
# Second Client (File Services) to backup
#  You should change Name, Address, and Password before using
#
#Client {
#  Name = backuphost-12-fd                
#  Address = localhost2
#  FDPort = 9102
#  Catalog = MyCatalog
#  Password = "i'mnotjokinganddontcallmeshirley"         # password for FileDaemon 2
#  File Retention = 30 days            # 30 days
#  Job Retention = 6 months            # six months
#  AutoPrune = yes                     # Prune expired Jobs/Files
#}


# Definition of file storage device
Storage {
  Name = File
# Do not use "localhost" here    
  Address = localhost                # N.B. Use a fully qualified name here
  SDPort = 9103
  Password = "lalalalala"
  Device = FileStorage
  Media Type = File
}

Storage {
  Name = "SpectraLogic"
  Address = localhost
  SDPort = 9103
  Password = "linkedinmakethebestpasswords"
  Device = Drive-1
  Device = Drive-2
  Media Type = LTO5
  Autochanger = yes
}



# Generic catalog service
Catalog {
  Name = MyCatalog
# Uncomment the following line if you want the dbi driver
# dbdriver = "dbi:sqlite3"; dbaddress = 127.0.0.1; dbport =  
  dbname = "bacula"; DB Address = ""; dbuser = "bacula"; dbpassword = ""
}

# Reasonable message delivery -- send most everything to email address
#  and to the console
Messages {
  Name = Standard

  mailcommand = "/usr/lib/bacula/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
  operatorcommand = "/usr/lib/bacula/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Intervention needed for %j\" %r"
  mail = root@localhost = all, !skipped            
  operator = root@localhost = 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/lib/bacula/log" = all, !skipped
  catalog = all
}


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

# Default pool definition
Pool {
  Name = Default
  Pool Type = Backup
  Recycle = yes                       # Bacula can automatically recycle Volumes
  AutoPrune = yes                     # Prune expired volumes
  Volume Retention = 365 days         # one year
}

# File Pool definition
Pool {
  Name = File
  Pool Type = Backup
  Recycle = yes                       # Bacula can automatically recycle Volumes
  AutoPrune = yes                     # Prune expired volumes
  Volume Retention = 365 days         # one year
  Maximum Volume Bytes = 50G          # Limit Volume size to something reasonable
  Maximum Volumes = 100               # Limit number of Volumes in Pool
}

Pool {
  Name = AllTapes
  Pool Type = Backup
  Recycle = yes
  AutoPrune = yes                     # Prune expired volumes
  Volume Retention = 31 days         # one Moth
}

# Scratch pool definition
Pool {
  Name = Scratch
  Pool Type = Backup
}

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

bacula-sd.conf

#
# Default Bacula Storage Daemon Configuration file
#

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

#
# List Directors who are permitted to contact Storage daemon
#
Director {
  Name = backuphost-1-dir
  Password = "passwordslinplaintext"
}

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


Device {
  Name = FileStorage
  Media Type = File
  Archive Device = /srv/bacula/archive
  LabelMedia = yes;                   # lets Bacula label unlabeled media
  Random Access = Yes;
  AutomaticMount = yes;               # when device opened, read it
  RemovableMedia = no;
  AlwaysOpen = no;
}


Autochanger {
   Name = SpectraLogic
   Device = Drive-1
   Device = Drive-2
   Changer Command = "/etc/bacula/scripts/mtx-changer %c %o %S %a %d"
   Changer Device = /dev/sg4
}

Device {
   Name = Drive-1
   Drive Index = 0
   Archive Device = /dev/nst0
   Changer Device = /dev/sg4
   Media Type = LTO5
   AutoChanger = yes
   RemovableMedia = yes;
   AutomaticMount = yes;
   AlwaysOpen = yes;
   RandomAccess = no;
   LabelMedia = yes

}

Device {
   Name = Drive-2
   Drive Index = 1
   Archive Device = /dev/nst1
   Changer Device = /dev/sg4
   Media Type = LTO5
   AutoChanger = yes
   RemovableMedia = yes;
   AutomaticMount = yes;
   AlwaysOpen = yes;
   RandomAccess = no;
   LabelMedia = yes
}

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

bacula-fd.conf

#
# Default  Bacula File Daemon Configuration file
#

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

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

#
# "Global" File daemon configuration specifications
#
FileDaemon {                          # this is me
  Name = backuphost-1-fd
  FDport = 9102                  # where we listen for the director
  WorkingDirectory = /var/lib/bacula
  Pid Directory = /var/run/bacula
  Maximum Concurrent Jobs = 20
  #FDAddress = 127.0.0.1
  FDAddress = 0.0.0.0
}

# Send all messages except skipped files back to Director
Messages {
  Name = Standard
  director = backuphost-1-dir = all, !skipped, !restored
}

Để làm rõ - bạn có đang cố gắng viết một công việc cho cả hai vị trí trong autochanger không? Tôi không nghĩ rằng bạn có thể làm điều đó, nhưng tôi làm cho rằng nhiều công ăn việc làm sẽ viết thư cho các thiết bị riêng biệt ...
voretaq7

1
Commvault cho phép một công việc duy nhất ghi vào cả hai vị trí. Tôi không nghĩ thật quá bất công khi hy vọng các phần mềm khác cũng làm như vậy.
Tom O'Connor

1
Nếu những gì bạn đang cố gắng làm là chứng minh hiệu suất, tại sao không chỉ chạy 2 công việc cùng lúc với các thiết bị khác nhau, nó sẽ chứng minh những gì bạn muốn.
EightBitTony

1
Chỉ vì Commvault ghi nhật ký theo một công việc, không có nghĩa là nó không tách nó ra. Ví dụ, sao lưu Syncsort express thực hiện điều này bằng mountpoint và thường sẽ xả tất cả các điểm gắn kết đã cho thành các luồng riêng biệt (trong cùng một công việc) trước khi nó thực hiện một công việc duy nhất trên hai băng. Tôi nghĩ rằng có một số lý do tốt cho việc này ... đừng hỏi tôi chúng là gì :)
SpacemanSpiff

1
Tôi đang xem xét từ bỏ câu hỏi này và VTC Quá cục bộ.
Tom O'Connor

Câu trả lời:


1

Khi bạn thiết lập một tập tin trong bacula, nó sẽ đọc từng dòng một pathspec và sao lưu như thế này.

Nó sẽ không tạo hai luồng để đọc các đường dẫn tệp khác nhau trong tác nhân.

Như @SpacemanSpiff đã nói, nếu bạn muốn làm điều này, con đường phía trước sẽ là thiết lập các công việc khác nhau, một công việc cho mỗi tệp bạn muốn sao lưu.


0

Tôi có ba lời khuyên cho bạn:

  • Sử dụng nhiều daemon lưu trữ. Bạn có thể chạy nhiều daemon lưu trữ trên các cổng khác nhau trên cùng một máy.
  • Sử dụng các công việc cơ bản để khử trùng lặp. Tiết kiệm thời gian và không gian.
  • Sử dụng nén - nếu ổ đĩa băng của bạn thực hiện nén, tốt và tốt, nhưng bạn có thể cần phải cân nhắc và thử nghiệm với nén bacula-fd. Điều đó xảy ra trên máy khách và do đó cũng tiết kiệm băng thông cho việc hy sinh thời gian CPU nhỏ.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.