Skip to content

leelabsg/CloudComparison

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

CloudComparison

๋„ค์ด๋ฒ„ ํด๋ผ์šฐ๋“œ

๋„ค์ด๋ฒ„ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ ์•„ํ‚คํ…์ณ

[๋„ค์ด๋ฒ„ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ ์•„ํ‚คํ…์ณ]
  • ๋„ค์ด๋ฒ„ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์˜ ์•„ํ‚คํ…์ณ๋Š” ์œ„ ๊ทธ๋ฆผ๊ณผ ๊ฐ™๋‹ค.

  • ํ˜ธ์ŠคํŠธ ์„œ๋ฒ„: "ssh -p 1028 root@27.96.129.251" ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ ‘์† ๊ฐ€๋Šฅ. ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” "flfoq"(๋ฆฌ๋žฉ). ์ŠคํŽ™์€ [Standard] 2vCPU, 4GB Mem, 50GB Disk [g1]์ด๋ฉฐ, VM ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์„ ์œ„ํ•ด ์“ฐ์ธ๋‹ค.

  • ์˜ค๋ธŒ์ ํŠธ ์Šคํ† ๋ฆฌ์ง€: SAIGE๋ฅผ ๋Œ๋ฆด ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ์ €์žฅ๊ณต๊ฐ„. aws cli๋ฅผ ํ˜ธํ™˜ํ•œ๋‹ค. "https://cli-gov.ncloud-docs.com/docs/guide-objectstorage" ์ฐธ๊ณ 

  • VM ์ธ์Šคํ„ด์Šค: ์‹ค์ œ SAIGE๋ฅผ ๋Œ๋ฆฌ๊ธฐ ์œ„ํ•ด ์ƒ์„ฑ๋˜๋Š” VM ์ธ์Šคํ„ด์Šค. ๊นƒํ—ˆ๋ธŒ CloudComparison์˜ "/NCP_SAIGE/NCP_Init/NCP_InitCall.sh" ๋Š” ์„œ๋ฒ„ ์ด๋ฏธ์ง€ Ubuntu Server 18.04 (64-bit)์ธ, [Standard] 4vCPU, 32GB Mem, 50GB Disk [g1] ์ŠคํŽ™์˜ VM ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

  • ๋‹ค๋งŒ, Ubuntu Server 18.04 (64-bit)๋Š” ์ œ์กฐ์‚ฌ ์ธก์—์„œ ์—…๋ฐ์ดํŠธ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๊ธฐ๋กœ ํ•˜๋ฉด์„œ ๋„ค์ด๋ฒ„ ์ธก๋„ ์„œ๋น„์Šค ์ข…๋ฃŒ๋ฅผ ๊ณ ๋ คํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.

    ์•ˆ๋…•ํ•˜์„ธ์š”. ๋„ค์ด๋ฒ„ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

    Classic ํ™˜๊ฒฝ ubuntu-18.04 ์˜ ๊ฒฝ์šฐ ์ œ์กฐ์‚ฌ์—์„œ ์ด๋ฏธ EOS ๋œ ์„œ๋ฒ„ ์ด๋ฏธ์ง€์ด๋‚˜, ๋„ค์ด๋ฒ„ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์—์„œ ํŒ๋งค์ข…๋ฃŒ(Fade-out)๋œ OS๋Š” ์•„๋‹ˆ๋ฏ€๋กœ ํ˜„์žฌ ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

    ํŒ๋งค์ข…๋ฃŒ(Fade-out)๋œ OS๋Š” ์„œ๋ฒ„ ์ƒ์„ฑ ์ฝ˜์†”์—์„œ ๋…ธ์ถœ๋˜์ง€ ์•Š์œผ๋‚˜ ๊ธฐ์กด ์ƒ์„ฑ๋œ ์„œ๋ฒ„ ์ด๋ฏธ์ง€๋Š” ์‚ฌ์šฉ์ด ๊ณ„์† ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

    ubuntu-18.04 ๋Š” ํ˜„์žฌ ์ƒ์„ฑ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค๋งŒ ์ €ํฌ์ชฝ์—์„œ ์„œ๋น„์Šค ์ข…๋ฃŒ๊ฐ€ ๊ฒฐ์ •๋˜๋ฉด ์ƒ์„ฑ์ด ๋ถˆ๊ฐ€ํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ž์„ธํ•œ ์‚ฌํ•ญ์€ ์•„๋ž˜ FAQ๋ฅผ ์ฐธ๊ณ  ๋ฐ”๋ž๋‹ˆ๋‹ค. https://www.ncloud.com/support/faq/prod/2870

    ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

  • ๋ธ”๋ก ์Šคํ† ๋ฆฌ์ง€: VM ์ธ์Šคํ„ด์Šค์— ์ง์ ‘์ ์œผ๋กœ ๋ถ€์ฐฉ์ด ๊ฐ€๋Šฅํ•œ ์Šคํ† ๋ฆฌ์ง€. ์ธ์Šคํ„ด์Šค ์‹œ์ž‘ ์‹œ ์ƒ์„ฑํ•˜๊ณ , ์ธ์Šคํ„ด์Šค ์œ„์— ๋งˆ์šดํŠธํ•˜๋ฉฐ, ์ธ์Šคํ„ด์Šค ๋ฐ˜ํ™˜ ์ „์— ์–ธ๋งˆ์šดํŠธํ•˜๊ณ , ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋งˆ์šดํŠธ, ์–ธ๋งˆ์šดํŠธ ๊ด€๋ จ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž๋ฃŒ๋Š” "https://guide-gov.ncloud-docs.com/docs/compute-compute-4-1-v2" ์ฐธ๊ณ . init script์— cli๋กœ ์–ธ๋งˆ์šดํŠธ ๋˜๊ฒŒ ํ•˜์˜€๋‹ค. cli๋ฅผ ์ด์šฉํ•˜์—ฌ ์Šคํ† ๋ฆฌ์ง€ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ "/NCP_SAIGE/NCP_Init/NCP_InitCall.sh" ์— ์žˆ๋‹ค.

