์„ฑ๋Šฅ ์กฐ์ • ๊ถŒ์žฅ์‚ฌํ•ญ

์ด ํŽ˜์ด์ง€์—์„œ๋Š” ์ฃผ์š” Cloud Storage FUSE ๊ธฐ๋Šฅ๊ณผ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ Cloud Storage FUSE๋ฅผ ๊ฐœ์„ ํ•˜์—ฌ ํŠนํžˆ ํ•™์Šต, ์„œ๋น„์Šค, ์ฒดํฌํฌ์ธํŠธ์™€ ๊ฐ™์€ ์ธ๊ณต์ง€๋Šฅ ๋ฐ ๋จธ์‹ ๋Ÿฌ๋‹(AI/ML) ์›Œํฌ๋กœ๋“œ์˜ ์ตœ๋Œ€ ์ฒ˜๋ฆฌ๋Ÿ‰๊ณผ ์ตœ์ ์˜ ์„ฑ๋Šฅ์„ ๋‹ฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.

๊ณ ๋ ค์‚ฌํ•ญ

์ด ํŽ˜์ด์ง€์—์„œ ๊ถŒ์žฅํ•˜๋Š” ๊ตฌ์„ฑ์„ ์ ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•˜์„ธ์š”.

  • ์ด ํŽ˜์ด์ง€์˜ ๊ถŒ์žฅ ๊ตฌ์„ฑ์€ ๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ตœ์‹  ๋ฒ„์ „์˜ Cloud Storage FUSE๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ถŒ์žฅ ๊ตฌ์„ฑ์€ Cloud Storage FUSE ๋ฒ„์ „ 3.0 ์ด์ƒ๊ณผ GKE ํด๋Ÿฌ์Šคํ„ฐ ๋ฒ„์ „ 1.32.2-gke.1297001 ์ด์ƒ์—์„œ ์‹คํ–‰๋˜๋Š” Google Kubernetes Engine์šฉ Cloud Storage FUSE CSI ๋“œ๋ผ์ด๋ฒ„์—๋งŒ ์ ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ถŒ์žฅ ๊ตฌ์„ฑ์€ ์ž‘์—… ๊ธฐ๊ฐ„ ๋™์•ˆ Cloud Storage ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹œํ•˜๋ฉฐ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ์ดˆ๊ธฐ ๋งˆ์šดํŠธ ํ›„์—๋Š” ํ™•์ธ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ตœ์ ์˜ ์„ฑ๋Šฅ์„ ์œ„ํ•ด ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ์ฝ๊ธฐ ์ „์šฉ์ด๊ฑฐ๋‚˜ ํŒŒ์ผ ์‹œ์Šคํ…œ ์‹œ๋งจํ‹ฑ์Šค๊ฐ€ ์ƒˆ ํŒŒ์ผ์— ์“ฐ๊ธฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ•ญ์ƒ ์ƒˆ ํŒŒ์ผ์— ์“ฐ๊ธฐ)์ธ ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ AI/ML ์›Œํฌ๋กœ๋“œ๋Š” ์ƒˆ ํŒŒ์ผ์— ์“ฐ๊ธฐ์ž…๋‹ˆ๋‹ค.

    • ์ฒดํฌํฌ์ธํŠธ

    • ํ•™์Šต

    • ์ œ๊ณต

    • jax.jit() ์บ์‹ฑ

  • ์ด ํŽ˜์ด์ง€์˜ ๊ถŒ์žฅ ๊ตฌ์„ฑ์€ ๋ฉ”๋ชจ๋ฆฌ ์–‘์ด ๋งŽ๊ณ  ๋Œ€์—ญํญ์ด ๋†’์€ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ๋Š” ๋Œ€๊ทœ๋ชจ Cloud GPU ๋ฐ Cloud TPU ๋Œ€ํ˜• ๋จธ์‹  ์œ ํ˜•์— ๋Œ€ํ•ด ๊ฒ€์ฆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Cloud GPU์™€ Cloud TPU ๋จธ์‹  ์œ ํ˜•์€ ํ˜ธ์ŠคํŠธ ๋…ธ๋“œ ๊ตฌ์„ฑ ๋‚ด์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฆฌ์†Œ์Šค(์˜ˆ: CPU, ๋ฉ”๋ชจ๋ฆฌ, ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€)์˜ ์ˆ˜๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์„ฑ์˜ ์„ฑ๋Šฅ์— ์ง์ ‘์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • A3 Ultra

    • A3 Mega - 1.8TiB ๋ฉ”๋ชจ๋ฆฌ, 6TiB LSSD

    • Cloud TPU v5e - 188GiB ๋ฉ”๋ชจ๋ฆฌ, LSSD ์—†์Œ

    • Cloud TPU v5p - 448GiB ๋ฉ”๋ชจ๋ฆฌ, LSSD ์—†์Œ

    • Cloud TPU v6(Trillium) - 1.5TiB ๋ฉ”๋ชจ๋ฆฌ, LSSD ์—†์Œ

๊ณ„์ธต์  ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋œ ๋ฒ„ํ‚ท ์‚ฌ์šฉ

ํ•ญ์ƒ ๊ณ„์ธต์  ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋œ ๋ฒ„ํ‚ท์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ๊ณ„์ธต์  ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ„์ธต์  ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ๋ฒ„ํ‚ท ๋‚ด ์ž‘์—…์„ ๋” ํšจ์œจ์ ์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‘๋‹ต ์‹œ๊ฐ„์ด ๋” ๋นจ๋ผ์ง€๊ณ  ๋ชจ๋“  ์ž‘์—…์— ๋Œ€ํ•œ ์ „์ฒด ๋ชฉ๋ก ํ˜ธ์ถœ ์ˆ˜๊ฐ€ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

