14 điểm bởi GN⁺ 2025-10-07 | 3 bình luận | Chia sẻ qua WhatsApp
  • Tự xây dựng hệ thống lưu trữ S3 riêng bằng laptop Framework và JBOD, vận hành dung lượng 10TB với chi phí thấp và hoạt động ổn định suốt 4 tháng mà không cần quản trị
  • Dùng một chiếc laptop Framework cũ không có màn hình để cài ZFS và garage S3 rồi tận dụng làm máy chủ gia đình, hiện được dùng làm kho lưu trữ dung lượng lớn cho dự án theo dõi SDK của AppGoblin
  • Sau 4 tháng hoàn toàn không đụng tới máy chủ, khi đăng nhập lại thì thấy 10TB đã được sử dụng và hệ thống đang chờ nâng cấp, nhưng sau khi khởi động lại mọi thứ vẫn hoạt động bình thường
  • Quá trình nâng cấp garage S3 từ v1 lên v2 cũng hoàn tất suôn sẻ, cho thấy trải nghiệm vận hành ổn định
  • Ban đầu có vấn đề với cấu hình ZFS không theo chuẩn khi kết nối laptop và JBOD qua USB, nhưng đã giải quyết bằng cách chuyển metadata vào bộ nhớ trong của laptop

Bối cảnh và động lực của dự án

  • Quyết định tự host S3 từ 5 tháng trước
    • Đang thực hiện công việc theo dõi SDK của 100.000 ứng dụng Android và iOS hàng đầu của AppGoblin
    • Cần không gian lưu trữ lớn nhưng muốn tiết kiệm chi phí
    • Chọn phương án tự host thay vì dùng cloud S3 hiện có

Cấu hình phần cứng

  • Sử dụng laptop Framework
    • Mua được một chiếc laptop Framework cũ không có màn hình với giá rẻ
    • Vì là mẫu đời cũ nên phù hợp để dùng làm máy chủ tại nhà
    • Tận dụng tính di động và mức tiêu thụ điện thấp của laptop
  • Bổ sung JBOD (Just a Bunch of Disks)
    • Mảng ổ đĩa ngoài để lưu trữ dung lượng lớn
    • Kết nối với laptop qua USB

Ngăn xếp phần mềm

  • Hệ thống tệp ZFS
    • Cung cấp tính toàn vẹn dữ liệu và tính năng snapshot
    • Cấu hình JBOD thành một pool ZFS
  • garage S3
    • Giải pháp lưu trữ phân tán tương thích S3, gọn nhẹ
    • Dự án mã nguồn mở do Deuxfleurs phát triển
    • Cung cấp khả năng tương thích với S3 API

Vận hành không quản trị trong 4 tháng

  • Sau khi cài đặt, 4 tháng hoàn toàn không cần để tâm đến máy chủ
    • Dù đi du lịch, làm việc và bận rộn với cuộc sống thường ngày, S3 vẫn được sử dụng liên tục
    • Không cần phải nghĩ gì về máy chủ
  • Những gì phát hiện sau khi đăng nhập lại
    • Đã sử dụng hết 10TB dung lượng lưu trữ
    • Hệ thống kiên nhẫn chờ được khởi động lại để nâng cấp
  • Kết quả sau khi khởi động lại
    • Khởi động lại trong tâm trạng đầy căng thẳng
    • Mọi thứ hoạt động trở lại bình thường, đem lại cảm giác nhẹ nhõm

Nâng cấp garage S3

  • Nâng cấp từ v1 lên v2
    • Phát hiện bản nâng cấp major version đã chờ sẵn
    • Quá trình nâng cấp diễn ra không gặp vấn đề gì
    • Được đánh giá là một cuối tuần tuyệt vời

Cảnh báo kỹ thuật và cách xử lý

  • Nhận thức về cấu hình ZFS không theo chuẩn
    • Kết nối laptop và JBOD qua USB là một trường hợp sử dụng ZFS hơi khác chuẩn
    • Đã nhận được cảnh báo về điều này từ cộng đồng Reddit
  • Sự cố ban đầu phát sinh
    • Khi garage thực hiện đọc và ghi với khối lượng lớn thì xảy ra vấn đề với ZFS
    • Ở cấu hình ban đầu, metadata SQLite cũng được lưu trên JBOD/ZFS
  • Cách giải quyết vấn đề
    • Chuyển metadata sang bộ nhớ trong của laptop
    • Sau đó vấn đề với ZFS được giải quyết và hệ thống hoạt động ổn định

3 bình luận

 
shakespeares 2025-10-07