Some useful information about Naver Cloud Platform

  • ๋„ค์ด๋ฒ„ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์˜ ์„œ๋น„์Šค๋Š” ํฌ๊ฒŒ VPC์™€ classic์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋‹ค.
    • classic ์žฅ์  ์š”์•ฝ
      • ์„œ๋กœ ๋‹ค๋ฅธ ๊ณ„์ •์˜ ์„œ๋ฒ„๋“ค ๊ฐ„์— ์‚ฌ์„ค ํ†ต์‹  ๊ฐ€๋Šฅ
      • ๋ฆฌ์ „๊ฐ„ ์„œ๋ฒ„๋“ค์˜ ์‚ฌ์„ค ํ†ต์‹  ๊ฐ€๋Šฅ (ํ•œ๊ตญ, ๋ฏธ๊ตญ, ์‹ฑ๊ฐ€ํฌ๋ฅด, ํ™์ฝฉ, ์ผ๋ณธ, ๋…์ผ)
      • ๋‹ค์–‘ํ•œ ์„ค์น˜ํ˜• ์„œ๋ฒ„ ์ด๋ฏธ์ง€ ์ด์šฉ ๊ฐ€๋Šฅ
    • VPC ์žฅ์  ์š”์•ฝ
      • ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋ถ„๋ฆฌ๋œ Network
      • ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ Network ์„ค๊ณ„ ๊ฐ€๋Šฅ
      • ๊ธฐ์กด ๊ณ ๊ฐ์˜ ๋ฐ์ดํ„ฐ์„ผํ„ฐ ๋„คํŠธ์›Œํฌ์™€ ์œ ์‚ฌํ•˜๊ฒŒ ๊ตฌํ˜„ ๊ฐ€๋Šฅ
      • ์ข€ ๋” ์ƒ์„ธํ•˜๊ณ , ๋†’์€ ์ˆ˜์ค€์˜ ๋ณด์•ˆ ์„ค์ • ๊ฐ€๋Šฅ
    • (์ถœ์ฒ˜: "https://docs.3rdeyesys.com/management/ncloud_management_classic_vs_vpc_guide.html")
  • cli ๊ฐ€์ด๋“œ๋Š” "https://cli.ncloud-docs.com/docs/home" ๋ฅผ ์ฐธ๊ณ . VPC์™€ classic์— ๋”ฐ๋ผ cli๊ฐ€ ์ฐจ์ด๊ฐ€ ๋‚˜๋Š” ์ ์— ๋Œ€ํ•ด์„œ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

VPC cli ์˜ˆ: ./ncloud vserver getServerInstanceList --regionCode KR --vpcNo ***04 --serverInstanceNoList 4299 --serverName test- --serverInstanceStatusCode RUN --baseBlockStorageDiskTypeCode NET --baseBlockStorageDiskDetailTypeCode SSD --ip ..111.215 --placementGroupNoList ***61

classic cli ์˜ˆ: ./ncloud server getServerInstanceList --serverInstanceStatusCode NSTOP --regionNo 2

  • ํ˜„์žฌ ํ˜ธ์ŠคํŠธ ์„œ๋ฒ„์—๋Š” cli๊ฐ€ ๊น”๋ ค ์žˆ์ง€๋งŒ, ๋‹ค๋ฅธ ํ˜ธ์ŠคํŠธ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜๋ ค๋ฉด, cli๋ฅผ "https://cli.ncloud-docs.com/docs/guide-clichange" ์—์„œ ๋‹ค์šด๋ฐ›์€ ๋’ค์— ํ˜ธ์ŠคํŠธ ์„œ๋ฒ„๋กœ ์˜ฎ๊ฒจ์•ผ ํ•œ๋‹ค.

  • ํ˜„์žฌ ํ˜ธ์ŠคํŠธ ์„œ๋ฒ„๋Š” classic ์„œ๋ฒ„์ด๊ณ , "NCP_SAIGE/NCP_Init/NCP_InitCall.sh" ์€ classic ์„œ๋ฒ„๋ฅผ ์ƒ์„ฑ๋˜๋„๋ก ํ•˜๊ณ  ์žˆ๋‹ค.

  • cli๋ฅผ ์ด์šฉํ•  ๋•Œ์—๋Š” cli๊ฐ€ ์œ„์น˜ํ•œ ๋””๋ ‰ํ† ๋ฆฌ์— ์ด๋™ํ•˜์—ฌ "./ncloud {๋ช…๋ น ๋‚ด์šฉ}" (ex: ./ncloud server getServerInstanceList --serverInstanceStatusCode NSTOP --regionNo 2) ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ cli๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • VPC๊ฐ€ classic ๋ณด๋‹ค ๋” ๋งŽ์€ api์™€ cli ์ปค๋ฉ˜๋“œ๋ฅผ ์ง€์›ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, init script๋ฅผ cli ์ƒ์—์„œ ๋“ฑ๋กํ•˜๋Š” ๊ฒƒ์€ VPC ์„œ๋น„์Šค์—์„œ๋งŒ ์ง€์›๋œ๋‹ค.

[init_script ์„ค๋ช… ์ด๋ฏธ์ง€]
  • classic์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด, GUI ์ฝ˜์†” ์ƒ์—์„œ๋งŒ init script๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฝ˜์†” > Services > Compute > Server > Init Script ๋กœ ์ด๋™ํ•˜๋ฉด ์œ„ ์ด๋ฏธ์ง€์˜ ์ฐฝ์ด ๋œฌ๋‹ค. Script ์ƒ์„ฑ ๋ฒ„ํŠผ์„ ์ด์šฉํ•˜์—ฌ init script๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ด๋ฏธ ๋“ฑ๋ก๋œ init script๋ฅผ cli ์ƒ์—์„œ ์‚ฌ์šฉํ•˜๋ ค๋ฉด init script์˜ ๋ฒˆํ˜ธ๋ฅผ ์ฐพ์•„์•ผ ํ•œ๋‹ค. getInitScriptList๋ฅผ ์ด์šฉํ•˜์—ฌ init script ๋ฒˆํ˜ธ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค. (classic: "https://cli.ncloud-docs.com/docs/cli-server-getinitscriptlist", VPC: "https://cli.ncloud-docs.com/docs/cli-vserver-initscript-getinitscriptlist")
  • init script ๋ฒˆํ˜ธ๋ฅผ ์•ˆ๋‹ค๋ฉด, VM ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ, ํ•ด๋‹น ๋ฒˆํ˜ธ๋ฅผ ์ „๋‹ฌํ•˜์—ฌ, ์ž๋™์œผ๋กœ shell script๊ฐ€ ์ƒ์„ฑ๊ณผ ๋™์‹œ์— ์‹คํ–‰๋˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ, ์„œ๋ฒ„์—์„œ init script๊ฐ€ ์ž˜ ๋Œ์•„๊ฐ€๋Š”์ง€ ๋ณด๊ณ  ์‹ถ์œผ๋ฉด, ์ƒ์„ฑ๋œ ์ธ์Šคํ„ด์Šค์— ๋“ค์–ด๊ฐ€๋„ init script๊ฐ€ ์ค‘๋‹จ๋˜์ง€ ์•Š์œผ๋‹ˆ, ๊ฑฑ์ •ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