๊ณ„์ธต์  ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ์ด์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๊ณ„์ธต์  ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์žˆ๋Š” ๋ฒ„ํ‚ท์€ ํ‰๋ฉด ๋ฒ„ํ‚ท์— ๋น„ํ•ด ์ดˆ๊ธฐ ์ดˆ๋‹น ์ฟผ๋ฆฌ ์ˆ˜(QPS)๊ฐ€ ์ตœ๋Œ€ 8๋ฐฐ ๋” ๋†’์Šต๋‹ˆ๋‹ค. ๊ณ„์ธต์  ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” ์ดˆ๋‹น 40,000๊ฐœ์˜ ์ดˆ๊ธฐ ๊ฐ์ฒด ์ฝ๊ธฐ ์š”์ฒญ๊ณผ 8,000๊ฐœ์˜ ์ดˆ๊ธฐ ๊ฐ์ฒด ์“ฐ๊ธฐ ์š”์ฒญ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ดˆ๊ธฐ ์ดˆ๋‹น ๊ฐ์ฒด ์ฝ๊ธฐ ์š”์ฒญ์ด 5,000๊ฐœ์ด๊ณ  ์ดˆ๊ธฐ ๊ฐ์ฒด ์“ฐ๊ธฐ ์š”์ฒญ์ด 1,000๊ฐœ์ธ ์ผ๋ฐ˜์ ์ธ Cloud Storage FUSE ํ”Œ๋žซ ๋ฒ„ํ‚ท๋ณด๋‹ค ํ›จ์”ฌ ๋†’์€ ์ˆ˜์น˜์ž…๋‹ˆ๋‹ค.

  • ๊ณ„์ธต์  ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” Cloud Storage FUSE๋ฅผ ์‚ฌ์šฉํ•œ ์ฒดํฌํฌ์ธํŠธ์— ์›์ž์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์›์ž์  ๋””๋ ‰ํ„ฐ๋ฆฌ ์ด๋ฆ„ ๋ณ€๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ณ„์ธต์  ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋œ ๋ฒ„ํ‚ท์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ํŠนํžˆ ๋Œ€๊ทœ๋ชจ๋กœ ์ฒดํฌํฌ์ธํŠธ๋ฅผ ์ง€์ •ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ML ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ ์ด๋ฆ„ ๋ณ€๊ฒฝ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฒดํฌํฌ์ธํŠธ๋ฅผ ์™„๋ฃŒํ•˜๋Š”๋ฐ, ์ด๋Š” ๋น ๋ฅด๊ณ  ์›์ž์  ๋ช…๋ น์–ด์ด๋ฉฐ ๊ณ„์ธต์  ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋œ ๋ฒ„ํ‚ท์—์„œ๋งŒ ์ง€์›๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ณ„์ธต์  ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋œ ๋ฒ„ํ‚ท์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด ๋น„ HNS ๋ฒ„ํ‚ท์˜ ์ด๋ฆ„ ๋ณ€๊ฒฝ ํ•œ๋„ ๋Š˜๋ฆฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ณ„์ธต์  ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋œ ๋ฒ„ํ‚ท์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๋ ค๋ฉด ๊ณ„์ธต์  ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋œ ๋ฒ„ํ‚ท ๋งŒ๋“ค๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ๊ณ„์ธต์  ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋œ ๋ฒ„ํ‚ท์„ ๋งˆ์šดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ณ„์ธต์  ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋œ ๋ฒ„ํ‚ท ๋งˆ์šดํŠธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ๊ณ„์ธต์  ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” Google Kubernetes Engine ๋ฒ„์ „ 1.31.1-gke.2008000 ์ด์ƒ์—์„œ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

๋””๋ ‰ํ„ฐ๋ฆฌ๋ณ„ ๋งˆ์šดํŠธ ์‹คํ–‰

๋ฒ„ํ‚ท ๋‚ด์˜ ํŠน์ • ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์•ก์„ธ์Šคํ•˜๋ ค๋ฉด ์ „์ฒด ๋ฒ„ํ‚ท์„ ๋งˆ์šดํŠธํ•˜๋Š” ๋Œ€์‹  only-dir ๋งˆ์šดํŠธ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ๋””๋ ‰ํ„ฐ๋ฆฌ๋งŒ ๋งˆ์šดํŠธํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋””๋ ‰ํ„ฐ๋ฆฌ๋ณ„ ๋งˆ์šดํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ํŒŒ์ผ ์ด๋ฆ„์„ ํ™•์ธํ•  ๋•Œ ์ˆœํšŒํ•  ๋””๋ ‰ํ„ฐ๋ฆฌ ์ˆ˜๊ฐ€ ์ œํ•œ๋˜๋ฏ€๋กœ ๋ชฉ๋ก ํ˜ธ์ถœ์ด ๊ฐ€์†ํ™”๋˜๊ณ  ์ „์ฒด ๋ชฉ๋ก ๋ฐ ํ†ต๊ณ„ ํ˜ธ์ถœ ์ˆ˜๊ฐ€ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. LookUpInode ํ˜ธ์ถœ๊ณผ ๋ฒ„ํ‚ท ๋˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ ์•ก์„ธ์Šค ์š”์ฒญ์€ ๊ฒฝ๋กœ์— ์žˆ๋Š” ๊ฐ ํŒŒ์ผ ๋˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋Œ€ํ•ด ๋ชฉ๋ก ๋ฐ ํ†ต๊ณ„ ํ˜ธ์ถœ์„ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

ํŠน์ • ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งˆ์šดํŠธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

Google Kubernetes Engine

Google Kubernetes Engine์šฉ Cloud Storage FUSE CSI ๋“œ๋ผ์ด๋ฒ„์™€ ํ•จ๊ป˜ ๋‹ค์Œ ๋งˆ์šดํŠธ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

volumeHandle: BUCKET_NAME

  • only-dir:DIRECTORY_NAME

๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • BUCKET_NAME์€ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งˆ์šดํŠธํ•  ๋ฒ„ํ‚ท์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

  • DIRECTORY_NAME์€ ๋งˆ์šดํŠธํ•˜๋ ค๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

Compute Engine

gcsfuse --only-dir ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ Compute Engine ๊ฐ€์ƒ ๋จธ์‹ ์— ํŠน์ • ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งˆ์šดํŠธํ•ฉ๋‹ˆ๋‹ค.

gcsfuse --only-dir DIRECTORY_NAME BUCKET_NAME MOUNT_POINT

๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • BUCKET_NAME์€ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งˆ์šดํŠธํ•  ๋ฒ„ํ‚ท์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

  • DIRECTORY_NAME์€ ๋งˆ์šดํŠธํ•˜๋ ค๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

  • MOUNT_POINT๋Š” ๋ฒ„ํ‚ท์ด ๋งˆ์šดํŠธ๋˜๋Š” ๋กœ์ปฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด /path/to/mount/point์ž…๋‹ˆ๋‹ค.

๋””๋ ‰ํ„ฐ๋ฆฌ ๋งˆ์šดํŠธ ์‹คํ–‰ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฒ„ํ‚ท ๋‚ด์— ๋””๋ ‰ํ„ฐ๋ฆฌ ๋งˆ์šดํŠธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์บ์‹œ ๊ฐ’ ๋Š˜๋ฆฌ๊ธฐ

