Возможно вы искали: 'Universe Online'

May 15 2025 18:38:20
  • Как сделать 8Gamers.Ru домашней страницей?
  • Игры
    • База данных по играх
    • Игровые новости
    • Игровая индустрия
    • Обзоры на игры
    • Прохождения игр
    • Гайды к играм
    • Превью о играх
    • Игровые тизеры
    • Игровые арты
    • Игровые обои
    • Игровые скриншоты
    • Игровые обложки
    • Игровые трейлеры
    • Игровое видео
    • Вышедшие игры
    • Ближайшие релизы игр
  • Кино и ТВ
    • База данных по кино
    • Статьи о кино
    • Постеры
    • Кадры из кино
    • Кино трейлеры
    • Сегодня в кино
    • Скоро в кино
  • Комиксы и манга
    • Манга по алфавиту
    • База данных по комиксах
    • Читать онлайн комиксы
    • Читать онлайн манга
    • База персонажей
  • Читы и коды
    • Чит-коды для PC игр
    • Чит-коды для консольных игр
    • Трейнеры
    • Коды Game Genie
  • Моддинг
    • Модификации
    • Карты к играм
    • Программы для моддинга
    • Статьи о моддинге
  • Геймдев
    • Всё о создании игр
    • Список движков
    • Утилиты в помощь игроделу
    • Конструкторы игр
    • Игровые движки
    • Библиотеки разработки
    • 3D-модели
    • Спрайты и тайлы
    • Музыка и звуки
    • Текстуры и фоны
  • Рецензии
    • Игры
    • Кино
    • Аниме
    • Комиксы
    • Мангу
    • Саундтреки
  • Саундтреки
    • Лирика
  • Файлы
    • Патчи к играм
    • Русификаторы к играм
    • Сохранения к играм
    • Субтитры к кино
  • Медиа
    • Видео
    • Фото
    • Аудио
    • Фан-арты
    • Косплей
    • Фото с виставок
    • Девушки из игр
    • Рисунки
    • Рисуем онлайн
    • Фотохостинг
  • Юмор
    • Анекдоты
    • Афоризмы
    • Истории
    • Стишки и эпиграммы
    • Тосты
    • Цитаты
  • Флеш
    • Азартные
    • Аркады
    • Бродилки
    • Гонки
    • Для девочек
    • Для мальчиков
    • Драки
    • Квесты
    • Леталки
    • Логические
    • Мультфильмы
    • Открытки
    • Приколы
    • Разное
    • Спорт
    • Стратегии
    • Стрелялки
Статистика

Статей: 87772
Просмотров: 96111483
Игры
Injustice:  Gods Among Us
Injustice: Gods Among Us
...
Dark Souls 2
Dark Souls 2
Dark Souls II - вторая часть самой хардкорной ролевой игры 2011-2012 года, с новым героем, сюжето...
Battlefield 4
Battlefield 4
Battlefield 4 - продолжение венценосного мультиплеер-ориентированного шутера от первого ли...
Кино
Steins;Gate
Steins;Gate
Любители японской анимации уже давно поняли ,что аниме сериалы могут дать порой гораздо больше пи...
Ку! Кин-дза-дза
Ку! Кин-дза-дза
Начинающий диджей Толик и всемирно известный виолончелист Владимир Чижов встречают на шумной моск...
Обзоры на игры
• Обзор Ibara [PCB/PS2] 18357
• Обзор The Walking ... 18801
• Обзор DMC: Devil M... 19879
• Обзор на игру Valk... 15877
• Обзор на игру Stars! 17764
• Обзор на Far Cry 3 17948
• Обзор на Resident ... 16024
• Обзор на Chivalry:... 17508
• Обзор на игру Kerb... 17981
• Обзор игры 007: Fr... 16619
Превью о играх
• Превью к игре Comp... 17960
• Превью о игре Mage... 14464
• Превью Incredible ... 14721
• Превью Firefall 13479
• Превью Dead Space 3 16334
• Превью о игре SimC... 14730
• Превью к игре Fuse 15442
• Превью Red Orche... 15542
• Превью Gothic 3 16343
• Превью Black & W... 17354
Главная » Статьи » Разное » Запуск параллельных заданий в Bacula. (bacula backup)

Запуск параллельных заданий в Bacula. (bacula backup)

Ключевые слова: bacula, backup, (найти похожие документы)

From: Santa Claus <http://santa-claus-rpm.livejournal.com>
Date: Mon, 26 Jan 2008 18:21:07 +0000 (UTC)
Subject: Запуск параллельных заданий в Bacula.