[์ฒซ ์„œ๋ฒ„์— ์ ‘์†ํ•˜๋Š” ๋ฒ•]
  • ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ์„œ๋ฒ„์— ๋“ค์–ด๊ฐ€ ๋ณด๋ ค๋ฉด ์ฝ˜์†” > Service > Compute > Server ๋กœ ์ด๋™ํ•˜์—ฌ, ์ƒ์„ฑ๋œ ์„œ๋ฒ„์˜ ์ฒดํฌ๋ฐ•์Šค๋ฅผ ์ฒดํฌ ํ•œ ๋’ค, "์„œ๋ฒ„ ๊ด€๋ฆฌ ๋ฐ ์„ค์ • ๋ณ€๊ฒฝ" ์„ ์„ ํƒํ•˜์—ฌ "๊ด€๋ฆฌ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ"์„ ๋ˆ„๋ฅธ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด, ๋ฌด์ž‘์œ„๋กœ ์ƒ์„ฑ๋œ ์„œ๋ฒ„์˜ ์ž„์‹œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ CloudComparison์— ์žˆ๋Š” "/pem_certificate/naver/aaa.pem" ํŒŒ์ผ์ด ํ•„์š”ํ•˜๋‹ค. ๊ด€๋ฆฌ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ฉ”๋ชจ์žฅ์— ์ €์žฅํ•ด ๋‘”๋‹ค. ์œ„ ์ด๋ฏธ์ง€์˜ ๋„ค๋ชจ ๋ฐ•์Šค, ํฌํŠธ ํฌ์›Œ๋”ฉ ์„ค์ •์€ VM ์ธ์Šคํ„ด์Šค๋ฅผ ๊ณต์šฉ ip์˜ port์— ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ•ด ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. 1,024~65,534 ๋ฒ”์œ„์˜ ์ˆซ์ž๊ฐ€ ์ค‘๋ณต๋˜์ง€ ์•Š๊ฒŒ ์„ค์ •ํ•˜๋ฉด ๋œ๋‹ค.

  • ๊ด€๋ จ ๋„ํ๋จผํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๋ถ€์กฑํ•œ ์ •๋ณด๊ฐ€ ์žˆ์œผ๋ฉด ์ฐธ๊ณ . "https://guide.ncloud-docs.com/docs/server-manage-classic#ํฌํŠธํฌ์›Œ๋”ฉ์„ค์ •", "https://guide.ncloud-docs.com/docs/server-access-classic", "https://guide.ncloud-docs.com/docs/server-publicip-classic"

  • ์ถ”๊ฐ€์ ์œผ๋กœ ์œ ์šฉํ•œ naver cloud cli ๋ช…๋ น์–ด๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

    • getServerImageProductList: NCP์—์„œ ์ œ๊ณตํ•˜๋Š” ์„œ๋ฒ„ ์ด๋ฏธ์ง€(OS)์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜
    • getServerProductList: NCP์—์„œ ์ œ๊ณตํ•˜๋Š” ์„œ๋ฒ„ ์ œํ’ˆ๋“ค์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ (๋ฉ”๋ชจ๋ฆฌ, vCPU ์ˆ˜, SSD/HDD ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•˜๊ฒŒ ๋ถ„๋ฅ˜๋œ๋‹ค.)
    • getServerInstanceList: ํ˜„์žฌ ๋‚ด๊ฐ€ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์„œ๋ฒ„๋“ค์„ ๋ฐ˜ํ™˜.
    • createServerInstances: ์„œ๋ฒ„ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
    • terminateServerInstances: ์„œ๋ฒ„ ์ธ์Šคํ„ด์Šค ๋ฐ˜๋‚ฉ (์ •์ง€๋œ ์ธ์Šคํ„ด์Šค๋งŒ ๋ฐ˜๋‚ฉ ๊ฐ€๋Šฅ)
    • stopServerInstances: ์„œ๋ฒ„ ์ธ์Šคํ„ด์Šค ์ •์ง€
    • getInitScriptList: ๋‚˜์˜ init script ๋ฆฌ์ŠคํŠธ ๋ฐ˜ํ™˜
    • getRootPassword: ์„œ๋ฒ„์˜ ๋ฃจํŠธ ๊ณ„์ •์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์กฐํšŒ. cli๋ฅผ ์‚ฌ์šฉ ์ค‘์ธ ์„œ๋ฒ„ ์ƒ์— ์ธ์ฆpem ํŒŒ์ผ์ด ์žˆ์–ด์•ผ ๊ฐ€๋Šฅํ•˜๋‹ค.
    • getBlockStorageInstanceList: ๋ธ”๋ก ์Šคํ† ๋ฆฌ์ง€ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜. ๋ธ”๋ก ์Šคํ† ๋ฆฌ์ง€์˜ number(blockStorageInstanceNo)๋ฅผ ์ฐพ์„ ๋•Œ ์‚ฌ์šฉ. serverInstanceNo๋ฅผ ๋ณด๊ณ  ์–ด๋–ค ์„œ๋ฒ„์— ๋ฌถ์—ฌ์žˆ๋Š”์ง€ ํ™•์ธ ๊ฐ€๋Šฅ.
    • createBlockStorageInstance: ๋ธ”๋ก ์Šคํ† ๋ฆฌ์ง€ ์ƒ์„ฑ. ์ƒ์„ฑ ํ›„ ๋งˆ์šดํŠธ๋ฅผ ํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.
    • deleteBlockStorageInstances: ๋ธ”๋ก ์Šคํ† ๋ฆฌ์ง€ ์‚ญ์ œ.
    • attachBlockStorageInstance: ์„œ๋ฒ„์— ๋ธ”๋ก ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๋ถ™์ธ๋‹ค. ํ•ด๋‹น cli๋ฅผ ์จ ๋ณด์ง„ ์•Š์•˜์Œ. init script ์ƒ์—์„œ๋Š” ์„œ๋ฒ„์—์„œ ์ง์ ‘ ๋งˆ์šดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉ.
    • detachBlockStorageInstances: ์„œ๋ฒ„์— ๋ธ”๋ก ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๋ˆ๋‹ค. ํ•ด๋‹น cli๋ฅผ ์จ ๋ณด์ง„ ์•Š์•˜์Œ. init script ์ƒ์—์„œ๋Š” ์„œ๋ฒ„์—์„œ ์ง์ ‘ ์–ธ๋งˆ์šดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉ.
    • ํ˜ธํ™˜ cli: "https://cli.ncloud-docs.com/docs/guide-objectstorage" ์ฐธ๊ณ . aws cli๋ฅผ ์ด์šฉํ•˜์—ฌ, NCP์˜ object storage์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ฌ ๋•Œ ์‚ฌ์šฉ.