๋ฐ˜๋ณต ์ฝ๊ธฐ์˜ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๋ ค๋ฉด Cloud Storage FUSE๊ฐ€ ๋งŽ์€ ์–‘์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹œํ•˜๊ณ  ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋งŒ๋ฃŒ๋ฅผ ์šฐํšŒํ•˜๋„๋ก ๊ตฌ์„ฑํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด Cloud Storage์— ๋Œ€ํ•œ ๋ฐ˜๋ณต์ ์ธ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์š”์ฒญ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ์„ฑ๋Šฅ์„ ํฌ๊ฒŒ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์บ์‹œ ๊ฐ’์„ ๋Š˜๋ฆฌ๋ฉด ๋ฐ˜๋ณต์ ์ธ Cloud Storage ํ˜ธ์ถœ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ˜๋ณต ์ฝ๊ธฐ๊ฐ€ ์žˆ๋Š” ์›Œํฌ๋กœ๋“œ์™€ ๋ฌดํ•œ TTL์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ๊ธฐ ์ „์šฉ ๋ณผ๋ฅจ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์บ์‹œ ๊ฐ’์„ ๋Š˜๋ฆฌ๊ธฐ ์ „์— ๋‹ค์Œ ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•˜์„ธ์š”.

  • ๋ฌดํ•œ ์ˆ˜๋ช…(TTL)์€ ์ฝ๊ธฐ ์ „์šฉ์ด๊ฑฐ๋‚˜ ์ƒˆ๋กœ ์“ฐ๊ธฐ ์ „์šฉ์ธ ๋ณผ๋ฅจ์—๋งŒ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์บ์‹œ๋Š” ๊ฐ ๋…ธ๋“œ์—์„œ ์ง€์ •๋œ ๋งˆ์šดํŠธ ์ง€์ ์˜ ๋ชจ๋“  ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹œํ•˜๊ณ  Cloud Storage์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์•ก์„ธ์Šค ํ•„์š”์„ฑ์„ ์—†์• ๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์„ฑ์ด ํฐ ๋…ธ๋“œ์—์„œ๋งŒ ํฌ๊ธฐ๊ฐ€ ํฌ๊ฒŒ ์ฆ๊ฐ€ํ•˜๋„๋ก ์‚ฌ์šฉ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์ด ์„น์…˜์˜ ๊ตฌ์„ฑ์€ ์•ก์„ธ์Šค๋œ ๋ชจ๋“  ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋ฌดํ•œ TTL๋กœ ์บ์‹œํ•˜๋ฏ€๋กœ ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋™์ผํ•œ Cloud Storage ๋ฒ„ํ‚ท์—์„œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ ์šฉํ•  ๋•Œ ์ผ๊ด€์„ฑ ๋ณด์žฅ์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: ํŒŒ์ผ ๋ฎ์–ด์“ฐ๊ธฐ ๋˜๋Š” ํŒŒ์ผ ์‚ญ์ œ).

  • ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๊ฐ€ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์บ์‹œ์—์„œ ์†Œ๋น„ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์–‘์ด ํ—ˆ์šฉ๋˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ์ด ์–‘์€ ๊ธฐ๊ฐ€๋ฐ”์ดํŠธ๊นŒ์ง€ ๋Š˜์–ด๋‚  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋งˆ์šดํŠธ๋œ ๋ฒ„ํ‚ท์˜ ํŒŒ์ผ ์ˆ˜์™€ ์‚ฌ์šฉ ์ค‘์ธ ๋งˆ์šดํŠธ ์ง€์  ์ˆ˜์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฐ ํŒŒ์ผ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์•ฝ 1.5KiB ์‚ฌ์šฉํ•˜๋ฉฐ, ๋ฐฑ๋งŒ ๊ฐœ์˜ ํŒŒ์ผ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์•ฝ 1.5GiB ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์บ์‹ฑ ๊ฐœ์š”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹ค์Œ ์•ˆ๋‚ด์— ๋”ฐ๋ผ Cloud Storage FUSE๋ฅผ ๊ตฌ์„ฑํ•˜์—ฌ ๋งŽ์€ ์–‘์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹œํ•˜๊ณ  ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋งŒ๋ฃŒ๋ฅผ ์šฐํšŒํ•˜์„ธ์š”.

CLI ์˜ต์…˜

gcsfuse --metadata-cache-ttl-secs=-1 \
      --stat-cache-max-size-mb=-1 \
      --type-cache-max-size-mb=-1 \
      BUCKET_NAME MOUNT_POINT

๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • BUCKET_NAME์€ ๋ฒ„ํ‚ท์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

  • MOUNT_POINT๋Š” ๋ฒ„ํ‚ท์ด ๋งˆ์šดํŠธ๋˜๋Š” ๋กœ์ปฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด /path/to/mount/point์ž…๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ํŒŒ์ผ

metadata-cache:
stat-cache-max-size-mb: -1
ttl-secs: -1
type-cache-max-size-mb: -1

Google Kubernetes Engine

  mountOptions:
      - metadata-cache:ttl-secs:-1
      - metadata-cache:stat-cache-max-size-mb:-1
      - metadata-cache:type-cache-max-size-mb:-1

Compute Engine

gcsfuse --metadata-cache-ttl-secs=-1 \
      --stat-cache-max-size-mb=-1 \
      --type-cache-max-size-mb=-1 \
      BUCKET_NAME MOUNT_POINT

๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • BUCKET_NAME์€ ๋ฒ„ํ‚ท์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

  • MOUNT_POINT๋Š” ๋ฒ„ํ‚ท์ด ๋งˆ์šดํŠธ๋˜๋Š” ๋กœ์ปฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด /path/to/mount/point์ž…๋‹ˆ๋‹ค.

๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์บ์‹œ ์ž๋™ ์ž…๋ ฅ

์›Œํฌ๋กœ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์บ์‹œ๋ฅผ ๋ฏธ๋ฆฌ ์ฑ„์šฐ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํŠนํžˆ implicit-dirs ๊ตฌ์„ฑ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜๊ณ  Cloud Storage์— ๋Œ€ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํ˜ธ์ถœ ์ˆ˜๊ฐ€ ํฌ๊ฒŒ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. GKE์šฉ Cloud Storage FUSE CSI ๋“œ๋ผ์ด๋ฒ„๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์บ์‹œ ์ž๋™ ์ž…๋ ฅ์„ ์ฒ˜๋ฆฌํ•˜๋Š” API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค(๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ฏธ๋ฆฌ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์บ์‹œ ์ž๋™ ์ž…๋ ฅ ์ฐธ๊ณ ).

๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์บ์‹œ๋ฅผ ๋ฏธ๋ฆฌ ์ฑ„์šฐ๋ ค๋ฉด ๋‹ค์Œ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

Google Kubernetes Engine

gcsfuseMetadataPrefetchOnMount CSI ๋ณผ๋ฅจ ์†์„ฑ ํ”Œ๋ž˜๊ทธ๋ฅผ true๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

