Sao lưu và phục hồi

Bareos là gì? Kiến trúc 4 thành phần và khi nào nên dùng

Bareos là gì? Kiến trúc 4 thành phần và khi nào nên dùng
Chia sẻ

Bareos là phần mềm sao lưu mã nguồn mở, điều phối backup cho hàng chục tới hàng trăm máy chủ từ một nơi. Bài này giải thích bốn thành phần của Bareos, một job backup chạy ra sao và khi nào nên hoặc chưa 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 trong hệ thống sao lưu của Cloudzone. Chuỗi bài Bareos từ cài đặt tới vận hành chia sẻ những gì đội kỹ thuật 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 của Bareos không nói rõ.

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 với hệ thống nhỏ, từ vài tới vài chục máy chủ. Khi số máy lên năm, bảy chục rồi hàng trăm, sẽ có người hỏi những câu mà script không 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 sao lưu tập trung trả lời các câu đó bằng ba thứ: một nơi điều phối lịch và trạng thái mọi job, một kho cùng sổ ghi chép biết file nào nằm ở bản nào, và chính sách lưu giữ á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ì không thu phí bản quyền, không tính tiền theo số máy hay dung lượng. Gói cài sẵn ở kho cộng đồng download.bareos.org là bản dựng không kèm hỗ trợ (ghi rõ UNSUPPORTED); bản vá liên tục và hỗ trợ kỹ thuật nằm trong gói thuê bao.

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 là hiểu phần lớn cách Bareos vận hành.

Sơ đồ bốn thành phần Bareos: Director điều phối, dữ liệu đi thẳng từ File Daemon sang Storage Daemon
Dữ liệu backup không đi qua Director.
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, làm 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 (ví dụ qua email).

Khi restore, luồng đảo ngược: người quản trị 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, có thể tìm 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ó.

Cần sao lưu tập trung cho nhiều máy chủ mà không muốn tự dựng và trực một hệ thống như Bareos thì có thể dùng dịch vụ Backup as a Service của Cloudzone. Cần tư vấn cấu hình, mời Quý khách hàng chat với Cloudzone.

Tóm tắt

  • Bareos là phần mềm backup mã nguồn mở (AGPLv3), tách từ Bacula, không thu phí bản quyền theo 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 trên Ubuntu 24.04, 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.

Chuỗi Bareos từ cài đặt tới vận hành:

  1. Bareos là gì (bài này)
  2. Cài đặt trên Ubuntu 24.04
  3. Cấu hình Job, FileSet, Schedule, Pool
  4. Full, Incremental hay Differential
  5. Retention
  6. Tính dung lượng
  7. Nén và chạy song song
  8. Catalog
  9. Diễn tập khôi phục
  10. Tự động hoá bconsole
  11. Lớp quản trị sinh cấu hình
  12. Giám sát nhiều Director

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ẻ

Bài viết liên quan

Quản lý VPS bằng API: tự động bật, tắt, sao lưu

Quản lý VPS bằng API: tự động bật, tắt, sao lưu

Một công ty phần mềm ở Đà Nẵng thuê 12 VPS cho môi trường thử nghiệm. Các máy này chỉ cần chạy trong giờ làm việc, nhưng chẳng ai nhớ tắt vào buổi tối, và sáng thứ Hai luôn có người phải đăng nhập bật lại từng máy. Đến khi một bạn quản trị viết đoạn script 30 dòng gọi API, việc bật tắt tự chạy theo lịch, danh sách máy được kiểm mỗi sáng, và không ai phải nhớ nữa.

Chuyển dữ liệu từ AWS S3 hoặc Wasabi về Việt Nam: khi nào nên chuyển và cách chuyển an toàn

Chuyển dữ liệu từ AWS S3 hoặc Wasabi về Việt Nam: khi nào nên chuyển và cách chuyển an toàn

Nhiều hệ thống Việt Nam vẫn để dữ liệu trên AWS S3, Wasabi hay Backblaze B2 từ ngày đầu. Bài này nói khi nào nên chuyển dữ liệu từ AWS S3 về Việt Nam, khi nào không, và cách chuyển an toàn.

Giám sát Bareos: phát hiện job không hoạt động và quản lý nhiều Director

Giám sát Bareos: phát hiện job không hoạt động và quản lý nhiều Director

Job backup lỗi thì có cảnh báo, còn job không chạy thì không có log trong catalog và báo cáo vẫn ổn. Bài cuối của chuỗi hướng dẫn cách phát hiện những job không chạy đó, và những lỗi dễ gặp khi quản lý nhiều Director.

Khi WebUI không đủ: 5 nguyên tắc thiết kế lớp quản trị cấu hình Bareos

Khi WebUI không đủ: 5 nguyên tắc thiết kế lớp quản trị cấu hình Bareos

WebUI của Bareos theo dõi và chạy job tốt nhưng không tạo hay sửa được cấu hình. Bài này nêu năm nguyên tắc thiết kế một lớp quản trị Bareos sinh cấu hình từ cơ sở dữ liệu mà không làm hỏng chính hệ thống backup.

Tự động hoá bconsole trong Bareos và 6 lỗi ẩn cần lưu ý khi triển khai

Tự động hoá bconsole trong Bareos và 6 lỗi ẩn cần lưu ý khi triển khai

Script gọi bconsole có thể chạy hết, không báo lỗi mà vẫn làm sai, khiến người vận hành tin rằng việc đã xong. Bài này gom sáu cái bẫy hay gặp khi tự động hoá Bareos qua bconsole, mỗi bẫy kèm đoạn script sai và đoạn script đúng.

Diễn tập khôi phục Bareos: 3 kịch bản kiểm chứng khả năng restore

Diễn tập khôi phục Bareos: 3 kịch bản kiểm chứng khả năng restore

Một job backup báo OK chỉ cho biết dữ liệu đã được ghi xuống, chưa chứng minh dữ liệu đó khôi phục được và mất bao lâu. Bài này hướng dẫn diễn tập khôi phục Bareos qua ba bài thử trên máy chủ Linux, kèm checklist chạy định kỳ.