File System
Reviewer: KIM YongUk
๋งŒ๋“  ์‚ฌ๋žŒ๋“ค
Sanjay Ghemawat
Howard Gobioff
Shun-Tak Leung
Google!
Google ๋„ ๋ชฐ๋ผ์š” ?
ย 
ย 
๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ํ•„์š” ์ตœ๋Œ€ ๊ทœ๋ชจ์˜ ๊ฒ€์ƒ‰ ,  ์ตœ๋Œ€ ๊ทœ๋ชจ์˜ ๋™์˜์ƒ ์„œ๋น„์Šค
ย 
์ปดํฌ๋„ŒํŠธ์˜ ๊ณ ์žฅ์€ ์ผ๋ฐ˜์  ์—ฌ๋Ÿฌ ์ €๊ฐ€ ์žฅ๋น„์— ์ž๋ฃŒ๋ฅผ ๋ถ„์‚ฐ์‹œํ‚ค๊ณ  ๊ด€๋ฆฌํ•ด์•ผ ํ–ˆ๋‹ค .
ย 
์‹œ๊ฐ„์— ๋”ฐ๋ผ ์ถ”๊ฐ€๋˜๋Š” ์ปจํ…์ธ  ๋ธ”๋กœ๊ทธ ,  ๋™์˜์ƒ ,  ๊ฒ€์ƒ‰ ๋“ฑ์˜ ๊ตฌ๊ธ€ ์„œ๋น„์Šค๋Š” ๋žœ๋ค ์ ‘๊ทผ ๋ณด๋‹ค ์ˆœ์ฐจ์ ์ธ ์ถ”๊ฐ€๊ฐ€ ๋งŽ์•˜๋‹ค .
์„ค๊ณ„์˜ ์ „์ œ
๋งŽ์€ ๊ฐ’์‹ผ ์ƒํ’ˆ
ํฐ ํŒŒ์ผ
ํฐ ์ŠคํŠธ๋ฆฌ๋ฐ ์ฝ๊ธฐ ,  ์ ์€ ๋žœ๋ค ์ฝ๊ธฐ
๋™์ผํ•œ ํŒŒ์ผ์— ๋Œ€ํ•œ  append
Bandwidth > Latency
POSIX  ๊ฐ™์€ ํ‘œ์ค€  API ๋Š” ์—†์Œ .
๋งŒ๋“ค๊ธฐ ์ง€์šฐ๊ธฐ ์—ด๊ธฐ ๋‹ซ๊ธฐ ์ฝ๊ธฐ ์“ฐ๊ธฐ
์•„์ง ๋” ์žˆ์Šต๋‹ˆ๋‹ค . ์•ˆ ๋๋‚ฌ์œผ๋‹ˆ๊น ์šธ์ง€ ๋ง์•„์š” .
๊ฐ‘์‹ผ ๋ณต์‚ฌ ์Šค๋ƒ…์ƒท
๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•˜๋Š”  record append
๊ตฌ์กฐ
Metadata  ์ €์žฅ ๋งˆ์Šคํ„ฐ ์„œ๋ฒ„
Metadata ์˜๊ตฌ์  (Operation Log) ํŒŒ์ผ๊ณผ  Chunk  ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ฒญํฌ์™€ ํŒŒ์ผ์˜ ์—ฐ๊ฒฐ ์ •๋ณด Chunkserver ์—๊ฒŒ ๋ฌธ์˜ ์ฒญํฌ์˜ ๋ณต์‚ฌ๋ณธ ์œ„์น˜ Chunkserver ๊ฐ€ ์‹œ์ž‘๋  ๋•Œ .
ํ•˜๋‚˜์˜  Chunk ๋Š” ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ์ €์žฅ .
ย 
Chunk โ€“ 64MB ์˜ ์ž‘์€ ์กฐ๊ฐ
ํ•œ๋ฒˆ ์š”์ฒญ์‹œ  64MB ์„ ์ „์†ก . ์ˆœ์ฐจ์ ์ธ ํŒŒ์ผ์—์„œ ์žฌ ์š”์ฒญ ํ•„์š”์—†์Œ . ์ž‘์€ ๋žœ๋ค ์ฝ๊ธฐ์‹œ์—๋„ ์บ์‰ฌ๋˜์–ด ์‚ฌ์šฉ . ๋งˆ์Šคํ„ฐ ์„œ๋ฒ„์™€ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜๋ฅผ ์ค„์ž„ . ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ ์บ์‰ฌ ๊ฐ€๋Šฅ . ์šฉ๋Ÿ‰์˜ ๋‚ญ๋น„๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค .
Chunk server ๋“ค์˜ ์œ„์น˜๋ฅผ ๋ฌผ์Œ
Chunk server ๋“ค์—๊ฒŒ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ
Chunk server ๋“ค์—๊ฒŒ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ
Secondary Replication  ๋ณต์ œ ํ™•์ธ
Client ์—๊ฒŒ ์„ฑ๊ณตํ–ˆ๋‹ค๊ณ  ์•Œ๋ฆผ
ํ•œ ํŒŒ์ผ์ด ์—ฌ๋Ÿฌ ์„œ๋ฒ„์—  Chunk ๋กœ ๋ถ„์‚ฐ . ์—ฌ๋Ÿฌ ์„œ๋ฒ„๋กœ ๋ถ€ํ„ฐ ์ „์†ก๋˜์–ด ๋น ๋ฅด๊ฒŒ ๋ฐ›์Œ . ํ•œ  Chunk ๊ฐ€  3 ๊ฐœ์˜ ์„œ๋ฒ„์— ๋ถ„์‚ฐ๋˜์–ด ์ €์žฅ . ์˜คํ”„๋ผ์ธ ์„œ๋ฒ„๊ฐ€ ๋ฐœ์ƒ์‹œ ํ•ด๊ฒฐ . ์†์ƒ๋œ ์ฒญํฌ ๋ฐœ๊ฒฌ์‹œ ํ•ด๊ฒฐ . Chunk  ๋ณต์ œ์‹œ ๋™๊ธฐํ™” ๋ฐฑ์—… ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋‹จ์ˆœํ™” . ๋ชจ๋“  ์„œ๋ฒ„๊ฐ€ ๊ธฐ๋ก์ด ์™„๋ฃŒ๋˜์–ด์•ผ ํ•จ -> ์„ฑ๋Šฅ์ €ํ•˜
์ด๋ฆ„์˜์—ญ ๊ด€๋ฆฌ ๋””๋ ‰ํ† ๋ฆฌ ๋ณ„๋กœ ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€์ง€ ์•Š์Œ . ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋ณ„๋ช…์„ ์‚ฌ์šฉ์•ˆํ•จ . ํ•˜๋“œ ๋งํฌ ์‹ฌ๋ณผ๋ง ๋งํฌ ๋…ผ๋ฆฌ์ ์œผ๋กœ ์ „์ฒด ๊ฒฝ๋กœ์ด๋ฆ„์„ ์—ฐ๊ฒฐ .
๋ฝํ‚น /home/user ๊ฐ€  /save/user ์˜ ์Šค๋ƒ…์ƒท /home/user/foo ๋ฅผ ๋งŒ๋“ค ๊ฒฝ์šฐ   home, save: read lock   /   user: write lock ๋ถ€๋ชจ ๋””๋ ‰ํ† ๋ฆฌ์—๋Š”  read lock ๋งŒ ํ•„์š” . ์—ฌ๋Ÿฌ ํŒŒ์ผ ์ƒ์„ฑ์‹œ  write lock ์— ์˜ํ•ด ๋Œ€๊ธฐ . read lock ์€ ์‚ญ์ œ ,  ๋ณ€๊ฒฝ ,  ์Šค๋ƒ…์ƒท์„ ๋ง‰์Œ . /home /user /  foo /save /user /  foo
ย 
์“ฐ๋ ˆ๊ธฐ ์ˆ˜์ง‘ ๋งˆ์Šคํ„ฐ ์„œ๋ฒ„์— ์‚ญ์ œ ์‹œ๊ฐ„ ์ •๋ณด๋ฅผ ๊ธฐ๋ก ์ˆจ๊ฒจ์ง„ ์ด๋ฆ„์œผ๋กœ ๋ณ€๊ฒฝ . ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜๋ฉด ํŒŒ์ผ์ด ๋ณต๊ตฌ๋  ์ˆ˜ ์žˆ์Œ . 3 ์ผ ์ด์ƒ๋œ ํžˆ๋“  ํŒŒ์ผ์„ ๋งˆ์Šคํ„ฐ์—์„œ ์‚ญ์ œ . ๋งˆ์Šคํ„ฐ๊ฐ€ ๋ชจ๋ฅด๋Š” ์ฒญํฌ๋Š” โ€œ์“ฐ๋ ˆ๊ธฐโ€ ์“ฐ๋ ˆ๊ธฐ ์ˆ˜์ง‘๊ธฐ๊ฐ€ ์“ฐ๋ ˆ๊ธฐ๋ฅผ ์ œ๊ฑฐ . ๋‹จ์ˆœํ•˜๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ์Œ . ๋ฐฐ์น˜ ์ž‘์—…์œผ๋กœ ํšจ๊ณผ์  .
์ƒํ•œ ๋ณต์‚ฌ๋ณธ ๋ฐœ๊ฒฌ ์ฒญํฌ ์„œ๋ฒ„๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๋™์•ˆ ํ•ด๋‹น ์„œ๋ฒ„์˜ ์ฒญํฌ๋Š” ๋ณ€ํ™”ํ•˜์ง€ ์•Š์Œ . ๋งˆ์Šคํ„ฐ๋Š” ์ฒญํฌ์˜ ๋ฒ„์ „ ๋ฒˆํ˜ธ๋ฅผ ๋ถ™์—ฌ์„œ ์ƒํ•œ ๋ณต์‚ฌ๋ณธ์„ ๊ด€๋ฆฌ . ์ฒญํฌ ๋ฒˆํ˜ธ๊ฐ€ ๋งž์ง€ ์•Š์€ ์ฒญํฌ ์„œ๋ฒ„๋ฅผ ์žฌ์‹œ์ž‘์‹œ์ผœ์„œ ๊ด€๋ฆฌ .
ํŠผํŠผํ•ฉ๋‹ˆ๋‹ค . GFS
์žฅ์•  ํ—ˆ์šฉ์„ฑ ๋น ๋ฅธ ๋ณต๊ตฌ ๋งˆ์Šคํ„ฐ์™€ ์ฒญํฌ์„œ๋ฒ„๋Š” ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ณต๊ตฌํ•˜๋„๋ก ์„ค๊ณ„๋จ . ์ฒญํฌ ๋ณต์ œ ๊ฐ ์ฒญํฌ๋Š” ๋‹ค๋ฅธ ์žฅ๋น„์— ๋ณต์ œ๋˜์–ด ๋ณดํ˜ธ๋จ . ๋งˆ์Šคํ„ฐ ๋ณต์ œ ๋งˆ์Šคํ„ฐ์˜ ๋กœ๊ทธ์™€ ์ฒดํฌํฌ์ธํŠธ๋ฅผ ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๋ณต์ œํ•˜์—ฌ ์‹ ๋ขฐ์„ฑ์„ ํ–ฅ์ƒ .
๋ณด์•ˆ์€ ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š” ? ๋…ผ๋ฌธ์— ์–ธ๊ธ‰์ด ์—†์Œ . ํด๋ก   Hadoop ์€ ๋ณด์•ˆ ๋ฌธ์ œ ์žˆ์Œ . IP ์™€  PORT ๋ฅผ ์•Œ๋ฉด ์ ‘๊ทผ ๊ฐ€๋Šฅ
MapReduce:  ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ๋„ ๊ฐ€๋Šฅํ•ด์š” .
FUSE:  ํŒŒ์ผ ์‹œ์Šคํ…œ ๋Œ€์ฒด
GFS ๋Š” ๊ตฌ๊ธ€๋งŒ ์“ฐ๋‚˜์š” ? Open source GFS Clone
Coda: GFS ์™€ ๋น„์Šทํ•œ ํŒŒ์ผ ์‹œ์Šคํ…œ -  ์บ์‰ฌ๋ฅผ ํ†ตํ•ด ์ฝ๋Š” ์†๋„ ํ–ฅ์ƒ -  ๋ณผ๋ฅจ ๋‹จ์œ„์˜ ๋ณต์ œ
Question and fin.

Gfs Kyu