์ด ํ์ด์ง์์๋ ์ฃผ์ Cloud Storage FUSE ๊ธฐ๋ฅ๊ณผ ๊ตฌ์ฑ์ ์ฌ์ฉํ์ฌ Cloud Storage FUSE๋ฅผ ๊ฐ์ ํ์ฌ ํนํ ํ์ต, ์๋น์ค, ์ฒดํฌํฌ์ธํธ์ ๊ฐ์ ์ธ๊ณต์ง๋ฅ ๋ฐ ๋จธ์ ๋ฌ๋(AI/ML) ์ํฌ๋ก๋์ ์ต๋ ์ฒ๋ฆฌ๋๊ณผ ์ต์ ์ ์ฑ๋ฅ์ ๋ฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์๋ดํฉ๋๋ค.
๊ณ ๋ ค์ฌํญ
์ด ํ์ด์ง์์ ๊ถ์ฅํ๋ ๊ตฌ์ฑ์ ์ ์ฉํ๊ธฐ ์ ์ ๋ค์ ์ฌํญ์ ๊ณ ๋ คํ์ธ์.
์ด ํ์ด์ง์ ๊ถ์ฅ ๊ตฌ์ฑ์ ๋ค์ ์ธ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์ ์ฉํ ์ ์์ต๋๋ค.
Google Kubernetes Engine๋ง ํด๋น: ์ํ Google Kubernetes Engine YAML ํ์ผ
์ต์ ๋ฒ์ ์ 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 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 ์บ์์ ๋ง์ดํธ ์ง์ ์ ์ฒดํฌํฌ์ธํธ ๊ตฌ์ฑ์ ์ฌ์ฉํฉ๋๋ค.
๋ค์ ๋จ๊ณ
์ํ Google Kubernetes Engine YAML ํ์ผ์ ์ฌ์ฉํ์ฌ ์กฐ์ ๊ถ์ฅ์ฌํญ์ ๊ตฌ์ฑํฉ๋๋ค.
Cloud Storage FUSE ๊ตฌ์ฑ ํ์ผ ์ต์ ์ ๋ํด ์์ธํ ์์๋ณด์ธ์.
Cloud Storage FUSE CLI ์ต์ ์ ๋ํด ์์ธํ ์์๋ณด์ธ์.