Báo cáo bài tập lớn môn an toàn hệ điều hành đề tài tìm hiểu hệ thống file phân tán google file system

18 0 0
Báo cáo bài tập lớn môn an toàn hệ điều hành  đề tài tìm hiểu hệ thống file phân tán google file system

Đ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

Trang 1

HỌCVIỆNCÔNGNGHỆBƯUCHÍNHVIỄNTHÔNG KHOA ANTOÀN THÔNG TIN

BÁO CÁO BÀI TẬP LỚN Nguyễn Quý Hùng – B21DCAT096 Tô Quang Huy – B21DCAT104

HàNội2/2024

Trang 3

I Giớithiệu

Google File System (GFS) là một hệ thống quản lý tập tin phân tán (DFS) được phát triển bởi Google, được sử dụng nội bộ và không được công bố dưới dạng mã nguồn mở GFS không chỉ tuân theo các tiêu chí quan trọng như hiệu suất (performances), khả năng mở rộng (scalability), độ tin cậy (reliability) và tính sẵn dùng (availability) như các hệ thống tệp phân tán trước đây, mà còn đưa ra những cải tiến đột phá trong thiết kế để đáp ứng các yêu cầu của môi trường vận hành tại Google.

Lỗithànhphần(componentfailure)xảyrathườngxuyênhơn.Hệthốngfile bao gồm hàng trăm thậm chí là hàng nghìn thiết bị lưu trữ Những thiết bị lưu trữ này được tạo nên bởi những phần cứng thương mại (commodity hardware) chi phí thấp và được truy cập bởi một lượng lớn máy khách Với sốlượnglớnmáychủcùngvớichấtlượngcủacácphầncứngthươngmạiđã

cómộtsốthiếtbịlưutrữkhônghoạtđộngvàmộtsốsẽkhôngthểkhôiphục lạitừnhững sựcố đó.Trên thựctế đãghinhận những lỗinhư: lỗi ứng dụng (application bugs), lỗi server, lỗi mạng, lỗi hệ điều hành (os bugs) hay lỗi củaconngười(errorbugs),…VìthếGooglecầnphảilàmtốttrongviệcgiám sát và kiểm soát lỗi, cũng như khắc phục hậu quả.

Tuy nhiên, sử dụng phần cứng thương mại lại đem đến một số lợi ích nhất định như giúp giảm đi chi phí đầu tư ban đầu và chi phí duy trì, đồng thời

Các tệp trong GFS thường có kích thước lớn, thậm chí là hàng Giga Bytes Mỗitệpthườngchứanhiềuđốitượngứngdụngnhưtàiliệuweb.GFSđược tối ưu để đọc hay ghi những file có kích thước lớn như vậy.

Việcghifilethayvìghiđèdữliệumớilêndữliệuhiệncócủafile,GFSthêm dữ liệu vào cuối của file Việc ghi ngẫu nhiên trong một tệp gần nhưkhông tồn tại Một khi file đã được ghi, file sẽ ở trạng thái chỉ đọc (read only) và việc đọc thường là tuần tự.

Trang 4

Cách xử lý dữ liệu trong GFS đã ảnh hưởng đến việc thiết kế và tối ưu hóa của hệ thống, ví dụ như việc tập trung vào việc thêm dữ liệu mới (append-only), quản lý việc đọc dữ liệu một cách hiệu quả và đảm bảo tính toàn vẹn dữ liệu.

II Kiếntrúcvàcácthànhphần

1 Kiếntrúctổngquan

MộthệthốngGFSbaogồmmộtmáychủmaster(masterserver)duynhấtvà nhiều máy chủ đoạn (chunk server) và được truy cập bởi nhiều client Mỗi mộttrongsốchúngthườnglàmộtmáythươngmạiLinux(commodityLinux Machine) chạy một tiến trình server ở mức người dùng Việc chạy cả một chunkservervàmộtclienttrêncùngmộtmáyrấtdễdàng,miễnlàtàinguyên hệ thống cho phép.

