Sao lưu - Backup

Bareos là gì, và khi nào nên chọn nó

Bareos là gì, và khi nào nên chọn nó
Chia sẻ

Bareos là phần mềm backup mã nguồn mở cho doanh nghiệp. Tìm hiểu kiến trúc Director, File Daemon, Storage Daemon, Catalog và khi nào nên chọn Bareos.

Backup một máy chủ thì đôi khi chỉ cần một vài dòng cron đã đủ. Backup vài chục, vài trăm máy mà vẫn biết chắc bản nào còn, bản nào hỏng, khôi phục về mốc nào — đó là bài toán khác hẳn. Bareos là một trong các giải pháp sinh ra để giải quyết bài toán đó.

Đội kỹ thuật Cloudzone sử dụng Bareos - là một trong các giải pháp trong hệ thống sao lưu của mình. Chuỗi bài Bareos từ cài đặt tới vận hành chia sẻ những gì chúng tôi học được khi vận hành nó: từ kiến trúc, cấu hình, tới những cái bẫy mà tài liệu chính thức không nói rõ. Bài đầu tiên trả lời hai câu hỏi: Bareos là gì, và nó có hợp với bạn không.

Khi script backup không còn đủ

Hầu hết hệ thống bắt đầu với một script: tar hoặc rsync chạy lúc nửa đêm, nén lại, đẩy sang máy khác. Cách đó ổn tuy nhiên chỉ đối với các hệ thống nhỏ, từ vài máy chủ đến vài chục máy chủ trở lại, khi số lượng máy chủ tăng lên con số 50-70, rồi đến hàng trăm, vài trăm, ... và ai đó hỏi những câu mà script không còn trả lời được:

  • Đêm qua máy nào backup lỗi? Máy nào không hề chạy mà không ai biết?
  • File config.php của ngày 12 nằm trong bản nào, trên đĩa nào?
  • Giữ bản đầy đủ 30 ngày, bản thay đổi 14 ngày thì kịch bản dọn bản cũ, dọn lúc nào?
  • Nhiều máy chủ cùng backup lúc 1 giờ sáng thì đĩa và mạng có chịu nổi không?

Một hệ thống backup tập trung trả lời các câu đó bằng ba thứ: một hệ thống quản trị các kịch bản/thời gian backup, một hệ thống lưu trữ mọi bản đã lưu, và chính sách lưu giữ/sao lưu áp dụng tự động. Bareos có cả ba.

Bareos là gì

Bareos (Backup Archiving REcovery Open Sourced) là phần mềm sao lưu và khôi phục mã nguồn mở, tách nhánh từ Bacula năm 2010. Dự án phát hành theo giấy phép AGPLv3; công ty Bareos GmbH & Co. KG (Đức) dẫn dắt phát triển và bán gói hỗ trợ thương mại, còn phần mềm thì dùng miễn phí, không giới hạn số máy hay dung lượng.

Vì chung gốc với Bacula, ai từng dùng Bacula sẽ thấy quen: cùng mô hình Director–Storage–Client, cùng cú pháp cấu hình dạng khối. Sau hơn một thập kỷ tách nhánh, Bareos đã đi theo hướng riêng:

  • WebUI đi kèm để theo dõi job, xem log, chạy job và khôi phục file qua trình duyệt.
  • Plugin viết bằng Python để mở rộng nguồn backup: cơ sở dữ liệu, LDAP, kho đối tượng S3…
  • Mã hoá kênh truyền TLS bật sẵn giữa các thành phần.
  • Always Incremental và Virtual Full: ghép bản đầy đủ mới từ các bản cũ ngay trên máy backup, không phải đọc lại toàn bộ máy nguồn.
  • Ghi được ra nhiều loại kho: đĩa, băng từ, kho đối tượng S3.

Bốn thành phần của Bareos

Bareos không phải một chương trình mà là bốn dịch vụ nói chuyện với nhau qua môi trường mạng. Hiểu vai trò từng thành phần trong Bareos là hiểu được 80% cách Bareos vận hành.

Sơ đồ minh hoạ: Bareos là gì, và khi nào nên chọn nó
Thành phầnChạy ở đâuVai trò
Director (bareos-dir)Máy chủ backupBộ não: đọc cấu hình, giữ lịch, quyết định khi nào backup máy nào, ra lệnh cho hai daemon còn lại. Bản thân nó không chạm vào dữ liệu
File Daemon (bareos-fd)Từng máy cần backupĐọc file, nén, mã hoá nếu bật, gửi đi. Lúc restore thì nhận dữ liệu về và ghi lại
Storage Daemon (bareos-sd)Máy có kho lưu trữNhận dữ liệu từ File Daemon, ghi vào các volume trên đĩa, băng từ hoặc S3
Catalog (PostgreSQL)Thường cùng máy DirectorSổ ghi chép: job nào chạy lúc nào, gồm những file gì, nằm trên volume nào

Người quản trị nói chuyện với Director qua bconsole (dòng lệnh) hoặc WebUI (trình duyệt). Ba điểm đáng chú ý:

  • Dữ liệu không đi qua Director. File Daemon gửi thẳng sang Storage Daemon, nên Director có thể chạy trên máy nhỏ, còn Storage Daemon cần đĩa và mạng tốt.
  • Catalog quan trọng ngang dữ liệu. Mất catalog thì vẫn còn dữ liệu trên đĩa, nhưng không còn biết cái gì nằm ở đâu. Bài 8 của chuỗi nói riêng về việc bảo vệ catalog.
  • Ba cổng cần mở: 9101 (Director), 9102 (File Daemon), 9103 (Storage Daemon). Không cổng nào nên mở ra Internet.

