Mẹo lưu trữ hiệu quả 25TB + trị giá hàng triệu tệp trong hệ thống tệp


11

Giả sử bạn đang phải đối mặt với các tệp nhật ký không nén trị giá 25 TB và bạn có sẵn 20 mảng hàng hóa với dung lượng lưu trữ miễn phí tập thể là 25 TB.

Làm thế nào bạn sẽ lưu trữ những?

a) Hệ thống tập tin phân tán nào sẽ sử dụng?

b) Định dạng / thuật toán nén / giải nén nào?

c) Kích thước tệp nhật ký là 1MB đến tối đa 7MB tất cả văn bản và nhiều khoảng trắng

d) Cách sử dụng là a) mọi người muốn các tệp nhật ký mới nhất nhiều hơn trước nên sử dụng hệ thống bộ đệm nào b) mọi người sẽ chỉ đọc các tệp nhật ký không xóa chúng c) mọi người muốn liệt kê các tệp nhật ký theo phạm vi ngày

e) Hệ điều hành chạy trên các hộp hàng hóa là Linux,

f) Đối với sao lưu tốt, chúng tôi có một mảng lưu trữ chăm sóc điều đó. Vì vậy, khả năng khôi phục dữ liệu từ mảng tồn tại.

Tôi không muốn họ truy cập trực tiếp vào hệ thống tập tin. Tôi nên làm gì ? Làm cách nào để tôi có được API dựa trên REST cho việc này?

Xin hãy dành cho bạn 2 xu và bạn sẽ làm gì?

Ankur


Những hệ điều hành là các hộp hàng hóa đang chạy? Bạn có yêu cầu khả năng chịu lỗi, hoặc nếu bạn mất tất cả dữ liệu được lưu trữ trên một hộp, điều đó có ổn không?
Mark Henderson

@fudeeker đã chỉnh sửa câu hỏi để trả lời câu hỏi của bạn. Cảm ơn
Ankur Gupta

Chỉ cần đọc lại câu hỏi và câu hỏi đầu tiên tôi sẽ hỏi là: 25TB tệp nhật ký được lưu trữ ngay bây giờ và chúng có thể ở đó không?
Mark Henderson

@fudeeker trên hệ thống tập tin NFS
Ankur Gupta

Câu trả lời:


7

Tôi không phải là ninja hệ thống tệp phân tán, nhưng sau khi hợp nhất càng nhiều ổ đĩa tôi có thể vào càng ít máy càng tốt, tôi sẽ thử sử dụng iSCSI để kết nối phần lớn các máy với một máy chính. Ở đó tôi có thể hợp nhất mọi thứ vào hy vọng một kho lưu trữ chịu lỗi. Tốt hơn là, khả năng chịu lỗi trong máy (nếu ổ đĩa bị tắt) và giữa các máy (nếu toàn bộ máy bị tắt nguồn).

Cá nhân tôi thích ZFS. Trong trường hợp này, bản dựng trong nén, khấu trừ và khả năng chịu lỗi sẽ hữu ích. Tuy nhiên, tôi chắc chắn có nhiều cách khác để nén dữ liệu trong khi làm cho nó có khả năng chịu lỗi.

Ước gì tôi có một giải pháp tập tin chìa khóa trao tay thực sự để giới thiệu, tôi biết điều này thực sự rất khó khăn nhưng tôi hy vọng nó chỉ cho bạn đi đúng hướng.

Chỉnh sửa: Tôi vẫn chưa quen với ZFS và thiết lập iSCSI, nhưng nhớ lại đã thấy một video từ Sun ở Đức nơi họ đang hiển thị khả năng chịu lỗi của ZFS. Họ đã kết nối ba hub USB với một máy tính và đặt bốn ổ flash vào mỗi hub. Sau đó, để ngăn chặn bất kỳ một trung tâm nào lấy bể lưu trữ xuống, họ đã tạo một ổ RAIDz bao gồm một ổ flash từ mỗi hub. Sau đó, họ kết hợp bốn khối ZFS RAIDz lại với nhau. Bằng cách đó, chỉ có bốn ổ đĩa flash được sử dụng cho tương đương. Tất nhiên, tiếp theo là rút một trung tâm và điều đó làm suy giảm mọi zpool, nhưng tất cả dữ liệu đều có sẵn. Trong cấu hình này, có thể mất tối đa bốn ổ đĩa, nhưng chỉ khi bất kỳ hai ổ đĩa nào không nằm trong cùng một nhóm.