Các tập tin được chia thành các đoạn (chunk) có kích thước cố định Mỗi chunk được định danh bởi duy nhất một “chunk handle” có 64 bit và được gánbởimastervàothờiđiểmchunkđượctạo.Chunkserverlưutrữcácchunk trên ổ đĩa dưới dạng các tệp Linux và đọc hoặc ghi dữ liệu chunk được chỉ định bằng một “chunk handle” và “byte range” Để đảm bảo độ tin cậy (reliability), mỗi chunk được sao chép trên nhiều chunkserver Mặc định sẽ có 3 bản sao (replicas) được lưu, tuy nhiên người dùng có thể điều chỉnh số lượng bản sao được lưu trên chunkserver.

Master server chứa tất cả metadata của hệ thống tệp, bao gồm không gian tên (namespace),t h ô n g t i n k i ể m soát truy cập (access control information), ánh xạ từ tệp đến các chunk và vị trí hiện tại của các chunk Master server cũngđiềukhiểncáchoạtđộngcủahệthốngnhưthuê(lease),dọndẹpdữliệu dưthừavàdichuyểnchunkgiữacácchunkserver.Mastergiaotiếptheochu kỳ xác định với mỗi chunkserver bằng HeartBeat để gửi chỉ thị và thu thập trạng thái của chunkserver.

Cácclienttươngtácvớimasterđểlấymetadata,nhưngtấtcảviệctruyềndữ liệu đều trực tiếp đến các chunkserver Cả client và chunkserver đều không sử dụng cache do dữ liệu thường là rất lớn để có thể lưu vào cache Việc khôngsửdụngcachegiúpđơngiảnhóaclientvàhệthốngvìloạibỏcácvấn đề liên quan đến sự đồng nhất của cache Chunkserver không cần lưu trữ cache vì các chunk được lưu trữ dưới dạng các tệp cục bộ.

Trang 5

2 Cácthànhphầnvàđặctrưng

2.1 Máychủchính(Masterserver)vàlàduynhất(Singlemaster)

Máy chủ chính (Master server) chứa tất cả các metadata của hệ thống tệp như không gian tên (namespace),t h ô n g t i n k i ể m s o á t t r u y c ậ p tệpquamaster.Thayvàođóclientsẽhỏi masternênkếtnối đến chunkserver nào và trực tiếp kết nối đến chúng Việc master server chỉ làm việc với metadata giúp cho hệ thống hoạt động nhẹ nhàng hơn, giảm tình trạng quá tải lên máy chủ.

2.2 Máychủđoạn(chunkserver)vàkíchthướcđoạn(Chunksize)

Chunk serverlàmáychủ lưutrữfiledướidạng cácđoạn (chunk).Dưới đây là một số đặc trưng về Chunk server:

- Lưu trữ dữ liệu:Chunk server lưu trữ các chunk dữ liệu trên đĩa cục

bộ của nó Các chunk được lưu trữ dưới dạng các tệp thông thường trong hệ điều hành Linux.

- Đảm bảo tính an toàn của dữ liệu:GFS sử dụng kỹ thuật nhân bản

chunk (chunk replication) để đảm bảo tính an toàn của dữ liệu Mỗi chunkđượcnhânbảnvàlưutrữtrênnhiềuchunkserverkhácnhauđể đảm bảo khả năng phục hồi sau khi xảy ra sự cố.

Trang 6

- Giaotiếpvớimaster:Chunkserverthườngliênlạcvớimasterđểbáo

cáotrạngtháihoạtđộng,nhậnthôngtinvềcácthayđổicấutrúcvà

Trang 7

hoạt động của hệ thống, cũng như thực hiện các tác vụ quản lý như

nhiên(randomread)tươngđốinhỏ,clientcóthểdễdànglưutrữtấtcả thông tin vị trí của chunk với nhiều TeraByte nhược điểm của nó Một tệp nhỏ có thể chỉ bao gồm một số lượng nhỏ các chunk, có thể chỉ là một Các chunkserver lưu trữ những chunk đó cóthểtrởthànhcácđiểmnóng(hotspot)nếunhiềumáykháchđangtruycập

vàocùngmộttệp.Trongthựctế,việccóđiểmnóngchưaphảilàmộtvấnđề lớn vì các hệ thống chủ yếu đọc các tệp lớn có nhiều chunk theo thứ tự.

