Кіріспе

Меншікті файл жүйесі

Google файлдық жүйесі (GFS немесе GoogleFS, GFS Linux файлдық жүйесімен шатастырылмау) – Google компаниясының үлкен мөлшердегі стандартты жабдықтан құралған кластерлерді пайдаланып деректерге тиімді және сенімді қол жеткізуді қамтамасыз ету мақсатында әзірлеген меншікті таратылған файлдық жүйесі. Google файлдық жүйесі 2010 жылы Colossus жүйесімен алмастырылды.

Дизайн

GFS Google-дің деректерді сақтау және пайдалану қажеттіліктері үшін жақсартылған (негізінен іздеу жүйесі), ол үлкен мөлшерде сақталуы тиіс деректерді тудырады; Google File System Ларри Пейдж және Сергей Брин Google-дің алғашқы күндерінде әзірлеген «BigFiles» Google-дің бұрынғы жұмысынан өркендеді, ол әлі де Стэнфордта орналасқан. Файлдар 64 мегабайттық белгілі бір мөлшердегі бөліктерге бөлінеді, бұл әдеттегі файлдық жүйелердегі кластерлерге немесе секторларға ұқсас, олар өте сирек жаңартылады немесе кішірейтіледі; файлдар көбінесе қосылады немесе оқылады. Ол сондай-ақ Google-дің есептеу кластерлерінде, арзан «кәдімгі» компьютерлерден тұратын тығыз түйіндерде жұмыс істеуге және оңтайландырылуға арналған, яғни жеке түйіндердің жоғары істен шығу деңгейіне және одан кейін деректерді жоғалтуға қарсы сақтық шараларын қабылдау қажет. Басқа дизайн шешімдері жоғары деректер өтімділігін таңдайды, тіпті бұл жайлылыққа (latency) келетін болса да. GFS кластері бірнеше түйіндерден тұрады. Бұл түйіндер екі түрге бөлінеді: бір Master түйіні және бірнеше Chunkserver. Әрбір файл белгілі бір мөлшердегі бөліктерге бөлінеді. Chunkserver осы бөліктерді сақтайды. Әрбір бөлікке Master түйіні құрылған кезде жаһандық түрде бірегей 64 биттік белгі тағайындайды және файлдардың бөліктерге логикалық сәйкестігі сақталады. Әрбір бөлік желіде бірнеше рет көшіріледі. Әдетте, ол үш рет көшіріледі, бірақ бұл конфигурацияланады. Жоғары сұранысқа ие файлдардың көшірме саны жоғары болуы мүмкін, ал қосымша клиенті қатаң сақтауды оңтайландыруды пайдаланатын файлдар жылдам деректерді тазалау саясатын орындау үшін үш реттен кем көшірілуі мүмкін. Master сервер әдетте нақты бөліктерді сақтамайды, бірақ бөліктерге қатысты барлық метадеректерді, мысалы, 64 биттік белгілерді бөліктердің орналасқан жерімен және оларды құрайтын файлдармен сәйкестендіретін кестелерді (файлдардан бөліктерге сәйкестік), бөліктердің көшірмелерінің орналасқан жерін, қандай процестер белгілі бір бөлікті оқып жатыр немесе жазып жатыр немесе оны көшіру үшін бөліктің «суретін» алады (әдетте Master сервердің бастамасы бойынша, түйіннің істен шығуына байланысты, бөліктің көшірмелерінің саны белгіленген сандан кем болған кезде). Осы метадеректердің барлығы Master сервер жүйелі түрде әрбір Chunkserver-ден жаңартуларды («Жүрек соғуы туралы хабарламалар») қабылдап отырады. Өзгерістерге рұқсаттар уақытпен шектелген, мерзімі бітетін «жалға алулар» жүйесімен басқарылады, онда Master сервер процеске шекті уақытқа рұқсат береді, бұл уақытта Master сервер басқа процеске бөлікті өзгертуге рұқсат бермейді. Өзгертетін Chunkserver, әрқашан негізгі бөлік иесі болып табылады, содан кейін өзгерістерді резервтік көшірмелері бар Chunkserver-лерге таратады. Өзгерістер барлық Chunkserver-лер растағанға дейін сақталмайды, осылайша операцияның аяқталуы мен толықтығына кепілдік беріледі. Бағдарламалар бірінші кезекте қалаған бөліктердің орналасқан жері туралы Master серверінен сұраныс жасай отырып, бөліктерге кіреді; егер бөліктер жұмыс істемесе (яғни, жалға алулар болмаса), Master орналасқан жерлерімен жауап береді, содан кейін бағдарлама тікелей Chunkserver-ден деректерді қабылдап алады (Kazaa және оның супернодтарына ұқсас). Басқа көптеген файлдық жүйелерден айырмашылығы, GFS операциялық жүйенің ядросында іске асырылмайды, керісінше, пайдаланушы кеңістігі кітапханасы ретінде ұсынылады.

Интерфейсі

Google файлдық жүйесі POSIX интерфейсін ұсынбайды. Файлдар каталогтарда иерархиялық түрде ұйымдастырылған және жол атаулары арқылы анықталады. Файлдарды жасау, жою, ашу, жабу, оқу, жазу сияқты операциялар қолдау көрсетіледі. Ол Record Append мүмкіндігін қолдайды, бұл бірнеше клиентке бір файлға бір уақытта дерек қосуға мүмкіндік береді және деректердің толықтығы кепілдендіріледі.

Өнер көрсету

Бенчмаркинг нәтижелеріне сүйенсек, салыстырмалы түрде аз серверлермен (15) жұмыс істегенде, файлдық жүйе бір дискіге (80–100 МБ/с) шамалас оқу жылдамдығына жетеді, бірақ жазу жылдамдығы төмендейді (30 МБ/с), ал қолданылып жүрген файлдарға дерек қосуда салыстырмалы түрде баяу (5 МБ/с). Авторлар кездейсоқ іздеу уақыты бойынша нәтижелер келтірмеген. Бас сервер деректерді оқуға тікелей қатыспайды (деректер бөлшек серверден тікелей оқушы клиентке жіберіледі), сондықтан оқу жылдамдығы бөлшек серверлердің саны артуымен бірге айтарлықтай жоғарылайды, 342 сервер үшін 583 МБ/с құрайды. Бірнеше серверді біріктіру үлкен сыйымдылықты қамтамасыз етеді, бірақ деректерді үш тәуелсіз орында сақтау (қайталау үшін) оны біршама азайтады.