Việc dám thử tự host đã là rất đáng nể.

 
rtyu1120 2025-10-07

Dù mức giá chênh lệch khá nhiều, có vẻ như bo mạch chủ của Framework đã trở thành Raspberry Pi của thời hiện đại.

 
GN⁺ 2025-10-07
Ý kiến trên Hacker News
  • Nếu chỉ có mainboard không màn hình, cũng có thể đặt vào case chuyên dụng như của CoolerMaster liên kết case Framework của CoolerMaster
    • Mấy thứ này thật sự rất ngầu, nhưng điều tôi muốn nhấn mạnh là chính chiếc laptop này hoạt động cực kỳ tốt, hầu như không có tiếng quạt và gần như không tỏa nhiệt, khi tải nhẹ thì mức tiêu thụ điện cũng rất tốt, tôi nghĩ đó là lý do laptop này đặc biệt phù hợp với mục đích này
    • Trên Framework Marketplace cũng có chia sẻ liên kết case liên kết case trên Framework Marketplace, tôi từng cho mainboard cũ vào case này sau khi nâng cấp, gắn sau màn hình bằng ngàm VESA để dùng như PC desktop, và giờ đang dùng làm HTPC (PC rạp hát tại gia), rất hài lòng
    • Rack mini 10 inch cũng là một lựa chọn tốt DeskPi RackMate mini rack 10 inch
  • Tôi tò mò hơn về phần kỹ thuật, không phải vì muốn làm y hệt, mà muốn biết đã cấu hình ZFS pool như thế nào, và liệu Garage có tự lo hết phần đó không, có mirror hay không, hay chỉ là các pool riêng lẻ đồng bộ sang các ổ khác nhau, tôi đang muốn làm NAS giá rẻ bằng 2 ổ USB, phân vân giữa ZFS mirror, tạo 2 pool độc lập rồi dùng một pool làm backup cho pool còn lại, hay chuyển sang SnapRAID để trộn các ổ cứng cũ và tận dụng phần cứng tối đa
    • Nếu đang phân vân giữa ZFS mirror và pool độc lập, thì mirror cho bạn khả năng bảo vệ khỏi bit rot và tự phục hồi (scrub), đồng thời tốc độ đọc cũng nhanh hơn, nếu có hai ổ cứng dung lượng tương đương thì cũng có thể thêm một mirrored ZDEV bằng ZFS vào pool hiện có, hoặc tạo pool backup mới, chỉ cần hai ổ trong mirror có kích thước gần nhau, không cần mọi ổ trong toàn bộ pool phải giống hệt nhau
    • Garage không bị ràng buộc vào một cách làm cụ thể nào, hoàn toàn có thể chạy tốt mà không cần ZFS, tôi cài ZFS riêng trên Ubuntu rồi cài Garage, ZFS được cấu hình đơn giản theo RAID5/raidz1, tôi không phải chuyên gia nhưng khi dung lượng đã gần chạm 33% thì đang cân nhắc lại phần này, chuyện này làm tôi nhớ tới một bình luận như ma thuật từng thấy trên HN: “Tôi chấp nhận rằng với một phần dữ liệu quan trọng, mất vài giờ dữ liệu là điều có thể chấp nhận được, nên thay vì mirror tôi dùng hai pool 1-đĩa độc lập, chụp snapshot cho pool chính vài giờ một lần rồi dùng zfs send/recv gửi sang pool backup”, kiểu quy trình này có vẻ hợp với nhu cầu của tôi hơn, ban đầu RAID5 là để phòng trường hợp hỏng một ổ, nhưng dựng cùng cấu hình ở địa điểm khác thì chi phí (~$1,000 USD) khá cao nên tôi vẫn chưa làm được
  • Đây là lần đầu tôi biết đến Garage và thấy nó khá thú vị, trong công việc tôi dùng S3 thường xuyên, còn backup homelab cá nhân thì trước giờ dùng borg với borgbase, lần này tôi muốn biết liệu có thể dùng garage để ghép node cục bộ với AWS glacier nhằm lưu trữ dư thừa thư viện media lớn với chi phí thấp hay không, và liệu toàn bộ lưu lượng đọc có đi từ node cục bộ không, trong bài trên TFA không thấy nhiều chia sẻ về trải nghiệm dùng Garage thực tế, nên tôi muốn nghe ý kiến của những người thật sự dùng nó cho mục đích self-hosting, chỉnh sửa: tôi biết rồi là không thể dùng với glacier, vì nó phải được mount như một filesystem trên EC2 instance đang chạy binary Garage, vậy thì chỉ cần lên lịch backup lên glacier bằng borg/restic sẽ tốt hơn
    • Một lựa chọn khác là ZeroFS, có thể lưu dữ liệu trực tiếp lên S3 ZeroFS GitHub
    • Có thể tích hợp với AWS S3 và áp dụng chính sách lifecycle mạnh tay để tự động chuyển dữ liệu sang glacier sau một thời gian ngắn, ở công ty cũ tôi từng cấu hình theo cách này, để dữ liệu chuyển từ standard sang glacier sau vài ngày, nếu là trường hợp của bạn thì đặt X = 1 ngày là được
    • Tôi gần như không phải đụng trực tiếp vào Garage, chỉ cần các công cụ S3 API như awscli, s3cmd, rclone, Boto3 là đủ để sử dụng, Garage được thiết lập rất đơn giản chỉ với vài lệnh, rồi sau khi chạy thì nó cứ thế vận hành ổn định suốt 4 tháng, về mặt này tôi rất hài lòng
  • Tôi chỉ muốn chia sẻ một ví dụ self-hosting yên tĩnh nhưng thành công
    • Tôi tò mò không biết JBOD này có dùng SSD không, vì với từng đó HDD thì có thể khá ồn
    • Ngày xưa việc “tự sở hữu một chiếc máy tính và chạy cái gì đó trên nó” mà nay được gọi là ‘self-hosting’ nghe thật kỳ lạ, cứ như chúng ta đang sống trong thời đại mọi máy tính đều là của người khác, nên phải đặc biệt nhấn mạnh rằng mình đang tự dùng máy của chính mình
  • Tôi nghĩ mình sẽ cảm thấy an tâm hơn nếu dùng Dell T30 cũ với 2 ổ Seagate Exos 10TB chạy ZFS RAID1 (mirror), cách được đề xuất ở đây dù có backup hằng ngày thì lần nào cũng vẫn thấy bất an, Dell T30 cũng không phải hoàn toàn yên tâm, nhưng ít nhất việc gắn ổ sang thiết bị khác cũng dễ hơn và cũng bớt lo cáp bị tuột ra, dù vậy Garage trông vẫn khá hay nên cảm ơn bạn
    • Tôi cũng dùng ZFS khá lâu rồi, và đi đến kết luận rằng với nhiều dữ liệu, mất vài giờ dữ liệu là điều có thể chấp nhận được, nên thay vì mirror tôi tạo hai pool 1-đĩa độc lập, snapshot tự động cho pool chính vài giờ một lần ⇒ sao chép sang pool backup bằng zfs send/recv, nhờ đó có thể linh hoạt trộn các loại ổ (ví dụ một ổ SSD, một ổ HDD, v.v.), đổi lại phải chấp nhận đánh đổi về tốc độ đọc và thời gian sẵn sàng, cũng có thể dùng ổ cứng ngoài làm ổ backup và cắm vào vài ngày một lần, còn dữ liệu quan trọng thì tôi vẫn có một RAID pool mirror riêng, nhiều bài viết về ZFS quá tập trung vào RAID, trong khi kiểu cấu hình tối giản phần cứng như nói ở trên lại có vẻ thiếu thông tin
  • Tôi không chắc Framework có đóng góp gì đặc biệt ở đây, tôi đang host ở mức tương tự bằng RPi5 gắn vài ổ đĩa, dùng lvm2 thay cho ZFS và nó chạy tốt trên RPi5, ZFS ngốn RAM quá nhiều nên không phù hợp cho mục đích này
  • Tôi rất thích Garage, nó cứ thế chạy ổn định, tôi đang chạy Garage trên vài máy Odroid HC2 cũ để backup Velero cho k8s, sau khi thiết lập thì gần như không cần đụng vào nữa mà nó vẫn tự duy trì tốt
  • Rất vui khi thấy có người nhắc đến Garage, lúc tôi quyết định chọn phương án self-hosting tương thích S3 thì cũng phân vân giữa Garage và SeaweedFS, theo trải nghiệm của tôi thì SeaweedFS tiện hơn vì cần ít cấu hình thủ công hơn Garage
  • Kết quả rất tuyệt, tôi cũng đang thử thay mainboard của Framework rồi tận dụng nó chuyên cho backup NAS, muốn nghe chi tiết hơn về thiết lập zfs, tôi chỉ muốn dùng nó như không gian chuyên cho snapshot, nhưng lo tốc độ kết nối USB và sợ lỡ tay rút ra thì mất dữ liệu
  • Có một thảo luận cũ về Garage Hacker News Previous Discussion