Chào các bạn, hẳn nói về lưu trữ dữ liệu thì các bạn có thể thấy rằng hằng ngày chúng ta giữ những tài liệu, các bài hát, hình ảnh, video có thể là trên điện thoại, máy tính hay cho vào trong USB chẳng hạn,… Và khi làm những việc như vậy, bạn thật sự đã lưu những tập tin đó vào một bộ nhớ vật lý có trên máy tính (HDD hay SSD của bạn), điện thoại (bộ nhớ trong của điện thoại hay thẻ nhớ gắn ngoài), hoặc là USB (vào chip nhớ Flash).
Nhưng sẽ có một lúc nào đó, đơn thuần chẳng hạn như bạn có một tập tin thật sự lớn mà 1 trong các thiết bị trên không thể nào lưu trữ hết. Ví dụ như bạn có hai chiếc máy tính với dung lượng mỗi ổ cứng trên mỗi máy là 500GB, vậy làm sao để lưu trữ một tập tin có kích thước 700GB? Trong khi đó bạn không được can thiệp đến phần cứng của máy để lắp 2 ổ cứng vào một máy tính thôi?
Có nhiều vấn đề có thể xảy ra nữa nhưng mình sẽ nói đến sau, và để giải quyết những vấn đề đó, hôm nay mình xin giới thiệu với các bạn về một dạng lưu trữ dữ liệu mới với GlusterFS (GlusterFS là một clustered file-system).
I. Các thành phần cấu hình nên hệ thống lưu trữ GlusterFS:
- Node: Các máy chủ vật lý hoặc máy chủ ảo (Virtual Private Server) được cài đặt GlusterFS
- Brick: Trong tiếng Việt Brick có nghĩa là viên gạch, bác bạn có thể hiểu để xây nên một cái nhà, cần những viên gạch để ghép lại gắn kết bằng xi măng. Thì Brick trong GlusterFS cũng vậy, là một đơn vị lưu trữ cơ bản, bản chất nó là một thư mục được Export ra từ một máy chủ nào đó.
Ví dụ đây là một Brick: server1.vngeek.com:/folder/brick/
Các bạn có thể hiểu server1.vngeek.com chính là máy chủ được cài đặt GlusterFS, và thư mục lưu trữ là /folder/brick/. Sau này hệ thống GlusterFS sẽ lưu trữ những tập tin tại thư mục này trên server này khi nó tham gia vào hệ thống. ( nghe cứ như đa cấp ý nhỉ). - Volume: Gộp các Brick lại, bằng một cách nào đó theo bạn muốn (Giống như Raid trên các ổ cứng). Volume đóng vai trò quản lý các Brick được thêm vào nó. Và tất nhiên sau này bạn sẽ làm việc với Volume, bạn có thể coi nó là thư mục đích để lưu trữ dữ liệu vào đó.
- Client: Client là máy khách, các máy tính kết nối với hệ thống GlusterFS và thực hiện lưu trữ hoặc truy cập đến dữ liệu của GlusterFS. Khi bạn mount một Volume nào đó, thì bạn là một Client rồi đó.
II. Các dạng Volume của GlusterFS
Bạn có thể tạo 9 loại Volume trong GlusterFS
- Distributed
Trong trường hợp này bạn có 3 tập tin File 1, File 2 và File 3, các tập tin sẽ được lưu trữ ngẫu nhiên trên mỗi Brick của mỗi Server. Ưu điểm của phương pháp này đó là giúp chia sẻ dung lượng lưu trữ của cả 2 server, và mỗi máy chủ sẽ chứa hoàn toàn mỗi tập tin mà nó có nhiệm vụ lưu trữ. Mọi sự cố xảy ra trên một server nào đó sẽ không ảnh hưởng đến các tập tin còn lại được lưu trữ trên server khác, chẳng hạn như server2 bị lỗi, thì chỉ có File 3 là không truy cập được thôi, còn File 1 và File 2 vẫn bình thường. - Replicated Volumes
Replicated Volumes lưu trữ các tập tin trên các Brick của mỗi server giống nhau. Vì có 2 server nên mỗi tập tin sẽ được sao chép thành 2 bản. Tương tự có 3 hay 4 server thì sẽ được sao chép tương ứng với số lượng server. Phương pháp này đảm bảo an toàn dữ liệu, giúp cho hệ thống lưu trữ có độ tin cậy cao và sẵn sàng. - Striped Volumes
Nhìn vào hình ảnh trên bạn có thể thấy, Tập tin cần lưu trữ được chia nhỏ thành nhiều phần, và mỗi phần nhỏ được lưu lần lượt trên các server tham gia vào hệ thống. Không có sự trùng lặp nào. Hầu hết được sử dụng trong trường hợp lưu trữ một tập tin lớn và cần sự truy xuất dữ liệu nhanh.
Nhược điểm: Server nào bị lỗi thì coi như tập tin đó không truy cập được nữa. - Distributed Striped Volumes
Nhìn vào hình trên bạn có thể thấy File 1 được chia nhỏ (Strip) và lưu trữ lần lượt trên mỗi Brick thuộc Server 1. Tương tự File 2 được chia nhỏ và lưu trữ lần lượt trên mỗi Brick thuộc server 2. File 1 và File 2 được lưu trữ phân tán trên 2 server. Phương pháp sử dụng cho các tập tin lớn được lưu trữ đồng thời trong hệ thống. Tận dụng được tiềm lực lưu trữ tối đa của mỗi máy chủ tham gia. Nhưng với mỗi Brick hỏng nó sẽ ảnh hưởng đến chính tập tin đã được Striped lưu trữ trên chính server đó. - Distributed Replicated Volumes
Các tập tin được lưu trữ phân tán, trên mỗi Volume Replicated chính bản thân tập tin lại được sao lưu trên các Brick của Volume Replicated. Mô hình trên sử dụng cho các tập tin quan trọng và cần hệ thống để có thể mở rộng lưu trữ dễ dàng, giúp truy xuất nhanh chóng đến các tập tin. - Striped Replicated Volumes
Nếu không chú ý kỹ, bạn có thể nhầm lẫn giữa các loại Volume trong GlusterFS. Đối với Striped Replicated Volumes. Tập tin lưu trữ thường rất lớn, nó vừa được chia nhỏ rải rác trên các Brick, đồng thời được sao lưu với mỗi phần được chia nhỏ. Điều này đảm bảo an toàn để lưu trữ tập tin có khối lượng lớn cũng như tốc độ truy xuất đến tập tin. - Dispersed Volumes
Tập tin được chia nhỏ thành nhiều phần và được mã hóa.
- Distributed Dispersed Volumes
Các tập tin được chia nhỏ và các tập tin khác nhau được lưu trữ phân tán trên mỗi Volume Disperse.
Đó là 9 kiểu Volume mà bạn có thể cấu hình để sử dụng với GlusterFS.
III. Tại sao chúng ta dùng GlusterFS?
GlusterFS có rất nhiều ưu điểm so với các dạng hệ thống file server khác.
- Không có Metadata Server: Khi Client truy xuất dữ liệu không cần đến Metadata Server cho nên sẽ giảm được độ trễ, cũng như sự cố xảy ra với Metadata Server, vì có đâu mà hỏng.
- Thêm một node khác vào Storage Pool trong GlusterFS rất dễ dàng, cho nên khả năng và tùy biến rất linh hoạt
- Tính sẵn sáng và an toàn cao
- Mã nguồn mở: GlusterFS là một mã nguồn mở, cho nên bạn sẽ được sử dụng miễn phí không tốn thêm chi phí nào, bạn cũng có thể nhận được sự hỗ trợ từ cộng đồng.
Chúc các bạn một ngày vui vẻ!