Nếu cấu hình này được sử dụng với ổ đĩa thô của mỗi hộp, thì điều đó sẽ bảo tồn nhiều ổ đĩa hơn cho dữ liệu chứ không phải cho tính chẵn lẻ. Tôi nghe nói FreeNAS có thể (hoặc sẽ có thể) chia sẻ các ổ đĩa theo cách "thô" thông qua iSCSI, vì vậy tôi cho rằng Linux cũng có thể làm như vậy. Như tôi đã nói, tôi vẫn đang học, nhưng phương pháp thay thế này sẽ ít lãng phí hơn từ quan điểm tương đương ổ đĩa so với đề xuất trước đây của tôi. Tất nhiên, nó sẽ dựa vào việc sử dụng ZFS mà tôi không biết liệu có thể chấp nhận được hay không. Tôi biết thường là tốt nhất để bám vào những gì bạn biết nếu bạn sẽ phải xây dựng / bảo trì / sửa chữa một cái gì đó, trừ khi đây là một kinh nghiệm học tập.

Hy vọng điều này là tốt hơn.

Chỉnh sửa: Đã thực hiện một số đào và tìm thấy video tôi đã nói về. Phần mà họ giải thích về việc truyền bá ổ flash USB trên các hub bắt đầu từ 2m10s. Video này là để giới thiệu máy chủ lưu trữ của họ "Thumper" (X4500) và cách truyền bá các đĩa qua các bộ điều khiển để nếu bạn gặp lỗi bộ điều khiển đĩa cứng, dữ liệu của bạn sẽ vẫn tốt. (Cá nhân tôi nghĩ rằng đây chỉ là một video về những người đam mê vui vẻ. Tôi ước mình có một hộp Thumper, nhưng vợ tôi sẽ không thích tôi chạy một cái pallet trong nhà. D Đó là một hộp lớn.)

Chỉnh sửa: Tôi nhớ đã đến trên một hệ thống tệp phân tán có tên OpenAFS . Tôi đã không thử nó, tôi chỉ đọc một số về nó. Có lẽ khác biết làm thế nào nó xử lý trong thế giới thực.


4

Đầu tiên, các tệp nhật ký có thể được nén ở tỷ lệ thực sự cao. Tôi thấy các tệp nhật ký của mình nén theo tỷ lệ 10: 1. Nếu họ nén theo tỷ lệ 5: 1, thì đó chỉ là 5 GB, hoặc 20% dung lượng lưu trữ của bạn.

Cho rằng bạn có quá nhiều dung lượng lưu trữ, thuật toán nén cụ thể không quá quan trọng. Bạn có thể...

  • Sử dụng tệp zip nếu người dùng Windows sẽ truy cập trực tiếp vào tệp.
  • Sử dụng gzip nếu chúng sẽ được truy cập thông qua Linux và giải nén nhanh là rất quan trọng.
  • Sử dụng bzip2 nếu chúng sẽ được truy cập qua Linux và điều quan trọng là phải có các tệp nhỏ nhất có thể.

Câu hỏi lớn hơn là: làm thế nào bạn sẽ cung cấp cho người dùng của bạn quyền truy cập dễ dàng vào các tệp này? Một phần của điều này phụ thuộc vào cách máy của bạn được cấu hình.

Nếu bạn có thể đặt đủ dung lượng lưu trữ vào một máy, thì bạn có thể thực hiện một việc cực kỳ đơn giản, như chia sẻ tệp Windows chỉ đọc. Chỉ cần sắp xếp các tệp trong thư mục con và bạn đã sẵn sàng để đi.

Nếu bạn không thể tạo một máy chủ tệp duy nhất cho các tệp này, thì bạn có thể thấy rằng bạn cần một hệ thống tệp phân tán. Windows có Hệ thống tệp phân tán (DFS) có thể phù hợp với nhu cầu của bạn.

Nếu nhu cầu của bạn nâng cao hơn, bạn có thể muốn một ứng dụng web là giao diện người dùng nơi người dùng của bạn có thể duyệt và tải xuống các tệp nhật ký. Trong trường hợp này, tôi khuyên bạn nên sử dụng MogileFS, đây là một hệ thống tệp phân tán được thiết kế để sử dụng với máy chủ ứng dụng ngoại vi. Rất dễ tích hợp với hầu hết các ngôn ngữ lập trình web. Bạn không thể gắn nó như một ổ đĩa chung trên máy tính của mình, nhưng nó nổi tiếng là một kho lưu trữ dữ liệu cho một ứng dụng web.


