main

Продолжая тему бэкапов

Тут недавно попробовал boxbackup, понравилось. Решение, конечно, достаточно нишевое, и рассчитано, прежде всего, на файлопомойки.

Общие сведения

Забудьте про такое понятия как: "расписание бэкапа", он идёт постоянно; "уровень бэкапа" - он всегда инкрементальный; "действия до/после бэкапа" - то что упало на диск - забэкапит, но самому пнуть тот же mysql - не дождётесь.

Скорость бэкапа - в полтора-два раза ниже чем у той же бакулы. Замерялось на файлопомойке в ~550гигов и ~700k файлов.

Также, отличен сам подход к бэкапу: есть одна и только одна актуальная копия файлов + некоторое количество удалённых файлов, которые начинают чистится только после заполнения всего места, выделенного под бэкап. Это очень сильно проще, чем настройка связки пул/расписание/задание и тюнинг retention time в той же бакуле для бэкапа той же самой файлопомойки. Я даже готов держать 2 системы бэкапов, только чтобы не проходить этот квест заново.

Из дополнительных плюшек:

  • изкоробочное шифрование канала передачи и самих файлов до отправки в хранилище.
  • одно tcp соединение для бэкапа (кто пробовал просунуть бакулу через nat - тот поймёт)
  • нет внешней базы данных
  • возможность организации "программного" raid'а из 1..3х дисков без mdadm. Просто указывается 3 места в фс, и туда зеркалируются данные.

Хранилище

Структура хранилища, кстати, достаточно интересная. Каждому файлу выдаётся порядковый номер. Тот переводится в hex-нотацию и на её основе вычисляется место в хранилище по паре символов. Лучше покажу на примере:

  • # 11 -> 0B -> ~/$ID/0B.rfw
  • # 1533 -> 5FD -> ~/$ID/05/ofd.rfw
  • # 89419 -> 15D4B -> ~/$ID/01/5d/o4b.rfw

и т.д. $ID - это уникальный номер учётной записи. В каждой поддиректории будет не больше 256х файлов и 256х директорий.

Из этого следует, что если бэкапить 100500 мелких файликов - они займут в хранилище те же 100500 инодов + сколько-то на дополнительные директории.

Вот как выглядит статистика одной из учёток:

$ bbstoreaccounts info 18
          Account ID: 0x00000018
      Last object ID: 0xb52b5
                Used:  152538719 blocks,  581.89 GB,  68% |**********      |
           Old files:         66 blocks,  264.00 kB,   0% |                |
       Deleted files:          6 blocks,   24.00 kB,   0% |                |
         Directories:      14786 blocks,   57.76 MB,   0% |                |
          Soft limit:  209715200 blocks,  800.00 GB,  94% |*************** |
          Hard limit:  222822400 blocks,  850.00 GB, 100% |****************|
 Client store marker: 742069