Google Kubernetes Engine ๋ฒ„์ „ 1.32.1-gke.1357001 ์ด์ƒ์—์„œ๋Š” PersistentVolume ์ •์˜์˜ volumeAttributes ํ•„๋“œ์— ์žˆ๋Š” gcsfuseMetadataPrefetchOnMount ๊ตฌ์„ฑ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ๋ณผ๋ฅจ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํ”„๋ฆฌํŽ˜์น˜๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. gcsfuseMetadataPrefetchOnMount ๊ตฌ์„ฑ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ initContainer ๋ฉ”์„œ๋“œ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  apiVersion: v1
  kind: PersistentVolume
  metadata:
    name: training-bucket-pv
  spec:
    ...
    csi:
      volumeHandle: BUCKET_NAME
      volumeAttributes:
        ...
        gcsfuseMetadataPrefetchOnMount: "true"
  

๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • BUCKET_NAME์€ ๋ฒ„ํ‚ท์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

์ดˆ๊ธฐํ™” ์ปจํ…Œ์ด๋„ˆ ๋ฆฌ์†Œ์Šค๋Š” ๋ฒ„ํ‚ท ์ฝ˜ํ…์ธ ์™€ ๊ณ„์ธต ๊ตฌ์กฐ ๋ ˆ์ด์•„์›ƒ์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋” ๋†’์€ ํ•œ๋„๋ฅผ ์œ„ํ•ด ์ปค์Šคํ…€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํ”„๋ฆฌํŽ˜์น˜ ์‚ฌ์ด๋“œ์นด ๋ฆฌ์†Œ์Šค๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

Linux

Cloud Storage FUSE ๋งˆ์šดํŠธ ์ง€์ ์—์„œ ls -R ๋ช…๋ น์–ด๋ฅผ ์ˆ˜๋™์œผ๋กœ ์‹คํ–‰ํ•˜์—ฌ ๋ชจ๋“  ํŒŒ์ผ์„ ์žฌ๊ท€์ ์œผ๋กœ ๋‚˜์—ดํ•˜๊ณ  ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์บ์‹œ๋ฅผ ๋ฏธ๋ฆฌ ์ฑ„์›๋‹ˆ๋‹ค.

ls -R MOUNT_POINT > /dev/null

๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

MOUNT_POINT: Cloud Storage FUSE ๋งˆ์šดํŠธ ์ง€์ ์˜ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

Compute Engine

Cloud Storage FUSE ๋งˆ์šดํŠธ ์ง€์ ์—์„œ ls -R ๋ช…๋ น์–ด๋ฅผ ์ˆ˜๋™์œผ๋กœ ์‹คํ–‰ํ•˜์—ฌ ๋ชจ๋“  ํŒŒ์ผ์„ ์žฌ๊ท€์ ์œผ๋กœ ๋‚˜์—ดํ•˜๊ณ  ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์บ์‹œ๋ฅผ ๋ฏธ๋ฆฌ ์ฑ„์›๋‹ˆ๋‹ค.

ls -R MOUNT_POINT > /dev/null

๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

MOUNT_POINT: Cloud Storage FUSE ๋งˆ์šดํŠธ ์ง€์ ์˜ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

ํŒŒ์ผ ์บ์‹ฑ ๋ฐ ๋™์‹œ ๋‹ค์šด๋กœ๋“œ ์‚ฌ์šฉ ์„ค์ •

ํŒŒ์ผ ์บ์‹ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ž์ฃผ ์•ก์„ธ์Šคํ•˜๋Š” ํŒŒ์ผ ๋ฐ์ดํ„ฐ๋ฅผ ๋จธ์‹ ์— ๋กœ์ปฌ๋กœ ์ €์žฅํ•˜์—ฌ ๋ฐ˜๋ณต ์ฝ๊ธฐ๋ฅผ ๊ฐ€์†ํ™”ํ•˜๊ณ  Cloud Storage ๋น„์šฉ์„ ์ ˆ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ ์บ์‹ฑ์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ฉด ๋™์‹œ ๋‹ค์šด๋กœ๋“œ๋„ ์ž๋™์œผ๋กœ ์‚ฌ์šฉ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ๋ณ‘๋ ฌ ๋‹ค์šด๋กœ๋“œ๋Š” ํŒŒ์ผ ์บ์‹œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ํ”„๋ฆฌํŽ˜์น˜ ๋ฒ„ํผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ์ž‘์—…์ž๊ฐ€ ํŒŒ์ผ์„ ๋™์‹œ์— ๋‹ค์šด๋กœ๋“œํ•˜๋ฏ€๋กœ ๋ชจ๋ธ ๋กœ๋“œ ์‹œ๊ฐ„์ด 9๋ฐฐ ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค.

ํŒŒ์ผ ์บ์‹ฑ ๋ฐ ๋™์‹œ ๋‹ค์šด๋กœ๋“œ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜๊ณ  ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๋ ค๋ฉด ํŒŒ์ผ ์บ์‹ฑ ๋™์ž‘ ์‚ฌ์šฉ ์„ค์ • ๋ฐ ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”. ์ƒ˜ํ”Œ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํŒŒ์ผ ์บ์‹ฑ ๋ฐ ๋™์‹œ ๋‹ค์šด๋กœ๋“œ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋Š” ์ƒ˜ํ”Œ ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

ํŒŒ์ผ ์บ์‹ฑ ๋ฐ ๋ณ‘๋ ฌ ๋‹ค์šด๋กœ๋“œ ์‚ฌ์šฉ ์‹œ Cloud GPU ๋ฐ Cloud TPU ๊ณ ๋ ค์‚ฌํ•ญ

ํŒŒ์ผ ์บ์‹œ๋Š” ๋‹ค์Œ ์•ˆ๋‚ด์— ๋”ฐ๋ผ ๋กœ์ปฌ SSD, RAM, Persistent Disk ๋˜๋Š” Google Cloud Hyperdisk์—์„œ ํ˜ธ์ŠคํŒ…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๊ฒฝ์šฐ๋“  ๋ฐ์ดํ„ฐ ๋˜๋Š” ๊ฐœ๋ณ„ ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ์€ max-size-mb ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ œ์–ด๋˜๋Š” ํŒŒ์ผ ์บ์‹œ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์šฉ๋Ÿ‰ ๋‚ด์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Cloud GPU ๊ณ ๋ ค์‚ฌํ•ญ

๋กœ์ปฌ SSD๋Š” ํ•™์Šต ๋ฐ์ดํ„ฐ ๋ฐ ์ฒดํฌํฌ์ธํŠธ ๋‹ค์šด๋กœ๋“œ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. Cloud GPU ๋จธ์‹  ์œ ํ˜•์—๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” SSD ์šฉ๋Ÿ‰์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค(์˜ˆ: SSD 12TiB๊ฐ€ ํฌํ•จ๋œ A4 ๋จธ์‹  ์œ ํ˜•).

  • RAM ๋””์Šคํฌ๋Š” ์‹œ์Šคํ…œ์˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ RAM ์–‘์— ๋น„ํ•ด ํฌ๊ธฐ๊ฐ€ ์ž‘๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋ธ ๊ฐ€์ค‘์น˜๋ฅผ ๋กœ๋“œํ•˜๋Š” ๋ฐ ๊ฐ€์žฅ ์ ํ•ฉํ•œ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • Persistent Disk ๋˜๋Š” Google Cloud Hyperdisk๋Š” ๋ชจ๋‘ ์บ์‹œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Cloud TPU ๊ณ ๋ ค์‚ฌํ•ญ