Оригинал: http://santa-claus-rpm.livejournal.com/5066.html

Bacula. Как запускать параллельные задания.

Disclaimer

Эта статья не для ознакомления с bacula. Она для тех, кто вплотную
занимается ее внедрением или эксплуатацией.

Для ознакомления см. раздел Ссылки.

Мы будем говорить конкретно про версию bacula 1.38.11-3. Скорее всего
сказанное будет относиться и ко всей ветке 1.38.

Само собой автор не дает никаких гарантий безопасности ваших данных.

В документации по Bacula написано, что не рекомендуется выполнять
параллельные задания. Вернее, выполнять их можно, но только после
тщательного тестирования, чем мы и займемся.


Цели и задачи


Мы соберем тестовую конфигурацию для выполнения параллельных заданий.
Рассмотрим какие параметры с этой точки зрения наиболее важны. Данный
материал послужит для более глубокого понимания функционирования
системы.


Теоретические основы


В документации сказано следующее.

Running Concurrent Jobs

По умолчанию Bacula не сконфигурирован для параллельного выполнения
заданий.

Значения по умолчанию:

bacula-dir.conf

Director {
Maximum Concurrent Jobs = 1
}


bacula-fd.conf

FileDaemon {
Maximum Concurrent Jobs = 20
}


bacula-sd.conf

Storage {
Maximum Concurrent Jobs = 20
}


Если вы не предполагаете одновременно выполнять более 20 заданий, то
все изменения нужно вносить только в файл bacula-dir.conf. Каждый
параметр должен быть установлен правильно, согласно вашим
потребностям, иначе ваши задания могут быть выполнены по одному.

Например, если вы хотите, чтобы два различных задания выполнили
одновременное копирование одного и того же Клиента на то же самое
Storage, то они выполнятся параллельно, только если вы установили
Maximum Concurrent Jobs, больше чем один в ресурсах Director, Client,
и Storage в bacula-dir.conf Изменения в ресурсе Job необязательны.

bacula-dir.conf

Director {}
Job {}
Client {}
Storage {}


Настоятельно рекомендуется тщательно проверить выполнение параллельных
резервных копий, включая полное восстановление с них, прежде, чем
принять это в дальнейшую эксплуатацию.

Пример:

# Bacula Director Configuration file -- bacula-dir.conf

Director {
Name = rufus-dir
Maximum Concurrent Jobs = 4
...
}

Job {
Name = "NightlySave"
Maximum Concurrent Jobs = 4
Client = rufus-fd
Storage = File
...
SpoolData = yes # можно добавить к заданиям, кот. могут
# параллельно писать в один Storage
}

Client {
Name = rufus-fd
Maximum Concurrent Jobs = 4
...
}

Storage {
Name = File
Maximum Concurrent Jobs = 4
...
}


Помните: в данный момент времени на любом из устройств (Device) может
быть смонтирован только один Том (Volume). Поскольку и для дисковых
устройств Bacula придерживается принципа ленты (т.е. в данный момент
времени на устройстве может быть смонтирована только одна лента). Если
вы хотите одновременно писать на множество томов на множестве
устройств, то вы должны определить несколько Device в bacula-sd.conf

Из-за выполнения параллельных Заданий формат Volume становится намного
более сложным, следовательно, восстановление может быть намного
дольше, т.к. Bacula должен будет делать сортировку чередующихся блоков
данных, записанных в Том из множества одновременных заданий. Этого
можно избежать если каждое одновременно выполняющееся задание будет
писать в различные тома или при использовании спулинга, т.е. помещения
данных в очередь (Spool), т.е. сначала данные попадут в очередь на
диск одновременно, а затем каждый буферный файл будет последовательно
записан на определенный том.


Приоритеты


Для каждого Задания можно назначить приоритет выполнения. Однако в
документации дается весьма запутанное объяснение того, что такое
приоритет, поэтому без тестирования на практике вам не обойтись.

Priority = number


Значение по умолчанию - 10.

Эта директива управляет порядком выполнения заданий. Чем выше число,
тем ниже приоритет задания. Все поставленные в очередь задания с
приоритетом 1 выполнятся перед поставленными в очередь заданиями с
приоритетом 2 и так далее, независимо от первоначального планирования.
Приоритет затрагивает только ожидающие задания, которые поставлены в
очередь, но не задания, которые уже выполняются.

Если вы хотите выполнять задания параллельно, то вы должны помнить:

* чтобы выполнять параллельные задания, вы должны установить Maximum
Concurrent Jobs = 2 в 5 или 6 различных местах: в bacula-dir.conf
в ресурсах Job, Client, Storage; в bacula-fd в FileDaemon (или
Client) ресурсе, и в bacula-sd.conf в ресурсе Storage. Если к.-л.
из них будет отсутствовать, то это принудит задания выполняться по
одному.


* Bacula одновременно выполняет задания только одного приоритета.
Т.е. не будет одновременно выполнять задания с приоритетом 1 и с
приоритетом 2.


* Если Bacula выполняет задание с приоритетом 2 и запланировано
новое задание с приоритетом 1, то оно будет ждать завершения
задания с приоритетом 2, даже если параметр Maximum Concurrent
Jobs допускает одновременное выполнения двух заданий.(Обратите на
это особое внимание)


* Пока есть более высокое приоритетное задание, ждущее выполнения,
никакие новые низкоприоритетные задания не начнутся, даже если
Maximum Concurrent Jobs допускает одновременное выполнения двух
заданий. Это гарантирует, что высокоприоритетные задания будут
выполнены как можно скорее. Если вы имеете несколько заданий
различных приоритетов, то лучше всего запустить их в одно время,
потому что Bacula будет исследовать их по одному. Если Bacula
запускает сначала более низкоприоритетное задание, то оно
выполнится раньше высокоприоритетных заданий. Для решения проблемы
запускайте высокоприоритетные задания за несколько секунд до
начала низкоприоритетных. Таким образом ваша схема приоритетов
будет работать правильно.



Практическая реализация


Теперь мы будем строить систему с параллельным выполнением заданий, с
учетом приоритетов и с использованием спулинга.

Полные файлы конфигурации приведены ниже.


bacula-dir.conf

Director {
Name = "main.dir"
DIRport = 9101
QueryFile = "/etc/bacula/query.sql"
WorkingDirectory = /arc/temp
PidDirectory = "/var/run"
Maximum Concurrent Jobs = 100
Password = "123"
Messages = Daemon
}

Console {
Name = Operator
Password = "123"
CommandACL = status, list, messages, query
JobACL = *all*
ClientACL = *all*
ScheduleACL = *all*
PoolACL = *all*
FileSetACL = *all*
CatalogACL = MyCatalog
}

Storage {
Name = "StorageFile1"
Address = localhost
SDPort = 9103
Password = "123"
Device = "devFileStorage1"
Media Type = File1
Maximum Concurrent Jobs = 100
}

Storage {
Name = "StorageFile2"
Address = localhost
SDPort = 9103
Password = "123"
Device = "devFileStorage2"
Media Type = File2
Maximum Concurrent Jobs = 100
}

Job {
Name = "restore.files"
Type = Restore
Client = "local.fd"
FileSet = "Full Set"
Storage = StorageFile1
Pool = "pool.test1"
Messages = Standard
Replace = ifnewer
Where = /arc/restore
Maximum Concurrent Jobs = 100
Priority = 10
Write Bootstrap = "/var/bacula/test11.bsr"
RunBeforeJob = "/etc/bacula/scripts/restore_before.sh"
}

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

Client {
Name = "local.fd"
Address = localhost
FDPort = 9102
Catalog = MyCatalog
Password = "123"
Maximum Concurrent Jobs = 100
}

Catalog {
Name = MyCatalog
dbname = bacula; user = bacula; password = ""
}

Messages {
Name = Standard
mailcommand = "/usr/sbin/bsmtp -h localhost -f "localhost" -s "Bacula: %t%e : %n (%c) %l" %r"
operatorcommand = "/usr/sbin/bsmtp -h localhost -f "localhost" -s "Bacula: Intervention needed : %j" %r"
mail = root@localhost = all, !skipped
operator = root@localhost = mount
console = all, !skipped, !saved
append = "/var/bacula/log" = all, !skipped
}

Messages {
Name = Daemon
mailcommand = "/usr/sbin/bsmtp -h localhost -f "localhost %r" -s "Bacula daemon message" %r"
mail = root@localhost = all, !skipped
console = all, !skipped, !saved
append = "/var/bacula/log" = all, !skipped
}

Pool {
Name = "pool.test1"
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 1 days
Accept Any Volume = yes
LabelFormat = "pool.test1."
}

Pool {
Name = "pool.test2"
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 2 days
Accept Any Volume = yes
LabelFormat = "pool.test2."
}