FYI: Windows DFS là một cách để giữ các tệp / thư mục trên nhiều máy chủ được đồng bộ hóa. Nó sẽ không cho phép bạn sử dụng bộ lưu trữ trên nhiều máy chủ như một ổ lưu trữ duy nhất. microsoft.com/windowsserversystem/dfs/default.mspx
Scott McClenning

Sau khi nghĩ về nó, bạn đã đúng; DFS có thể được sử dụng nếu bạn có điểm gốc DFS đến các thư mục sống trên các máy khác. Bằng cách đó, người dùng sẽ thấy một cấu trúc tệp và sẽ không cần biết dữ liệu thực sự sống trên máy nào, DFS sẽ biết. Rằng sẽ làm việc. Thông thường khi tôi có người hỏi tôi về Windows DFS, họ thường nghĩ rằng đó là một cách để gộp chung dung lượng lưu trữ và đó là lý do tại sao tôi chỉ đưa ra kết luận đó. Xin lỗi và quyền của bạn có thể làm việc.
Scott McClenning

2

lessfs là một hệ thống tập tin nén, trùng lặp. Mặc dù nó sẽ không giải quyết được toàn bộ vấn đề, nhưng có thể đáng để xem như là một phụ trợ.


2

xuất các thư mục này qua NFS

gắn chúng trên một máy duy nhất với apache đang chạy (dưới gốc tài liệu) dưới dạng cây

sử dụng zip để nén chúng - tỷ lệ nén tốt, zip có thể được mở từ tất cả các hệ điều hành

liệt kê các tệp trong Apache - vì bạn đang cấp cho người dùng quyền truy cập chỉ đọc (các tệp nhật ký không giả sử được chỉnh sửa, phải không)


1
Đồng ý trên nfs + httpd, không đồng ý trên zip. gzip tương tác cách tốt hơn với http.
Tobu

+1 cho nhận xét gzip từ @Tobu - Với cấu hình phù hợp, Apache có thể cung cấp các tệp gzip'ed cho trình duyệt web sẽ giải nén trong suốt và hiển thị chúng. Người dùng thậm chí không cần biết về nén.
Christopher Cashell

0

Bạn đã bao giờ nghĩ về việc nén các tệp nhật ký? Sau đó làm một cái gì đó trên frontend để giải nén chúng trước khi phục vụ chúng cho người dùng cuối. Có lẽ một kịch bản CGI của các loại.


0

@Ankur và @Porch. Tôi hoàn toàn đồng ý với sự cần thiết phải nén các bản ghi này.

@jet Tôi nghĩ rằng chương trình đơn giản hơn là tốt hơn - do đó httpd cho người dùng cuối gần với lý tưởng. Và phụ trợ có thể là bất kỳ.

Ý kiến ​​của tôi - chia nhật ký thành 2 nhóm - thư mục 'cũ' và 'mới'.

Hợp nhất chúng vào tài liệu gốc của httpd. Sử dụng nén mạnh cho các tệp cũ (lưu trữ xz hoặc 7z, phổ biến cho tất cả các hệ điều hành) với kích thước khối và từ điển lớn, thậm chí có thể là tài liệu lưu trữ vững chắc.

Sử dụng nén fs cho các phương thức mới: lessfs (rw, sao chép + phương pháp nén ánh sáng), fusecompress 0.9.x (rw, ánh sáng đến phương pháp nén mạnh), btrfs / zfs, squashfs (ro, ánh sáng đến phương pháp nén mạnh, một số khấu trừ, sử dụng cho các bản ghi mới được luân chuyển).

Bạn thậm chí có thể viết nhật ký một cách trong suốt vào fs nén (fusecompress, lessfs, btrfs / zfs). Cung cấp quyền truy cập R / o bởi httpd để ghi nhật ký. Chúng sẽ được minh bạch cho người dùng và giải nén trong suốt cho họ.

Cảnh báo về fusecompress: 1) chỉ sử dụng 0.9.x - nó ổn định. Sao chép từ đây https://github.com/hexxellor/fusecompress

Các phiên bản sau này không hỗ trợ lzma tốt hoặc mất dữ liệu.

2) nó chỉ sử dụng 1 lõi cpu để nén một tệp, do đó có thể bị chậm.

Giải nén từng bản ghi trong thư mục 'mới', cũ hơn một thời gian (vài tháng) và chuyển sang 'cũ'.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.