ํ˜„์žฌ ๋ฐœ๊ฒฌํ•œ ๋„ค์ด๋ฒ„ ํด๋ผ์šฐ๋“œ ๋ฌธ์ œ์ ๋“ค

  • GCP๋‚˜ ์นด์นด์˜ค ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ๊ณผ ๋‹ค๋ฅด๊ฒŒ, ๋ธ”๋ก ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ๋งˆ์šดํŠธ ๊ณผ์ •์ด ํ•„์š”ํ•˜์—ฌ ๋ถˆํŽธํ•œ ๋ฉด์ด ์žˆ๋‹ค. GCP์˜ ๊ฒฝ์šฐ ๋ธ”๋ก ์Šคํ† ๋ฆฌ์ง€์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ๊ณผ ํ•จ๊ป˜ ๋ช…์‹œํ•œ๋‹ค๋Š” ์ ์ด ๊ฐ„๋‹จํ•˜๊ณ , ์นด์นด์˜ค ํด๋ผ์šฐ๋“œ๋„ ์ฝ˜์†” ์ƒ์—์„œ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ํ•จ๊ป˜ ์ƒ์„ฑ์‹œํ‚จ๋‹ค.
  • init script๊ฐ€ OS(ServerImageProduct)๊ฐ€ Ubuntu Server 18.04 (64-bit)๊ฐ€ ์•„๋‹Œ "productCode": "SPSW0LINUX000063", "productName": "redis(3.2.8)-ubuntu-14.04-64-server"์—์„œ๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.

์˜ค๋ฅ˜๋Š” ์ฒ˜์Œ์—๋Š” jq ๋ช…๋ น์–ด๋ฅผ ๋ชป ์ฐพ๋Š” ์˜ค๋ฅ˜์˜€๊ณ , ์„œ๋ฒ„์— ์ง์ ‘ ์ ‘์†ํ•˜์—ฌ ํ•˜๋‚˜ํ•˜๋‚˜ cli๋ฅผ ๋‹ค์‹œ ์‹œ๋„ํ•˜๋‹ˆ ๋˜์—ˆ๋‹ค. ๋‹ค๋งŒ apt install python-pip -y, pip install awscli==1.15.85 ๋ผ์ธ์—์„œ ๋‹ค์‹œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์•„, OS ๋ณ„๋กœ install ๋ฐฉ์‹์ด ๋‹ค๋ฅธ ๋ฐ์—์„œ ๊ธฐ์ธํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ž„.

  • classic ์„œ๋น„์Šค ์ด์šฉ์‹œ init script ์ƒ์„ฑ์„ cli ์ƒ์—์„œ ๋ถˆ๊ฐ€.
  • SAIGE๊ฐ€ ๋๋‚˜๊ณ , ์ž๋™ ๋ฐ˜ํ™˜์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด๋Š” ์„œ๋ฒ„ ๋ฐ˜ํ™˜์„ ํ•˜๋ ค๋ฉด ์„œ๋ฒ„ ์ข…๋ฃŒ๋ฅผ ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ข…๋ฃŒ๋œ ์„œ๋ฒ„๋Š” ์ž์ฒด ๋ฐ˜ํ™˜์ด ์•ˆ ๋˜๋Š” ๋ฐ์—์„œ ๊ธฐ์ธํ•œ๋‹ค. ๋„ค์ด๋ฒ„ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค ์งˆ๋ฌธ ๋‚จ๊ธฐ๊ธฐ์— ํ•ด๋‹น ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋ฌผ์–ด๋ดค์ง€๋งŒ, ํ•ด๊ฒฐ์€ ๋ถˆ๊ฐ€๋Šฅํ•ด ๋ณด์ธ๋‹ค. ์•„๋ž˜๋Š” ๋„ค์ด๋ฒ„ ์ธก ๋‹ต๋ณ€.

์•ˆ๋…•ํ•˜์„ธ์š”. ๋„ค์ด๋ฒ„ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

์„œ๋ฒ„ ๋ฐ˜๋‚ฉ์„ ์œ„ํ•ด์„œ๋Š” ์„œ๋ฒ„ ์ •์ง€๊ฐ€ ๋จผ์ € ์ด๋ฃจ์–ด์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ง์”€ํ•˜์‹  ๋Œ€๋กœ ์„œ๋ฒ„ ๋‚ด์—์„œ์˜ ๋ฐ˜๋‚ฉ์€ ์ •์ง€๊ฐ€ ์„ ํ–‰์ด๊ธฐ์— ๋ฐ˜๋‚ฉ๊นŒ์ง€์˜ ์ ˆ์ฐจ๋Š” ์ง„ํ–‰์ด ์–ด๋ ค์›Œ ๋ณด์ž…๋‹ˆ๋‹ค.

๋ถˆํŽธํ•˜์‹œ๊ฒ ์ง€๋งŒ, CLI ๋ฅผ ์ด์šฉํ•˜์‹ ๋‹ค๋ฉด ๋ณ„๋„์˜ API ์„œ๋ฒ„๋ฅผ ํ™œ์šฉํ•˜์‹œ๋Š” ๊ฒƒ์ด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋„ค์ด๋ฒ„ ํด๋ผ์šฐ๋“œ ์‹คํ—˜ ๊ฒฐ๊ณผ

  • ์„œ๋ฒ„ ์ด๋ฏธ์ง€ Ubuntu Server 18.04 (64-bit)์ธ, [Standard] 4vCPU, 32GB Mem, 50GB Disk [g1] ์ŠคํŽ™์˜ VM ์ธ์Šคํ„ด์Šค๋กœ ๋‘ ๋ฒˆ์˜ ์‹คํ—˜์„ ํ•˜์˜€๋‹ค.

  • Block Storage 500GB๋Š” HDD๋ฅผ ์ด์šฉํ•˜์˜€๋‹ค.

    • ./ncloud server createServerInstances --serverImageProductCode SPSW0LINUX000130 --serverProductCode SPSVRSSD00000013 --serverName mktest --initScriptNo 72828
  • 1์ฐจ ์‹œ๋„

    • Step0: 7์‹œ๊ฐ„
    • Step1: 0.5์‹œ๊ฐ„
    • Step2: chrom22๋กœ 4.45์‹œ๊ฐ„ (์ด expected ์‹œ๊ฐ„ = 328.5์‹œ๊ฐ„)
  • 2์ฐจ ์‹œ๋„

    • Step0: 7์‹œ๊ฐ„
    • Step1: 0.5์‹œ๊ฐ„
    • Step2: chrom22๋กœ 4.5์‹œ๊ฐ„ (์ด expected ์‹œ๊ฐ„ = 333.6์‹œ๊ฐ„)

    2์›” 8์ผ ์ถ”๊ฐ€๋‚ด์šฉ

    • ์„œ๋ฒ„ ์ด๋ฏธ์ง€ Ubuntu Server 18.04 (64-bit)์ธ, [Standard] 4vCPU, 32GB Mem, 50GB Disk [g1] ์ŠคํŽ™์˜ VM ์ธ์Šคํ„ด์Šค์— Block Storage 500GB๋ฅผ SDD๋ฅผ ์ด์šฉํ•œ ๊ฒฐ๊ณผ
    • Step0: 7์‹œ๊ฐ„
    • Step1: 0.5์‹œ๊ฐ„
    • Step2: chrom22๋กœ 4.38์‹œ๊ฐ„ (์ด expected ์‹œ๊ฐ„ = 324.98์‹œ๊ฐ„)