Cloud TPU๋Š” ๋กœ์ปฌ SSD๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ˆ˜์ • ์—†์ด Cloud TPU์—์„œ ํŒŒ์ผ ์บ์‹ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ณธ ์œ„์น˜๋Š” ๋ถ€ํŒ… ๋ณผ๋ฅจ์ด๋ฉฐ, ์ด๋Š” ๊ถŒ์žฅ๋˜์ง€ ์•Š์œผ๋ฉฐ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋ฉ๋‹ˆ๋‹ค.

๋ถ€ํŒ… ๋ณผ๋ฅจ ๋Œ€์‹  ์„ฑ๋Šฅ์ด ์šฐ์ˆ˜ํ•˜๊ณ  ์ถ”๊ฐ€ ๋น„์šฉ์ด ์—†๋Š” RAM ๋””์Šคํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ RAM ๋””์Šคํฌ๋Š” ํฌ๊ธฐ๊ฐ€ ์ œํ•œ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์œผ๋ฉฐ ์ฒดํฌํฌ์ธํŠธ ํฌ๊ธฐ์™€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ RAM์— ๋”ฐ๋ผ ๋ชจ๋ธ ๊ฐ€์ค‘์น˜ ๋˜๋Š” ์ฒดํฌํฌ์ธํŠธ ๋‹ค์šด๋กœ๋“œ์— ๊ฐ€์žฅ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์บ์‹ฑ ๋ชฉ์ ์œผ๋กœ Persistent Disk์™€ Google Cloud Hyperdisk๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

ํŒŒ์ผ ์บ์‹ฑ ๋ฐ ๋ณ‘๋ ฌ ๋‹ค์šด๋กœ๋“œ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์ƒ˜ํ”Œ ๊ตฌ์„ฑ

๊ธฐ๋ณธ์ ์œผ๋กœ ํŒŒ์ผ ์บ์‹œ๋Š” Google Kubernetes Engine ๋…ธ๋“œ์— ephemeral-storage-local-ssd ๋ชจ๋“œ๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋œ ๊ฒฝ์šฐ ๋กœ์ปฌ SSD๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋กœ์ปฌ SSD๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ(์˜ˆ: Cloud TPU ๋จธ์‹ ) ํŒŒ์ผ ์บ์‹œ๋Š” Google Kubernetes Engine ๋…ธ๋“œ์˜ ๋ถ€ํŒ… ๋””์Šคํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ์ด๋Š” ๊ถŒ์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ RAM ๋””์Šคํฌ๋ฅผ ์บ์‹œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํŒŒ์ผ ์บ์‹ฑ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” RAM์˜ ์–‘๊ณผ ํฌ๋“œ์— ํ•„์š”ํ•œ ์–‘์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

CLI ์˜ต์…˜

gcsfuse --file-cache-max-size-mb: -1 \
      --file-cache-cache-file-for-range-read: true \
      --file-cache-enable-parallel-downloads: true \
      BUCKET_NAME

๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • BUCKET_NAME์€ ๋ฒ„ํ‚ท์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ํŒŒ์ผ

file-cache:
  max-size-mb: -1
  cache-file-for-range-read: true
  enable-parallel-downloads: true

Cloud GPU

mountOptions:
    - file-cache:max-size-mb:-1
    - file-cache:cache-file-for-range-read:true
    - file-cache:enable-parallel-downloads:true

# RAM disk file cache if LSSD not available. Uncomment to use
# volumes:
#   - name: gke-gcsfuse-cache
#     emptyDir:
#       medium: Memory

Cloud TPU

mountOptions:
    - file-cache:max-size-mb:-1
    - file-cache:cache-file-for-range-read:true
    - file-cache:enable-parallel-downloads:true

volumes:
    - name: gke-gcsfuse-cache
      emptyDir:
        medium: Memory

Compute Engine

gcsfuse --file-cache-max-size-mb: -1 \
      --file-cache-cache-file-for-range-read: true \
      --file-cache-enable-parallel-downloads: true \
      BUCKET_NAME MOUNT_POINT

๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • BUCKET_NAME์€ ๋ฒ„ํ‚ท์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

  • MOUNT_POINT๋Š” ๋ฒ„ํ‚ท์ด ๋งˆ์šดํŠธ๋˜๋Š” ๋กœ์ปฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด /path/to/mount/point์ž…๋‹ˆ๋‹ค.

์Œ์ˆ˜ ํ†ต๊ณ„ ์บ์‹œ ํ•ญ๋ชฉ ์‚ฌ์šฉ ์ค‘์ง€

๊ธฐ๋ณธ์ ์œผ๋กœ Cloud Storage FUSE๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํŒŒ์ผ์˜ ํ•ญ๋ชฉ์ธ ์Œ์ˆ˜ ํ†ต๊ณ„ ํ•ญ๋ชฉ์„ 5์ดˆ์˜ TTL๋กœ ์บ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋ถ„์‚ฐ ์ฒดํฌํฌ์ธํŠธ์™€ ๊ฐ™์ด ํŒŒ์ผ์ด ์ž์ฃผ ์ƒ์„ฑ๋˜๊ฑฐ๋‚˜ ์‚ญ์ œ๋˜๋Š” ์›Œํฌ๋กœ๋“œ์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์บ์‹œ๋œ ํ•ญ๋ชฉ์ด ๋น ๋ฅด๊ฒŒ ์˜ค๋ž˜๋˜์–ด ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด negative-ttl-secs ๊ตฌ์„ฑ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•™์Šต, ์ œ๊ณต, ์ฒดํฌํฌ์ธํŠธ ์›Œํฌ๋กœ๋“œ์˜ ๋ถ€์ • ํ†ต๊ณ„ ์บ์‹œ๋ฅผ ์‚ฌ์šฉ ์ค‘์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ์•ˆ๋‚ด์— ๋”ฐ๋ผ ๋ถ€์ • ํ†ต๊ณ„ ์บ์‹œ๋ฅผ ์‚ฌ์šฉ ์ค‘์ง€ํ•˜์„ธ์š”.

CLI ์˜ต์…˜

gcsfuse --metadata-cache-negative-ttl-secs: 0 \
  BUCKET_NAME

๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • BUCKET_NAME์€ ๋ฒ„ํ‚ท์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ํŒŒ์ผ

metadata-cache:
 negative-ttl-secs: 0

Google Kubernetes Engine

mountOptions:
    - metadata-cache:negative-ttl-secs:0

