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ủaGoogle, 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ệuphải được lưu trữ.GFS dựa trên ki
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN 1
Giảng viên hướng dẫn: PGS TS Hoàng Xuân Dậu
HÀ NỘI, 02/2024
Trang 2Với lòng biết ơn sâu sắc nhất, nhóm chúng em xin gửi đến tập thể thầy cô Họcviện Công nghệ Bưu Chính Viễn thông đã truyền đạt vốn kiến thức quý báu chochúng em trong suốt quá trình học tập Nhờ có những lời hướng dẫn, dạy bảo củacác thầy cô nên đề tài nghiên cứu của chúng em mới có thể hoàn thiện tốt đẹp.
Một lần nữa, chúng em xin chân thành cảm ơn thầy Hoàng Xuân Dậu đã giúp
đỡ, quan tâm để chúng em có thể hoàn thành tốt bài báo cáo này trong thời gianqua
Bài báo cáo thực hiện trong khoảng thời gian hơn 1 tháng Bước đầu đi vào thực
tế của chúng em còn hạn chế và còn nhiều bỡ ngỡ nên không tránh khỏi nhữngthiếu sót, chúng em rất mong nhận được những ý kiến đóng góp quý báu của thầy
để kiến thức của nhóm chúng em trong lĩnh vực này được hoàn thiện hơn đồng thời
có điều kiện bổ sung, nâng cao ý thức của mình
Chúng em xin chân thành cảm ơn!
Trang 3TÓM TẮT NỘI DUNG ĐỀ TÀI
Cùng với sự phát triển của mạng máy tính và sự bùng nổ về thông tin và dữ liệucần xử lý đặt ra yêu cầu về tính toán, quản lý không thể thực hiện tập trung trongtrên một máy tính đơn Nó đòi hỏi các hệ thống tính toán phải được kết hợp từ một
số lượng lớn các máy tính kết nối với nhau qua một mạng tốc độ cao Vì vậy cần
có các hệ phân tán che dấu đi việc xử lý độc lập trên các máy tính tạo cho ngườidùng cảm nhận như đang thao tác trên một hệ thống đơn nhất mà họ đã quen dùngtrước đây Ngày nay, hệ phân tán phát triển rất nhanh và được ứng dụng rộng khắp
Đó có thể là hệ tính toán phân tán (Distributed computing Systems) hoặc hệ thốngthông tin phân tán (Distributed Information Systems) Vấn đề cơ bản nhất của các
hệ thống phân tán đó là việc chia sẻ dữ liệu và không có gì ngạc nhiên khi hệ thốngtệp tin phân tán tạo thành cơ sở cho nhiều ứng dụng phân tán Trong báo cáo này,
ta sẽ tìm hiểu các khái niệm cơ bản của hệ phân tán nói chung và tập trung chủ yếuvào hệ thống file phân tán đóng vai trò như 1 mô thức cho các hệ phân tán, với mụctiêu chính là tìm hiểu, phân tích hệ thống file phân tán đồng thời qua đó ta cũngtìm hiểu một hệ thống file phân tán cụ thể đó là: Google File System (GFS)
Trang 4MỤC LỤC
CHƯƠNG 1 GIỚI THIỆU CHUNG VỀ GOOGLE FILE SYSTEM 1
1.1 Định nghĩa hệ thống file phân tán 1
1.2 Hệ thống file phân tán Google File System 1
CHƯƠNG 2 CÁC ĐẶC ĐIỂM CỦA GOOGLE FILE SYSTEM 2
2.1 Kiến trúc của GFS 2
2.1.1 Nút Master Đơn (Singel Master) 3
2.1.2 Kích thước của các Chunk (Chunksize) 3
2.1.3 Siêu dữ liệu (Metadata) 4
2.1.4 Nhật ký hoạt động 6
2.2 Các thành phần chính của GFS 7
2.2.1 GFS Clients (Users) 8
2.2.2 GFS Master Servers 8
2.2.3 GFS Chunk Servers 8
2.3 Cơ chế hoạt động của GFS 9
2.3.1 Quản lý Namespace và Khóa 9
2.3.2 Đặt Bản sao 10
2.3.3 Tạo, Sao chép lại, Cân bằng lại 10
2.3.4 Thu gom 11
2.3.5 Phát hiện Bản sao cũ 11
2.4 Cài đặt, thiết kế Google File System 12
2.4.1 Giả định 12
2.4.2 Giao diện 13
2.5 Ưu và nhược điểm của GFS 13
2.5.1 Ưu điểm 13
Trang 52.5.2 Nhược điểm 13
CHƯƠNG 3 KẾT LUẬN 15
TÀI LIỆU THAM KHẢO 16
PHÂN CHIA CÔNG VIỆC 17
Trang 6DANH MỤC HÌNH VẼ
Hình 2.1 Kiến trúc của GFS 2
Hình 2.2 Giao tiếp Metadata giữa Client và Master 5
Hình 2.3 Các thực thể trong GFS 7
Hình 2.4 Giao tiếp giữa ứng dụng và Chunk erver 9
Hình 2.5 Thiết kế cơ bản của GFS 12
Trang 7CHƯƠNG 1 GIỚI THIỆU CHUNG VỀ GOOGLE FILE SYSTEM
1.1 Định nghĩa hệ thống file phân tán
Hệ thống tập tin phân tán là một loại hệ thống tập tin mà dữ liệu được lưu trữ trênnhiều máy tính hoặc thiết bị lưu trữ khác nhau trong một mạng máy tính Thôngthường, hệ thống tập tin phân tán bao gồm một máy chủ tập tin chính và nhiều máykhách tập tin, nơi dữ liệu được lưu trữ trên nhiều máy tính khác nhau, nhưng đượcquản lý và truy cập như một hệ thống tập tin đơn lẻ
Thông thường các máy khách không truy cập trực tiếp vào các khối dữ liệu của
hệ thống tập tin mà thường thông qua việc sử dụng một giao thức (protocol) nào
đó Protocol cho phép việc hạn chế truy cập vào hệ thống tập tin bằng cách sử dụngcác danh sách truy cập hoặc các khả năng truy cập trên các máy chủ và các máykhách tùy vào thiết kế của nó
Các hệ thống tập tin phân tán thường bao gồm các khả năng đi kèm khác nhưviệc nhân bản dữ liệu hay khả năng chịu lỗi Các khả năng này nhằm mục đíchlàm cho hệ thống vẫn tiếp tục hoạt động và tránh việc mất dữ liệu khi một vài máytrong hệ thống gặp trục trặc
1.2 Hệ thống file phân tán Google File System
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ầuchế 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ủaGoogle, 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ệuphải được lưu trữ
GFS dựa trên kiến trúc master-slave trong đó một chủ duy nhất điều phối tất cảquyền truy cập vào hệ thống tệp và nhiều ChunkServer lưu trữ dữ liệu Hệ thốngđược tối ưu hóa cho khối lượng công việc có thông lượng cao, độ trễ thấp, điển hìnhcho các ứng dụng của Google, chẳng hạn như Google Search và Google Maps
GFS cũng hướng tới những mục tiêu chính tương tự như những hệ thống filephân tán đã có, như hiệu năng, tính mở rộng và tính sẵn sàng Tuy nhiên, GFS đượcxây dựng dựa trên một số giả định đầu vào xuất phát từ việc khảo sát khối lượng
dữ liệu cần xử lý của các ứng dụng và môi trường công nghệ hiện tại
1
Trang 8CHƯƠNG 2 CÁC ĐẶC ĐIỂM CỦA GOOGLE FILE SYSTEM
2.1 Kiến trúc của GFS
Cụm GFS được cấu thành từ một nút master đơn và nhiều nút chunkserver, đượctruy cập bởi nhiều khách hàng (client) Mỗi thành phần này thường là một máy chủLinux chạy tiến trình máy chủ ở cấp độ người dùng Việc triển khai đồng thời cảchunkserver và client trên cùng một máy chủ là khả thi, miễn là tài nguyên máychủ đáp ứng đủ và chấp nhận được nguy cơ giảm độ tin cậy do chạy mã ứng dụngtiềm ẩn không ổn định
Hình 2.1: Kiến trúc của GFS
Các file được chia thành các chunk có kích thước cố định Mỗi chunk được xácđịnh bởi một khóa chunk 64 bit toàn cầu, không thay đổi, do nút master cấp phát tạithời điểm tạo chunk Nút chunkserver lưu trữ các chunk trên ổ đĩa cục bộ dưới dạngfile Linux và thực hiện đọc hoặc ghi dữ liệu chunk được xác định bởi khóa chunk
và phạm vi byte Để đảm bảo tính tin cậy, mỗi chunk được sao chép dự phòng trênnhiều nút chunkserver khác nhau Theo mặc định, hệ thống lưu trữ ba bản sao,nhưng người dùng có thể tùy chỉnh mức độ sao chép cho các vùng khác nhau củakhông gian tên file
Nút master duy trì tất cả siêu dữ liệu của hệ thống file Siêu dữ liệu bao gồmkhông gian tên, thông tin kiểm soát truy cập, ánh xạ từ file sang các chunk và vịtrí hiện tại của các chunk Nút master cũng điều khiển các hoạt động toàn hệ thốngnhư quản lý thuê chunk, dọn dẹp các chunk mồ côi và di chuyển chunk giữa các nútchunkserver Nút master định kỳ liên lạc với từng nút chunkserver bằng các thôngđiệp Heartbeat để cung cấp hướng dẫn và thu thập trạng thái của chúng
Mã client GFS được tích hợp vào từng ứng dụng, triển khai API của hệ thốngfile và giao tiếp với nút master và nút chunkserver để đọc hoặc ghi dữ liệu thay mặtcho ứng dụng Client tương tác với master cho các hoạt động liên quan đến siêu
dữ liệu, nhưng tất cả các giao tiếp mang dữ liệu đều diễn ra trực tiếp với các nút
2
Trang 9CHƯƠNG 2 CÁC ĐẶC ĐIỂM CỦA GOOGLE FILE SYSTEM
chunkserver Hệ thống không cung cấp API POSIX và do đó không cần kết nối vớilớp vnode của Linux
Cả client và chunkserver đều không lưu trữ dữ liệu file trong bộ nhớ cache.Cache của client mang lại ít lợi ích vì hầu hết các ứng dụng đều truyền qua các filelớn hoặc có bộ làm việc quá lớn để lưu trữ trong cache Việc không sử dụng cachegiúp đơn giản hóa client và toàn bộ hệ thống bằng cách loại bỏ các vấn đề về tínhnhất quán của cache (Tuy nhiên, client có thể lưu trữ siêu dữ liệu trong cache) Nútchunkserver không cần cache dữ liệu file vì các chunk được lưu trữ dưới dạng filecục bộ, do đó bộ nhớ đệm của Linux đã giữ dữ liệu được truy cập thường xuyêntrong RAM
2.1.1 Nút Master Đơn (Singel Master)
Sử dụng một nút master đơn giúp đơn giản hóa đáng kể thiết kế và cho phépnút master đưa ra các quyết định phân bổ và sao chép chunk tinh vi dựa trên kiếnthức toàn cục Tuy nhiên, cần giảm thiểu tối đa sự tham gia của nút master trongcác hoạt động đọc và ghi để tránh nó trở thành điểm nghẽn Client không bao giờđọc và ghi dữ liệu file thông qua nút master Thay vào đó, client hỏi nút master vềcác nút chunkserver mà nó nên liên hệ Client lưu trữ đệm thông tin này trong mộtkhoảng thời gian giới hạn và trực tiếp tương tác với các nút chunkserver cho nhiềuhoạt động tiếp theo
Để giải thích các tương tác trong quá trình đọc đơn giản, hãy tham khảo Hình
1 Đầu tiên, sử dụng kích thước chunk cố định, client chuyển đổi tên file và offsetbyte do ứng dụng cung cấp thành chỉ số chunk trong file Sau đó, client gửi yêucầu đến nút master, chứa tên file và chỉ số chunk Nút master trả lời với khóa chunktương ứng và vị trí của các bản sao Client lưu trữ đệm thông tin này bằng cách sửdụng tên file và chỉ số chunk làm khóa
Tiếp theo, client gửi yêu cầu đến một trong các bản sao, ưu tiên bản gần nhất.Yêu cầu này xác định khóa chunk và phạm vi byte trong chunk đó Các lần đọc tiếptheo cùng một chunk không yêu cầu tương tác client-master nữa cho đến khi thôngtin được lưu trữ đệm hết hạn hoặc file được mở lại Thực tế, client thường yêu cầunhiều chunk trong cùng một yêu cầu và nút master cũng có thể bao gồm thông tincho các chunk tiếp theo sau các chunk được yêu cầu Thông tin bổ sung này giúptránh được nhiều tương tác client-master trong tương lai với chi phí gần như khôngđáng kể
2.1.2 Kích thước của các Chunk (Chunksize)
Kích thước chunk là một trong những tham số thiết kế quan trọng với kích thước
là 64 MB, lớn hơn nhiều so với kích thước khối thông thường của hệ thống file Mỗi
3
Trang 10CHƯƠNG 2 CÁC ĐẶC ĐIỂM CỦA GOOGLE FILE SYSTEM
bản sao chunk được lưu trữ dưới dạng file Linux đơn giản trên một chunkserver vàchỉ được mở rộng khi cần thiết Phân bổ dung lượng trễ (Lazy space allocation)giúp tránh lãng phí dung lượng do phân mảnh nội bộ, có lẽ là nhược điểm lớn nhấtcủa 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 thế quan trọng như sau:
• Thứ nhất, nó giảm thiểu nhu cầu của client phải tương tác với master vì việcđọc và ghi trên cùng một chunk chỉ yêu cầu một yêu cầu ban đầu đến master
để lấy thông tin vị trí chunk Sự giảm thiểu này đặc biệt quan trọng đối vớikhối lượng công việc vì các ứng dụng chủ yếu đọc và ghi các file lớn theo tuần
tự Ngay cả đối với các đọc ngẫu nhiên nhỏ, client vẫn có thể thoải mái lưu trữđệm tất cả thông tin vị trí chunk cho một bộ làm việc nhiều TB
• Thứ hai, trên một chunk lớn, client có khả năng thực hiện nhiều thao tác hơntrên một chunk nhất định, do đó có thể giảm thiểu chi phí mạng bằng cách duytrì kết nối TCP lâu dài với chunkserver trong một khoảng thời gian dài
• Thứ ba, nó giảm kích thước của siêu dữ liệu được lưu trữ trên master Điềunày cho phép giữ siêu dữ liệu trong bộ nhớ
Mặt khác, kích thước chunk lớn, ngay cả với phân bổ dung lượng trễ, vẫn cónhững nhược điểm Một file nhỏ bao gồm một số lượng chunk nhỏ, có thể chỉ làmột Các chunkserver lưu trữ những chunk này có thể trở thành điểm nóng (hotspot)nếu nhiều client truy cập cùng một file
Tuy nhiên, điểm nóng đã phát triển khi GFS lần đầu tiên được sử dụng bởi hệthống hàng đợi (batch-queue system): một file thực thi được ghi vào GFS dưới dạngfile một chunk và sau đó được khởi chạy trên hàng trăm máy cùng một lúc Mộtvài chunkserver lưu trữ file thực thi này bị quá tải bởi hàng trăm yêu cầu đồng thời.Cách để khắc phục vấn đề này là lưu trữ các file thực thi đó với yếu tố sao chépcao hơn và làm cho hệ thống hàng đợi staggered thời gian bắt đầu ứng dụng Mộtgiải pháp lâu dài tiềm năng là cho phép client đọc dữ liệu từ các client khác trongnhững tình huống như vậy
2.1.3 Siêu dữ liệu (Metadata)
Nút master lưu trữ ba loại siêu dữ liệu chính:
• Không gian tên file và chunk
• Phép ánh xạ từ file sang các chunk
• Vị trí của các bản sao cho mỗi chunk
4
Trang 11CHƯƠNG 2 CÁC ĐẶC ĐIỂM CỦA GOOGLE FILE SYSTEM
Hình 2.2: Giao tiếp Metadata giữa Client và Master
Tất cả siêu dữ liệu được lưu trữ trong bộ nhớ của nút master Hai loại đầu tiên(không gian tên và ánh xạ file-to-chunk) cũng được duy trì lâu dài bằng cách ghinhật ký các thay đổi vào một nhật ký hoạt động (operation log) được lưu trữ trên
ổ đĩa cục bộ của master và được sao chép trên các máy từ xa Việc sử dụng nhật
ký cho phép cập nhật trạng thái master một cách đơn giản, đáng tin cậy và tránhđược sự không nhất quán trong trường hợp master bị crash Nút master không lưutrữ thông tin vị trí chunk một cách lâu dài Thay vào đó, nó hỏi từng chunkserver
về các chunk của nó khi master khởi động và bất cứ khi nào một chunkserver thamgia vào cụm
a, 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 diễn ranhanh chóng Hơn nữa, master có thể dễ dàng và hiệu quả kiểm tra toàn bộ trạngthái của nó theo định kỳ trong nền Việc kiểm tra định kỳ này được sử dụng để thựchiện dọn dẹp rác chunk (chunk garbage collection), sao chép lại (re-replication) khichunkserver gặp sự cố và di chuyển chunk để cân bằng tải và dung lượng đĩa trêncác chunkserver
Một điểm đáng lo ngại tiềm ẩn cho cách tiếp cận chỉ sử dụng bộ nhớ này là sốlượng chunk và do đó dung lượng của toàn bộ hệ thống bị giới hạn bởi dung lượng
bộ nhớ mà master sở hữu Tuy nhiên, đây không phải là hạn chế nghiêm trọng trongthực tế Master duy trì chưa đến 64 byte siêu dữ liệu cho mỗi chunk 64 MB Hầuhết các chunk đều đầy vì hầu hết các file chứa nhiều chunk, trong đó chỉ chunkcuối cùng có thể được điền một phần Tương tự, dữ liệu không gian tên file thườngyêu cầu ít hơn 64 byte cho mỗi file vì nó lưu trữ tên file một cách gọn gàng bằngcách sử dụng nén tiền tố (prefix compression)
5
Trang 12CHƯƠNG 2 CÁC ĐẶC ĐIỂM CỦA GOOGLE FILE SYSTEM
Nếu cần thiết để hỗ trợ các hệ thống file thậm chí lớn hơn, thì chi phí thêm RAMcho master là cái giá nhỏ để đổi lấy sự đơn giản, đáng tin cậy, hiệu suất và tính linhhoạt có được bằng cách lưu trữ siêu dữ liệu trong bộ nhớ
b, Vị trí của các Chunk
Nút master không lưu trữ bản ghi vĩnh viễn về các chunkserver nào có bản saocủa một chunk nhất định Thay vào đó, nó chỉ đơn giản gửi yêu cầu thăm dò cácchunkserver để lấy thông tin đó khi khởi động Master có thể tự cập nhật sau đó vì
nó kiểm soát tất cả việc phân bổ chunk và theo dõi trạng thái chunkserver bằng cácthông điệp Heartbeat định kỳ
So với việc cố gắng giữ thông tin vị trí chunk một cách lâu dài trên master, việcyêu cầu dữ liệu từ các chunkserver khi khởi động và định kỳ sau đó đơn giản hơnnhiều Điều này giúp loại bỏ vấn đề đồng bộ hóa master và chunkserver khi cácchunkserver tham gia và rời khỏi cụm, thay đổi tên, lỗi, khởi động lại, v.v
Một cách khác để hiểu quyết định thiết kế này là nhận ra rằng một chunkserver
có quyền quyết định cuối cùng về các chunk mà nó có hoặc không có trên đĩa củariêng mình Việc cố gắng duy trì một cái nhìn thống nhất về thông tin này trênmaster là không cần thiết vì lỗi trên chunkserver có thể khiến các chunk biến mấtđột ngột (ví dụ, ổ đĩa bị hỏng và bị vô hiệu hóa) hoặc người vận hành có thể đổitên cho chunkserver
2.1.4 Nhật ký hoạt động
Nhật ký hoạt động lưu giữ lịch sử thay đổi của các siêu dữ liệu quan trọng Đây
là thành phần trung tâm của GFS Nó không chỉ là bản ghi vĩnh viễn duy nhất củasiêu dữ liệu mà còn đóng vai trò như dòng thời gian logic xác định thứ tự của cáchoạt động đồng thời Các file và chunk, cũng như phiên bản của chúng (xem Phần4.5), đều được xác định duy nhất và vĩnh viễn bởi thời gian logic tại thời điểmchúng được tạo
Vì nhật ký hoạt động rất quan trọng nêni phải lưu trữ nó một cách đáng tin cậy
và không hiển thị các thay đổi cho client cho đến khi các thay đổi siêu dữ liệu đượcghi lại vĩnh viễn Ngược lại, việc mất toàn bộ hệ thống file hoặc các hoạt độngclient gần đây ngay cả khi bản thân các chunk vẫn có thể xảy ra Do đó, cần phảisao chép nhật ký trên nhiều máy từ xa và chỉ phản hồi hoạt động của client sau khighi chép bản ghi nhật ký tương ứng vào đĩa cả cục bộ và từ xa Master sẽ gộp nhómmột vài bản ghi nhật ký với nhau trước khi ghi, do đó giảm thiểu tác động của việcghi và sao chép lên hiệu suất tổng thể của hệ thống
Master khôi phục trạng thái hệ thống file của nó bằng cách phát lại nhật ký hoạt
6