-์‹คํ–‰์„ ํ†ตํ•˜์—ฌ, ๋‚˜์˜จ ๊ฒฐ๊ณผ์™€ timestamp๋Š” "NCP_SAIGE/output_log/24Feb06_output.log", "NCP_SAIGE/output_log/4Jan10_output.log" ์ด๋‹ค.

๋„ค์ด๋ฒ„ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ ๊ฐ€๊ฒฉ ์ •์ฑ…๊ณผ ๊ฐ€๊ฒฉ ๊ณ„์‚ฐ์€ "NCP_SAIGE/doc/README.md" ์ฐธ๊ณ 

init script

#!/bin/bash
set -e
exec > >(tee /var/log/startup-script.log) 2>&1
timestamp=$(date)"start"
echo ${timestamp}
curl -L https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64 -o /usr/local/bin/jq
chmod a+x /usr/local/bin/jq

apt install sshpass
sshpass -p 'flfoq' scp -o StrictHostKeyChecking=no -P 1028 -r root@27.96.129.251:/root/cli_linux /root/
cd /root/cli_linux

export AWS_ACCESS_KEY_ID="JcWpzzSYISiipUCMlqsH"
export AWS_SECRET_ACCESS_KEY="k6FfwQ4gRxkGQQ9xvWUQX559E4X0xY00gd2VmF2h"
echo -e "${AWS_ACCESS_KEY_ID}\n${AWS_SECRET_ACCESS_KEY}\n\n" | ./ncloud configure

serverInstanceNo=$(./ncloud server getServerInstanceList | jq -r '.getServerInstanceListResponse.serverInstanceList[] | select(.serverName == "mktest") | .serverInstanceNo')

apt install python-pip -y
pip install awscli==1.15.85

echo -e "${AWS_ACCESS_KEY_ID}\n${AWS_SECRET_ACCESS_KEY}\n\n" | aws configure

blockInstanceNo=$(./ncloud server createBlockStorageInstance --blockStorageSize 500 --serverInstanceNo ${serverInstanceNo} | jq -r  '.createBlockStorageInstanceResponse.blockStorageInstanceList[] | select(.serverName == "mktest") | .blockStorageInstanceNo')
DIRECTORY="/dev/xvdb"
while true; do
    if [ -e "$DIRECTORY" ]; then
        echo "Can't find directory"
        break
    else
        echo "Found directory"
    fi
    sleep 5
done
echo "escape while loop"

echo -e "n\np\n\n\n\nw\n" | fdisk /dev/xvdb
mkfs.ext4 /dev/xvdb1
mkdir /mnt/a
mount /dev/xvdb1 /mnt/a
DIRECTORY="/mnt/a"
while true; do
    if [ -e "$DIRECTORY" ]; then
        echo "Can't find directory"
        break
    else
        echo "Found directory"
    fi
    sleep 5
done
echo "escape while loop"

mkdir -p /mnt/a/data1/SAIGE/SAIGE_Step1/
mkdir -p /mnt/a/data1/SAIGE/SAIGE_Step2/output

aws --endpoint-url=https://kr.object.ncloudstorage.com s3api get-object --bucket leelabsgtest --key UKB_step1.fam  /mnt/a/data1/SAIGE/SAIGE_Step1/UKB_step1.fam
aws --endpoint-url=https://kr.object.ncloudstorage.com s3api get-object --bucket leelabsgtest --key UKB_step1.bed  /mnt/a/data1/SAIGE/SAIGE_Step1/UKB_step1.bed
aws --endpoint-url=https://kr.object.ncloudstorage.com s3api get-object --bucket leelabsgtest --key UKB_step1.bim  /mnt/a/data1/SAIGE/SAIGE_Step1/UKB_step1.bim

cd /root
sudo apt-get update
sudo apt-get install docker.io -y

newgrp docker
docker pull wzhou88/saige:1.3.0

cd /mnt/a/data1/SAIGE/SAIGE_Step1
timestamp=$(date)"step0start"
echo ${timestamp}
docker run -w /mnt/a/data1/SAIGE/SAIGE_Step1 -v /mnt/a/data1/SAIGE/SAIGE_Step1/:/mnt/a/data1/SAIGE/SAIGE_Step1/ wzhou88/saige:1.3.0 createSparseGRM.R --plinkFile=/mnt/a/data1/SAIGE/SAIGE_Step1/UKB_step1       --nThreads=4   --outputPrefix=/mnt/a/data1/SAIGE/SAIGE_Step1/sparseGRM --numRandomMarkerforSparseKin=2000 --relatednessCutoff=0.125
timestamp=$(date)"step0end"
echo ${timestamp}
aws --endpoint-url=https://kr.object.ncloudstorage.com s3api get-object --bucket leelabsgtest --key HDL_imputed_pheno.txt /mnt/a/data1/SAIGE/SAIGE_Step1/HDL_imputed_pheno.txt

mkdir /mnt/a/data1/SAIGE/SAIGE_Step1/output
timestamp=$(date)"step1start"
echo ${timestamp}
docker run -w /mnt/a/data1/SAIGE/SAIGE_Step1 -v /mnt/a/data1/SAIGE/SAIGE_Step1/:/mnt/a/data1/SAIGE/SAIGE_Step1/ wzhou88/saige:1.3.0 step1_fitNULLGLMM.R \
--useSparseGRMtoFitNULL=TRUE \
--sparseGRMFile=/mnt/a/data1/SAIGE/SAIGE_Step1/sparseGRM_relatednessCutoff_0.125_2000_randomMarkersUsed.sparseGRM.mtx \
--sparseGRMSampleIDFile=/mnt/a/data1/SAIGE/SAIGE_Step1/sparseGRM_relatednessCutoff_0.125_2000_randomMarkersUsed.sparseGRM.mtx.sampleIDs.txt \
--plinkFile=/mnt/a/data1/SAIGE/SAIGE_Step1/UKB_step1 \
--phenoFile=/mnt/a/data1/SAIGE/SAIGE_Step1/HDL_imputed_pheno.txt \
--phenoCol=HDL \
--covarColList=Sex,Age,PC1,PC2,PC3,PC4,PC5,PC6,PC7,PC8,PC9,PC10  \
--sampleIDColinphenoFile=eid  \
--traitType=quantitative \
--invNormalize=TRUE \
--outputPrefix=./output/HDL_imputed_Step1 \
--nThreads=4 \
--LOCO=TRUE \
--FemaleCode=2 \
--MaleCode=1 \
--IsOverwriteVarianceRatioFile=TRUE