Tuy nhiên, điểm nóng đã trở thành một vấn đề lớn khi GFS lần đầu tiên sử dụng một hệ thống hàng đợi là batch-queue system: một tệp thực thi được ghi trên GFS dưới dạng một tệp chỉ có một chunk và sau đó hàng trăm máy tính yêu cầu truy cập file cùng một lúc Một số chunkserver lưu trữ tệp này đã bị quá tải bởi hàng trăm request được gửi đến cùng một lúc Google đã khắcphụcvấnđềnàybằngcáchlưutrữnhiềubảnsaocủatệpđóvàlàmthời

làchophépclientđọcdữliệutừcácclientkháctrongnhữngtìnhhuốngnhưvậy.

Trang 8

2.3 Metadata

Master server lưu trữ ba loại metadata chính: namespace, ánh xạ từ tệp đến chunk, và vị trí của các bản sao chunk Tất cả metadata được lưu trữ trong bộnhớcủamaster.Hailoạiđầutiên(namespacevàánhxạtừtệpđếnchunk) được lưu trữ bằng cách ghi nhật ký hoạt động (operation log) được lưu trữ trênổđĩacủamastervàđượcsaochépvàocácmáytừxa.Việcsửdụngmột nhật ký (log) cho phép chúng ta cập nhật trạng thái của master server một cách đơn giản, đáng tin cậy, và mà không gây ra xung đột trong trường hợp master server bị sập Master server không lưu trữ thông tin vị trí chunk lâu dài Thay vào đó, nó hỏi chunk server về các chunk chứa trong đó tại thời điểm master server khởi động và mỗi khi một chunk server tham gia vàocụm.

2.3.1 In-MemoryDataStructures

Vì dữ liệu metadata được lưu trữ trong bộ nhớ, các hoạt động của master diễn ra nhanh chóng Hơn nữa, việc quét định kỳ qua toàn bộ trạng thái của mình là dễ dàng và hiệu quả đối với master Việc quét định kỳ này được sử dụng để triển khai việc thu gom các chunk rác,tái sao chép lại trong trường hợpmấtchunkserver,vàdichuyểnchunkđểcânbằngtảivàkhônggianlưu trữ trên các chunkserver.

Mộtlongạitiềmẩnchophươngphápnàylàsốlượngcácchunk,vìthếdung lượngcủatoànbộhệthốngđượcgiớihạnbởibộnhớcủamasterserver.Tuy

nhiên,điềunàykhôngphảilàmộthạnchếnghiêmtrọngtrongthựctế.Master chỉ duy trì ít hơn 64 byte siêu dữ liệu cho mỗi chunk 64 MB Hầu như lưu trữtrêncácchunkđềuđầy,chỉcóchunkcuốicùngcủafilecóthểcònkhông gian lưu trữ Tương tự, namespace thường yêu cầu ít hơn 64 byte cho mỗitệp.

Nếu có nhu cầu mở rộng hệ thống tệp lớn hơn, chi phí để thêm bộ nhớ phụ vàomasterlàmộtmứcgiárẻđểcóđượcsựđơngiản,đángtincậy,hiệusuất

2.3.2 ChunkLocations

Master server không giữ một bản ghi về việc các chunk server có bản sao của một chunk nhất định hay không Nó chỉ đơn giản là kiểm tra các chunk server để lấy thông tin đó khi khởi động Master server có thể tự cập nhật thôngtinnàysauđóvìnókiểmsoáttấtcảchunkserverbằngcácthôngđiệp HeartBeat định kỳ.

Trang 9

Ban đầu, Google đã lưu trữ vị trí chunk lâu dài tại master server, nhưng họ thấy là việc yêu cầu dữ liệu từ các chunk server khi khởi động, và định kỳ sau đó, là đơn giản hơn nhiều Điều này loại bỏ vấn đề của việc duy trì sự đồng bộ giữa master server và các chunk server khi các chunk server tham giavàrờikhỏicụm,thayđổitên,gặpsựcố,khởiđộnglại, Trongmộtcụm có hàng trăm máy chủ, những việc này xảy ra quá thường xuyên.

2.3.3 Operationlog

Nhật ký hoạt động (Operation log) chứa lịch sử thay đổi về metadata Nó là trung tâm của GFS Không chỉ là bản ghi lâu dài duy nhất về metadata, mà nó còn được coi như một dòng thời gian logic giúp xác định thứ tự của các hoạtđộng.File,cácchunkvàcácphiênbản,đềuđượcxácđịnhduynhấtbởi thời gian logic khi chúng được tạo ra.

