Hệ thống tập tin lưu trữ phân tán - Cái nào / Có sản phẩm nào đã sẵn sàng để sử dụng chưa?


31

Với HadoopCouchDB có trên Blog và các tin tức liên quan, bộ lưu trữ chịu lỗi phân tán (động cơ) thực sự hoạt động như thế nào.

  • CouchDB thực sự không có bất kỳ tính năng phân phối nào được tích hợp sẵn, theo hiểu biết của tôi, chất keo để tự động phân phối các mục hoặc thậm chí toàn bộ cơ sở dữ liệu bị thiếu.
  • Hadoop dường như được sử dụng rất rộng rãi - ít nhất là nó được báo chí tốt, nhưng vẫn có một điểm thất bại duy nhất: NameNode. Ngoài ra, nó chỉ có thể gắn kết thông qua FUSE, tôi hiểu rằng HDFS không thực sự là mục tiêu chính của Hadoop
  • GlusterFS không có khái niệm gì được chia sẻ nhưng gần đây tôi đã đọc một số bài đăng dẫn tôi đến ý kiến ​​nó không hoàn toàn ổn định
  • Luster cũng có một điểm thất bại duy nhất vì nó sử dụng máy chủ siêu dữ liệu chuyên dụng
  • Ceph dường như là người chơi được lựa chọn nhưng trang chủ cho biết nó vẫn đang trong giai đoạn alpha.

Vì vậy, câu hỏi là hệ thống tập tin phân tán nào có bộ tính năng sau (không có thứ tự cụ thể):

  • Tương thích POSIX
  • dễ dàng thêm / loại bỏ các nút
  • khái niệm không chia sẻ
  • chạy trên phần cứng giá rẻ (bộ xử lý lớp AMD Geode hoặc VIA Eden)
  • xác thực / ủy quyền tích hợp
  • một hệ thống tệp mạng (tôi muốn có thể gắn kết đồng thời trên các máy chủ khác nhau)

Rất vui được có:

  • các tệp có thể truy cập cục bộ: Tôi có thể lấy một nút xuống gắn kết phân vùng với một hệ thống tệp cục bộ tiêu chuẩn (ext3 / xfs / sao ...) và vẫn truy cập các tệp

Tôi không tìm kiếm các ứng dụng được lưu trữ, thay vào đó là thứ gì đó sẽ cho phép tôi nhận 10GB mỗi hộp phần cứng của chúng tôi và có sẵn dung lượng lưu trữ trong mạng của chúng tôi, có thể dễ dàng gắn kết trên nhiều máy chủ.


Vì vậy, những gì bạn đã kết thúc với? Sẽ rất thú vị khi nghe về thiết lập hiện tại của bạn.
MattBianco

Luster dường như đã thêm các MDS chủ động / thụ động kể từ khi bạn viết bài này, vì vậy có thể cần một cái nhìn khác.
pjz

Theo kinh nghiệm của tôi, GlusterFS đã ổn định nhưng hiệu suất khá kém. Để có hiệu suất tốt hơn, bạn sẽ cần phần cứng cao cấp nghiêm túc - về cơ bản là RDMA. Điều quan trọng là độ trễ giữa tất cả các máy chủ và máy khách GlusterFS.
Mikko Rantalainen

Câu trả lời:


9

Tôi nghĩ rằng bạn sẽ phải từ bỏ yêu cầu POSIX, rất ít hệ thống thực hiện điều đó - thực tế ngay cả NFS cũng không thực sự (nghĩ rằng khóa, v.v.) và điều đó không có dự phòng.

Bất kỳ hệ thống nào sử dụng sao chép đồng bộ sẽ bị chậm về mặt băng; bất kỳ hệ thống nào có bản sao không đồng bộ (hoặc "tính nhất quán cuối cùng") sẽ vi phạm các quy tắc POSIX và không hoạt động như một hệ thống tệp "thông thường".


Bạn có biết bất kỳ hệ thống tập tin nào hỗ trợ cả tính nhất quán cuối cùng và tính nhất quán nghiêm ngặt, có lẽ nó có thể được điều chỉnh cho cả hai và tạo ra 2 mount?
CMCDragonkai

16

Tôi không thể nói với những người còn lại, nhưng bạn dường như bị nhầm lẫn giữa 'công cụ lưu trữ phân tán' và 'hệ thống tệp phân tán'. Chúng không giống nhau, chúng không nên bị nhầm lẫn với cùng một thứ, và chúng sẽ không bao giờ giống nhau. Hệ thống tập tin là một cách để theo dõi vị trí của mọi thứ trên ổ cứng. Một công cụ lưu trữ như hadoop là một cách để theo dõi một khối dữ liệu được xác định bởi một khóa. Về mặt khái niệm, không có nhiều khác biệt. Vấn đề là hệ thống tập tin là một sự phụ thuộc của công cụ lưu trữ ... sau tất cả, nó cần một cách để ghi vào một thiết bị khối, phải không?