Một job backup chạy thế nào

Theo chân một job backup máy chủ web lúc 21:00 sẽ thấy rõ bốn thành phần phối hợp ra sao:

  1. 21:00 — Director thức dậy. Resource Schedule nói tối nay có job backup-web01, level Incremental.
  2. Director tra catalog xem lần backup thành công gần nhất là khi nào — mốc để Incremental biết lấy file nào. Nếu chưa từng có bản Full, nó tự nâng job lên Full.
  3. Director gọi Storage Daemon, bảo chuẩn bị một volume trong pool đã cấu hình để ghi.
  4. Director gọi File Daemon trên web01, gửi danh sách thư mục cần lấy (resource FileSet) và địa chỉ Storage Daemon.
  5. File Daemon đọc file đã thay đổi từ mốc trước, nén rồi gửi thẳng sang Storage Daemon.
  6. Storage Daemon ghi xuống volume; tên file và vị trí của chúng được ghi vào catalog.
  7. Job kết thúc, Director ghi trạng thái (thành công, cảnh báo hay lỗi), dung lượng, thời gian vào catalog và gửi báo cáo qua resource Messages (vd email).

Khi restore, luồng đảo ngược: bạn chọn file và thời điểm, Director tra catalog xem cần những volume nào, Storage Daemon đọc ra và File Daemon ghi lại lên máy đích. Nhờ catalog, bạn tìm được một file của ba tuần trước mà không phải mở từng bản backup ra xem.

Một vài từ sẽ gặp lại suốt chuỗi bài:

Khái niệmNghĩa
JobMột việc backup (hoặc restore) cụ thể: lấy cái gì, từ đâu, ghi vào đâu
FileSetDanh sách thư mục/file cần lấy và loại trừ, kèm tuỳ chọn nén, mã hoá
ScheduleLịch chạy: ngày nào, giờ nào, level nào
LevelFull (đầy đủ), Incremental (thay đổi từ lần gần nhất), Differential (thay đổi từ bản Full gần nhất)
PoolNhóm volume dùng chung một chính sách lưu giữ
VolumeĐơn vị lưu trữ vật lý: một file trên đĩa hoặc một cuộn băng
RetentionThời gian giữ trước khi Bareos được phép dùng lại chỗ đó

Bareos đứng ở đâu so với các lựa chọn khác

Không có công cụ backup tốt nhất, chỉ có công cụ hợp với quy mô và đội ngũ. Bảng dưới so theo những điểm quyết định lựa chọn:

Script tar/rsyncrestic, BorgBackupBareosPhần mềm thương mại
Mô hìnhTự viết trên từng máyCông cụ chạy trên từng máyMáy chủ trung tâm điều phối mọi máyMáy chủ trung tâm
Lịch + trạng thái tập trungKhôngKhông (mỗi máy tự lo)CóCó
Tra cứu “file X nằm ở bản nào”KhôngTheo từng khoCatalog tập trungCó
Khử trùng lặp (dedup)KhôngCó, rất tốtKhông có sẵnThường có
Băng từKhóKhôngCóCó
Chi phí bản quyền000 (hỗ trợ trả phí tuỳ chọn)Theo máy hoặc dung lượng
Độ khó cài đặtThấpThấpCaoTrung bình

Nên chọn Bareos khi:

  • Có từ vài chục máy trở lên và cần một nơi trả lời “đêm qua backup ra sao”.
  • Cần chính sách lưu giữ rõ ràng (Full giữ 30 ngày, Incremental 14 ngày…) áp dụng tự động.
  • Muốn tự chủ, không phụ thuộc giấy phép theo số máy hay dung lượng.
  • Cần ghi ra băng từ hoặc nhiều loại kho khác nhau.

Chưa nên chọn Bareos khi:

  • Chỉ có vài máy: restic hoặc Borg đơn giản hơn nhiều, lại có khử trùng lặp.
  • Đội ngũ không quen Linux và file cấu hình: Bareos cấu hình chủ yếu bằng file text, WebUI không tạo hay sửa được job.
  • Cần khử trùng lặp mạnh để tiết kiệm dung lượng: Bareos không có sẵn, phải dựa vào tầng lưu trữ bên dưới.

Chuyện WebUI không sửa được cấu hình là giới hạn lớn nhất khi số máy tăng lên. Chặng cuối của chuỗi sẽ kể cách xây một lớp quản trị riêng để vượt qua nó.

Tóm tắt

  • Bareos là phần mềm backup mã nguồn mở (AGPLv3), tách từ Bacula, dùng miễn phí không giới hạn số máy.
  • Bốn thành phần: Director điều phối, File Daemon đọc dữ liệu, Storage Daemon ghi dữ liệu, Catalog ghi chép mọi thứ.
  • Dữ liệu đi thẳng từ File Daemon sang Storage Daemon, không qua Director.
  • Bareos hợp với hệ thống từ vài chục máy trở lên cần quản lý tập trung; vài máy thì restic hoặc Borg gọn hơn.

Bài sau: Dựng Bareos + PostgreSQL + WebUI, và 3 bẫy cài đặt — cài một hệ thống chạy được trên Ubuntu 24.04, kèm ba lỗi hay gặp mà tài liệu cài đặt không nhắc tới.

Bài viết thuộc chuỗi “Bareos từ cài đặt tới vận hành” của đội kỹ thuật Cloudzone.

Chia sẻ