timestamp=$(date)"step1end"
echo ${timestamp}

cd /mnt/a/data1/SAIGE/SAIGE_Step2

aws --endpoint-url=https://kr.object.ncloudstorage.com s3api get-object --bucket leelabsgtest --key ukb45227_imp_chr1_v3_s487296.sample /mnt/a/data1/SAIGE/SAIGE_Step2/ukb45227_imp_chr1_v3_s487296.sample
timestamp=$(date)"step2start"
echo ${timestamp}
for ((chr=1; chr<=22; chr++))
do
aws --endpoint-url=https://kr.object.ncloudstorage.com s3api get-object --bucket leelabsgtest --key ukb_imp_chr${chr}_v3.bgen.bgi /mnt/a/data1/SAIGE/SAIGE_Step2/ukb_imp_chr${chr}_v3.bgen.bgi
aws --endpoint-url=https://kr.object.ncloudstorage.com s3api get-object --bucket leelabsgtest --key ukb_imp_chr${chr}_v3.bgen /mnt/a/data1/SAIGE/SAIGE_Step2/ukb_imp_chr${chr}_v3.bgen


docker run -w /mnt/a/data1/SAIGE/ -v /mnt/a/data1/SAIGE/:/mnt/a/data1/SAIGE/ wzhou88/saige:1.3.0 step2_SPAtests.R   \
--bgenFile=/mnt/a/data1/SAIGE/SAIGE_Step2/ukb_imp_chr${chr}_v3.bgen \
--bgenFileIndex=/mnt/a/data1/SAIGE/SAIGE_Step2/ukb_imp_chr${chr}_v3.bgen.bgi        \
--minMAF=0.0001 \
--minMAC=10     \
"--chrom="$(printf "%02d" $chr)  \
--GMMATmodelFile=/mnt/a/data1/SAIGE/SAIGE_Step1/output/HDL_imputed_Step1.rda        \
--sampleFile=/mnt/a/data1/SAIGE/SAIGE_Step2/ukb45227_imp_chr1_v3_s487296.sample     \
--varianceRatioFile=/mnt/a/data1/SAIGE/SAIGE_Step1/output/HDL_imputed_Step1.varianceRatio.txt       \
--SAIGEOutputFile=/mnt/a/data1/SAIGE/SAIGE_Step2/output/chr${chr}_HDL_imputed_output        \
--LOCO=FALSE

rm /mnt/a/data1/SAIGE/SAIGE_Step2/ukb_imp_chr${chr}_v3.bgen
rm /mnt/a/data1/SAIGE/SAIGE_Step2/ukb_imp_chr${chr}_v3.bgen.bgi
done
timestamp=$(date)"step2end"
echo ${timestamp}
for ((chr=1; chr<=22; chr++))
do
 aws --endpoint-url=https://kr.object.ncloudstorage.com s3api put-object --bucket leelabsgtest --key chr${chr}_HDL_imputed_output --body /mnt/a/data1/SAIGE/SAIGE_Step2/output/chr${chr}_HDL_imputed_output
 aws --endpoint-url=https://kr.object.ncloudstorage.com s3api put-object --bucket leelabsgtest --key chr${chr}_HDL_imputed_output.index --body /mnt/a/data1/SAIGE/SAIGE_Step2/output/chr${chr}_HDL_imputed_output.index
done

umount -l /mnt/a

์นด์นด์˜ค ํด๋ผ์šฐ๋“œ

Information about Kakao Cloud Platform

  • ์นด์นด์˜ค ํด๋ผ์šฐ๋“œ๋Š” "kc_helpdesk@kakaoenterprise.com" ์ด๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ ํ†ตํ•ด ๊ธฐ์ˆ ์  ๋ฌธ์˜๋ฅผ ๋‚ด๋ถ€ ๊ธฐ์ˆ ์ž์™€ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‹ต๋ณ€ ์‹œ๊ฐ„๋„ ๋น ๋ฅด๋‹ค.
  • ์นด์นด์˜ค ํด๋ผ์šฐ๋“œ๋Š” api, cli๋ฅผ ์ด์šฉํ•˜์—ฌ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‚ญ์ œํ•  ์ˆ˜ ์—†๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”, ์นด์นด์˜คํด๋ผ์šฐ๋“œ์ž…๋‹ˆ๋‹ค.

API๋กœ Virtual Machine ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•œ์ง€ ๋ฌธ์˜ํ•ด ์ฃผ์…จ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ์นด์นด์˜คํด๋ผ์šฐ๋“œ์—์„œ API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Virtual Machine ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์€ ์ œ๊ณต๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‹œ๊ฐ„ ๋‚ด์–ด ๋ฌธ์˜ํ•ด ์ฃผ์…จ์œผ๋‚˜ ์›ํ•˜๋Š” ๋‹ต๋ณ€์„ ๋“œ๋ฆฌ์ง€ ๋ชปํ•˜๋Š” ์  ์–‘ํ•ด ๋ถ€ํƒ๋“œ๋ฆฌ๋ฉฐ, ๋” ๋‚˜์€ ์„œ๋น„์Šค ์ œ๊ณต์„ ์œ„ํ•ด ์ตœ์„ ์„ ๋‹คํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”, ์นด์นด์˜คํด๋ผ์šฐ๋“œ์ž…๋‹ˆ๋‹ค.

์นด์นด์˜คํด๋ผ์šฐ๋“œ ์ž์ฒด CLI์— ๋Œ€ํ•ด ๋ฌธ์˜ํ•ด ์ฃผ์…จ์Šต๋‹ˆ๋‹ค.

์นด์นด์˜คํด๋ผ์šฐ๋“œ์—์„œ๋Š” ์ž์ฒด CLI๋ฅผ ์ œ๊ณตํ•ด ๋“œ๋ฆฌ๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ๋ฌธ๊ตฌ๋Š” API ์ธ์ฆ ํ† ํฐ์„ MAC์˜ ํ„ฐ๋ฏธ๋„ ๋“ฑ ์ผ๋ฐ˜ CLI ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์ฆ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๋œป์˜ ๋ฌธ๊ตฌ๋กœ, ์นด์นด์˜คํด๋ผ์šฐ๋“œ์—์„œ ์ œ๊ณตํ•ด ๋“œ๋ฆฌ๊ณ  ์žˆ๋Š” ๊ฐ์ข… API Reference ๊ฐ€์ด๋“œ๋ฅผ ์ง„ํ–‰ํ•ด ์ฃผ์‹œ๊ธฐ ์ „ ํ•„์š”ํ•œ ์ธ์ฆ ๊ณผ์ •์— ๋Œ€ํ•œ ๋ฌธ๊ตฌ์ž…๋‹ˆ๋‹ค.