Ngoài ra, tôi có thể nói đến việc sử dụng ocfs2 như một hệ thống tệp phân tán trong môi trường sản xuất. Nếu bạn không muốn các chi tiết nghiệt ngã, hãy ngừng đọc sau dòng này: Thật tuyệt, nhưng nó có thể có nghĩa là thời gian chết nhiều hơn bạn nghĩ.

Chúng tôi đã chạy ocfs2 trong một môi trường sản xuất trong vài năm qua. Không sao, nhưng nó không tuyệt vời cho nhiều ứng dụng. Bạn nên thực sự xem xét các yêu cầu của bạn và tìm ra chúng là gì - bạn có thể thấy rằng bạn có nhiều vĩ độ hơn cho các lỗi so với bạn nghĩ bạn đã làm.

Ví dụ, ocfs2 có một nhật ký cho mỗi máy trong cụm sẽ gắn kết phân vùng. Vì vậy, giả sử bạn đã có bốn máy web và khi bạn tạo phân vùng đó bằng mkfs.ocfs2, bạn xác định rằng sẽ có tổng cộng sáu máy để cung cấp cho bạn một số phòng để phát triển. Mỗi tạp chí đó chiếm không gian, làm giảm lượng dữ liệu bạn có thể lưu trữ trên các đĩa. Bây giờ, giả sử bạn cần mở rộng quy mô lên bảy máy. Trong tình huống đó, bạn cần phải gỡ xuống toàn bộcluster (nghĩa là ngắt kết nối tất cả các phân vùng ocfs2) và sử dụng tiện ích tunefs.ocfs2 để tạo một tạp chí bổ sung, miễn là có sẵn dung lượng. Sau đó và chỉ sau đó, bạn có thể thêm máy thứ bảy vào cụm (yêu cầu bạn phân phối tệp văn bản cho phần còn lại của cụm trừ khi bạn đang sử dụng tiện ích), đưa mọi thứ trở lại, sau đó gắn phân vùng trên cả bảy máy móc.

Hiểu ý tôi chứ? Nó được cho là có tính sẵn sàng cao, có nghĩa là 'luôn trực tuyến', nhưng ngay tại đó bạn đã có một loạt thời gian chết ... và thần cấm bạn đông đúc vì không gian đĩa. Bạn không muốn xem điều gì sẽ xảy ra khi bạn tập trung vào ocfs2.

Hãy nhớ rằng evms, trước đây là cách 'ưu tiên' để quản lý các cụm ocfs2, đã đi theo cách của loài chim dodo có lợi cho clvmd và lvm2. (Và câu đố tốt cho evms.) Ngoài ra, heartbeat sẽ nhanh chóng biến thành một dự án zombie có lợi cho stack openais / pacemaker. (Ngoài ra: Khi thực hiện cấu hình cụm ban đầu cho ocfs2, bạn có thể chỉ định 'pcmk' là công cụ cụm trái ngược với nhịp tim. Không, điều này không được ghi lại.)

Để biết giá trị của nó, chúng tôi đã quay trở lại nfs do máy điều hòa nhịp tim quản lý, bởi vì vài giây ngừng hoạt động hoặc một vài gói tcp bị rớt khi máy tạo nhịp tim di chuyển một phần nfs sang một máy khác là không đáng kể so với thời gian ngừng hoạt động mà chúng ta đang thấy chia sẻ hoạt động lưu trữ như thêm máy khi sử dụng ocfs2.


2
Chỉ muốn nhận xét rằng đây chính xác là trải nghiệm của tôi với OCFS2 / Pacemaker so với NFS. Sau khi thử OCFS2 như một kho lưu trữ dữ liệu trong một thời gian, tôi thấy nó rất thiếu. Trong khi đó hệ thống HA NFS của chúng tôi đã hoạt động như một cơ duyên.
Kamil Kisiel

1
OCFS2 chắc chắn không phải là những gì tôi đang xem xét. Bằng cách phân phối, tôi không có ý gì với một ví dụ lưu trữ trung tâm mà là thứ tôi có thể dễ dàng thêm / xóa các nút cung cấp lưu trữ trong khi vẫn theo kịp phần còn lại của "cụm"
dị

2
Vì tôi vẫn nhận được những đánh giá cao về câu trả lời này, tôi nên nói thêm rằng chúng tôi hiện đang sử dụng GlusterFS trong sản xuất để thay thế cho nfs. Tuy nhiên, chúng tôi KHÔNG lưu trữ hình ảnh đĩa VM, tệp lưu trữ cơ sở dữ liệu (sqlite hoặc myisam hoặc bất cứ thứ gì) hoặc các tệp khác có xu hướng thay đổi thường xuyên trên glusterfs vì nó gây ra lỗi sao chép. Những người chúng tôi lưu trữ cục bộ trên máy chủ VM trong LVM và sử dụng DRBD để phân phối đến các trang web chuyển đổi dự phòng hoặc sử dụng bản sao tích hợp.
Karl Katzke


3

Chỉ cần ném 0,02 € của tôi vào đây: OpenAFS không thể làm những gì bạn muốn?



3

