Một file GIF của Jennifer Aniston tạo ra 377GB dữ liệu thừa, làm sập hệ thống backup

Một file GIF của Jennifer Aniston tạo ra 377GB dữ liệu thừa, làm sập hệ thống backup

-

Giới hạn kỹ thuật của Linux filesystem kết hợp với chính sách bảo mật đã biến một file 1,6MB thành cơn ác mộng hạ tầng cho nền tảng Discourse.

Một file GIF animation 1,6MB chụp cảnh nhân vật Rachel trong series Friends đang nhảy vui — thường được gọi là “happy dance” — đã được nhân bản tới 246.173 lần trong quá trình backup của một cộng đồng trực tuyến, tạo ra 377GB dữ liệu thừa và khiến toàn bộ quá trình sao lưu thất bại. Câu chuyện được kỹ sư Jake Goldsborough của Discourse ghi lại trên blog kỹ thuật của công ty.

Tại sao một file lại bị nhân bản hàng nghìn lần?

Discourse là nền tảng thảo luận cộng đồng mã nguồn mở đang hỗ trợ hơn 22.000 cộng đồng trực tuyến. Vấn đề bắt nguồn từ tính năng “secure uploads” — khi một file di chuyển giữa các ngữ cảnh bảo mật khác nhau (ví dụ từ tin nhắn riêng sang bài đăng công khai), hệ thống tự động tạo ra một bản sao mới với mã SHA1 ngẫu nhiên hóa. Dù nội dung hoàn toàn giống nhau, Discourse xử lý mỗi bản sao như một file độc lập. Kết quả là file GIF được dùng liên tục trong bài đăng, bình luận và tin nhắn riêng tư trên cộng đồng đó đã bị nhân bản không kiểm soát.

Giải pháp đầu tiên

Discourse ban đầu xử lý bằng cách nhận diện nội dung trùng lặp qua giá trị hash, sau đó tạo hardlink thay vì sao chép file trong quá trình backup. Giải pháp này tưởng chừng hiệu quả cho đến khi một khách hàng lớn vấp phải giới hạn kỹ thuật của filesystem EXT4 trên Linux: tối đa khoảng 65.000 hardlink trên mỗi inode. Với 246.173 bản sao của cùng một file GIF, hệ thống chỉ xử lý được một phần trước khi gặp lỗi EMLINK — còn lại khoảng 181.000 file vẫn phải tải xuống riêng lẻ như cũ.

Một khách hàng khác của Discourse có kho upload 432GB nhưng nội dung thực sự duy nhất chỉ vỏn vẹn 26GB — tức là dữ liệu thừa do trùng lặp chiếm hơn 16 lần so với nội dung gốc.

Giải pháp cuối cùng

Discourse sau đó phát triển một cách xử lý cải tiến: vẫn tạo hardlink như trước, nhưng khi hệ thống báo lỗi EMLINK do vượt giới hạn, thay vì dừng lại, nó sẽ sao chép file sang một bản mới và coi bản đó là file “chính” cho đến khi giới hạn tiếp theo được chạm tới. Cách tiếp cận này hoạt động trên mọi loại filesystem mà không cần cấu hình thêm.

Goldsborough kết thúc bài viết với nhận xét hài hước rằng qua sự cố này, ông học được một điều: “Jennifer Aniston có thể stress-test hạ tầng máy chủ.”

> Ý kiến đóng góp xin gửi về: toasoan@gamen.vn > Press Inquiries: info@gamen.vn

GameN - MXH dành cho game thủ Việt

Ban quản trị

ĐỌC NHIỀU