์ด์šฉ์— ์ฐธ๊ณ  ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

  • ์นด์นด์˜ค ํด๋ผ์šฐ๋“œ์— ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” pem ํŒŒ์ผ์ด ํ•ด๋‹น ์œ„์น˜์— ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ์•„๋ž˜์˜ ๋ช…๋ น์œผ๋กœ ์ ‘์†์ด ๊ฐ€๋Šฅํ•˜๋‹ค. pem ํŒŒ์ผ์€ "/pem_certificate/kakao/leelab.pem" ์— ์žˆ๋‹ค.
    • "ssh -i leelab.pem ubuntu@61.109.214.162"
  • ๊ณต๊ณต๊ธฐ๊ด€์šฉ ์นด์นด์˜ค ํด๋ผ์šฐ๋“œ์—์„œ ์ ‘์†์„ ํ•ด์•ผ ์ฝ˜์†”์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ผ๋ฐ˜ ์นด์นด์˜ค ํด๋ผ์šฐ๋“œ์—์„œ๋Š” ์กฐ์ง ์ด๋ฆ„ ๊ฒ€์ƒ‰์ด ์•ˆ ๋˜์ง€๋งŒ, ์•„๋ž˜ ๋งํฌ๋กœ ๋“ค์–ด๊ฐ€๋ฉด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๊ณต๊ณต๊ธฐ๊ด€์šฉ์ธ ๊ฒฝ์šฐ CSAP ํด๋ผ์šฐ๋“œ ๋ณด์•ˆ ์ธ์ฆ์„ ๋ฐ›์•„์•ผ ํ•˜๋Š”๋ฐ, ์ด ๋•Œ๋ฌธ์— ์ผ๋ฐ˜ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค("https://kakaocloud.com") ์™€ ๊ณต๊ณต๊ธฐ๊ด€์šฉ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค("https://kakaocloud-kr-gov.com/intro") ๊ฐ€ ๋‚˜๋ˆ ์ ธ ์žˆ๋‹ค.
  • ๋งŒ์•ฝ, ์ƒˆ๋กœ์šด ์„œ๋ฒ„ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์œผ๋ฉด ์•„๋ž˜์˜ ์ ˆ์ฐจ๋ฅผ ๋”ฐ๋ฅธ๋‹ค.

[์นด์นด์˜ค ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ 1]
+ ์ฝ˜์†” -> virtual machine -> instance ๋งŒ๋“ค๊ธฐ ํด๋ฆญ

[์นด์นด์˜ค ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ 2]
+ ๊ธฐ๋ณธ์ •๋ณด, ์ด๋ฏธ์ง€, ์ธ์Šคํ„ด์Šค ํƒ€์ž…, ๋ณผ๋ฅจ์€ ์ž์œ ๋กญ๊ฒŒ ์„ ํƒํ•ด๋„ ๋œ๋‹ค. key pair๋Š” leelab, vpc๋Š” leelab, subnet์€ main, security group์€ leelab1์„ ์„ ํƒํ•ด ์ค€๋‹ค. 

[์นด์นด์˜ค ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ 3]
+ ์œ„ ์ด๋ฏธ์ง€ public ip ์—ฐ๊ฒฐ์„ ๋ˆ„๋ฅด๊ณ  [์ƒˆ๋กœ์šด Public IP๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ž๋™์œผ๋กœ ํ• ๋‹น]์„ ๋ˆ„๋ฅธ๋‹ค.
+ ์œ„ ์ด๋ฏธ์ง€ ssh ์—ฐ๊ฒฐ์„ ๋ˆ„๋ฅด๊ณ  ๋ช…๋ น์–ด๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ์‹คํ–‰ํ•œ๋‹ค.
  • SAIGE ์‹คํ–‰์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋Š” ์นด์นด์˜ค ํด๋ผ์šฐ๋“œ ๋‚ด์—์„œ leelab ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ scp๋กœ ์˜ฎ๊ฒจ์™”๋‹ค.

  • Object Storage ์„œ๋น„์Šค๋„ ์žˆ์ง€๋งŒ, ์ฝ˜์†” ์ƒ์—์„œ๋Š” ํ•œ ํŒŒ์ผ ์ตœ๋Œ€ ํฌ๊ธฐ๊ฐ€ 50GB๋ฅผ ๋„˜๊ฒŒ ์˜ฌ๋ฆฌ์ง€ ๋ชป ํ•œ๋‹ค.

    • ๋„ค์ด๋ฒ„ ํด๋ผ์šฐ๋“œ์™€ ๊ฐ™์€ ํ˜ธ์ŠคํŠธ-์ธ์Šคํ„ด์Šค ๊ด€๊ณ„์˜ ์•„ํ‚คํ…์ณ๊ฐ€ ์•„๋‹ˆ๋ผ์„œ, Object Storage๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”๋Š” ์—†์„ ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค.

    • swift api๋ฅผ ์ง€์›ํ•˜์—ฌ, ์ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ put, getํ•œ๋‹ค. ( "https://docs.openstack.org/api-ref/object-store/index.html" )

    • ์ด๋ฅผ ์‹œ๋„ํ•ด ๋ณด์•˜์œผ๋‚˜, ์ž˜ ๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ, ๊ด€๋ จ ๋ฌธ์˜๋ฅผ ๋“œ๋ ธ์œผ๋‚˜, ์นด์นด์˜ค ์ธก์€ ์•„๋ž˜์™€ ๊ฐ™์€ ๋‹ต๋ณ€์„ ๋ณด๋ƒˆ๋‹ค.

      ์ถ”๊ฐ€์ ์œผ๋กœ SWIFT API ์‚ฌ์šฉ ์˜ˆ์ œ์— ๋Œ€ํ•œ ๊ณต์‹์ ์ธ ๊ฐ€์ด๋“œ๋Š” ์ œ๊ณต๋˜๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„ ๋‚ด์–ด ๋ฌธ์˜ํ•ด ์ฃผ์…จ์œผ๋‚˜ ์›ํ•˜๋Š” ๋‹ต๋ณ€์„ ๋“œ๋ฆฌ์ง€ ๋ชปํ•˜๋Š” ์  ์–‘ํ•ด ๋ถ€ํƒ๋“œ๋ฆฌ๋ฉฐ, ๋” ๋‚˜์€ ์„œ๋น„์Šค ์ œ๊ณต์„ ์œ„ํ•ด ์ตœ์„ ์„ ๋‹คํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

    • ์ด์™€ ๋ณ„๊ฐœ๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด api๋ฅผ curl๋กœ ๋‚ ๋ ค์„œ, token ์ธ์ฆ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ด€๋ จ ์ž๋ฃŒ ("https://docs.kakaocloud.com/start/api-preparation", "https://docs.kakaocloud.com/service/bss/object-storage/how-to-guides")

      curl -i -X POST -H "Content-Type: application/json" -d '{"auth": {"identity": {"methods": ["application_credential"],"application_credential": {"id": "8c27fe7e1c0a47ef854dd10109b29438","secret": "7uH2yJctQRzXkVS2WI3mooMxbAvL6vN2UIOgRz5HNzlVWgmu3zic-8Zt0clS13U1Pzb1ywqKyCxly8vxFTEFtg"}}}}' https://iam.kakaoicloud-kr-gov.com/identity/v3/auth/tokens

    • ์—…๋กœ๋“œ ์ฝ”๋“œ ์˜ˆ์ œ:

      curl -i https://objectstorage.kr-gov-central-1.kakaoicloud-kr-gov.com/v1/118a1f5ae43b44e7937d560eefe1486a/leelabsgtest/step1/hello.txt -X PUT -T hello.txt -H "Content-Type: text/html; charset=UTF-8" -H "X-Auth-Token: $token"