Bởitínhquantrọng,Googleđãphảilưutrữnhậtkýhoạtđộngmộtcáchđáng tin cậy và không sửa đổi chúng cho đến khi các thay đổi về metadata được lưu trữ Nếu không, chúng ta thực sự mất hệ thống tệp hoặc các hoạt động gầnđâycủaclientngaycảkhicácchunkvẫntồntại.Dođó,Googlesaochép nó trên nhiều máy từ xa và phản hồi client chỉ sau khi lưu các bản ghi nhật ký tương ứng vào cả ổ đĩa cục bộ và từ xa (local and remote).

Master server phục hồi trạng thái hệ thống tệp của mình bằng cách phát lại nhật ký hoạt động Để giảm thiểu thời gian khởi động, Các nhà thiết kế hệ thống phải giữ cho nhật ký có kích thước nhỏ Máy chủ đã lưu một checkpoint trạng thái của mình mỗi khi nhật ký tăng kích thước vượt quá một kích thước nhất định Vì thế có thể khôi phục bằng cách tải lại checkpoint đã lưu từ ổ đĩa cục bộ và phát lại một số ít bản ghi nhật ký Bản kiểm soát có dạng B-Tree nhưng được nén lại có thể được ánh xạ trực tiếp vàobộnhớvàđượcsửdụngđểtìmkiếmnamespacemàkhôngcầnphântích thêm Điều này cũng làm tăng tốc quá trình khôi phục và cải thiện tính sẵn dùng (availability) Doviệcxâydựngmộtcheckpointcóthểmấtmộtthờigian,trạngtháinộibộ

ramàkhônglàmtrễquátrìnhghi.Máychủchuyểnsangmộttậptinnhậtký mớivàtạo racheckpointmớitạimộtluồng riêng.Checkpointmớibaogồm tất cả cácthay đổi trước khi chuyển và có thể được tạo ratrong khoảng một phút Khi hoàn thành, nó được ghi vào cục bộ và từ xa.

Việc phục hồi chỉ cần checkpoint mới nhất và các tập tin nhật ký mới Các checkpoint và tập tin nhật ký cũ có thể được xóa một cách tự do,mặc dù hệ thốngvẫngiữmộtsốbảnđểbảovệkhỏicácsựcố.Sựcốtrongquátrìnhtạo

Trang 10

checkpoint không ảnh hưởng đến tính chính xác vì đoạn code phục hồi sẽ phát hiện và bỏ qua các checkpoint không hoàn chỉnh.

III Tươngtáchệthống(Cáchthứchoạtđộng)

1 Đọcvàtruycậpfile(Read)

Client dịch tên tệp và độ dịch byte (byte offset) thành một chỉ mục chunk (chunkindex).Sauđó,client gửi requestchứatêntệpvàchỉ mụcchunktới masterserver.Mastergửiresponsevớichunkhandletương ứngvàvịtrícủa các bản sao Client lưu trữ thông tin bao gồm tên tệp và chỉ mụcchunk như là khóa (key).

Sauđó,Clientgửirequestbaogồmchunkhandlevàbyterangetớimộttrong các chunk server chứa bản sao, có thể là bản sao gần nhất và chunk server gửi response chứa chunk data về cho client Các lần đọc tiếp theo tới chunk đókhôngcầnthựchiệntươngtácgiữaclientvàmasterchođếnkhithôngtin

trongbộnhớcachehếthạnhoặctệpđượcmởlại.Trênthựctế,clientthường yêu cầu nhiều chunk trong cùng một request và master cũng có thể gửi response bao gồm các chunk data tương ứng.

2 Thuêvàthứtựghi(LeaseandMutationOrder)

Ghi hay thay đổi (Mutation) là việc thay đổi nội dung hoặc metadata của chunk Việc ghi file trong GFS phải được thực thi trên tất cả các bản sao (replicas) của file Hệ thống sử dụng các "lease" để duy trì một thứ tự biến đổi nhất quán trên các bản sao Master server cấp phát một "lease" cho một

Trang 11