Làm thế nào về Xtreemfs ? phiên bản 1.4 (tháng 11 năm 2012) được coi là Chất lượng sản xuất.

Nó tương thích POSIX và có khả năng chịu lỗi tự động vượt trội.


2

Luster cho phép lưu trữ nhiều siêu dữ liệu trong cấu hình hoạt động / thụ động để dự phòng, do đó không có điểm thất bại duy nhất.

OCFS2 cũng có thể đáng xem xét.

Lưu ý rằng việc cắt bỏ yêu cầu cho nhiều truy cập mạng đồng thời giúp có thể chuyển sang một cái gì đó như iSCSI hoặc thậm chí là cifs hoặc nfs. Nhược điểm là bạn phải 'khắc' các mảnh uberArray của mình thành các vết cắn cho mỗi máy chủ cần không gian.


2

Trừ khi đó là cho mục đích học tập / phát triển, loại điều này nên được tiếp cận bắt đầu với các yêu cầu chung cho dự án. Hầu hết các hệ thống tệp phân tán không đủ trưởng thành để triển khai nghiêm túc - ví dụ: bạn sẽ làm gì nếu toàn bộ sự việc xảy ra. Nếu đó là cho mục đích học tập / phát triển, thì đây thực sự là một điều tốt vì bạn có thể học được rất nhiều và sửa được rất nhiều lỗi.

Các câu hỏi bình luận cho dù bạn thực sự cần ngữ nghĩa POSIX là một khởi đầu tốt. Ngữ nghĩa "hệ thống tập tin" không phải POSIX có thể linh hoạt hơn rất nhiều, dẫn đến các hệ thống đáng tin cậy hơn nhiều.

Nếu đây là một ứng dụng cũ, tôi thực sự tự hỏi tại sao một hệ thống tệp phân tán hiện đại có thể được coi là giải pháp tốt nhất.

Đừng hiểu lầm tôi - đây là những đồ chơi thú vị đáng kinh ngạc. Tôi chỉ không muốn chịu trách nhiệm cho một giải pháp phụ thuộc lẫn nhau phức tạp không được sử dụng phổ biến và sẽ rất khó khắc phục khi nó bị bong ra.


1

Bạn có thực sự, hoàn toàn tích cực cần ngữ nghĩa POSIX? Cuộc sống sẽ dễ dàng hơn rất nhiều nếu bạn có thể sử dụng kho dữ liệu tùy chỉnh. Chúng tôi có một kho dữ liệu bằng văn bản nội bộ có hiệu quả là một kho lưu trữ khóa-giá trị phân tán rất lớn. Bạn lưu trữ một tệp trong đó và bạn nhận lại mã thông báo. Nếu bạn muốn trả lại tệp, hãy cung cấp mã thông báo mà bạn đã cung cấp trước đó. Nó được phân phối, được chia sẻ - không có gì, dữ liệu được sao chép ba lần, các nút có thể được thêm và xóa theo ý muốn, cả máy chủ lưu trữ và máy chủ điều khiển.


Thật không may, tôi thực sự cần ngữ nghĩa POSIX. Chúng tôi có rất nhiều "ứng dụng cũ" lưu trữ nội dung vào hệ thống tệp cục bộ. Viết lại tất cả những thứ đó chắc chắn nằm ngoài bất kỳ ngân sách nào
dị

Tôi nghi ngờ bạn sẽ phải từ bỏ một số yêu cầu khác của bạn. Tôi sẽ xem xét GlusterFS, Luster, OCFS2, GFS, nhưng tôi nghi ngờ bạn sẽ tìm thấy một cái không có chung.
David Pashley

vi.wikipedia.org/wiki/ Danh sách các hệ thống tệp phân tán, nhưng rất ít trong số chúng là POSIX.
David Pashley

Trước đây, tôi đã từng sử dụng một biến thể của AFS (ngày nay là OpenAFS). Nó hoạt động nhưng rất phức tạp và có bộ quirks riêng.
Jauder Ho

1

Luster cũng có một điểm thất bại duy nhất vì nó sử dụng máy chủ siêu dữ liệu chuyên dụng

Luster được thiết kế để hỗ trợ chuyển đổi dự phòng và MDS / MDT / OSS có thể có một số địa chỉ có thể liên hệ tại đó, nhịp tim có thể được sử dụng để di chuyển dịch vụ xung quanh.

Xin lưu ý rằng một số phiên bản gần đây đã có vấn đề trong đó bộ đếm không hoạt động nhưng vẫn có dữ liệu trên đĩa, tuy nhiên việc bảo vệ gắn đôi nên có ích (ngoài các vấn đề thú vị đã có) ....


1

Tôi khuyên bạn nên sử dụng MooseFS (Hệ thống tệp phân tán lỗi, mở rộng, hệ thống tệp phân tán mạng). Đó là tuân thủ POSIX và kể từ phiên bản 1.6 MooseFS cung cấp một xác thực / ủy quyền đơn giản, giống như NFS. Xem thêm yêu cầu phần cứng .

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.