์นด์นด์˜ค ํด๋ผ์šฐ๋“œ ์‹คํ—˜ ๊ฒฐ๊ณผ

  • ์„œ๋ฒ„ ์ด๋ฏธ์ง€ Ubuntu 20.04์ธ, [r1i.xlarge] 4vCPU, 32GB Mem, 200GB SSD ์ŠคํŽ™์˜ VM ์ธ์Šคํ„ด์Šค๋กœ ํ•œ ๋ฒˆ์˜ ์‹คํ—˜์„ ํ•˜์˜€๋‹ค.

    • Step0: 5์‹œ๊ฐ„ 24๋ถ„
    • Step1: 18๋ถ„
    • Step2: chrom22๋กœ 3์‹œ๊ฐ„ 48๋ถ„ (์ด expected ์‹œ๊ฐ„ = 281.7์‹œ๊ฐ„)
  • ๋„ค์ด๋ฒ„์™€์˜ ์†๋„ ์ฐจ์ด๋Š” ๋””์Šคํฌ ๋“œ๋ผ์ด๋ธŒ๊ฐ€ SDD(kakao)์ธ์ง€, HDD(naver)์ธ์ง€์— ๋”ฐ๋ฅธ ๊ฒƒ์ผ ์ˆ˜ ์žˆ๋‹ค.

  • ์‹คํ–‰์„ ํ†ตํ•˜์—ฌ, ๋‚˜์˜จ ๊ฒฐ๊ณผ์™€ timestamp๋Š” "KCP_SAIGE/output_log/step0 & step1.log", "KCP_SAIGE/output_log/step2.log" ์ด๋‹ค.

  • ์ถ”ํ›„ 1~22๊นŒ์ง€ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” SSD ํฌ๊ธฐ๋ฅผ ๋Š˜๋ ค์„œ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค.

kakao cloud shell

#!/bin/bash


timestamp=$(date)"step0start"
echo ${timestamp}

cd /home/ubuntu/step1

timestamp=$(date)"step0start"
echo ${timestamp}

docker run -w /home/ubuntu/step1 -v /home/ubuntu/step1/:/home/ubuntu/step1/ wzhou88/saige:1.3.0 createSparseGRM.R --plinkFile=/home/ubuntu/step1/UKB_step1       --nThreads=4   --outputPrefix=/home/ubuntu/step1/sparseGRM --numRandomMarkerforSparseKin=2000 --relatednessCutoff=0.125

timestamp=$(date)"step0end"
echo ${timestamp}

mkdir /home/ubuntu/step1/output
mkdir /home/ubuntu/step2/output
timestamp=$(date)"step1start"
echo ${timestamp}
docker run -w /home/ubuntu/step1 -v /home/ubuntu/step1/:/home/ubuntu/step1/ wzhou88/saige:1.3.0 step1_fitNULLGLMM.R \
--useSparseGRMtoFitNULL=TRUE \
--sparseGRMFile=/home/ubuntu/step1/sparseGRM_relatednessCutoff_0.125_2000_randomMarkersUsed.sparseGRM.mtx \
--sparseGRMSampleIDFile=/home/ubuntu/step1/sparseGRM_relatednessCutoff_0.125_2000_randomMarkersUsed.sparseGRM.mtx.sampleIDs.txt \
--plinkFile=/home/ubuntu/step1/UKB_step1 \
--phenoFile=/home/ubuntu/step1/HDL_imputed_pheno.txt \
--phenoCol=HDL \
--covarColList=Sex,Age,PC1,PC2,PC3,PC4,PC5,PC6,PC7,PC8,PC9,PC10  \
--sampleIDColinphenoFile=eid  \
--traitType=quantitative \
--invNormalize=TRUE \
--outputPrefix=./output/HDL_imputed_Step1 \
--nThreads=4 \
--LOCO=TRUE \
--FemaleCode=2 \
--MaleCode=1 \
--IsOverwriteVarianceRatioFile=TRUE

timestamp=$(date)"step1end"
echo ${timestamp}

cd /home/ubuntu

timestamp=$(date)"step2start"
echo ${timestamp}
docker run -w /home/ubuntu/ -v /home/ubuntu/:/home/ubuntu/ wzhou88/saige:1.3.0 step2_SPAtests.R   \
--bgenFile=/home/ubuntu/step2/ukb_imp_chr22_v3.bgen \
--bgenFileIndex=/home/ubuntu/step2/ukb_imp_chr22_v3.bgen.bgi        \
--minMAF=0.0001 \
--minMAC=10     \
--chrom=22  \
--GMMATmodelFile=/home/ubuntu/step1/output/HDL_imputed_Step1.rda        \
--sampleFile=/home/ubuntu/step2/ukb45227_imp_chr1_v3_s487296.sample     \
--varianceRatioFile=/home/ubuntu/step1/output/HDL_imputed_Step1.varianceRatio.txt       \
--SAIGEOutputFile=/home/ubuntu/step2/output/chr22_HDL_imputed_output        \
--LOCO=FALSE
timestamp=$(date)"step2end"
echo ${timestamp}

About

code related to cloud comparison project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •