Bacula — резервная копия диска по GFS-схеме «дыра»
У меня вопрос по реализации GFS-схемы с бакулой на жестком диске (демоны уже работают нормально).
Чего я хочу добиться:
Каждые полгода мне нужна полная резервная копия, которая должна быть доступна в течение как минимум 12 месяцев -> мне нужно хранить резервные копии немного дольше, чем 12 месяцев, чтобы вторая полная резервная копия не перезаписала первую. Это означает, что будет как минимум 3 полных резервных копии (я выбрал 18 месяцев). Так продолжается дни, месяцы и так далее. Простая GFS-схема.
Schedule{
Name = "GGFSCycle"
Enabled = yes
# DailyCycle - the volume is kept for 14 days
Run = Level=Incremental Pool=DailyPool FullPool=HalfAnnualPool Priority=10 tuesday-sunday at 03:00
# WeeklyCycle - the volume is kept for 5 weeks
Run = Level=Incremental Pool=WeeklyPool FullPool=HalfAnnualPool Priority=11 monday at 03:00
# MonthlyCycle - the volume is kept for 7 months
Run = Level=Differential Pool=MonthlyPool FullPool=HalfAnnualPool Priority=12 february-june 1 at 03:00
Run = Level=Differential Pool=MonthlyPool FullPool=HalfAnnualPool Priority=12 august-december 1 at 03:00
# HalfAnnualCycle - the data is kept for 18 months
Run = Level=Full Pool=HalfAnnualPool Priority=13 january 1 at 03:00
Run = Level=Full Pool=HalfAnnualPool Priority=13 july 1 at 03:00
}
Pool {
Name = DailyPool
Pool Type = Backup
Storage = backup-server-sd
Label Format = "DailyVol_"
Volume Use Duration = 23 hours
Recycle = yes # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 14 days
Maximum Volume Bytes = 50M # Limit Volume size to something reasonable
Maximum Volumes = 1000 # Limit number of Volumes in Pool
# -> max 50G
}
Pool {
Name = WeeklyPool
Pool Type = Backup
Storage = backup-server-sd
Label Format = "WeeklyVol_"
Volume Use Duration = 23 hours
Recycle = yes
AutoPrune = yes
Volume Retention = 5 weeks
Maximum Volume Bytes = 500M
Maximum Volumes = 80
# -> max 70G
}
Pool {
Name = MonthlyPool
Pool Type = Backup
Storage = backup-server-sd
Label Format = "MonthlyVol_"
Volume Use Duration = 2 days
Recycle = yes
AutoPrune = yes
Volume Retention = 7 months
Maximum Volume Bytes = 5G
Maximum Volumes = 80
# -> max 170G
}
Pool {
Name = HalfAnnualPool
Pool Type = Backup
Label Format = "HalfannualVol_"
Storage = backup-server-sd
Volume Use Duration = 3 days
Recycle = yes
AutoPrune = yes
Volume Retention = 18 months #1,5 years
Maximum Volume Bytes = 35G
Maximum Volumes = 20
# -> max 700G
}
Проблема, которую я вижу:
заключается в том, что инкрементная резервная копия всегда ссылается на последнюю инкрементную, дифференциальную или полную резервную копию и сохраняет только те файлы, которые изменились с тех пор. В моей схеме у меня есть две «разные» инкрементные резервные копии: ежедневная и еженедельная. Еженедельный всегда ссылается на ежедневный, который появился накануне, верно? Когда я храню еженедельный файл более 4 недель (я выбрал 5 недель), а ежедневный только более 10 дней (я выбрал 14 дней), ежедневные файлы будут удалены через 14 дней, но ежемесячный файл все еще ссылается на них. . Значит, будет «дыра»?
Я понял, что если бы можно было иметь несколько «уровней» инкрементных резервных копий, например, я мог бы сказать, что еженедельное инкрементальное резервное копирование ссылается только на еженедельные резервные копии (уровень 0), а ежедневные инкрементные резервные копии — только на ежедневные (уровень 1). ) проблема исчезнет. Та же проблема возникла бы, если бы я сохранил полную резервную копию для короткого замыкания. Например, если полная резервная копия перезапишет единственную существующую, не останется полной резервной копии, на которую могла бы ссылаться дифференциальная резервная копия, и я потеряю все резервные копии, которые я сделал к этому моменту.
Что я нашел:
Я поискал в Интернете и нашел в документации bacula главу: В ней говорится: «Теперь, поскольку каждый из этих различных видов сохранений должен оставаться действительным в течение разных периодов времени, самый простой способ сделать это (и, возможно, единственный) — это иметь отдельный пул для каждого типа резервного копирования.».
Мои вопросы:
- По сути, это означает, что не существует другого решения, кроме отдельных пулов Full, Diff и Inkr, описанных в главе документации Bacula. Это верно?
- Если это неверно, как я могу достичь своей цели с помощью двух разных дополнительных пулов?
Я также читал о базовых заданиях в документации по бакуле, это не то, но это идет в правильном направлении.
Большое спасибо за ваше время и помощь в прочтении так далеко.
P.S. Я не носитель английского языка, и мне очень жаль, если я делаю ошибки. Если есть что-то, что вас действительно бесит, я хотел бы услышать ваше мнение по поводу улучшения моего английского.
Спасибо.
1 ответ
Я уже разобрался с этим с помощью списка рассылки bacula-user-user. Невозможно эффективно иметь несколько дополнительных пулов для одного задания. Я изменил свои настройки на это:
Schedule{
Name = "GFSCycle"
Enabled = yes
# DailyCycle - the volumes are kept for 40days
Run = Level=Incremental Pool=DailyPool FullPool=HalfAnnualPool Priority=10 daily at 03:00
# MonthlyCycle - the volumes are kept for 7months
Run = Level=Differential Pool=MonthlyPool FullPool=HalfAnnualPool Priority=11 february-june 1 at 03:00
Run = Level=Differential Pool=MonthlyPool FullPool=HalfAnnualPool Priority=11 august-december 1 at 03:00
# HalfAnnualCycle - the volumes are kept 12months
Run = Level=Full Pool=HalfAnnualPool Priority=12 january 1 at 03:00
Run = Level=Full Pool=HalfAnnualPool Priority=12 july 1 at 03:00
Pool {
Name = DailyPool
Pool Type = Backup
Storage = backup-server-sd
Label Format = "DailyVol_"
Volume Use Duration = 23 hours
Recycle = yes # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 40 days
Maximum Volume Bytes = 50M # Limit Volume size to something reasonable
Maximum Volumes = 3000 # Limit number of Volumes in Pool
# -> max 150G
}
Pool {
Name = MonthlyPool
Pool Type = Backup
Storage = backup-server-sd
Label Format = "MonthlyVol_"
Volume Use Duration = 2 days
Recycle = yes
AutoPrune = yes
Volume Retention = 7 months
Maximum Volume Bytes = 5G
Maximum Volumes = 80
# -> max 170G
}
Pool {
Name = HalfAnnualPool
Pool Type = Backup
Label Format = "HalfannualVol_"
Storage = backup-server-sd
Volume Use Duration = 3 days
Recycle = yes
AutoPrune = yes
Volume Retention = 12 months
Maximum Volume Bytes = 35G
Maximum Volumes = 20
# -> max 700G
}
Для сохранения файлов и заданий для этого одного клиента установлено максимальное значение сохранения тома.
-> Хранение файлов = 12 месяцев, Хранение заданий = 12 месяцев.
Существуют также виртуальные полные резервные копии, которые могут пригодиться и более подробно описаны на странице: https://www.baculasystems.com/incremental-backup-software/ .
Еще раз большое спасибо всем участникам списка рассылки bacula-user-user, которые помогли мне во всем разобраться.