FileSet {
Name = "file.set.test1"
Include {
Options {
signature = MD5
compression = GZIP
}
File = "/arc/test/1"
}
}

FileSet {
Name = "file.set.test2"
Include {
Options {
signature = MD5
compression = GZIP
}
File = "/arc/test/2"
}
}

Job {
Name = "file1-to-pool1"
Type = Backup
Level = Full
Client = "local.fd"
FileSet = "file.set.test1"
Storage = StorageFile1
Messages = Standard
Pool = "pool.test1"
Write Bootstrap = "/var/bacula/test11.bsr"
RunBeforeJob = "/etc/bacula/scripts/test1_before.sh"
SpoolData = yes
Maximum Concurrent Jobs = 100
Priority = 10
}

Job {
Name = "file2-to-pool2"
Type = Backup
Level = Full
Client = "local.fd"
FileSet = "file.set.test2"
Storage = StorageFile2
Messages = Standard
Pool = "pool.test2"
Write Bootstrap = "/var/bacula/test22.bsr"
RunBeforeJob = "/etc/bacula/scripts/test2_before.sh"
SpoolData = yes
Maximum Concurrent Jobs = 100
Priority = 10
}

Job {
Name = "file1-to-pool2"
Type = Backup
Level = Full
Client = "local.fd"
FileSet = "file.set.test1"
Storage = StorageFile2
Messages = Standard
Pool = "pool.test2"
Write Bootstrap = "/var/bacula/test12.bsri"
RunBeforeJob = "/etc/bacula/scripts/test1_before.sh"
SpoolData = yes
Maximum Concurrent Jobs = 100
Priority = 10
}

Job {
Name = "file2-to-pool1"
Type = Backup
Level = Full
Client = "local.fd"
FileSet = "file.set.test2"
Storage = StorageFile1
Messages = Standard
Pool = "pool.test1"
Write Bootstrap = "/var/bacula/test21.bsr"
RunBeforeJob = "/etc/bacula/scripts/test2_before.sh"
SpoolData = yes
Maximum Concurrent Jobs = 100
Priority = 10
}


bacula-sd.conf

Storage {
Name = "Storage1"
SDPort = 9103
WorkingDirectory = /arc/temp
Pid Directory = "/var/run"
Maximum Concurrent Jobs = 100
}

Director {
Name = "main.dir"
Password = "123"
}

Device {
Name = "devFileStorage1"
Media Type = File1
Archive Device = /arc/dev
LabelMedia = yes;
Random Access = Yes;
AutomaticMount = yes;
RemovableMedia = no;
AlwaysOpen = no;
Spool Directory = /arc/spool
}

Device {
Name = "devFileStorage2"
Media Type = File2
Archive Device = /arc/dev
LabelMedia = yes;
Random Access = Yes;
AutomaticMount = yes;
RemovableMedia = no;
AlwaysOpen = no;
Spool Directory = /arc/spool
}

Messages {
Name = Standard
director = "main.dir" = all
}


bacula-fd.conf

Director {
Name = "main.dir"
Password = "123"
}

FileDaemon {
Name = "local.fd"
FDport = 9102
WorkingDirectory = /arc/temp
Pid Directory = /var/run
Maximum Concurrent Jobs = 100
}

Messages {
Name = Standard
director = "main.dir" = all, !skipped
}


restore_before.sh

#!/bin/bash
sleep 180
exit 0


test1_before.sh
test2_before.sh

#!/bin/bash
sleep 180
exit 0


Обратите внимание на то, что все приоритеты заданий одинаковы (как я
уже говорил, в документации дается весьма запутанное объяснение того,
что такое приоритет, поэтому без тестирования на практике вам не
обойтись).

Скрипты RunBeforeJob нужны только для имитации долгой работы, чтобы
успеть запустить с консоли нужные задания и проверить их статус.

Если вы хотите очистить всю конфигурацию, воспользуйтесь скриптом:

clear_all.sh

#!/bin/bash
cd /etc/bacula
./bacula stop
./drop_bacula_tables
./make_bacula_tables
rm -f /var/bacula/*
rm -f /arc/temp/*
rm -f /arc/dev/*
rm -f /arc/spool/*
./bacula start


Тестирование.


Тест 1 (успешный)


Запустите по порядку все задания, кроме restore.files.
Затем дайте команду:


* status dir


вы должны увидеть примерно следующее:

Running Jobs:

JobId Level Name Status
1 Full file1-to-pool1 is running
2 Full file2-to-pool2 is running
3 Full file1-to-pool2 is running
4 Full file2-to-pool1 is running


Т.е. одновременно выполняются множество заданий резервного
копирования. Что и требовалось.


Тест 2 (успешный)


Положите какой-нибудь небольшой файл в каталог /arc/test/1

Сначала запустите задание file1-to-pool1. Запомните его JobId.

После того как оно успешно завершится, запустите задание
file2-to-pool2.

Тут же немедленно запустите задание для восстановления файлов
restore.files. Укажите JobId уже выполнившегося задания file1-to-pool1
и Bootstrap: /var/bacula/test11.bsr
Затем дайте команду:


* status dir


вы должны увидеть примерно следующее:

Running Jobs:

JobId Level Name Status
2 Full file2-to-pool2 is running
3 restore.files is running


Т.е. мы одновременно выполняем резервное копирование и восстановление.
Обратите внимание на то, что резервное копирование и восстановление
работают с разными Storage.


Тест 3 (неуспешный)


Теперь попробуем поработать как и в тесте #2, но с одним и тем же
Storage.

Сначала запустите задание file1-to-pool1. Запомните его JobId.

После того как оно успешно завершится, опять запустите задание
file1-to-pool1.

Тут же немедленно запустите задание для восстановления файлов
restore.files. Укажите JobId уже выполнившегося задания file1-to-pool1
и Bootstrap: /var/bacula/test11.bsr

Running Jobs:

JobId Level Name Status
2 Full file1-to-pool1 is running
3 restore.files is waiting on max Storage jobs


Как видим, резервное копирование и восстановление с одним и тем же
Storage параллельно выполняться не хочет.


Тест 4 (неуспешный)


Теперь попробуем поработать как и в тесте #2, но повысим приоритет
задания на восстановление - restore.files.

# bacula-dir.conf
Job {
Name = "restore.files"
...
Priority = 9
}


Мы наивно полагаем, что задание на восстановление должно иметь
наивысший приоритет и должно выполняться вне очереди, т.к. в это время
уже что-то нехорошее случилось и надо срочно восстанавливать данные.

Running Jobs:

JobId Level Name Status
1 Full file1-to-pool1 is running
2 restore.files is waiting for higher priority jobs to finish


Как видим, восстановление не выполняется так, как нам бы хотелось.

В документации так и написано: "если Bacula уже выполняет задание с
приоритетом 10 и запланировано новое задание с приоритетом 9, то оно
будет ждать завершения задания с приоритетом 10, даже если параметр
Maximum Concurrent Jobs допускает одновременное выполнения двух
заданий". Немного странно, не так ли?
1295 Прочтений •  [Запуск параллельных заданий в Bacula. (bacula backup)] [08.05.2012] [Комментариев: 0]
Добавил: Ukraine Vova
Ссылки
HTML: 
[BB Url]: 
Похожие статьи
Название Добавил Добавлено
• Запуск параллельных заданий в Bacul... Ukraine Vova 08.05.2012
Ни одного комментария? Будешь первым :).
Пожалуйста, авторизуйтесь для добавления комментария.

Проект входит в сеть сайтов «8Gamers Network»

Все права сохранены. 8Gamers.NET © 2011 - 2025

Статьи
Рецензия на Pressure
Рецензия на Pressure
Чтобы обратить на себя внимание, начинающие маленькие разработчики, как правило, уходят в жанры, ...
Рецензия на Lost Chronicles of Zerzura
Рецензия на Lost Chron...
Игры, сделанные без любви и старания, похожи на воздушный шар – оболочка есть, а внутри пусто. Lo...
Рецензия на The Bridge
Рецензия на The Bridge
«Верх» и «низ» в The Bridge — понятия относительные. Прогуливаясь под аркой, можно запросто перей...
Рецензия на SimCity
Рецензия на SimCity
Когда месяц назад состоялся релиз SimCity, по Сети прокатилось цунами народного гнева – глупые ош...
Рецензия на Strategy & Tactics: World War 2
Рецензия на Strategy &...
Название Strategy & Tactics: World War II вряд ли кому-то знакомо. Зато одного взгляда на ее скри...
Рецензия на игру Scribblenauts Unlimited
Рецензия на игру Scrib...
По сложившейся традиции в информационной карточке игры мы приводим в пример несколько похожих игр...
Рецензия на игру Walking Dead: Survival Instinct, The
Рецензия на игру Walki...
Зомби и продукция-по-лицензии — которые и сами по себе не лучшие представители игровой биосферы —...
Обратная связь | RSS | Донейт | Статистика | Команда | Техническая поддержка