Professional Documents
Culture Documents
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.
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:
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í.
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.
Đầ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.
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.
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.
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ố.
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.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
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
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.
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
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.
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ũ.
Để đọ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.
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.
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ể.
Đố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.
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.
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