Compute Engine

gcsfuse --metadata-cache-negative-ttl-secs: 0 \
  BUCKET_NAME MOUNT_POINT

๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • BUCKET_NAME์€ ๋ฒ„ํ‚ท์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

  • MOUNT_POINT๋Š” ๋ฒ„ํ‚ท์ด ๋งˆ์šดํŠธ๋˜๋Š” ๋กœ์ปฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด /path/to/mount/point์ž…๋‹ˆ๋‹ค.

์ŠคํŠธ๋ฆฌ๋ฐ ์“ฐ๊ธฐ ์‚ฌ์šฉ ์„ค์ •

์ŠคํŠธ๋ฆฌ๋ฐ ์“ฐ๊ธฐ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ž‘์„ฑ๋  ๋•Œ Cloud Storage์— ์ง์ ‘ ์—…๋กœ๋“œํ•˜๋ฏ€๋กœ ์ง€์—ฐ ์‹œ๊ฐ„๊ณผ ๋””์Šคํฌ ๊ณต๊ฐ„ ์‚ฌ์šฉ๋Ÿ‰์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. ์ด๋Š” ์ฒดํฌํฌ์ธํŠธ์™€ ๊ฐ™์€ ๋Œ€๊ทœ๋ชจ ์ˆœ์ฐจ ์“ฐ๊ธฐ์— ํŠนํžˆ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆฌ๋ฐ ์“ฐ๊ธฐ๋Š” Cloud Storage FUSE ๋ฒ„์ „ 3.0 ์ด์ƒ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ŠคํŠธ๋ฆฌ๋ฐ ์“ฐ๊ธฐ๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ ์„ค์ •๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด์— ๋”ฐ๋ผ ์‚ฌ์šฉ ์„ค์ •ํ•˜์„ธ์š”. ์ŠคํŠธ๋ฆฌ๋ฐ ์“ฐ๊ธฐ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด Google Kubernetes Engine ๋ฒ„์ „ 1.32.1-gke.1729000 ์ด์ƒ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Cloud Storage FUSE ๋ฒ„์ „ 3.0์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

CLI ์˜ต์…˜

gcsfuse --enable-streaming-writes: true \
  BUCKET_NAME

๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • BUCKET_NAME์€ ๋ฒ„ํ‚ท์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ํŒŒ์ผ

write:
 enable-streaming-writes: true

Google Kubernetes Engine

mountOptions:
    - write:enable-streaming-writes:true

Compute Engine

gcsfuse --enable-streaming-writes: true \
  BUCKET_NAME MOUNT_POINT

๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • BUCKET_NAME์€ ๋ฒ„ํ‚ท์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

  • MOUNT_POINT๋Š” ๋ฒ„ํ‚ท์ด ๋งˆ์šดํŠธ๋˜๋Š” ๋กœ์ปฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด /path/to/mount/point์ž…๋‹ˆ๋‹ค.

์ปค๋„ ๋ฏธ๋ฆฌ ์ฝ๊ธฐ ํฌ๊ธฐ ์ฆ๊ฐ€

์„œ๋น™ ๋ฐ ์ฒดํฌํฌ์ธํŠธ ๋ณต์›๊ณผ ๊ฐ™์ด ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ์˜ ์ˆœ์ฐจ ์ฝ๊ธฐ๊ฐ€ ์ฃผ๋กœ ํฌํ•จ๋œ ์›Œํฌ๋กœ๋“œ์˜ ๊ฒฝ์šฐ ๋ฏธ๋ฆฌ ์ฝ๊ธฐ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆฌ๋ฉด ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ž‘์—…์€ ๋กœ์ปฌ ๋จธ์‹ ์—์„œ read_ahead_kb Linux ์ปค๋„ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ Linux ๋ฐฐํฌ์— ์„ค์ •๋œ ๊ธฐ๋ณธ๊ฐ’์ธ 128KB๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  read_ahead_kb ์ปค๋„ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ 1MB๋กœ ๋Š˜๋ฆฌ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. Compute Engine ์ธ์Šคํ„ด์Šค์˜ ๊ฒฝ์šฐ ์ปค๋„ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ๋Š˜๋ฆฌ๋ ค๋ฉด sudo ๋˜๋Š” root ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

ํŠน์ • Cloud Storage FUSE ๋งˆ์šดํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ read_ahead_kb ์ปค๋„ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ 1MB๋กœ ๋Š˜๋ฆฌ๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”. ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ๋ฒ„ํ‚ท์„ Cloud Storage FUSE์— ๋งˆ์šดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ปค๋„ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์ฆ๊ฐ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Google Kubernetes Engine

mountOptions:

  • read_ahead_kb=1024

Compute Engine

export MOUNT_POINT=/path/to/mount/point
echo 1024 | sudo tee /sys/class/bdi/0:$(stat -c "%d" $MOUNT_POINT)/read_ahead_kb

๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

MOUNT_POINT: Cloud Storage FUSE ๋งˆ์šดํŠธ ์ง€์ ์˜ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

์ค‘๋ณต ๊ฒ€์‚ฌ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ณด์•ˆ ํ† ํฐ ์„œ๋น„์Šค ์‚ฌ์šฉ ์ค‘์ง€

Google Kubernetes Engine์šฉ Cloud Storage FUSE CSI ๋“œ๋ผ์ด๋ฒ„์—๋Š” ๋ฒ„ํ‚ท๊ณผ GKE ์„œ๋น„์Šค ๊ณ„์ • ๊ฐ„์˜ ์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ ๋ฐ”์ธ๋”ฉ์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ž˜๋ชป๋œ ๊ตฌ์„ฑ์œผ๋กœ ์ธํ•œ ํฌ๋“œ ๋ณต๊ตฌ ๊ฐ€๋Šฅ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ์•ก์„ธ์Šค ํ™•์ธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๋Œ€๊ทœ๋ชจ๋กœ ๊ธฐ๋ณธ ๋ณด์•ˆ ํ† ํฐ ์„œ๋น„์Šค API ํ• ๋‹น๋Ÿ‰์— ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜๊ตฌ ๋ณผ๋ฅจ CSI ๋“œ๋ผ์ด๋ฒ„์˜ skipCSIBucketAccessCheck ๋ณผ๋ฅจ ์†์„ฑ์„ ์„ค์ •ํ•˜์—ฌ ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉ ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํฌ๋“œ์˜ ๋งˆ์šดํŠธ ์‹คํŒจ๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด GKE ์„œ๋น„์Šค ๊ณ„์ •์— ํƒ€๊ฒŸ Cloud Storage ๋ฒ„ํ‚ท์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ Google Kubernetes Engine ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ 6,000๊ฐœ๊ฐ€ ๋„˜๋Š” ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ๋œ ๊ฒฝ์šฐ ๋ณด์•ˆ ํ† ํฐ ์„œ๋น„์Šค ํ• ๋‹น๋Ÿ‰์„ ๊ธฐ๋ณธ๊ฐ’์ธ 6000 ์ด์ƒ์œผ๋กœ ๋Š˜๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๊ทœ๋ชจ ๋ฐฐํฌ์—์„œ ๋Š˜๋ฆฌ์ง€ ์•Š์œผ๋ฉด 429 ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ• ๋‹น๋Ÿ‰ ๋ฐ ํ•œ๋„ ํŽ˜์ด์ง€๋ฅผ ํ†ตํ•ด ๋ณด์•ˆ ํ† ํฐ ์„œ๋น„์Šค ํ• ๋‹น๋Ÿ‰์„ ๋Š˜๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ• ๋‹น๋Ÿ‰์„ ๋งˆ์šดํŠธ ์ˆ˜์™€ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํด๋Ÿฌ์Šคํ„ฐ์— ๋งˆ์šดํŠธ๊ฐ€ 10,000๊ฐœ ์žˆ๋Š” ๊ฒฝ์šฐ ํ• ๋‹น๋Ÿ‰์„ 10000์œผ๋กœ ๋Š˜๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.

