1. Trang chủ
  2. » Giáo Dục - Đào Tạo

TÌM HIỂU VỀ HỆ THỐNG FILE (Google File System) Giới thiệu, kiến trúc, các thành phần, cơ chế hoạt động, cài đặt, ưu và nhược điểm

19 13 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG (PTIT) BÁO CÁO BÀI TẬP LỚN Môn học ”Hệ điều hành” Chủ đề TÌM HIỂU VỀ HỆ THỐNG FILE (Google File System) Giới thiệu, kiến trúc, các thành phần, cơ chế hoạt động, cài đặt, ưu và nhược điểm Nhóm 7 Giảng viên: Hoàng Xuân Dậu Trần Đức Nguyên Nguyễn Quang Phúc Trần Đức Quân Vũ Hồng Quân Mục lục I Giới thiệu: .3 II Nội dung: .4 1 Kiến trúc: 4 1.1 Máy chủ master: .4 1.2 Chunk server (máy chủ chunk): 5 1.3 Clients Machines: .6 2 Các thành phần: 7 2.1 Giao diện (Interface): .7 2.2 Chunk files: 7 2.3 Siêu dữ liệu (metadata): 8 3 Cơ chế hoạt động 9 3.1 Lease và Mutation .9 3.2 Interfaces 10 3.3 Replication Placement: 12 3.4 Quản lý namespace và locking 12 3.5 Fault Tolerance 12 3.6 Garbage Collection 14 4 Cài đặt 14 4.1 Chuẩn bị máy chủ và hệ điều hành 14 4.2 Tải và cài đặt GFS 15 4.3 Cấu hình GFS 15 4.4 Khởi động dịch vụ 15 4.5 Kiểm tra và giám sát 15 5 Ưu và nhược điểm .16 5.1 Ưu điểm 16 5.2 Nhược điểm 16 III Kết luận: 18 IV Tài liệu tham khảo: 19 2 I Giới thiệu: Google File System (GFS) là một hệ thống mở rộng phân phối tập tin (DFS) tạo ra bởi Google Inc và phát triển để phù hợp với dữ liệu mở rộng của Google yêu cầu chế biến GFS cung cấp khả năng chịu lỗi, độ tin cậy, khả năng mở rộng, tính sẵn có và hiệu suất với các mạng lớn và các nút được kết nối GFS được tạo thành từ nhiều hệ thống lưu trữ được xây dựng từ các thành phần phần cứng hàng hóa giá rẻ Nó được tối ưu hóa để chứa dữ liệu sử dụng và lưu trữ nhu cầu khác nhau của Google, chẳng hạn như công cụ tìm kiếm của nó, mà tạo ra một lượng lớn dữ liệu phải được lưu trữ Có thể nói GFS là xương sống cho hầu hết mọi dịch vụ mà Google cung cấp hiện nay Hệ thống cơ sở dữ liệu người dùng đồ sộ, các dịch vụ điện toán đám mây và lượng dữ liệu khổng lồ phục vụ việc tìm kiếm, tất cả đều được quản lý dựa trên GFS Ví dụ như các dịch vụ lưu trữ như Drive, Mail, Google Photos, … và còn vô số dịch vụ khác đều được dựa trên nền tảng GFS Tuy rằng GFS là một sản phẩm không được công bố ra cộng đồng, chỉ được độc quyền và duy nhất Google sử dụng nhưng nhờ có sự chia sẻ của kỹ sư trưởng dự án mà trong bài báo cáo này sẽ tìm hiểu về kiến trúc, các thành phần, cách thức hoạt động cũng như ưu nhược điểm của hệ thống GFS Dựa vào điều gì mà hệ thống GFS trở lên to lớn vĩ đại và có thể chứa được hàng trăm, hàng nghìn, hàng tỷ dữ liệu nhưng vẫn ổn định và luôn sẵn sàng mở rộng Trước khi đến với nội dung chính một thông tin cần biết về phiên bản mới nhất hiện nay của GFS có tên chính thức là Colossus 3 II Nội dung: 1 Kiến trúc: Hình 1: Kiến trúc của GFS Một cụm GFS bao gồm một máy chủ master duy nhất và nhiều máy chủ chunk, và được truy cập bởi nhiều khách hàng, như được thể hiện trong Hình 1 Mỗi thành phần này thường là một máy tính Linux thông thường chạy một quy trình máy chủ ở mức người dùng Việc chạy cả máy chủ chunk và khách hàng trên cùng một máy tính rất dễ dàng, miễn là tài nguyên máy tính cho phép và sự không đáng tin cậy hơn do việc chạy mã ứng dụng có thể gây ra không quá đáng kể 1.1 Máy chủ master: Việc có một máy chủ master duy nhất đáng kể đơn giản hóa thiết kế của GFS và cho phép máy chủ master thực hiện việc định vị chunk và quyết định nhân bản chunk phức tạp bằng cách sử dụng kiến thức toàn cầu Tuy nhiên, các nhà phát triển phải giới hạn sự tham gia của máy chủ master trong việc đọc và ghi để tránh trở thành điểm hẹp Khách hàng không bao giờ đọc và ghi dữ liệu tệp qua máy chủ này Thay vào đó, khách hàng yêu cầu máy chủ master xác định các máy chủ chunk mà nó nên liên hệ Khách hàng lưu cache thông tin này trong một khoảng thời gian giới hạn và tương tác trực tiếp với các máy chủ chunk cho nhiều hoạt động tiếp theo 4 Để giải thích quá trình tương tác cho một hoạt động đọc một cách đơn giản với tham chiếu ở Hình 1 Đầu tiên, sử dụng kích thước chunk cố định, khách hàng chuyển đổi tên tệp và vị trí byte được chỉ định bởi ứng dụng thành một chỉ số chunk trong tệp Sau đó, nó gửi yêu cầu chứa tên tệp và chỉ số chunk tới máy chủ master Máy chủ master trả lời với chunk handle tương ứng và vị trí của các bản sao Khách hàng lưu cache thông tin này bằng cách sử dụng tên tệp và chỉ số chunk làm khóa Khách hàng sau đó gửi yêu cầu tới một trong các bản sao, có thể là bản sao gần nhất Yêu cầu chỉ định chunk handle và phạm vi byte trong chunk đó Việc đọc tiếp theo của cùng một chunk không đòi hỏi thêm tương tác giữa khách hàng và máy chủ master cho đến khi thông tin cache hết hạn hoặc tệp được mở lại Thực tế, khách hàng thường yêu cầu nhiều chunk trong cùng một yêu cầu và máy chủ này cũng có thể bao gồm thông tin cho các chunk ngay sau các chunk được yêu cầu Thông tin bổ sung này giúp tránh một số tương tác khách hàng-master trong tương lai mà gần như không tốn thêm chi phí 1.2 Chunk server (máy chủ chunk): Chunk server là một phần quan trọng trong hệ thống GFS (Google File System), đóng vai trò lưu trữ và quản lý các chunk (phân đoạn) của dữ liệu Trong GFS, một tệp lớn được chia thành nhiều chunk nhỏ hơn, mỗi chunk có kích thước cố định Chunk server chịu trách nhiệm lưu trữ và cung cấp dữ liệu cho các chunk này Các tệp được chia thành các chunk có kích thước cố định Mỗi chunk được xác định bằng một chuỗi 64 bit duy nhất và không thể thay đổi được gọi là "chunk handle" được máy chủ master gán cho chunk khi chunk được tạo Các máy chủ chunk lưu trữ các chunk trên đĩa cục bộ dưới dạng các tệp Linux và đọc hoặc ghi dữ liệu chunk được chỉ định bằng chunk handle và phạm vi byte Để đảm bảo tính tin cậy, mỗi chunk được nhân bản trên nhiều máy chủ chunk Một hoạt động quan trọng của chunk server là việc cấp phát, ghi và đọc dữ liệu Khi một client muốn ghi dữ liệu vào GFS, nó trực tiếp giao tiếp với chunk server để thực hiện việc ghi dữ liệu vào chunk tương ứng Tương tự, khi client muốn đọc dữ liệu, nó liên hệ trực tiếp với chunk server để nhận dữ liệu từ chunk tương ứng 5 Một tính năng quan trọng của chunk server là khả năng xử lý và phục hồi lỗi GFS sử dụng các bản sao dữ liệu (replicas) để đảm bảo sự an toàn và sẵn sàng của dữ liệu Mỗi chunk được nhân bản thành nhiều bản sao và phân bố trên các chunk server khác nhau Khi một chunk server gặp sự cố, các bản sao trên các chunk server khác có thể được sử dụng để phục hồi dữ liệu và duy trì tính sẵn sàng của hệ thống Ngoài ra, chunk server cũng thực hiện các hoạt động quản lý như cập nhật thông tin metadata về chunk, báo cáo trạng thái và sức khỏe cho master server, và thực hiện các thao tác như sao chép, di chuyển hoặc xóa chunk theo yêu cầu của master server Với việc sử dụng nhiều chunk servers, GFS đạt được khả năng mở rộng lớn hơn, khả năng chịu lỗi và khả năng xử lý dữ liệu đồng nhất song song Chunk server đóng vai trò quan trọng trong việc tạo ra một hệ thống tệp tin phân tán mạnh mẽ và tin cậy 1.3 Clients Machines: Clients Machines là các máy tính khách sử dụng dịch vụ của GFS để truy cập, đọc và ghi dữ liệu từ GFS Chúng làm nhiệm vụ tương tác với hệ thống tệp GFS và gửi yêu cầu đến các máy chủ chunk (chunk servers) để truy xuất dữ liệu Đầu tiên, hoạt động quan trọng đó là giao tiếp với máy chủ chunk Client machines gửi yêu cầu đến các máy chủ chunk để truy xuất dữ liệu Khi có yêu cầu đọc, client machines gửi yêu cầu đến máy chủ chunk chứa phân đoạn tương ứng và nhận dữ liệu trả về Khi có yêu cầu ghi, client machines gửi yêu cầu đến máy chủ chunk để cập nhật dữ liệu trong phân đoạn Một tính năng khác đó là quản lý bộ nhớ cache Client machines duy trì một bộ nhớ cache (memory cache) để lưu trữ các phân đoạn dữ liệu đã được truy xuất gần đây Việc lưu trữ dữ liệu trong bộ nhớ cache giúp giảm thời gian truy xuất dữ liệu khi có yêu cầu đọc tiếp theo cùng từ phân đoạn đó Tiếp theo, Clients machines được trang bị thêm chức năng xử lý đồng thời đa tác vụ Client machines có khả năng xử lý đồng thời nhiều yêu cầu từ nhiều người dùng khác nhau Điều này cho phép nhiều yêu cầu đọc/ghi được xử lý song song trên các máy chủ chunk khác nhau, tăng hiệu suất và khả năng mở rộng của hệ thống Cuối cùng một chức năng không thể thiếu chúng có thể linh hoạt xử lý lỗi và khôi phục dữ liệu Client machines có khả năng xử lý lỗi và khôi phục dữ liệu trong trường hợp xảy ra sự cố Khi một máy chủ chunk gặp sự cố, client machines có thể yêu cầu dữ liệu từ các máy chủ chunk khác để đảm bảo tính sẵn sàng và nhất quán của dữ liệu 6 2 Các thành phần: 2.1 Giao diện (Interface): GFS cung cấp một giao diện hệ thống tệp tin quen thuộc, mặc dù nó không thực hiện một API tiêu chuẩn như POSIX Các tệp tin được tổ chức theo cấu trúc cây thư mục và được xác định bằng các tên đường dẫn GFS hỗ trợ các hoạt động thông thường để tạo, xóa, mở, đóng, đọc và ghi tệp tin Hơn nữa, GFS cung cấp các hoạt động snapshot và record append Snapshot tạo ra một bản sao của một tệp tin hoặc cây thư mục với chi phí thấp Record append cho phép nhiều khách hàng cùng ghi thêm dữ liệu vào cùng một tệp tin một cách đồng thời, đồng thời đảm bảo tính nguyên tử của mỗi ghi thêm của từng khách hàng Điều này rất hữu ích để thực hiện việc kết hợp đa hướng và hàng đợi sản xuất-tiêu thụ mà nhiều khách hàng có thể ghi thêm dữ liệu vào mà không cần khóa mục bổ sung GFS thấy rằng các loại tệp tin này rất quan trọng trong việc xây dựng các ứng dụng phân tán lớn 2.2 Chunk files: GFS phân chia mỗi file thành các đơn vị nhỏ hơn được gọi là file chunk Mỗi file chunk có kích thước cố định (thường là 64 MB) Các file chunk được lưu trữ và quản lý bởi worker servers Phân chia dữ liệu thành các chunk cho phép GFS xử lý dữ liệu lớn một cách hiệu quả và tăng khả năng mở rộng của hệ thống 2.2.1 Kích thước của chunk: Kích thước của các chunk là một trong những tham số thiết kế quan trọng Nhà phát triển đã chọn kích thước là 64MB, lớn hơn nhiều so với kích thước khối thông thường của hệ thống tệp tin Mỗi bản sao chunk được lưu trữ dưới dạng một tệp Linux thuần túy trên một máy chủ chunk và chỉ mở rộng khi cần thiết Phương pháp cấp phát không gian lười biếng (lazy space allocation) giúp tránh lãng phí không gian do sự tách rời nội bộ, có thể là một trong những đối tác đáng kể nhất đối với kích thước chunk lớn như vậy Kích thước chunk lớn mang lại một số lợi ích quan trọng Thứ nhất, nó giảm nhu cầu tương tác của khách hàng với master vì việc đọc và ghi trên cùng một chunk chỉ đòi hỏi một yêu cầu ban đầu tới master để lấy thông tin vị trí của chunk Sự giảm này đặc biệt quan trọng đối với khối lượng công việc của GFS vì các ứng dụng chủ yếu đọc và ghi các tệp tin lớn theo trình tự Ngay cả đối với việc đọc ngẫu nhiên nhỏ, khách hàng có thể dễ dàng lưu cache thông tin vị trí chunk cho một tập dữ liệu làm việc đa TB Thứ hai, vì trên một chunk lớn, khách hàng có khả năng thực hiện nhiều hoạt động trên một chunk cụ thể, nên nó có thể giảm tải mạng bằng cách duy trì một kết nối TCP liên tục với máy chủ chunk trong một khoảng thời gian kéo dài Thứ ba, nó giảm kích thước của siêu dữ liệu (metadata) được lưu trữ trên master Điều này cho phép GFS giữ siêu dữ liệu trong bộ nhớ, từ đó mang lại những lợi ích khác Tuy nhiên, kích thước chunk lớn, ngay cả với phương pháp cấp phát không gian lười biếng, cũng có nhược điểm của nó Một tệp tin nhỏ bao gồm một số chunk nhỏ, có thể 7 chỉ là một chunk Các máy chủ chunk lưu trữ những chunk đó có thể trở thành điểm nóng nếu có nhiều khách hàng truy cập vào cùng một tệp tin Trong thực tế, điểm nóng không phải là vấn đề lớn vì các ứng dụng của GFS chủ yếu đọc các tệp tin lớn gồm nhiều chunk theo trình tự Tuy nhiên, điểm nóng đã xảy ra khi GFS được sử dụng lần đầu bởi hệ thống hàng đợi xử lý hàng loạt: một tệp thực thi được viết vào GFS dưới dạng một tệp tin chỉ có một chunk và sau đó được khởi động trên hàng trăm máy cùng một lúc Các máy chủ chunk lưu trữ tệp thực thi này đã bị quá tải bởi hàng trăm yêu cầu đồng thời Các nhà phát triển đã khắc phục vấn đề này bằng cách lưu trữ các tệp thực thi như vậy với một yếu tố nhân bản cao hơn và làm cho hệ thống hàng đợi xử lý hàng loạt khởi động các ứng dụng vào các thời điểm khác nhau Một giải pháp tiềm năng dài hạn là cho phép khách hàng đọc dữ liệu từ các khách hàng khác trong những tình huống như vậy 2.2.2 Vị trí của các chunk: Master không duy trì một bản ghi liên tục về các máy chủ chunk nào có bản sao của một chunk cụ thể Nó chỉ yêu cầu thông tin này từ các máy chủ chunk khi khởi động Master có thể cập nhật thông tin này sau đó bởi vì nó kiểm soát việc đặt chunk và giám sát trạng thái của các máy chủ chunk thông qua các tin nhắn HeartBeat định kỳ Ban đầu, GFS đã cố gắng duy trì thông tin vị trí chunk một cách liên tục trên master, nhưng các nhà phát triển quyết định rằng việc yêu cầu dữ liệu này từ các máy chủ chunk khi khởi động và định kỳ sau đó đơn giản hơn nhiều Điều này loại bỏ vấn đề của việc đồng bộ master và các máy chủ chunk khi các máy chủ chunk tham gia và rời khỏi cụm, thay đổi tên, gặp sự cố, khởi động lại và các sự kiện tương tự Trong một cụm máy chủ với hàng trăm máy chủ, những sự kiện này xảy ra quá thường xuyên Một cách khác để hiểu quyết định thiết kế này là nhận ra rằng một máy chủ chunk có quyền cuối cùng quyết định xem nó có hoặc không có các chunk trên đĩa của mình Không có ý nghĩa gì trong việc cố gắng duy trì một cái nhìn nhất quán về thông tin này trên masstel vì lỗi trên máy chủ chunk có thể làm cho các chunk biến mất một cách tự phát (ví dụ: ổ đĩa có thể hỏng và bị tắt) hoặc một nhà điều hành có thể đổi tên một máy chủ chunk 2.3 Siêu dữ liệu (metadata): Metadata là thông tin quản lý về các file và dữ liệu trong GFS Nó bao gồm các thuộc tính của file (như tên, kích thước, thời gian tạo và quyền truy cập) cũng như vị trí của các replicas và các thông tin khác liên quan đến quản lý dữ liệu 2.3.1 Cấu trúc dữ liệu trong bộ nhớ: Vì siêu dữ liệu được lưu trữ trong bộ nhớ, các hoạt động của master được thực hiện nhanh chóng Hơn nữa, việc quét định kỳ toàn bộ trạng thái của master trong nền rất dễ dàng và hiệu quả Việc quét định kỳ này được sử dụng để thực hiện việc thu gom rác 8 chunk, sao chép lại chunk khi máy chủ chunk gặp sự cố, và di chuyển chunk để cân bằng tải và sử dụng không gian đĩa trên các máy chủ chunk Một vấn đề tiềm năng cho phương pháp chỉ sử dụng bộ nhớ này là số lượng chunk và do đó dung lượng của toàn hệ thống bị giới hạn bởi bộ nhớ của master Tuy nhiên, điều này không phải là một hạn chế quan trọng trong thực tế Master duy trì ít hơn 64 byte siêu dữ liệu cho mỗi chunk 64 MB Hầu hết các chunk đều đầy vì hầu hết các tệp tin chứa nhiều chunk, chỉ có chunk cuối cùng có thể bị lấp đầy một phần Tương tự, dữ liệu không gian tên tệp tin thường chỉ yêu cầu ít hơn 64 byte cho mỗi tệp tin vì nó lưu trữ tên tệp tin một cách gọn gàng bằng cách sử dụng nén tiền tố 2.3.2 Cấu trúc dữ liệu trong nhật ký hoạt động Bản ghi hoạt động chứa một lịch sử các thay đổi quan trọng về siêu dữ liệu Nó là trung tâm của GFS Không chỉ là một bản ghi cố định duy nhất về siêu dữ liệu, nó còn đóng vai trò như một dòng thời gian logic xác định thứ tự các hoạt động đồng thời Các tệp tin và chunk, cũng như các phiên bản của chúng, đều được định danh duy nhất và vĩnh viễn bằng các thời gian logic khi chúng được tạo ra Vì bản ghi hoạt động là rất quan trọng, chúng ta phải lưu trữ nó một cách đáng tin cậy và không làm cho các thay đổi trở nên hiển thị cho khách hàng cho đến khi các thay đổi về siêu dữ liệu trở nên cố định Nếu không, chúng ta sẽ mất hệ thống tệp tin hoàn toàn hoặc các hoạt động gần đây của khách hàng ngay cả khi các chunk tồn tại Do đó, chúng ta sao chép nó trên nhiều máy từ xa và phản hồi cho một hoạt động của khách hàng chỉ sau khi xả bỏ bản ghi nhật ký tương ứng vào đĩa cục bộ và từ xa Master sẽ gom nhóm một số bản ghi nhật ký lại trước khi xả bỏ, từ đó giảm ảnh hưởng của việc xả bỏ và sao chép đến hiệu suất tổng thể của hệ thống 3 Cơ chế hoạt động Sau khi đã biết được các thành phần cũng như kiến của của Google System File ta cũng tìm hiểu cách thức hoạt động, các cơ chế hoạt động, bảo toàn, lưu trữ dữ liệu bên trong GFS 3.1 Lease và Mutation Hai thao tác này kết hợp với nhau nhằm đảm bảo cho dữ liệu bên trong GFS luôn được an toàn và truy xuất một cách nhanh chóng 3.1.1 Mutation Cơ chế mutation thay đổi nội dung file hoặc metadata của một chunk như phương thức write hoặc append record Các mutations sẽ được thực hiện cả trên các bản sao của chunks 3.1.2 Leases 9 Leases được thiết kế nhằm giảm sự tham gia của master vào các thao tác trên file Master sẽ chọn một trong các replica và replica đó trở thành primary replica Primary replica thay thế master tương tác với client khi client yêu cầu tương tác Do đó GFS sử dụng leases duy trì thứ tự đột biến nhất quán trên tất cả replica 3.2 Interfaces Phía trên đã giới thiệu sơ qua về các interface trong GFS giờ đi sâu hơn vào 2 interface tiêu biểu cung cấp phương thức Read và Write Ngoài ra GFS được đặc biệt tích hợp thêm 2 cơ chế là Snapshot và Record Append 3.2.1 Read Hình 2: Trình tự phương thức Read Phương thức Read thực hiện được thực hiện khi ứng dụng tạo một yêu cầu đọc và gửi nó đến GFS client GFS client phiên dịch yêu cầu và gửi nó đến Master Master phản hồi bằng cách cung cấp mã xử lý chunk (chunk handle) và vị trí của một bản sao chunk cho GFS client Sau đó, GFS client sử dụng mã xử lý chunk và thông tin vị trí này để gửi yêu cầu đến chunk server Chunk server tiến hành gửi dữ liệu đến cho GFS client, và cuối cùng, GFS client chuyển dữ liệu này đến ứng dụng của mình 3.2.2 Write Hình 3: Trình tự của phương thức Write Phương thức Write trong GFS bao gồm các bước sau: Ứng dụng tạo một yêu cầu write và gửi nó đến GFS client GFS client dịch yêu cầu và gửi nó đến master Master phản hồi bằng cách cung cấp mã xử lý chunk (chunk handle) và vị trí của tất cả các bản sao chunk cho GFS client Sau đó, client chuyển dữ liệu cần được ghi đến tất cả các chunk server chứa các bản sao Dữ liệu này được lưu trữ trong bộ đệm nội bộ (internal buffer) của các chunk server Tiếp theo, client gửi yêu cầu ghi dữ liệu đến primary replica 10 Primary replica tiến hành chọn ra thứ tự tuần tự của các khối dữ liệu trong bộ đệm của nó và ghi chúng vào chunk theo thứ tự đó Sau khi ghi xong, primary replica gửi thứ tự này cho các secondary replica và yêu cầu chúng thực hiện thao tác ghi theo thứ tự đã được nhận 3.2.3 Snapshot Snapshot tạo ra một bản sao của một tệp tin hoặc cây thư mục (gọi là "nguồn") gần như ngay lập tức, đồng thời giảm thiểu bất kỳ gián đoạn nào của các thay đổi đang diễn ra Người dùng của GFS sử dụng nó để nhanh chóng tạo ra bản sao của các tập dữ liệu lớn (và thường là các bản sao của các bản sao đó, đệ quy), hoặc để tạo điểm kiểm tra trạng thái hiện tại trước khi thử nghiệm các thay đổi có thể được thực hiện hoặc hoàn tác một cách dễ dàng sau này Tương tự như AFS, GFS sử dụng các kỹ thuật sao chép trên yêu cầu (copy-on- write) tiêu chuẩn để thực hiện các bản sao Khi Master nhận được yêu cầu Snapshot, trước tiên nó thu hồi bất kỳ lease nào còn tồn tại trên các chunk trong các tệp tin sẽ được tạo Snapshot Điều này đảm bảo rằng bất kỳ ghi thêm nào sau này vào các chunk này sẽ yêu cầu tương tác với master để tìm chủ sở hữu lease Điều này sẽ cho phép master có cơ hội tạo một bản sao mới của chunk trước tiên Sau khi các lease đã được thu hồi hoặc hết hạn, Master ghi lại hoạt động này vào đĩa cục bộ Sau đó, nó áp dụng bản ghi nhật ký này vào trạng thái trong bộ nhớ bằng cách nhân bản (metadata)siêu dữ liệu cho tệp tin hoặc cây thư mục nguồn Các tệp Snapshot mới được tạo chỉ trỏ đến các chunk giống như các tệp tin nguồn 3.2.4 Atomic Record Appends GFS cung cấp một hoạt động ghi nối gắn phần tử được gọi là "record append" Trong quá trình ghi thông thường, client chỉ định vị trí mà dữ liệu sẽ được ghi Việc ghi đồng thời vào cùng một vùng không tuân thủ tính tuần tự: vùng có thể chứa các đoạn dữ liệu từ nhiều clients khác nhau Tuy nhiên, trong record append, client chỉ định dữ liệu GFS nối dữ liệu vào tệp tin ít nhất một lần theo cách nguyên tử (tức là một chuỗi liên tục các byte) tại một vị trí do GFS lựa chọn và trả lại vị trí đó cho client Record append được sử dụng rất nhiều bởi các ứng dụng phân tán của GFS, trong đó nhiều clients trên các máy khác nhau ghi nối vào cùng một tệp tin đồng thời Trong lượng công việc của GFS, các tệp tin như vậy thường được sử dụng như hàng đợi sản xuất/nhận dữ liệu từ nhiều nguồn khác nhau hoặc chứa kết quả hợp nhất từ nhiều khách hàng khác nhau 11 3.3 Replication Placement: Một cụm GFS được phân tán rất rộng ở nhiều mức độ khác nhau Thông thường, nó có hàng trăm chunk servers phân tán trên nhiều rãnh của máy (machine racks) Những chunk server này có thể được truy cập từ hàng trăm client từ cùng một hay nhiều racks khác nhau Giao tiếp giữa hai máy trên các racks khác nhau có thể đi qua một hoặc nhiều switch mạng Ngoài ra, băng thông vào hoặc ra khỏi một rack có thể nhỏ hơn tổng băng thông của tất cả các máy trong khối đó Phân tán đa cấp đặt ra thách thức trong việc phân phối dữ liệu để mở rộng, tăng tính sẵn sàng và khả năng sẵn có Cơ chế Replication Placement hoạt động với 2 mục đích chính nhằm tối đa hóa độ tin cậy và tính khả dụng của dữ liệu, đồng thời tối đa hóa việc sử dụng băng thông mạng Tuy nhiên điều đó là không đủ khi chỉ bảo vệ dữ liệu khi đĩa hoặc máy bị hỏng hoặc băng thông đã bị sử dụng hết Cơ chế cũng hỗ trợ trải rộng những bản sao của chunk khắp các rack (tập hợp các chunkserver) Điều này nhằm đảm bảo một số bản sao của chunk sẽ tồn tại và có sẵn ngay cả khi toàn bộ các rack gặp sự cố hoặc ngoại tuyến 3.4 Quản lý namespace và locking Các thao tác của Master thường chiếm rất nhiều thời gian Nhằm giúp cho các thao tác của Master được diễn ra nhanh chóng, đông thời không trì hoãn lẫn nhau GFS cho phép nhiều thao tác diễn ra đồng thời và sử dụng các locks trên các vùng của namespace nhằm đảm bảo tuần tự hóa Không giống như nhiều hệ thống tập tin truyền thống, GFS không có cấu trúc per- directory mà mỗi thư mục liệt kê tất cả các tệp tin trong thư mục đó Nó cũng không hỗ trợ các bí danh cho cùng một tập tin hoặc thư mục GFS biểu diễn một cách logic namespace của nó dưới dạng ánh xạ bảng tra cứu với tên đường dẫn đầy đủ đến siêu dữ liệu Với tính năng nén tiền tố, bảng tra cứu này có thể được biểu diễn một cách hiệu quả trong bộ nhớ Mỗi nút trong cây namespace đều có read-write lock tương ứng Mỗi một thao tác của Master đều yêu cầu một chuỗi lock trước khi nó được khởi chạy Thông thường, nếu nó liên quan đến /d1/d2/ /dn/leaf, nó sẽ lấy khóa đọc trên tên thư mục /d1, /d1/d2, , /d1/d2/ /dn, và read lock hoặc write lock trên tên đường dẫn đầy đủ /d1/d2/ /dn/leaf Lưu ý rằng leaf có thể là một tập tin hoặc thư mục tùy thuộc vào thao tác 3.5 Fault Tolerance 3.5.1 High availability (Khả năng sẵn sàng cao) Trong số hàng trăm máy chủ trong cụm GFS, một số máy chủ có thể sẽ không sẵn sàng trong một vài thời điểm tuy nhiên toàn bộ hệ thống sẽ luôn ở mức sẵn sàng cao nhất khi được áp dụng 2 kỹ thuật đơn giản nhưng hiệu quả là phục hồi nhanh và sao lưu rộng Cả Master và các máy chủ chunk trong hệ thống đều được thiết kế để có khả năng phục hồi trạng thái nhanh chóng chỉ trong vài giây bất kể sau khi bị kết thúc theo cách 12 nào Khi một máy chủ chunk hoặc chunk bị lỗi, hệ thống có khả năng thay thế các bản sao bị lỗi bằng các bản sao khác để đảm bảo rằng dữ liệu vẫn sẵn sàng cho các ứng dụng Bên trên có nói rằng mỗi chunk được sao chép trên nhiều máy chú chunk khác nhau ở các racks khác nhau Hệ thống thực hiện sao lưu mỗi chunk thành các bản sao trên các máy chủ chunk khác nhau, mặc định sẽ là ba bản Điều này đảm bảo rằng dữ liệu vẫn sẵn sàng ngay cả khi một máy chủ chunk bị lỗi hoặc không thể truy cập Hệ thống đảm bảo các bản sao của máy chủ chính (master server) luôn sẵn sàng Khi máy chủ chính có vấn đề, nó có thể khởi động lại gần như ngay lập tức Nếu máy chủ Master gốc gặp sự cố không thể khởi động, hạ tầng GFS sẽ bắt đầu quy trình Master mới ở một nơi khác với bản sao nhật ký hoạt động của máy chủ Master gốc có thể tiếp tục hoạt động để duy trì tính nhất quán và khả năng sẵn sàng Bên cạnh đó hệ thống cũng có các Shadowmaster cung cấp quyền truy cập chỉ đọc vào hệ thống tệp ngay cả khi máy chủ Master tắt Chúng là các bản sao đối với máy chủ Master gốc, nhưng có thể kém máy chủ Master gốc một chút, thường là một phần nhỏ của giây Chúng nâng cao tính sẵn sàng đọc cho các tệp không được biến đổi hoặc các ứng dụng không quan trọng khi nhận kết quả đã cũ 3.5.2 Data integrity (Tính toàn vẹn của dữ liệu) Mỗi chunkserver sử dụng checksum để kiểm tra phát những đoạn dữ liệu lỗi Một cụm GFS thường có hàng nghìn đĩa trên hàng trăm máy, nó thường xuyên gặp phải lỗi ổ đĩa gây hỏng hoặc mất dữ liệu trên cả hai đường dẫn đọc và ghi Hệ thống có thể phục hồi sau khi bị hỏng bằng cách sử dụng các bản sao chunk khác, nhưng sẽ là không thực tế nếu phát hiện những đoạn dữ liệu lỗi bằng cách so sánh bản sao trên các máy chủ chunk Hơn nữa, theo cơ chế mutation của GFS đã được nhắc đến bên trên cũng như cơ chế atomic append record, không đảm bảo các bản sao giống hệt nhau Vì vậy, mỗi chunkserver phải có tính xác minh độc lập và tính toàn vẹn của bản sao của chính nó bằng cách duy trì các checksums Một chunk được chia thành các khối 64 KB Mỗi chunk có checksum tương ứng 32 bit Giống như các siêu dữ liệu khác, checksum được lưu giữ trong bộ nhớ và được lưu trữ liên tục bằng cách ghi nhật ký, tách biệt khỏi dữ liệu người dùng Để đọc, chunkserver xác minh dữ liệu các khối ghi đè lên nhau trong phạm vi đọc của checksum trước khi trả về bất kỳ dữ liệu nào cho người yêu cầu, cho dù là client hay chunkserver khác Do đó, chunkserver sẽ không lan truyền lỗi tới các máy khác Nếu một khối không khớp với khối checksum đã ghi, máy chủ chunk sẽ trả về lỗi cho người yêu cầu và báo cáo sự không phù hợp cho master Đáp lại, người yêu cầu sẽ đọc từ các bản sao khác, trong khi bản chính sẽ sao chép chunk từ một bản sao khác Sau khi có giá trị mới bản sao đã sẵn sàng, máy chủ chính sẽ hướng dẫn máy chủ chunk rằng đã báo cáo sự không phù hợp để xóa bản sao của nó 13 Checksum ít ảnh hưởng đến hiệu suất đọc có nhiều lý do Vì hầu hết các lần yêu cầu đọc đều kéo dài ít nhất một vài khối, chúng ta chỉ cần đọc và kiểm tra tổng tương đối lượng nhỏ dữ liệu bổ sung để xác minh GFS client code tiếp tục giảm lượng thời gian này bằng cách cố gắng căn chỉnh số lần đọc gần với dung lượng tối đa của checksum Hơn nữa, việc tra cứu checksum và so sánh trên chunkserver được thực hiện mà không cần bất kỳ tính toán I/O và tổng kiểm tra thường có thể bị chồng chéo với I/O 3.6 Garbage Collection Khi một tệp thông tin bị xóa bởi ứng dụng, máy chủ master ghi lại việc xóa ngay lập tức giống như các thay đổi khác Tuy nhiên, thay vì giải phóng tài nguyên ngay lập tức, tệp thông tin chỉ được đổi tên thành một tên ẩn bao gồm thời gian xóa Trong quá trình quét định kỳ của máy chủ master trên không gian tên hệ thống tệp tin, nó sẽ loại bỏ bất kỳ tệp tin ẩn nào nếu chúng tồn tại quá ba ngày (khoảng thời gian này có thể được cấu hình) Cho đến khi đó, tệp tin vẫn có thể được đọc dưới tên mới đặc biệt và có thể được khôi phục bằng cách đổi tên trở lại bình thường Khi tệp tin ẩn được loại bỏ khỏi không gian tên, siêu dữ liệu trong bộ nhớ của nó sẽ bị xóa Điều này hiệu quả ngắt kết nối tệp tin với tất cả các phân đoạn của nó Trong quá trình quét định kỳ tương tự trên không gian tên của các phân đoạn, master xác định các phân đoạn đơn lẻ (tức là các phân đoạn không thể truy cập từ bất kỳ tệp tin nào) và xóa siêu dữ liệu cho những phân đoạn đó Trong một tin nhắn HeartBeat được trao đổi định kỳ với master, mỗi chunkserver báo cáo một tập con của các phân đoạn mà nó có, và máy chủ master trả lời với danh tính của tất cả các phân đoạn không còn tồn tại trong siêu dữ liệu của master Chunkserver có thể tự do xóa các bản sao của phân đoạn không còn tồn tại này 4 Cài đặt Google File System (GFS) không phải là một sản phẩm công cộng, đây là sản phẩm của riêng công ty Google và được sử dụng độc quyền cho công ty, do đó GFS không được công bố hay phân phối dưới dạng mã nguồn mở do đó không có tài liệu chính thức nào hướng dẫn về quá trình cài đặt GFS Nhưng sẽ có một vài bước cơ bản khi cài đặt hệ thống GFS giống với các hệ thống khác, các bước bên dưới đây chỉ là các bước cơ bản, việc cài đặt một hệ thống lớn sẽ yêu cầu người có kinh nghiệm cũng như kiến thức chuyên sâu về hạ tầng, cơ sở cũng như hệ thống mạng 4.1 Chuẩn bị máy chủ và hệ điều hành Để cài đặt một hệ thống như GFS chúng ta sẽ cần một máy chủ master và nhiều máy chủ lưu trữ chia thành các rack, mỗi rack sẽ gồm nhiều chunkserver và trong mỗi chunkserver sẽ gồm các file chunk Bên cạnh đó trên các chunkserver chúng ta cũng cần cài đặt một bản phân phối thường là Linux nhằm quản lý các tài nguyên cũng như cấu hình các server 14 4.2 Tải và cài đặt GFS Nhân viên sẽ lấy mã nguồn GFS cài đặt theo trình tự, thực hiện các bước biên dịch sau đó cài đặt mã nguồn GFS trên mỗi máy chủ theo hướng dẫn cụ thể 4.3 Cấu hình GFS Đối với máy chủ Master, cần chỉ định cấu hình của hệ thống như cổng sử dụng, cách thức quản lý dữ liệu như đã trình bày bên trên, các máy chủ kết nối đến, nguồn ra vào của dữ liệu tất cả đều phụ thuộc vào yêu cầu của hệ thống GFS Đối với các máy chủ chunkserver lưu trữ, cần cấu hình để kết nối với máy chủ Master và làm việc với toàn bộ hệ thống Điều này cũng phụ thuộc vào yêu cầu của hệ thống GFS 4.4 Khởi động dịch vụ Khởi động dịch vụ GFS trên máy chủ master đồng thời khởi động trên các máy chủ chunkserver lưu trữ 4.5 Kiểm tra và giám sát Sử dụng công cụ kỹ thuật cũng như có nhân viên bên cạnh nhằm giám sát, đảm bảo hệ thống GFS hoạt động đúng cách Nếu xảy ra bất cứ sự cố gì sẽ kịp thời xử lý và khắc phục Cũng cần lập kế hoạch triển khai hệ thống giám sát nhằm theo dõi hiệu suất, sự ổn định của hệ thống GFS nhằm đánh giá và nâng cấp cũng như bảo trì kịp thời 15 5 Ưu và nhược điểm 5.1 Ưu điểm Google File System (GFS) có khả năng truy cập cao là một trong những ưu điểm quan trọng của nó GFS sử dụng cơ chế phân tán và truy cập song song, cho phép nhiều nguồn truy xuất dữ liệu đồng thời, giảm thời gian đợi và tăng hiệu suất Bên cạnh đó, GFS sử dụng bộ nhớ cache để lưu trữ dữ liệu đã truy cập gần đây, giúp tăng tốc độ truy cập Hệ thống cũng đảm bảo tính sẵn sàng và đồng bộ hóa dữ liệu qua việc sao chép và phân tán dữ liệu trên nhiều máy chủ chunk Khả năng mở rộng linh hoạt của GFS cũng đáng kể, cho phép hệ thống tăng cường khả năng lưu trữ và xử lý khi lượng dữ liệu và số lượng người dùng tăng lên Tóm lại, GFS mang lại khả năng truy cập nhanh chóng, hiệu suất cao và tính sẵn sàng cho người dùng Tốc độ xử lý cao là một trong những ưu điểm quan trọng của Google File System (GFS) GFS được thiết kế để xử lý dữ liệu một cách hiệu quả và nhanh chóng Với cơ chế phân tán, truy cập song song và sử dụng bộ nhớ cache, GFS có khả năng xử lý đồng thời nhiều yêu cầu truy cập, giảm thời gian đợi và tăng tốc độ truy xuất dữ liệu Hơn nữa, khả năng mở rộng linh hoạt của GFS cho phép hệ thống gia tăng khả năng xử lý và lưu trữ khi có nhu cầu tăng cường Tóm lại, tốc độ xử lý cao của GFS đảm bảo rằng người dùng có thể truy cập và xử lý dữ liệu một cách nhanh chóng và hiệu quả Lưu trữ đáng tin cậy là một trong những ưu điểm quan trọng của Google File System (GFS) GFS được thiết kế để đảm bảo tính sẵn sàng và đồng bộ hóa dữ liệu một cách tin cậy Dữ liệu trong GFS được sao chép và phân tán trên nhiều máy chủ chunk, đảm bảo rằng ngay cả khi một máy chủ gặp sự cố, dữ liệu vẫn có thể được truy xuất từ các máy chủ khác Hơn nữa, việc phân tán dữ liệu giữa nhiều máy chủ chunk giúp giảm tải và đảm bảo hiệu suất cao khi có nhiều người dùng truy cập đồng thời Tính sẵn sàng và đồng bộ hóa này đảm bảo rằng dữ liệu trong GFS luôn được bảo vệ và truy cập một cách tin cậy Tóm lại, lưu trữ đáng tin cậy của GFS đảm bảo rằng dữ liệu không bị mất và người dùng có thể tin tưởng vào tính sẵn sàng và đồng bộ hóa của hệ thống 5.2 Nhược điểm Các tệp tin nhỏ không phù hợp với Google File System (GFS) là 1 nhược điểm vì GFS được thiết kế để xử lý và lưu trữ các tệp tin có kích thước lớn GFS chia nhỏ dữ liệu thành các "chunk" có kích thước lớn, thường là hàng trăm megabyte Khi tệp tin nhỏ được lưu trữ trong GFS, chúng vẫn được xử lý và lưu trữ như một chunk, dẫn đến sự lãng phí trong việc sử dụng không gian lưu trữ và tài nguyên hệ thống Hơn nữa, việc truy cập và xử lý các tệp tin nhỏ trong GFS có thể gây ra hiệu suất không tốt do overhead trong quá trình truy xuất và xử lý chunk Google File System (GFS) có một nhược điểm quan trọng là khả năng trì hoãn khi master trở thành điểm bottleneck Master trong GFS là nút quản lý hệ thống và điều phối hoạt động của các chunk server Trong trường hợp master gặp tải công việc quá lớn hoặc 16 xảy ra sự cố, các hoạt động của hệ thống có thể bị tạm dừng hoặc chậm lại, ảnh hưởng đến tính sẵn sàng và hiệu suất Tuy nhiên, GFS đã áp dụng các biện pháp giảm thiểu tác động bằng cách sao chép dữ liệu và phân tán chunk server Điều này cho phép truy xuất dữ liệu từ các chunk server khác trong khi master gặp vấn đề Hơn nữa, GFS cũng sử dụng cơ chế tự động chuyển giao nhiệm vụ giữa các master backup để đảm bảo tính sẵn sàng và ổn định của hệ thống Tóm lại, mặc dù trì hoãn khi master trở thành điểm bottleneck là một nhược điểm của GFS, hệ thống đã áp dụng các biện pháp để giảm thiểu tác động và đảm bảo tính sẵn sàng của dữ liệu Google File System (GFS) có một nhược điểm đáng quan tâm khác đó là không thể ghi ngẫu nhiên GFS được thiết kế để tối ưu hóa việc đọc dữ liệu lớn và tuần tự, và không phù hợp cho các ứng dụng có yêu cầu ghi ngẫu nhiên cao như cơ sở dữ liệu trực tuyến (OLTP) Việc ghi ngẫu nhiên vào GFS đòi hỏi thực hiện các hoạt động đọc và ghi phức tạp để duy trì tính nhất quán và đồng bộ hóa dữ liệu, gây ra hiệu suất không tốt Tuy nhiên, GFS đã áp dụng biện pháp ghi tập trung (write-append) để giảm tác động của ghi ngẫu nhiên Ghi tập trung cho phép các ứng dụng ghi dữ liệu theo một luồng tuần tự vào cuối tệp tin hiện có, giảm số lượng hoạt động đọc và ghi phức tạp Tóm lại, mặc dù GFS không hỗ trợ ghi ngẫu nhiên, hệ thống đã áp dụng biện pháp ghi tập trung để giảm tác động và cung cấp hiệu suất tốt cho việc đọc dữ liệu lớn và tuần tự 17 III Kết luận: Trên đây là bài báo cáo về hệ thống Google File System (GFS), trong bài đã đưa đến những thông tin về kiến trúc, các thành phần, cách thức hoạt động cũng như điểm mạnh điểm yếu của hệ thống GFS Cùng điểm lại một số thông tin quan trọng Về kiến trúc GFS gồm 3 thành phần máy chủ Master, máy chủ lưu trữ Chunkserver và máy khách Client machine Các thành phần của GFS bao gồm các interface, metadata, chunk file, bài báo cáo cũng nói về cách thức hoạt động cũng như chi tiết về các cơ chế hoạt động của chúng cách thức trao đổi đọc và ghi dữ liệu GFS bên cạnh những ưu điểm về dữ liệu như độ tin cậy cao, hiệu suất làm việc với dữ liệu cao, dễ dàng mở rộng nếu có nhu cầu, dữ liệu dễ phục hồi thì cũng có một số khuyết điểm như không tiện lợi khi chỉ lưu các tệp tin nhỏ, nếu có nhiều dữ liệu một lúc dễ gây nên bottleneck tại master khi chỉ có 1 luồng xử lý nhiều thông tin GFS đã giúp Google xây dựng một hệ thống lưu trữ mạnh mẽ và tin cậy cho hạ tầng của họ mà hiện nay rất nhiều tập thể cũng như cá nhân cũng đang sử dụng hàng ngày hàng giờ 18 IV Tài liệu tham khảo: • The Google File System - Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung (PDF) • Geek for Geeks Google File System - GeeksforGeeks • Reading Notes - Google File System: http://krishnabhargav.github.io/architecture/notes,/publication/notes/2014/06/22/Goog le-File-System-Notes.html?fbclid=IwAR1P9- dMNkJmkwYRHEUXqO0sWHROuuIakVGG7V-rLTaSzV-An2tM73P6x6U • Cramzable - Google File System Google File System • Wikipedia- Google File System https://en.wikipedia.org/wiki/Google_File_System 19

Ngày đăng: 24/03/2024, 18:19

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w