đượcghi, primary có thểyêu cầu và nhận được chấp nhận từ master vô thời hạn.CácyêucầuvàchấpnhậnđượcgắntrêncácthôngđiệpHeartBeatđược trao đổi định kỳ giữa master và tất cả các chunkserver Đôi khi, master có thểcốgắngthuhồimột"lease"trướckhinóhếthạn(vídụ,khimastermuốn vô hiệu hóa mutation trên một tệp đang được đổi tên) Ngay cả khi master mất liên lạc với một primary, nó có thể cấp phát một "lease" mới cho một bản sao khác sau khi "lease" cũ hết hạn.

1 Máy Client hỏi Master xem chunk server nào đang giữ lease hiện tại, khi không tìm thấy lease nào, master chọn và cấp cho bản ghi (replica) 1 lease 2 Master trả về vị trí và thông tin cả bản sao chính (primary) và thứ cấp (secondary) Máy Client lưu trữ thông tin này đề phòng rủi ro trong tương lai.Bảnsaochính(primary)cầnphảitươngtáclạivớimasterkhimàyêucầu

3 Client gửi dữ liệu đến tất cả các bản sao theo bất kỳ thứ tự nào Mỗi chunkserver sẽ lưu trữ dữ liệu trong bộ đệm LRU cho đến khi dữ liệu được sử dụng hoặc hết hạn sử dụng.

4 Khi tất cả các bản sao đã nhận được dữ liệu, máy khách gửi một yêu cầu ghi đến bản sao chính (primary) của chunk Yêu cầu ghi này định danh dữ

Trang 12

liệu mà máy khách đã gửi trước đó đến tất cả các bản sao Sau đó bản sao chính (primary) sẽ gán các số thứ tự cho tất cả các thay đổi (mutations) mà nó nhận được từ nhiều client, bao gồm cả các client khác nhau Việc này cung cấp sự phân loại cần thiết cho các thay đổi, đảm bảo rằng chúng được thực hiện theo đúng thứ tự Sau khi gán số thứ tự, bản sao chính (primary) áp dụng các thay đổi vào trạng thái cục bộ của nó theo thứ tự đã được gán.

5 Bản sao chính (primary) sẽ chuyển tiếp yêu cầu ghi tới tất cả các bản sao thứ cấp (secondary) Mỗi bản sao thứ cấp áp dụng các thay đổi (mutation) theo thứ tự đã được gán bởi primary.

6 Tất cả những bản sao thứ cấp (secondary) gửi lại phản hồi đến bản sao chính (primary) rằng việc ghi hay thay đổi (mutation) đã được thực hiện 7 Bản sao chính (primary) phản hồi lại cho client sau khi đã áp dụng các thayđổivàotrạngtháicụcbộcủanó.Nếucóbấtkỳlỗinàoxảyratạibấtkỳ một trong số các bản sao, bản sao chính (primary) cũng báo cáo lỗi đó cho client Trong trường hợp có lỗi xảy ra,việc ghi có thểđãthành công tại bản sao chính (primary) và một tập các bản sao thứ cấp (secondary) (Nếu việc ghi thất bại tại primary, nó sẽ không được gán thứ tự và chuyển tiếp) Yêu cầu ghi của client lúcnày được coi nhưđãthất bại,và những dữ liệu đã sửa đổiđềutrởnênkhôngnhấtquán.Clientsẽxửlýcáclỗibằngcáchthửlạicác thay đổi đã thất bại bằng cách thử tại các bước từ (3) đến (7) trước khi bắt đầu lại quá trình

Để tận dụng hết băng thông mạng của mỗi máy tính, dữ liệu được truyền tuyến tính qua một chuỗi các chunk server thay vì được phân phối theo các cấutrúcmạngkhácnhưcây.Dođó,toànbộbăngthôngracủamỗimáytính được sử dụng để truyền dữ liệu một cách nhanh chóng nhất, thay vì được chia sẻ giữa nhiều thiết bị khác nhau.

Để tránh tình trạng nút cổ chai và liên kết trễ lớn (ví dụ, liên kết giữa các switchthườnggặpcảhaivấn đềnày),mỗimáytính chuyểntiếpdữliệuđến

Ngày đăng: 15/04/2024, 14:08

Tài liệu cùng người dùng

Tài liệu liên quan