skipCSIBucketAccessCheck ๋ณผ๋ฅจ ์†์„ฑ์„ ์„ค์ •ํ•˜๋ ค๋ฉด ๋‹ค์Œ ์ƒ˜ํ”Œ ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

  volumeAttributes:
      - skipCSIBucketAccessCheck: "true"
   

๊ธฐํƒ€ ์„ฑ๋Šฅ ๊ณ ๋ ค์‚ฌํ•ญ

์•ž์„œ ์„ค๋ช…ํ•œ ๊ธฐ๋ณธ ์ตœ์ ํ™” ์™ธ์—๋„ ์—ฌ๋Ÿฌ ์š”์ธ์ด Cloud Storage FUSE์˜ ์ „๋ฐ˜์ ์ธ ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์„น์…˜์—์„œ๋Š” Cloud Storage FUSE๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๊ณ ๋ คํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ์ถ”๊ฐ€ ์„ฑ๋Šฅ ๊ณ ๋ ค์‚ฌํ•ญ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

HNS๊ฐ€ ์•„๋‹Œ ๋ฒ„ํ‚ท์˜ ์ด๋ฆ„ ๋ณ€๊ฒฝ ํ•œ๋„ ์ฆ๊ฐ€

์ฒดํฌํฌ์ธํŠธ ์›Œํฌ๋กœ๋“œ๋Š” ํ•ญ์ƒ ๊ณ„์ธต์  ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋œ ๋ฒ„ํ‚ท์œผ๋กœ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์›์ž์ ์ด๊ณ  ๋น ๋ฅธ ์ด๋ฆ„ ๋ณ€๊ฒฝ๊ณผ ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ์˜ ๋†’์€ QPS ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ด๋ฆ„ ๋ณ€๊ฒฝ์ด ์›์ž์ ์ด์ง€ ์•Š๊ณ  ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆด ์œ„ํ—˜์„ ๊ฐ์ˆ˜ํ•œ๋‹ค๋ฉด ๊ณ„์ธต์  ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์—†๋Š” ๋ฒ„ํ‚ท์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฒดํฌํฌ์ธํŠธ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ rename-dir-limit ๊ตฌ์„ฑ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ์‹œ์ ์— ๋””๋ ‰ํ„ฐ๋ฆฌ ์ด๋ฆ„ ๋ณ€๊ฒฝ ์ž‘์—…์— ํฌํ•จ๋œ ํŒŒ์ผ ๋˜๋Š” ์ž‘์—… ์ˆ˜๋ฅผ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฒดํฌํฌ์ธํŠธ ์‹คํŒจ๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด rename-dir-limit ๊ตฌ์„ฑ ์˜ต์…˜์„ ๋†’์€ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. Cloud Storage FUSE๋Š” ํ”Œ๋žซ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๊ฐ์ฒด๋Š” ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ด๋ฆ„ ๋ฐ”๊พธ๊ธฐ ์ž‘์—…์—๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ ๋‚ด์˜ ๋ชจ๋“  ๊ฐœ๋ณ„ ํŒŒ์ผ์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ณ  ์‚ญ์ œํ•˜๋Š” ์ž‘์—…์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. rename-dir-limit ๊ตฌ์„ฑ ์˜ต์…˜์„ ์„ค์ •ํ•˜์—ฌ ์ด๋ฆ„ ๋ฐ”๊พธ๊ธฐ ์ž‘์—…์˜ ์˜ํ–ฅ์„ ๋ฐ›๋Š” ํŒŒ์ผ ์ˆ˜๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ์•ˆ๋‚ด์— ๋”ฐ๋ผ rename-dir-limit ๊ตฌ์„ฑ ์˜ต์…˜์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

CLI ์˜ต์…˜

gcsfuse --rename-dir-limit: 200000 \
  BUCKET_NAME

๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • BUCKET_NAME์€ ๋ฒ„ํ‚ท์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ํŒŒ์ผ

file-system:
 rename-dir-limit: 200000

Google Kubernetes Engine

mountOptions:
    - rename-dir-limit=200000

Compute Engine

gcsfuse --rename-dir-limit: 200000 \
  BUCKET_NAME MOUNT_POINT

๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • BUCKET_NAME์€ ๋ฒ„ํ‚ท์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

  • MOUNT_POINT๋Š” ๋ฒ„ํ‚ท์ด ๋งˆ์šดํŠธ๋˜๋Š” ๋กœ์ปฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด /path/to/mount/point์ž…๋‹ˆ๋‹ค.

์ปค๋„ ๋ชฉ๋ก ์บ์‹ฑ

๋ชฉ๋ก ์บ์‹œ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ฐ ํŒŒ์ผ ๋ชฉ๋ก ๋˜๋Š” ๋ชฉ๋ก ์ž‘์—… ์†๋„๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ์‘๋‹ต์ธ ls๋ฅผ ์œ„ํ•œ ์บ์‹œ์ž…๋‹ˆ๋‹ค. Cloud Storage FUSE์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ํ†ต๊ณ„ ๋ฐ ์œ ํ˜• ์บ์‹œ์™€ ๋‹ฌ๋ฆฌ ๋ชฉ๋ก ์บ์‹œ๋Š” ์ปค๋„์˜ ํŽ˜์ด์ง€ ์บ์‹œ์— ๋ณด๊ด€๋˜๋ฉฐ ๋ฉ”๋ชจ๋ฆฌ ๊ฐ€์šฉ์„ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ปค๋„์— ์˜ํ•ด ์ œ์–ด๋ฉ๋‹ˆ๋‹ค.

์ปค๋„ ๋ชฉ๋ก ์บ์‹ฑ์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์œ ์šฉํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ชฉ๋ก์ด ๋ฐ˜๋ณต๋˜๋Š” ์›Œํฌ๋กœ๋“œ: ์ด ๊ตฌ์„ฑ์€ AI/ML ํ•™์Šต ์‹คํ–‰๊ณผ ๊ฐ™์ด ์ „์ฒด ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ชฉ๋ก์„ ์ž์ฃผ ์‹คํ–‰ํ•˜๋Š” ์›Œํฌ๋กœ๋“œ์— ํŠนํžˆ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์„œ๋น™ ๋ฐ ํ•™์Šต ์›Œํฌ๋กœ๋“œ ๋ชจ๋‘์— ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ฝ๊ธฐ ์ „์šฉ ๋งˆ์šดํŠธ: ์ผ๊ด€์„ฑ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ์ฝ๊ธฐ ์ „์šฉ ๋งˆ์šดํŠธ์™€ ํ•จ๊ป˜ ๋ชฉ๋ก ์บ์‹ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ปค๋„ ๋ชฉ๋ก ์บ์‹ฑ์„ ์‚ฌ์šฉ ์„ค์ •ํ•  ๋•Œ๋Š” ์ฃผ์˜ํ•ด์•ผ ํ•˜๋ฉฐ, ์ž‘์—… ์‹คํ–‰ ์ค‘์— ๋””๋ ‰ํ„ฐ๋ฆฌ ์ฝ˜ํ…์ธ  ๋ณ€๊ฒฝ์ด ์˜ˆ์ƒ๋˜์ง€ ์•Š๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ์‹ค์ œ๋กœ ์ฝ๊ธฐ ์ „์šฉ์ธ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด TTL์ด -1๋กœ ์„ค์ •๋œ ๊ฒฝ์šฐ ํŠนํžˆ ๋กœ์ปฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ณผ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ํด๋ผ์ด์–ธํŠธ 1์€ directoryA๋ฅผ ๋‚˜์—ดํ•˜๋ฏ€๋กœ directoryA๊ฐ€ ์ปค๋„ ๋ชฉ๋ก ์บ์‹œ์— ์ƒ์ฃผํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ 2๊ฐ€ Cloud Storage ๋ฒ„ํ‚ท์˜ directoryA ์•„๋ž˜์— fileB๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ 1์€ directoryA์—์„œ fileB๋ฅผ ์ง€์†์ ์œผ๋กœ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ปค๋„ ๋ชฉ๋ก ์บ์‹œ ํ•ญ๋ชฉ์„ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด๋ฉฐ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ด๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ ๋ชฉ๋ก์ด ๋กœ์ปฌ ์ปค๋„ ๋ชฉ๋ก ์บ์‹œ์—์„œ ์ง€์†์ ์œผ๋กœ ์ œ๊ณต๋˜๋ฏ€๋กœ ํด๋ผ์ด์–ธํŠธ 1์—๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ƒˆ ํŒŒ์ผ์ด ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ํด๋ผ์ด์–ธํŠธ 1์ด ์‹œ๊ฐ„ ์ดˆ๊ณผ๋˜๊ณ  ํ”„๋กœ๊ทธ๋žจ์ด ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์•ˆ๋‚ด์— ๋”ฐ๋ผ ๋ชฉ๋ก ์บ์‹ฑ์„ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

CLI ์˜ต์…˜

gcsfuse --kernel-list-cache-ttl-secs: -1 \
  BUCKET_NAME

๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • BUCKET_NAME์€ ๋ฒ„ํ‚ท์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ํŒŒ์ผ

file-system:
 kernel-list-cache-ttl-secs: -1

Google Kubernetes Engine

mountOptions:
    - file-system:kernel-list-cache-ttl-secs:-1

Compute Engine

gcsfuse --kernel-list-cache-ttl-secs: -1 \
  BUCKET_NAME MOUNT_POINT

๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • BUCKET_NAME์€ ๋ฒ„ํ‚ท์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

  • MOUNT_POINT๋Š” ๋ฒ„ํ‚ท์ด ๋งˆ์šดํŠธ๋˜๋Š” ๋กœ์ปฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด /path/to/mount/point์ž…๋‹ˆ๋‹ค.

file-system:kernel-list-cache-ttl-secs ๋งˆ์šดํŠธ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐ’์€ ๋‹ค์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

  • ์–‘์ˆ˜ ๊ฐ’์€ ์ปค๋„์˜ ํŽ˜์ด์ง€ ์บ์‹œ์— ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ชฉ๋ก ์‘๋‹ต์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ TTL์„ ์ดˆ ๋‹จ์œ„๋กœ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

  • -1 ๊ฐ’์€ ํ•ญ๋ชฉ ๋งŒ๋ฃŒ๋ฅผ ์šฐํšŒํ•˜๊ณ  ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ์บ์‹œ์—์„œ ๋ชฉ๋ก ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

Cloud Storage FUSE์™€ ํ•จ๊ป˜ JAX ์˜๊ตฌ ์ปดํŒŒ์ผ(JIT) ์บ์‹œ ์‚ฌ์šฉ

JAX๋Š” ์ปดํŒŒ์ผ๋œ ํ•จ์ˆ˜ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์ €์žฅํ•˜๋Š” ์„ ํƒ์  ์˜๊ตฌ ์ปดํŒŒ์ผ ์บ์‹œ์ธ ์ ์‹œ(JIT) ์บ์‹œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ค‘๋ณต ์ปดํŒŒ์ผ ๋‹จ๊ณ„๋ฅผ ๋ฐฉ์ง€ํ•˜์—ฌ ํ›„์† ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ์†๋„๋ฅผ ํฌ๊ฒŒ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

JIT ์บ์‹ฑ์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด ๋‹ค์Œ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์ตœ์‹  ๋ฒ„์ „์˜ JAX ์‚ฌ์šฉ: ์ตœ์‹  ์บ์‹œ ๊ธฐ๋Šฅ๊ณผ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด JAX ๋ฒ„์ „ 0.5.1 ์ด์ƒ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ์บ์‹œ ์šฉ๋Ÿ‰ ์ตœ๋Œ€ํ™”: ์บ์‹œ ์‚ญ์ œ๋กœ ์ธํ•œ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ํŠนํžˆ ๊ธฐ๋ณธ ์„ค์ •์„ ์žฌ์ •์˜ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๋ฌด์ œํ•œ ์บ์‹œ ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜์—ฌ ์ด๋ฅผ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    export JAX_COMPILATION_CACHE_MAX_SIZE=-1
    
  • ์ฒดํฌํฌ์ธํŠธ ํฌ๋“œ YAML ํ™•์ธ: JAX JIT ์บ์‹œ์˜ ๋งˆ์šดํŠธ ์ง€์ ์— ์ฒดํฌํฌ์ธํŠธ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„