Restic: ํฐ ์ž๋‘๋ฅผ ํ›จ์”ฌ ๋” ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌ

์— ๋งŒ๋“  2019๋…„ 02์›” 04์ผ  ยท  52์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: restic/restic

restic version ์˜ ์ถœ๋ ฅ

linux/amd64์—์„œ go1.10.4๋กœ ์ปดํŒŒ์ผ๋œ restic 0.9.3

restic์€ ๋ฌด์—‡์„ ๋‹ค๋ฅด๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์–ด๋–ค ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ?

์ผ๋ฐ˜์ ์œผ๋กœ ๋‚˜๋Š” restic์„ ๋งค์šฐ ์ข‹์•„ํ•˜๋ฉฐ ์Šค๋ƒ…์ƒท ์ƒ์„ฑ/๋ณต๊ตฌ๋Š” ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ํฐ ์ €์žฅ์†Œ๋กœ ์ œํ•œ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์€ ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. 5TB/30๊ฐœ์˜ ์Šค๋ƒ…์ƒท์ด ์žˆ๋Š” ์ €์žฅ์†Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜๋„๋Š” ์ด๊ฒƒ์„ ์ˆœํ™˜ ๋ฒ„ํผ์ฒ˜๋Ÿผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค(๊ฐ€์žฅ ์˜ค๋ž˜๋œ ๊ฒƒ์„ ์ œ๊ฑฐํ•˜๊ณ  ์ตœ์‹ ์„ ์ถ”๊ฐ€).

์Šค๋ƒ…์ƒท์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ œ๊ฑฐํ•˜๋ฉด ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ•˜์ง€๋งŒ ๋ฐ˜๋“œ์‹œ ์ €์žฅ์†Œ๋ฅผ ์ •๋ฆฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์žฌ์ž‘์„ฑ์œผ๋กœ ์ธํ•ด 1TB๋ฅผ ํ™•๋ณดํ•˜๋Š” ๋ฐ ๋ช‡ ์ฃผ๊ฐ€ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ ๋™์•ˆ ์ƒˆ ์Šค๋ƒ…์ƒท์„ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋” ์ด์ƒ restic์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ์ด๋ฏธ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด
์ด๊ฒƒ์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋ญ”๊ฐ€๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์‹œ:
7336415๊ฐœ์˜ ๋ฐ์ดํ„ฐ blob ์ค‘ 5967884๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.
144850ํŒฉ์„ ์‚ญ์ œํ•˜๊ณ  142751ํŒฉ์„ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋ฉด 1.082TiB๊ฐ€ ํ™•๋ณด๋ฉ๋‹ˆ๋‹ค(2์ฃผ ์†Œ์š”!).

ํŠนํžˆ ๋ฐฉ๊ธˆ ์Šคํ† ๋ฆฌ์ง€(ssh ์•ก์„ธ์Šค ํฌํ•จ)๋ฅผ ๊ตฌ์ž…ํ•˜๊ณ  CPU ๋ฆฌ์†Œ์Šค๊ฐ€ ์ œํ•œ๋œ ์›๊ฒฉ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ์ „์ฒด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋‹ค์‹œ ์—…๋กœ๋“œํ•˜๋Š” ์†๋„๊ฐ€ ํ›จ์”ฌ ๋น ๋ฆ…๋‹ˆ๋‹ค.

prune feature enhancement

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‚˜๋Š” ์ตœ๊ทผ์— ์ด๊ฒƒ์— ๋Œ€ํ•ด ์ž‘์—…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํ•œ ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

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

๋‹ค์Œ์€ ๋ช‡ ๊ฐ€์ง€ ์„ฑ๋Šฅ ์ˆ˜์น˜์ž…๋‹ˆ๋‹ค(875GiB์˜ ๋ฐ์ดํ„ฐ, ์•ฝ 180,000๊ฐœ์˜ ํŒฉ, 36๊ฐœ์˜ ์Šค๋ƒ…์ƒท์ด ์žˆ๋Š” ์ €์žฅ์†Œ ์‚ฌ์šฉ, ๋ฐฑ์—”๋“œ๋กœ ๋ฃจํ”„๋ฐฑ ๋‚˜๋จธ์ง€ ์„œ๋ฒ„ ์‚ฌ์šฉ):

  • ํ˜„์žฌ ์ฝ”๋“œ:

    • ์ •๋ฆฌ์˜ ์‹œ์ž‘๊ณผ ๋์—์„œ ์ธ๋ฑ์Šค๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ๊ฐ๊ฐ 35~40๋ถ„(์ด 70~80๋ถ„)

    • ์‚ฌ์šฉ๋œ ์–ผ๋ฃฉ์„ ์ฐพ๋Š” ๋ฐ 4-5๋ถ„

    • ๋ถ€๋ถ„์ ์œผ๋กœ ์‚ฌ์šฉ๋œ ํŒฉ์„ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ๋ช‡ ์ดˆ

  • ์ง€๊ธˆ๊นŒ์ง€ ๋‚ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ:

    • ๊ธฐ์กด ์ธ๋ฑ์Šค๋ฅผ ๋กœ๋“œํ•˜๋Š” ๋ฐ ๋ช‡ ์ดˆ(์ธ๋ฑ์‹ฑ๋˜์ง€ ์•Š์€ ํŒฉ์„ ๊ฒ€์ƒ‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์•ฝ๊ฐ„ ๋” ์˜ค๋ž˜)

    • ์‚ฌ์šฉ๋œ ์–ผ๋ฃฉ์„ ์ฐพ๋Š” ๋ฐ 2๋ถ„ ๋ฏธ๋งŒ

    • ์ƒˆ ์ƒ‰์ธ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ๋ช‡ ์ดˆ

๋˜ํ•œ ๋” ๋งŽ์€ ํŒฉ ์žฌ์ž‘์„ฑ์„ ํฌํ•จํ•˜๋Š” ์ƒ์„ฑ๋œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์„ค์ •ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  52 ๋Œ“๊ธ€

@ifedorenko ์˜ ๋น„์ˆœ์ฐจ์  ๋ธŒ๋žœ์น˜์— ์˜ํ•ด ํ•ด๊ฒฐ๋œ ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ์ด ์žˆ๋Š” ๋Œ€์šฉ๋Ÿ‰ ์ €์žฅ์†Œ/์ €์žฅ์†Œ์— ๋Œ€ํ•œ ๋ณต์› ์„ฑ๋Šฅ์„ ํ†ตํ•ด ์ €์žฅ์†Œ๊ฐ€ ๋กœ์ปฌ์— ์—†๋Š” ๋ฉ€ํ‹ฐ ํ…Œ๋ผ๋ฐ”์ดํŠธ ํ™˜๊ฒฝ์—์„œ restic์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค์Œ ๋ณผ๋”์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋””์Šคํฌ์— ์žˆ๊ณ  ๋ฃจํ”„๋ฐฑ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ REST ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์•ก์„ธ์Šค๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ์ด๋ก ์  ๋Œ€์—ญํญ์ด 10gbit/sec์ธ ๊ณ ๊ธ‰ AWS ์ธ์Šคํ„ด์Šค์˜ AZ-๋กœ์ปฌ S3 ๋ฒ„ํ‚ท์— ์žˆ๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ๋นˆ ์ •๋ฆฌ(์ด์ „ ์Šค๋ƒ…์ƒท๊ณผ 100% ๋™์ผํ•œ ์Šค๋ƒ…์ƒท ์ •๋ฆฌ)๋Š” ๋‹ค์Œ ์œ„์น˜์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

1) ์ƒˆ ์ธ๋ฑ์Šค ๊ตฌ์ถ• -- ~160ํŒฉ/์ดˆ
2) ์•„์ง ์‚ฌ์šฉ ์ค‘์ธ ๋ฐ์ดํ„ฐ ์ฐพ๊ธฐ -- ์ด 56์ดˆ
3) ํŒฉ ๋‹ค์‹œ ์“ฐ๊ธฐ -- ~3 ํŒฉ/์ดˆ

160ํŒฉ/์ดˆ๋Š” ๋Š๋ฆฌ์ง€๋งŒ ์—ฌ์ „ํžˆ ๊ฒฌ๋”œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(3TB ์ €์žฅ์†Œ์— ๋Œ€ํ•ด ~80๋ถ„ ์‹คํ–‰ ์‹œ๊ฐ„).

๊ทธ๋Ÿฌ๋‚˜ ์žฌ์ž‘์„ฑ @ 3 packs/second๋Š” ๋‚ด noop prune์˜ ๊ฒฝ์šฐ์—๋„ ๊ฑฐ์˜ 10์‹œ๊ฐ„ ๋™์•ˆ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ํฐ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ์˜๋ฏธ ์žˆ๋Š” ์ •๋ฆฌ๋ฅผ ์œ„ํ•ด 24์‹œ๊ฐ„ ์ด์ƒ ๋™์•ˆ ์ƒˆ ๋ฐฑ์—…์„ ๋™๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

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

๊ฐœ์ธ์ ์œผ๋กœ, ๋‚˜๋Š” ํ˜„์žฌ ๋ธ”๋กœํ‚น ํ”„๋ฃจ๋‹ ๊ตฌํ˜„์„ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์„ ์†Œ๋น„ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ €๋Š” ๋น„์ฐจ๋‹จ ํ”„๋ฃจ๋‹์ด ๋” ๋‚˜์€ ์žฅ๊ธฐ์  ์†”๋ฃจ์…˜์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ตœ๊ทผ์— ์ด๊ฒƒ์— ๋Œ€ํ•ด ์ž‘์—…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํ•œ ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

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

๋‹ค์Œ์€ ๋ช‡ ๊ฐ€์ง€ ์„ฑ๋Šฅ ์ˆ˜์น˜์ž…๋‹ˆ๋‹ค(875GiB์˜ ๋ฐ์ดํ„ฐ, ์•ฝ 180,000๊ฐœ์˜ ํŒฉ, 36๊ฐœ์˜ ์Šค๋ƒ…์ƒท์ด ์žˆ๋Š” ์ €์žฅ์†Œ ์‚ฌ์šฉ, ๋ฐฑ์—”๋“œ๋กœ ๋ฃจํ”„๋ฐฑ ๋‚˜๋จธ์ง€ ์„œ๋ฒ„ ์‚ฌ์šฉ):

  • ํ˜„์žฌ ์ฝ”๋“œ:

    • ์ •๋ฆฌ์˜ ์‹œ์ž‘๊ณผ ๋์—์„œ ์ธ๋ฑ์Šค๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ๊ฐ๊ฐ 35~40๋ถ„(์ด 70~80๋ถ„)

    • ์‚ฌ์šฉ๋œ ์–ผ๋ฃฉ์„ ์ฐพ๋Š” ๋ฐ 4-5๋ถ„

    • ๋ถ€๋ถ„์ ์œผ๋กœ ์‚ฌ์šฉ๋œ ํŒฉ์„ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ๋ช‡ ์ดˆ

  • ์ง€๊ธˆ๊นŒ์ง€ ๋‚ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ:

    • ๊ธฐ์กด ์ธ๋ฑ์Šค๋ฅผ ๋กœ๋“œํ•˜๋Š” ๋ฐ ๋ช‡ ์ดˆ(์ธ๋ฑ์‹ฑ๋˜์ง€ ์•Š์€ ํŒฉ์„ ๊ฒ€์ƒ‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์•ฝ๊ฐ„ ๋” ์˜ค๋ž˜)

    • ์‚ฌ์šฉ๋œ ์–ผ๋ฃฉ์„ ์ฐพ๋Š” ๋ฐ 2๋ถ„ ๋ฏธ๋งŒ

    • ์ƒˆ ์ƒ‰์ธ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ๋ช‡ ์ดˆ

๋˜ํ•œ ๋” ๋งŽ์€ ํŒฉ ์žฌ์ž‘์„ฑ์„ ํฌํ•จํ•˜๋Š” ์ƒ์„ฑ๋œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์„ค์ •ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

์ฝ”ํŠธ๋‹ˆ:

๋งค์šฐ ์œ ๋งํ•˜๊ฒŒ ๋“ค๋ฆฝ๋‹ˆ๋‹ค! ํ˜„์žฌ ๊ทผ๋ฌดํ•˜๊ณ  ์žˆ๋Š” ์ง€์ ์ธ์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์œผ์‹ญ๋‹ˆ๊นŒ? ํ…Œ์ŠคํŠธํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.

https://github.com/cbane/restic/tree/prune-aggressive

์•„๋‹ˆ์š”, ํ•ด๋‹น ๋ถ„๊ธฐ๋Š” ์ฃผ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ๋ถ„๊ธฐ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ๋‚ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์•„์ง ๊ณต๊ฐœ์ ์œผ๋กœ ํ‘ธ์‹œํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋ฉฐ์น  ๋‚ด๋กœ ์ž‘์—… ์ค‘์ธ ๋ฒ„์ „์„ GitHub์— ํ‘ธ์‹œํ•  ์ˆ˜ ์žˆ์–ด์•ผ ์‹œ๋„ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์‹œํ—˜ํ•ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ฒ„์ „์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ง€์ ์— ์žˆ์Šต๋‹ˆ๋‹ค: https://github.com/cbane/restic/tree/prune-speedup

ํ˜„์žฌ ์ œํ•œ ์‚ฌํ•ญ:

  • ๋‚˜๋Š” ์žฌํฌ์žฅ ์ž‘์—…์ž ์ˆ˜์˜ ์ž๋™ ์„ค์ •์„ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ RESTIC_REPACK_WORKERS๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ์ž‘์—…์ž ์ˆ˜๋กœ ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค. ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’์€ 4์ž…๋‹ˆ๋‹ค.
  • ๋‹ค์‹œ ํฌ์žฅํ•  ๋•Œ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ์ž‘์—…์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ๋‹จ์ผ ์Šค๋ ˆ๋“œ ์žฌํŒจํ‚น์—์„œ ์‹ค์ œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ์˜ค๋ฅ˜ ์‚ฌ๋ก€๋ฅผ ์‚ดํŽด๋ณด๊ณ  ๋ณ‘๋ ฌ๋กœ ๋‹ค์‹œ ํฌ์žฅํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ต‰์žฅํ•ด ๋ณด์ด๋„ค์š”. ์ž‘์—…ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๋‚˜๋Š” ์ด๊ฒƒ์„ Amazon S3์—์„œ 3TB+ repo ์‚ฌ๋ณธ์œผ๋กœ ์•ฝ๊ฐ„ ํ…Œ์ŠคํŠธํ–ˆ์œผ๋ฉฐ ์ง€๊ธˆ๊นŒ์ง€ ๋†€๋ž์Šต๋‹ˆ๋‹ค. ๋ช‡ ์ฃผ๊ฐ€ ๊ฑธ๋ ธ์„ repack prune์€ ์ด์ œ 1์‹œ๊ฐ„ ์ด๋‚ด์— ์™„๋ฃŒ๋˜๋ฉฐ, ์ด๋Š” tmp ๊ณต๊ฐ„์œผ๋กœ ์ƒ๋Œ€์ ์œผ๋กœ ๋Š๋ฆฐ EBS๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ง„์ •ํ•œ ๊ฒŒ์ž„ ์ฒด์ธ์ €๊ฐ€ ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค! ์ˆ˜๊ณ ํ•˜์…จ์Šต๋‹ˆ๋‹ค, @cbane!

์—ํฌ, ๋‚˜๋Š” ๋‚ด๊ฐ€ ๋‹ฌ๋ฆฌ๊ธฐ ์‹œ๊ฐ„์„ ์ž˜๋ชป ์žก์•˜๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๋‹ค.

์—ฌ์ „ํžˆ ๋‹จ์ผ ์Šค๋ ˆ๋“œ์ด๊ณ  ๋ณ‘๋ ฌํ™”์˜ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ํ•œ ์˜์—ญ์€ "์ธ๋ฑ์Šค์— ์—†๋Š” ํŒฉ ํ™•์ธ" ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„๋Š” ๋ฉ€ํ‹ฐ ํ…Œ๋ผ๋ฐ”์ดํŠธ ์ €์žฅ์†Œ์—์„œ ์—ฌ์ „ํžˆ 3-4์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹ํฝ๋‹ˆ๋‹ค. ์—„์ฒญ๋‚œ ๊ฐœ์„ , ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

@cbane ๊ท€ํ•˜์˜ ํฌํฌ์— ๋Œ€ํ•œ ๋ฌธ์ œ๋ฅผ ์—ด โ€‹โ€‹์ˆ˜ ์—†์—ˆ์œผ๋ฏ€๋กœ ์ด์— ๋Œ€ํ•œ ๋” ๋‚˜์€ ์žฅ์†Œ๊ฐ€ ์žˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”.

๋‹ค๋ฅธ ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์ค‘์— 32๋ช…์˜ ์ž‘์—…์ž์™€ ํ•จ๊ป˜ ์‹คํ–‰๋˜๋Š” ๋งˆ์ง€๋ง‰(๋งˆ์ง€๋ง‰ ํŒฉ ๋‹ค์‹œ ์“ฐ๊ธฐ)์—์„œ repack์ด ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.

found 1396709 of 2257203 data blobs still in use, removing 860494 blobs
will remove 0 invalid files
will delete 119301 packs and rewrite 88485 packs, this frees 896.269 GiB
using 32 repack workers
Save(<data/c136027b25>) returned error, retrying after 723.31998ms: client.PutObject: Put https://ak-logical-db-backup.s3.dualstack.us-west-1.amazonaws.com/xxxxx: Connection closed by foreign host https://ak-logical-db-backup.s3.dualstack.us-west-1.amazonaws.com/xxxx. Retry again.
Save(<data/09d4692900>) returned error, retrying after 538.771816ms: client.PutObject: Put https://ak-logical-db-backup.s3.dualstack.us-west-1.amazonaws.com/xxxxx: Connection closed by foreign host https://ak-logical-db-backup.s3.dualstack.us-west-1.amazonaws.com/xxxxx. Retry again.
Save(<data/23d0d4f842>) returned error, retrying after 617.601934ms: client.PutObject: Put https://ak-logical-db-backup.s3.dualstack.us-west-1.amazonaws.com/xxxx: Connection closed by foreign host https://ak-logical-db-backup.s3.dualstack.us-west-1.amazonaws.com/xxxx. Retry again.
[10:02] 100.00%  88484 / 88485 packs rewritten
panic: reporting in a non-running Progress

goroutine 386596 [running]:
github.com/restic/restic/internal/restic.(*Progress).Report(0xc42011c2c0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0)
        internal/restic/progress.go:122 +0x242
github.com/restic/restic/internal/repository.Repack.func2(0x8, 0xe17f58)
        internal/repository/repack.go:66 +0x136
github.com/restic/restic/vendor/golang.org/x/sync/errgroup.(*Group).Go.func1(0xc4389246c0, 0xc56f509160)
        vendor/golang.org/x/sync/errgroup/errgroup.go:57 +0x57
created by github.com/restic/restic/vendor/golang.org/x/sync/errgroup.(*Group).Go
        vendor/golang.org/x/sync/errgroup/errgroup.go:54 +0x66

์ด์ „๊ณผ ๊ฐ™์€ ์ง€์ ์—์„œ ์ƒˆ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋˜ํ•œ master ์— ๋Œ€ํ•ด rebaseํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด์ „ ๋ฒ„์ „๊ณผ์˜ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๊ฐ ์ž‘์—…์ž๊ฐ€ ๋‹จ์ผ ํŒฉ์„ ํŒŒ์ดํ”„๋ผ์ธ์œผ๋กœ ์žฌํฌ์žฅํ•˜๋Š” ๋ชจ๋“  ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•˜๋Š” ์žฌํฌ์žฅ์„ ๋ณ€ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์žฌํฌ์žฅ์ด ๋๋‚  ๋•Œ ๋ณด๊ณ ๋œ ์ถฉ๋Œ์„ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ด์ œ Repacking์€ CPU ์ˆ˜์™€ ๋ฐฑ์—”๋“œ์— ๋Œ€ํ•ด ๊ตฌ์„ฑ๋œ ์—ฐ๊ฒฐ ์ œํ•œ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํŒŒ์ดํ”„๋ผ์ธ ๋‹จ๊ณ„์˜ ์ž‘์—…์ž ์ˆ˜๋ฅผ ์ž๋™์œผ๋กœ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ( RESTIC_REPACK_WORKERS ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.)
  • ์‚ฌ์šฉ๋œ ์–ผ๋ฃฉ์„ ์ฐพ๋Š” ๋ฐ ์•ฝ๊ฐ„์˜ ์กฐ์ •์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์•Œ ์ˆ˜ ์—†๋Š” ํŒฉ์˜ ์Šค์บ”์„ ๋ณ‘๋ ฌํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์—ฌ์ „ํžˆ ์‚ฌ์šฉ๋œ ์–ผ๋ฃฉ์„ ์ฐพ๋Š” ์ผ์„ ๋” ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๊ฐ ์Šค๋ƒ…์ƒท์€ ๋‹จ์ผ ์ž‘์—…์ž๊ฐ€ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด CPU๋ณด๋‹ค ์Šค๋ƒ…์ƒท ์ˆ˜๊ฐ€ ์ ๊ฑฐ๋‚˜ ์Šค๋ƒ…์ƒท ๊ฐ„์— ํฐ ํฌ๊ธฐ ์ฐจ์ด๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ CPU ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ž‘์—…์ž์—๊ฒŒ ํ•˜์œ„ ํŠธ๋ฆฌ ์ฒ˜๋ฆฌ๋ฅผ ๋ถ„์‚ฐ์‹œํ‚ค๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ(๋˜๋Š” ์ด์— ๋Œ€ํ•œ ํ–ฅํ›„ pull request)์— ๋Œ€ํ•ด ๊ณ„์† ๋…ผ์˜ํ•˜์—ฌ ๋ชจ๋“  ๊ฒƒ์ด ๋ถ„์‚ฐ๋˜๋Š” ๋Œ€์‹  ๊ธฐ๋ณธ ์ €์žฅ์†Œ์— ์œ ์ง€๋˜๋„๋ก ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ์žฌํฌ์žฅ์ด ๋๋‚  ๋•Œ ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•˜๊ณ  ์ •๋ง ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ฆ๊ฐ€๋œ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ์˜ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ์ถ”๊ฐ€ ์œ„์น˜๋Š” ํ˜„์žฌ ๋‹จ์ผ ์Šค๋ ˆ๋“œ์ธ ํŒฉ์„ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์‚ญ์ œ๊ฐ€ ํ•„์š”ํ•œ _lot_์˜ ํŒฉ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด์ „์—๋Š” ์ •๋ฆฌํ•  ์ˆ˜ ์—†์—ˆ๋˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ์ฒซ ๋ฒˆ์งธ ์ •๋ฆฌ ์ค‘์— ํŠนํžˆ ๊ฐ•ํ•˜๊ฒŒ ๋ฌผ๋ฆฝ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‹จ์ผ ์Šค๋ ˆ๋“œ ์‚ญ์ œ๋ฅผ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ 14.7k ํŒฉ์„ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๊ณ  33k ํŒฉ์„ ์‚ญ์ œํ•˜๋Š” 1.7TB, 356k ํŒฉ ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ์ผ์ผ ์‚ญ์ œ/์ •๋ฆฌ ์ž‘์—…์€ ์ด์ œ 20๋ถ„ ๋ฏธ๋งŒ์ด ์†Œ์š”๋ฉ๋‹ˆ๋‹ค.
์ด์ „์—๋Š” ๊ฐ€์ง€์น˜๊ธฐ๊ฐ€ ์ „ํ˜€ ๋ถˆ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ›Œ๋ฅญํ•œ ์ž‘ํ’ˆ, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ์— ์œ ์ผํ•œ ์‹ค์ œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์ด์ œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํŒฉ์„ ๋ณ‘๋ ฌ๋กœ ์‚ญ์ œํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ด์ „ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์•ฝ๊ฐ„์˜ ์กฐ์ •). ์ˆ˜์ •๋œ ์Šค๋ƒ…์ƒท ์Šค์บ”์„ ๊ตฌํ˜„ํ–ˆ์ง€๋งŒ ์†๋„๊ฐ€ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ์ง„ํ–‰ ์ƒํ™ฉ์„ ๋ณด๊ณ ํ•  ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์—†์–ด ๋‹ค์‹œ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์•„๋ฌด ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ๊ณง ์ด์— ๋Œ€ํ•œ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์—ด ๊ณ„ํš์ž…๋‹ˆ๋‹ค. (๊ทธ๋ž˜๋„ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๋จผ์ € ์ •๋ฆฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.) @fd0 , ๋จผ์ € ์ด๊ฒƒ๋ถ€ํ„ฐ ๋ณด์‹ค๋ž˜์š”?

ํ…Œ์ŠคํŠธ ์‹คํ–‰์—์„œ ํ›Œ๋ฅญํ•˜๊ฒŒ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. 225์ดˆ ๋งŒ์— 30k ํŒฉ์„ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๊ณ  50์ดˆ ๋งŒ์— 73k ํŒฉ์„ ์‚ญ์ œํ–ˆ์Šต๋‹ˆ๋‹ค.

32๊ฐœ์˜ ๋‚จ์•„ ์žˆ๋Š” ์Šค๋ƒ…์ƒท์ด ์žˆ๋Š” S3์˜ 1.74TiB ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์ด ๋Ÿฐํƒ€์ž„์€ 6๋ถ„์„ ์กฐ๊ธˆ ๋„˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฉ‹์ง„ ์ž‘ํ’ˆ.

@cbane ๋‚˜๋Š” ๋‹น์‹ ์˜ ์ง€์ ์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค https://github.com/cbane/restic/tree/prune-speedup

๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ๋‚ด๊ฐ€๋ฐ›๋Š” ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค :(

root<strong i="9">@srv</strong> ~/restic-backups # restic --no-cache prune
repository 49b87c6a opened successfully, password is correct
listing files in repo
loading index for repo
[0:28] 1.01%  30 / 2982 index files
pack cbbebd8d already present in the index
github.com/restic/restic/internal/index.(*Index).AddPack
    internal/index/index.go:266
github.com/restic/restic/internal/index.Load.func1
    internal/index/index.go:230
github.com/restic/restic/internal/repository.(*Repository).List.func1
    internal/repository/repository.go:640
github.com/restic/restic/internal/backend.(*RetryBackend).List.func1.1
    internal/backend/backend_retry.go:133
github.com/restic/restic/internal/backend/rest.(*Backend).listv2
    internal/backend/rest/rest.go:423
github.com/restic/restic/internal/backend/rest.(*Backend).List
    internal/backend/rest/rest.go:358
github.com/restic/restic/internal/backend.(*RetryBackend).List.func1
    internal/backend/backend_retry.go:127
github.com/cenkalti/backoff.RetryNotify
    vendor/github.com/cenkalti/backoff/retry.go:37
github.com/restic/restic/internal/backend.(*RetryBackend).retry
    internal/backend/backend_retry.go:36
github.com/restic/restic/internal/backend.(*RetryBackend).List
    internal/backend/backend_retry.go:126
github.com/restic/restic/internal/repository.(*Repository).List
    internal/repository/repository.go:634
github.com/restic/restic/internal/index.Load
    internal/index/index.go:202
main.pruneRepository
    cmd/restic/cmd_prune.go:202
main.runPrune
    cmd/restic/cmd_prune.go:128
main.glob..func18
    cmd/restic/cmd_prune.go:28
github.com/spf13/cobra.(*Command).execute
    vendor/github.com/spf13/cobra/command.go:762
github.com/spf13/cobra.(*Command).ExecuteC
    vendor/github.com/spf13/cobra/command.go:852
github.com/spf13/cobra.(*Command).Execute
    vendor/github.com/spf13/cobra/command.go:800
main.main
    cmd/restic/main.go:86
runtime.main
    /snap/go/3947/src/runtime/proc.go:200
runtime.goexit
    /snap/go/3947/src/runtime/asm_amd64.s:1337

@antetna ๊ท€ํ•˜์˜ ์ €์žฅ์†Œ์— ๋™์ผํ•œ ํŒฉ์„ ํฌํ•จํ•˜๋Š” ์—ฌ๋Ÿฌ ์ƒ‰์ธ ํŒŒ์ผ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ๊ทธ๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ–ˆ๊ณ  ์˜ค๋ฅ˜๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@antetna ์ข‹์•„, ๋ฐฉ๊ธˆ ๋‚ด ์ค‘๋ณต ์ธ๋ฑ์Šค ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์—์„œ ์ž‘๋™ํ•˜๋Š” ๋™์ผํ•œ ๋ถ„๊ธฐ(๋นจ๋ฆฌ ๊ฐ๊ธฐ๊ฐ€ ์•„๋‹˜)์— ์ƒˆ ๋ฒ„์ „์„ ํ‘ธ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹œ๋„ํ•ด ๋ณด์‹œ๊ฒ ์–ด์š”?

๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋ฌธ์ œ๋ฅผ ์ธ์ง€ํ•˜์ง€ ์•Š๋Š” ํ•œ ๊ณง ์ด ๋ถ„๊ธฐ์˜ ํ˜„์žฌ ๋ฒ„์ „์œผ๋กœ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์—ด ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

@cbane๋‹˜ ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ํ‘œ์ค€ ์ •๋ฆฌ๋Š” ~860GB 12000+ ์Šค๋ƒ…์ƒท ์ €์žฅ์†Œ๋ฅผ ์ •๋ฆฌํ•˜๋Š” ๋ฐ ์•ฝ 55์‹œ๊ฐ„์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค. ๋ณด๋‹ค ์ ๊ทน์ ์ธ ๋ณ‘๋ ฌ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด 3์‹œ๊ฐ„ ์ด์ƒ์œผ๋กœ ๋‹จ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @cbane , ๋ฉ‹์ง„ ์ž‘์—…์ž…๋‹ˆ๋‹ค!

Go 1.12.1๋กœ ์ปดํŒŒ์ผ๋œ Debian 9 amd64์—์„œ ์ด PR์„ ์‹คํ–‰ํ•˜๋ฉด 30TB ์ €์žฅ์†Œ์—์„œ 220๋ถ„ ํ›„์— ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

checking for packs not in index
[0:52] 16.45%  178 / 1082 packs
[5:23] 100.00%  1082 / 1082 packs
repository contains 3213929 packs (259446787 blobs) with 15.025 TiB
processed 259446787 blobs: 30090 duplicate blobs, 4.906 GiB duplicate
load all snapshots
find data that is still in use for 3 snapshots
[0:04] 0.00%  0 / 3 snapshots
tree 6f144a19eaae0e81518b396bfdfc9dd5c6c035bdba28c6a90d6f70e692aa1c55 not found in repository
github.com/restic/restic/internal/repository.(*Repository).LoadTree
        internal/repository/repository.go:707
github.com/restic/restic/internal/restic.FindUsedBlobs.func3
        internal/restic/find.go:52
github.com/restic/restic/internal/restic.FindUsedBlobs.func3
        internal/restic/find.go:74
github.com/restic/restic/internal/restic.FindUsedBlobs.func3
        internal/restic/find.go:74
github.com/restic/restic/internal/restic.FindUsedBlobs.func3
        internal/restic/find.go:74
github.com/restic/restic/internal/restic.FindUsedBlobs.func4
        internal/restic/find.go:89
gopkg.in/tomb%2ev2.(*Tomb).run
        vendor/gopkg.in/tomb.v2/tomb.go:163
runtime.goexit
        /usr/local/go/src/runtime/asm_amd64.s:1337

์ด๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ํšŒ๋ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๊ฐ์‚ฌ ํ•ด์š”,
-- ๋”๋ฐœ.

@DurvalMenezes ์ €์žฅ์†Œ์— ์ผ๋ถ€ ํŒฉ ํŒŒ์ผ์ด ๋ˆ„๋ฝ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ „์— ์ž˜๋ผ ๋ดค์–ด? restic check ์„ฑ๊ณตํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ฌด์—‡์ด ์ž˜๋ชป๋˜์—ˆ๋Š”์ง€์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

@cbane๋‹˜, ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋”, ์•„๋ž˜:

์ „์— ์ž˜๋ผ ๋ดค์–ด?

์•„๋‹ˆ, ์ด๊ฒƒ์ด ๋‚˜์˜ ์ฒซ ๋ฒˆ์งธ ์ž๋‘์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ ๋‚ด ์ €์žฅ์†Œ์—๋Š” ๋‚ด NAS์— ์žˆ๋Š” 3๊ฐœ์˜ ๋กœ์ปฌ ๋”ํ‹ฐ์—์„œ ~95๊ฐœ์˜ ์Šค๋ƒ…์ƒท์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด 3๊ฐœ์˜ ๋”ํ‹ฐ ํŠธ๋ฆฌ๋Š” ์ด ~30TB ๋ฐ ~60M ํŒŒ์ผ/ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ์ด๋ฉฐ ๋ฐฑ์—…ํ•˜๋Š” ๋ฐ ์ ์  ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ณ  ์žˆ์–ด 10GB ๋ฏธ๋งŒ์˜ ์ƒˆ ๋ฐ์ดํ„ฐ๋ฅผ 24์‹œ๊ฐ„ ๋ฐฑ์—…ํ•˜๋Š” ๋ฐ 24์‹œ๊ฐ„ ์ด์ƒ์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ํฌ๋Ÿผ์˜ ์กฐ์–ธ์€ restic forget (๋‚ด๊ฐ€ ํ•œ ๋งˆ์ง€๋ง‰ 3๊ฐœ์˜ ์Šค๋ƒ…์ƒท๋งŒ ๋‚จ๊น€)๋ฅผ ์‹คํ–‰ํ•œ ๋‹ค์Œ restic prune ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. OOM์œผ๋กœ ์ธํ•œ 24์‹œ๊ฐ„). ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋จธ์‹ (Google Compute Cloud์˜ VM)์„ RAM์˜ ๋‘ ๋ฐฐ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•œ ๋‹ค์Œ PR์„ ์‚ฌ์šฉํ•˜์—ฌ ์œ„์˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‹จ์ˆœ ๊ฒ€์‚ฌ๊ฐ€ ์„ฑ๊ณตํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ฌด์—‡์ด ์ž˜๋ชป๋˜์—ˆ๋Š”์ง€์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ง€๋‚œ 90์‹œ๊ฐ„ ๋™์•ˆ restic check ๋ฅผ ์‹คํ–‰ ์ค‘์ด๋ฉฐ(๋˜ํ•œ ๊ท€ํ•˜์˜ PR์„ ์‚ฌ์šฉํ•˜์—ฌ) ์ง€๊ธˆ๊นŒ์ง€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ถœ๋ ฅ์„ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค: restic-check-PARTIAL_output.txt

์œ„ ํŒŒ์ผ์˜ ๋์— ์–ธ๊ธ‰๋œ ๋ฐ”์™€ ๊ฐ™์ด restic check ์€(๋Š”) 3์ผ ์ „์— ์ตœ์‹  ๋ฉ”์‹œ์ง€("์Šค๋ƒ…์ƒท, ๋‚˜๋ฌด ๋ฐ ์–ผ๋ฃฉ ํ™•์ธ")๋ฅผ ํ‘œ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค... ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋ฉˆ์ถฐ์„œ ๊ฒฐ์ฝ” ๋๋‚˜์ง€ ์•Š์„์ง€ ๊ถ๊ธˆํ•ด์ง€๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. :-/ ์‹ค์ œ๋กœ ํ”„๋กœ์„ธ์Šค์˜ "์ถ”์ "์€ โ€‹โ€‹๋™์ผํ•œ ๋กœ์ปฌ ์บ์‹œ ํŒŒ์ผ์„ ๊ณ„์†ํ•ด์„œ ์—ฌ๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

```๋‚ ์งœ; strace -t -f -p 2608 -e openat 2>&1 | ๊ทธ๋ ™ ์˜คํ”ˆ | egrep -v ์™„๋ฃŒ๋˜์ง€ ์•Š์Œ\|์žฌ๊ฐœ๋จ | ๋จธ๋ฆฌ
2019๋…„ 7์›” 23์ผ ํ™”์š”์ผ 00:41:59 UTC
0์‹œ 41๋ถ„ 59์ดˆ openat [26,508 PID] (AT_FDCWD๋ฅผ "/ TMP / restic ์ฒดํฌ - ์บ์‹œ 370,688,148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / ๋ฐ์ดํ„ฐ / 53 / 53d242f8d6444bc2bd49e6689b4c7688fec8996c5e86863bf146a9eb28f54b5d"O_RDONLY | O_CLOEXEC) = 5
0์‹œ 41๋ถ„ 59์ดˆ openat [2,608 PID] (AT_FDCWD๋ฅผ "/ TMP / restic ์ฒดํฌ - ์บ์‹œ 370,688,148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / ๋ฐ์ดํ„ฐ / 53 / 53d242f8d6444bc2bd49e6689b4c7688fec8996c5e86863bf146a9eb28f54b5d"O_RDONLY | O_CLOEXEC) = 10
0์‹œ 41๋ถ„ 59์ดˆ openat [2,615 PID] (AT_FDCWD๋ฅผ "/ TMP / restic ์ฒดํฌ - ์บ์‹œ 370,688,148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / ๋ฐ์ดํ„ฐ / 53 / 53d242f8d6444bc2bd49e6689b4c7688fec8996c5e86863bf146a9eb28f54b5d"O_RDONLY | O_CLOEXEC) = 5
0์‹œ 41๋ถ„ 59์ดˆ openat [5482 PID (, AT_FDCWD๋ฅผ "/ TMP / restic ์ฒดํฌ - ์บ์‹œ 370,688,148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / ๋ฐ์ดํ„ฐ / 53 / 53d242f8d6444bc2bd49e6689b4c7688fec8996c5e86863bf146a9eb28f54b5d"O_RDONLY | O_CLOEXEC) = 5
0์‹œ 41๋ถ„ 59์ดˆ openat [2,615 PID] (AT_FDCWD๋ฅผ "/ TMP / restic ์ฒดํฌ - ์บ์‹œ 370,688,148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / ๋ฐ์ดํ„ฐ / 53 / 53d242f8d6444bc2bd49e6689b4c7688fec8996c5e86863bf146a9eb28f54b5d"O_RDONLY | O_CLOEXEC) = 5
0์‹œ 41๋ถ„ 59์ดˆ openat [3688 PID (, AT_FDCWD๋ฅผ "/ TMP / restic ์ฒดํฌ - ์บ์‹œ 370,688,148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / ๋ฐ์ดํ„ฐ / 53 / 53d242f8d6444bc2bd49e6689b4c7688fec8996c5e86863bf146a9eb28f54b5d"O_RDONLY | O_CLOEXEC) = 5
0์‹œ 41๋ถ„ 59์ดˆ openat [5482 PID (, AT_FDCWD๋ฅผ "/ TMP / restic ์ฒดํฌ - ์บ์‹œ 370,688,148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / ๋ฐ์ดํ„ฐ / 53 / 53d242f8d6444bc2bd49e6689b4c7688fec8996c5e86863bf146a9eb28f54b5d"O_RDONLY | O_CLOEXEC) = 10
0์‹œ 41๋ถ„ 59์ดˆ openat [2,608 PID] (AT_FDCWD๋ฅผ "/ TMP / restic ์ฒดํฌ - ์บ์‹œ 370,688,148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / ๋ฐ์ดํ„ฐ / 53 / 53d242f8d6444bc2bd49e6689b4c7688fec8996c5e86863bf146a9eb28f54b5d"O_RDONLY | O_CLOEXEC) = 11
0์‹œ 41๋ถ„ 59์ดˆ openat [2,638 PID] (AT_FDCWD๋ฅผ "/ TMP / restic ์ฒดํฌ - ์บ์‹œ 370,688,148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / ๋ฐ์ดํ„ฐ / 53 / 53d242f8d6444bc2bd49e6689b4c7688fec8996c5e86863bf146a9eb28f54b5d"O_RDONLY | O_CLOEXEC) = 5
0์‹œ 41๋ถ„ 59์ดˆ openat [2,638 PID] (AT_FDCWD๋ฅผ "/ TMP / restic ์ฒดํฌ - ์บ์‹œ 370,688,148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / ๋ฐ์ดํ„ฐ / 53 / 53d242f8d6444bc2bd49e6689b4c7688fec8996c5e86863bf146a9eb28f54b5d"O_RDONLY | O_CLOEXEC) = 5

And then, almost 10 hours later: 

2019๋…„ 7์›” 23์ผ ํ™”์š”์ผ 10:14:27 UTC
10์‹œ 14๋ถ„ 27์ดˆ openat [2,632 PID] (AT_FDCWD๋ฅผ "/ TMP / restic ์ฒดํฌ - ์บ์‹œ 370,688,148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / ๋ฐ์ดํ„ฐ / 53 / 53d242f8d6444bc2bd49e6689b4c7688fec8996c5e86863bf146a9eb28f54b5d"O_RDONLY | O_CLOEXEC) = 5
10์‹œ 14๋ถ„ 28์ดˆ openat [2,639 PID] (AT_FDCWD๋ฅผ "/ TMP / restic ์ฒดํฌ - ์บ์‹œ 370,688,148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / ๋ฐ์ดํ„ฐ / 53 / 53d242f8d6444bc2bd49e6689b4c7688fec8996c5e86863bf146a9eb28f54b5d"O_RDONLY | O_CLOEXEC) = 5
10์‹œ 14๋ถ„ 28์ดˆ openat [2,634 PID] (AT_FDCWD๋ฅผ "/ TMP / restic ์ฒดํฌ - ์บ์‹œ 370,688,148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / ๋ฐ์ดํ„ฐ / 53 / 53d242f8d6444bc2bd49e6689b4c7688fec8996c5e86863bf146a9eb28f54b5d"O_RDONLY | O_CLOEXEC) = 5
10์‹œ 14๋ถ„ 28์ดˆ openat [2,613 PID] (AT_FDCWD๋ฅผ "/ TMP / restic ์ฒดํฌ - ์บ์‹œ 370,688,148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / ๋ฐ์ดํ„ฐ / 53 / 53d242f8d6444bc2bd49e6689b4c7688fec8996c5e86863bf146a9eb28f54b5d"O_RDONLY | O_CLOEXEC) = 5
10์‹œ 14๋ถ„ 28์ดˆ openat [2,634 PID] (AT_FDCWD๋ฅผ "/ TMP / restic ์ฒดํฌ - ์บ์‹œ 370,688,148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / ๋ฐ์ดํ„ฐ / 53 / 53d242f8d6444bc2bd49e6689b4c7688fec8996c5e86863bf146a9eb28f54b5d"O_RDONLY | O_CLOEXEC) = 5
10์‹œ 14๋ถ„ 28์ดˆ openat [3688 PID (, AT_FDCWD๋ฅผ "/ TMP / restic ์ฒดํฌ - ์บ์‹œ 370,688,148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / ๋ฐ์ดํ„ฐ / 53 / 53d242f8d6444bc2bd49e6689b4c7688fec8996c5e86863bf146a9eb28f54b5d"O_RDONLY | O_CLOEXEC) = 5
10์‹œ 14๋ถ„ 28์ดˆ openat [2,617 PID] (AT_FDCWD๋ฅผ "/ TMP / restic ์ฒดํฌ - ์บ์‹œ 370,688,148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / ๋ฐ์ดํ„ฐ / 53 / 53d242f8d6444bc2bd49e6689b4c7688fec8996c5e86863bf146a9eb28f54b5d"O_RDONLY | O_CLOEXEC) = 5
10์‹œ 14๋ถ„ 28์ดˆ openat [3688 PID (, AT_FDCWD๋ฅผ "/ TMP / restic ์ฒดํฌ - ์บ์‹œ 370,688,148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / ๋ฐ์ดํ„ฐ / 53 / 53d242f8d6444bc2bd49e6689b4c7688fec8996c5e86863bf146a9eb28f54b5d"O_RDONLY | O_CLOEXEC) = 5
10์‹œ 14๋ถ„ 28์ดˆ openat [2,634 PID] (AT_FDCWD๋ฅผ "/ TMP / restic ์ฒดํฌ - ์บ์‹œ 370,688,148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / ๋ฐ์ดํ„ฐ / 53 / 53d242f8d6444bc2bd49e6689b4c7688fec8996c5e86863bf146a9eb28f54b5d"O_RDONLY | O_CLOEXEC) = 5
10์‹œ 14๋ถ„ 28์ดˆ openat [2,611 PID] (AT_FDCWD๋ฅผ "/ TMP / restic ์ฒดํฌ - ์บ์‹œ 370,688,148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / ๋ฐ์ดํ„ฐ / 53 / 53d242f8d6444bc2bd49e6689b4c7688fec8996c5e86863bf146a9eb28f54b5d"O_RDONLY | O_CLOEXEC) = 5
```

Restic Rebuild-index๋ฅผ ์‹คํ–‰ํ•œ ๋‹ค์Œ ์ƒˆ ๋ฐฑ์—…์„ ์‹คํ–‰ํ•˜๋ฉด ์–ด๋Š ์ •๋„ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๋ฝ๋œ ํŒฉ์˜ ํ•ญ๋ชฉ์ด ๋ฐฑ์—… ์ค‘์ธ ์œ„์น˜์—์„œ ์—ฌ์ „ํžˆ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ์ƒˆ ๋ฐฑ์—…์ด ์ด๋ฅผ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋‹ค์‹œ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ธฐ์กด ๋ฐฑ์—…์ด ๋‹ค์‹œ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ๋‹ค์Œ์— ์‹œ๋„ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. restic check ์ด ๋‹ค์Œ 24์‹œ๊ฐ„ ๋‚ด์— ์™„๋ฃŒ๋˜์ง€ ์•Š์œผ๋ฉด SIGINTํ•œ ๋‹ค์Œ restic rebuild-index ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์žฌ๊ตฌ์ถ• ์ธ๋ฑ์Šค์˜ ๊ฒฝ์šฐ ์ด PR์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๋ ˆ์Šคํ‹ฑ ๋งˆ์Šคํ„ฐ ํ—ค๋“œ? ๋˜๋Š” ๋‹ค๋ฅธ ๊ฒƒ?

๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
-- ๋”๋ฐœ.

์˜ˆ, ์œ ๋งํ•ด ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ restic rebuild-index ๋ฅผ ์ˆ˜ํ–‰ํ•œ ๋‹ค์Œ ์„ธ ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ƒˆ ๋ฐฑ์—…์„ ์‹คํ–‰ํ•˜๊ณ  ๋‹ค๋ฅธ ๋ชจ๋“  ์Šค๋ƒ…์ƒท์„ ์žŠ์–ด๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ ํ›„์— restic prune ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” rebuild-index ์ฝ”๋“œ๋ฅผ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ์›ํ•˜๋Š” ๋ฒ„์ „์œผ๋กœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@cbane , ๊ณ„์† ์•Œ๋ ค๋“œ๋ฆฌ๊ธฐ ์œ„ํ•ด: ์ €๋Š” 5์ผ ์ „์— ๊ท€ํ•˜์˜ PR์„ ์‚ฌ์šฉํ•˜์—ฌ restic rebuild-index ๋ฅผ ์‹œ์ž‘ํ–ˆ์œผ๋ฉฐ(๋ชจ๋“  ๋ฒ„์ „์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜์ง€๋งŒ ๊ท€ํ•˜์˜ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋ฉด ์ž‘์—…์ด ๋” ๊ฐ„๋‹จํ•ด์ง) ๊ทธ ์ดํ›„๋กœ ๊ณ„์† ์‹คํ–‰๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ ˆ๋ง์ ์ธ ์ฒ˜์Œ ๋ฉฐ์น  ํ›„(๋ฐฑ๋ถ„์œจ์„ ์™ธ์‚ฝํ•˜์—ฌ 30์ผ ์ด์ƒ ์‹คํ–‰๋  ๊ฒƒ์œผ๋กœ ํ‘œ์‹œํ•œ ๊ฒฝ์šฐ), ์†๋„๊ฐ€ ์–ด๋Š ์ •๋„ ์ƒ์Šนํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉฐ 10์ผ ์ •๋„๋งŒ ๋” ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์ตœ์†Œํ•œ ํ˜„์žฌ ์ƒํƒœ์—์„œ๋Š” '๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ํŒŒ์ผ ๊ณ„์‚ฐ' ๋‹จ๊ณ„).

์ด rebuild-index ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ๊ณ„ํš์€ PR๊ณผ ํ•จ๊ป˜ restic prune ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ์ง„ํ–‰๋˜๋Š”์ง€ ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๋ชจ๋“  ์‚ฌ๋žŒ์„ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๊ธฐ: prune rebuild-index ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ƒ์„ฑํ•ด์•ผ ํ–ˆ๋˜ 104GB VM์— ์˜ํ•ด ์™„์ „ํžˆ ์†Œ๋ชจ๋œ 300๋‹ฌ๋Ÿฌ์˜ ๋ฌด๋ฃŒ GCloud ํฌ๋ ˆ๋”ง์ด ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ต์…˜์ด ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค :-/ ์ด ํ˜ผ๋ž€์—์„œ ๋ฒ—์–ด๋‚  ๋ฐฉ๋ฒ•์„ ์ฐพ์œผ๋ฉด ์—…๋ฐ์ดํŠธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” "prune-speedup" ์ง€์ ์„ ์‹œ๋„ํ–ˆ๊ณ  ๊ฒฐ๊ณผ๋Š” ๋งค์šฐ ์œ ๋งํ–ˆ์Šต๋‹ˆ๋‹ค!

๋ฐฑ์—”๋“œ: S3

# bin/restic version
restic 0.9.5 compiled with go1.12.4 on linux/amd64
# bin/restic prune
repository 6240cd5d opened successfully, password is correct
counting files in repo
building new index for repo
[1:30:34] 100.00%  319784 / 319784 packs
repository contains 319784 packs (5554019 blobs) with 1.445 TiB
processed 5554019 blobs: 0 duplicate blobs, 0 B duplicate
load all snapshots
find data that is still in use for 30 snapshots
[3:38:52] 100.00%  30 / 30 snapshots
found 5376708 of 5554019 data blobs still in use, removing 177311 blobs
will remove 0 invalid files
will delete 3526 packs and rewrite 4850 packs, this frees 26.925 GiB
[1:28:21] 100.00%  4850 / 4850 packs rewritten
counting files in repo
[1:20:27] 100.00%  314240 / 314240 packs
finding old index files
saved new indexes as [b7029105 797145b1 0ed8981e 7f19c455 dff4d9be a52d8e7a 0cf9f266 ab32a9e4 f34331b3 84c84cbb 563896c9 9902e35d 817ef96c 6b4dcfef 32d3e18c 1d782d96 b12554dd d4b69bcf 8ec94a43 66cbd035 8e9cb96d d74b5246 ca7d7ca3 1f209708 9fe26189 28414ee2 88ff07fb 24280466 8757a1f9 8706ff35 5fab942b 549409c3 f781a762 9417afec 4b2361aa 6b43f992 8da8dfe7 54ec498e 5be6fb8a 17411b83 270f3ce3 ba520d35 95913ad0 f8f15108 cbc67971 a419ff7c 875cfcc7 13f55ece bd488aa4 7f5b588a cddd40b4 7a79d1ce bd7e3d0f 2cdcd635 ee6e28c3 98146287 50867bde 41a056ae 836ce971 e9451c8b 0f9cc7e6 52dedc04 c4e8e7f6 2e4966f0 ba4fa5b3 ddc9a766 b995fd36 fd6b3ac8 1c12bcc3 4c98c3c9 39ac7cd5 42ebf4c1 1a48465e b5245192 73a73c5e daa6ee8d d26ce697 9f84d9b3 bc371def b141466a 6906b3c1 282ce115 d8024363 10f0b924 ad4fad64 9450aada 31378365 65d785b3 98b085d0 768f420c f22512b3 be3223ba 031d5488 f2b7fcf6 87177471 fd269664 b239b89e 6bf972ea 0d6f8f36 87362542 fff9c2cd 5c85ac76 f91daae1 dc594a83 220bdc83]
remove 1459 old index files
[2:33] 100.00%  8376 / 8376 packs deleted
done
# 

์ด์ œ ๊ฐœ๋ฐœ์ž ๋ฒ„์ „:

# bin/restic_linux_amd64 version
restic 0.9.5-dev (compiled manually) compiled with go1.12.4 on linux/amd64
# bin/restic_linux_amd64 prune
repository 6240cd5d opened successfully, password is correct
counting files in repo
building new index for repo
[57:21] 100.00%  314240 / 314240 packs
repository contains 314240 packs (5376708 blobs) with 1.419 TiB
processed 5376708 blobs: 0 duplicate blobs, 0 B duplicate
load all snapshots
find data that is still in use for 29 snapshots
[1:48:18] 100.00%  29 / 29 snapshots
found 5356653 of 5376708 data blobs still in use, removing 20055 blobs
will remove 0 invalid files
will delete 212 packs and rewrite 1427 packs, this frees 3.114 GiB
[14:16] 100.00%  1427 / 1427 packs rewritten
counting files in repo
[57:47] 100.00%  313618 / 313618 packs
finding old index files
saved new indexes as [004d6eb2 630de131 1b85faed 0fb7a978 bc500e05 34f7d187 447c3b59 ada047d2 5430430e 768f606e a5c341ea a75059c5 71d0fbec c63f5c56 ba43e69d f47699f5 d7cd2587 5826bcae 6250ec67 6af77aa4 cbf8c1f9 a7809b5f c3242748 8bb7d037 8ca69481 5a8877c3 fb30ea48 4bdb6269 eeeba466 7cdc444a bc15ddd5 c5544612 b8a5004c 2879403a c33778b7 e692013a 41ce8a1d 55b4be0a 5714b820 1adca569 b06ccd6b 16467da7 79ed066a 64c7e397 43217ede af7350a4 73c65a0f 35260990 a232ea42 c843bfa5 332aded7 0e294517 26984755 3c36a14b 68b2024e 267bf0b2 a41c4f64 aa46affb c7a6e2ac 0d34c60f 766d21f0 0d7b8b41 4fea4363 a1a3c5cd 73809a0e 56a67410 25314d47 a32ded24 68feae36 78ef5cbb b051a740 6a51f900 d2ee860f 1ad44787 c6c4358d 89de2f69 a157bd2b 77995b94 3bc58934 b905be42 0a1df2e7 ba67a98c 263b5266 7a809abc 34ff6f07 d96adc12 8f69fc74 ebb053eb 8fb68f6a 11224e7d 990f61f8 764941fc ed95513b 1c17c8aa 3226a7cb 76988c78 e4d8f156 b4d4c952 8c379d51 e968f3c9 f9cfff55 464cf3e1 f9d23c32 136957e3 02e397b1]
remove 105 old index files
[0:32] 100.00%  1639 / 1639 packs deleted
done
#

ํฐ ๊ฐœ์„ ์ด ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค! ์ถ•ํ•˜ ํ•ด์š”!
์•ž์œผ๋กœ ๋ช‡ ์ฃผ ๋™์•ˆ ๋” ๋งŽ์€ ๊ธฐ๊ณ„๋ฅผ ์‹œํ—˜ํ•ด ๋ณด๋ฉด ๋” ๋งŽ์€ ๊ฒฐ๊ณผ๋ฅผ ๊ฒŒ์‹œํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@fbarbeira ๊ฒŒ์‹œํ•œ ์ถœ๋ ฅ์—์„œ โ€‹โ€‹์‹ค์ œ๋กœ ๊ฐœ์„ ๋œ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ Backblaze B2์—์„œ ํฐ ์ €์žฅ์†Œ๋ฅผ ์ •๋ฆฌํ•  ๋•Œ ์–ป์€ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.

repository 399dfab1 opened successfully, password is correct
listing files in repo
loading index for repo
[0:02] 100.00%  71 / 71 index files
checking for packs not in index
repository contains 208840 packs (1675252 blobs) with 1006.203 GiB
processed 1675252 blobs: 0 duplicate blobs, 0 B duplicate
load all snapshots
find data that is still in use for 32 snapshots
[0:16] 100.00%  32 / 32 snapshots
found 1675113 of 1675252 data blobs still in use, removing 139 blobs
will remove 0 invalid files
will delete 4 packs and rewrite 24 packs, this frees 26.404 MiB
[3:31] 100.00%  24 / 24 packs rewritten
saving new index
[10:31] 70 index files
remove 71 old index files
[0:04] 100.00%  28 / 28 packs deleted
done

์†๋„ ์ €ํ•˜์˜ ์ฃผ์š” ์›์ธ์€ ์ผ€์ด๋ธ” ๋ชจ๋Ž€์„ ํ†ตํ•œ ์ œํ•œ๋œ ์—…๋กœ๋“œ ์†๋„์ž…๋‹ˆ๋‹ค.

restic version ์˜ ์ถœ๋ ฅ๋„ ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

restic 0.9.5 (v0.9.5-31-g09b92d6d) compiled with go1.11.6 on linux/amd64

@fd0 ์—์„œ ์ด ์—…๋ฐ์ดํŠธ๋ฅผ ๋ณ‘ํ•ฉํ•  ์˜๋„๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ๊ฐœ์„  ์‚ฌํ•ญ์„ ๊ณต์‹ ๋ฆด๋ฆฌ์Šค๋กœ๋„ ๋งŒ๋“ค์–ด ์ฃผ์‹œ๋ฉด ๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐฑ์—… ํšŒ์ „์ด ๋„ˆ๋ฌด ๋Š๋ ค์ ธ์„œ ์œ ๊ฐ์Šค๋Ÿฝ๊ฒŒ๋„ restic์ด ๋” ์ด์ƒ ์˜ต์…˜์ด ๋˜์ง€ ์•Š๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

@cbane , ํ™•์‹คํžˆ ์ฐจ๋‹จ๊ธฐ๋Š” ์•„๋‹ˆ์ง€๋งŒ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์ •ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ ํ•ญ๋ชฉ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. prune pack rewrites๋Š” repos๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ๋Š๋ ค์ง‘๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, 3,984,097 ํŒฉ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ํŒฉ ๋‹ค์‹œ ์“ฐ๊ธฐ ๋‹จ๊ณ„๋Š” ๋™์ผํ•œ AZ์˜ S3 ๋ฒ„ํ‚ท๊ณผ ํ†ต์‹ ํ•˜๋Š” i3.8xlarge์—์„œ 110ํŒฉ/์ดˆ๋กœ ํŒฉ์„ ๋‹ค์‹œ ์”๋‹ˆ๋‹ค.

๋” ์ž‘์€ ์ €์žฅ์†Œ(450,473)๊ฐ€ ์žˆ๋Š” ๋™์ผํ•œ ์ธ์Šคํ„ด์Šค + ๋ฐฑ์—… ์ €์žฅ์†Œ ์ฝค๋ณด๋Š” 200ํŒฉ/์ดˆ๋กœ ๋‹ค์‹œ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

@pmkane , ๊ฐ™์€ ์ˆ˜์˜ ํŒฉ์„ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋”๋ผ๋„ ๊ทธ ์†๋„ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ํŒฉ์„ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋”๋ผ๋„ ํ•ญ์ƒ ๊ฑฐ๊ธฐ์— ์žˆ์Šต๋‹ˆ๊นŒ? ๋˜ํ•œ ํŒฉ์„ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ๋‹ค๋ฅธ ๋‹จ๊ณ„๋„ ๋Š๋ ค์ง‘๋‹ˆ๊นŒ?

๋ฆฌํฌ์ง€ํ† ๋ฆฌ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์†๋„๊ฐ€ ๋Š๋ ค์ง€๋Š” ์ฝ”๋“œ๋Š” ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์†๋„ ์ €ํ•˜์˜ ์›์ธ์„ ์ถ”์ ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋„๋ก ๋กœ์ปฌ ๋ฒ„์ „์˜ ํŒฉ ์žฌ์ž‘์„ฑ ๋‹จ๊ณ„์— ํ”„๋กœํŒŒ์ผ๋ง ์ง€์›์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚ด ๊ฐ€์žฅ ํฐ ์ €์žฅ์†Œ๋Š” ์•ฝ 200,000ํŒฉ์— ๋ถˆ๊ณผํ•˜๋ฏ€๋กœ ํ˜„์žฌ ๋ณด๊ณ  ์žˆ๋Š” ๊ฒƒ๊ณผ ๋น„๊ตํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ”„๋กœํŒŒ์ผ๋ง์ด ํ™œ์„ฑํ™”๋œ ์ƒํƒœ์—์„œ ์‹คํ–‰ํ•˜๊ณ  ์ถœ๋ ฅ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

@cbane , ํŒฉ ์ˆ˜ ๋˜๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ํฌ๊ธฐ์˜ ํ•จ์ˆ˜์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋” ์ž‘์€ ์ €์žฅ์†Œ์˜ ๋ณต์ œ๋ณธ์— ๋Œ€ํ•ด ๋ช‡ ๊ฐ€์ง€ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœํŒŒ์ผ๋ง์ด ํฌํ•จ๋œ ๋ฒ„์ „์„ ์‹คํ–‰ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๊ณต์œ ํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.

460k ํŒฉ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์ผ๋ถ€ ์ƒ˜ํ”Œ ํƒ€์ด๋ฐ -- 3.7mm ํƒ€์ด๋ฐ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค ๋กœ๋“œ
[0:01] 100.00% 154 / 154 ์ธ๋ฑ์Šค ํŒŒ์ผ

36๊ฐœ์˜ ์Šค๋ƒ…์ƒท์— ๋Œ€ํ•ด ์•„์ง ์‚ฌ์šฉ ์ค‘์ธ ๋ฐ์ดํ„ฐ ์ฐพ๊ธฐ
[0:34] 100.00% 36 / 36 ์Šค๋ƒ…์ƒท
[0:26] 100.00% 4555 / 4555 ํŒฉ ์žฌ์ž‘์„ฑ(175 ํŒฉ/์ดˆ)
[0:21] 151๊ฐœ์˜ ์ธ๋ฑ์Šค ํŒŒ์ผ
[0:01] 100.00% 11401 / 11401 ํŒฉ์ด ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

3,752,505ํŒฉ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ. "14๊ฐœ์˜ ์Šค๋ƒ…์ƒท์— ๋Œ€ํ•ด ์•„์ง ์‚ฌ์šฉ ์ค‘์ธ ๋ฐ์ดํ„ฐ ์ฐพ๊ธฐ" ๋‹จ๊ณ„์—์„œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ~1GB RSS์—์„œ 8GB RSS๋กœ ์ฆ๊ฐ€ํ•œ๋‹ค๋Š” ์ ๋„ ์ฃผ๋ชฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Restic์€ ๊ฒฐ๊ตญ ~16GB RSS๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค. ํฐ repo ํฌ๊ธฐ๋ฅผ ๊ฐ์•ˆํ•  ๋•Œ ํ”ผํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค ๋กœ๋“œ
[0:33] 100.00% 1188 / 1188 ์ธ๋ฑ์Šค ํŒŒ์ผ

14๊ฐœ์˜ ์Šค๋ƒ…์ƒท์— ๋Œ€ํ•ด ์•„์ง ์‚ฌ์šฉ ์ค‘์ธ ๋ฐ์ดํ„ฐ ์ฐพ๊ธฐ
[2:12] 100.00% 14 / 14 ์Šค๋ƒ…์ƒท
[49:07] 100.00% 339187 / 339187 ํŒฉ ์žฌ์ž‘์„ฑ(115ํŒฉ/์ดˆ)
์ƒˆ ์ธ๋ฑ์Šค ์ €์žฅ
[10:59] 1176๊ฐœ์˜ ์ธ๋ฑ์Šค ํŒŒ์ผ
1188๊ฐœ์˜ ์˜ค๋ž˜๋œ ์ƒ‰์ธ ํŒŒ์ผ์„ ์ œ๊ฑฐํ•˜์‹ญ์‹œ์˜ค
[4:51] 100.00% 409728 / 409728 ํŒฉ์ด ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@cbane , ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ •๋ฆฌ ์†๋„์— ๋Œ€ํ•œ ๋ถ‰์€ ์ฒญ์–ด -- ๋…๋ฆฝ์ ์ธ ํ”„๋กœํŒŒ์ผ๋ง์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋‘ ๊ฐœ์˜ ์ €์žฅ์†Œ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ AZ์— ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๋Œ€๊ทœ๋ชจ ์ €์žฅ์†Œ(20.791TiB, 40,522,693 blob)์—์„œ "์•„์ง ์‚ฌ์šฉ ์ค‘์ธ ๋ฐ์ดํ„ฐ ์ฐพ๊ธฐ" ๋‹จ๊ณ„์—์„œ ์ •๋ฆฌํ•˜๋Š” ๋™์•ˆ ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋ฌด 5e40b6de93549df6443f55f0f68f24bf36671e28590579c78bc62f7557490c56 ์ €์žฅ์†Œ์—์„œ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค
github.com/restic/restic/internal/repository.( ์ €์žฅ์†Œ).LoadTree๋‚ด๋ถ€/์ €์žฅ์†Œ/repository.go:711github.com/restic/restic/internal/restic.FindUsedBlobs.func3๋‚ด๋ถ€/์ค‘๋‹จ/find.go:52github.com/restic/restic/internal/restic.FindUsedBlobs.func3๋‚ด๋ถ€/์ค‘๋‹จ/find.go:74github.com/restic/restic/internal/restic.FindUsedBlobs.func4๋‚ด๋ถ€/์ค‘๋‹จ/find.go:89gopkg.in/tomb%2ev2.( ๋ฌด๋ค).run
๊ณต๊ธ‰์—…์ฒด/gopkg.in/tomb.v2/tomb.go:163
๋Ÿฐํƒ€์ž„.goexit
/usr/lib/golang/src/runtime/asm_amd64.s:1337

๋ชจ๋“  ๋ฐฑ์—…์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ์œผ๋ฉฐ ๋‚˜๋จธ์ง€ ๊ฒ€์‚ฌ๋Š” ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š” ์ถ”๊ฐ€ ํŒŒ๊ธฐ, @cbane ?

์žฌ๊ตฌ์ถ• ์ƒ‰์ธ์„ ํ†ตํ•ด ์ •๋ฆฌ๊ฐ€ ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค. prune์„ ๋” ํƒ„๋ ฅ์ ์œผ๋กœ ๋งŒ๋“œ๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ฌธ์ œ๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ , ์˜ค๋Š˜ ๋˜ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์žฌ๊ตฌ์ถ• ์ธ๋ฑ์Šค๋กœ ํ•ด๊ฒฐ๋˜์—ˆ์ง€๋งŒ ์ •๋ฆฌ ์ž์ฒด๊ฐ€ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๋Š”์ง€ ๊ถ๊ธˆํ•ด์ง€๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ ˆ์Šคํ‹ฑ ์ฒดํฌ๋Š” ๋งค๋ฒˆ ๊นจ๋—ํ•˜๊ฒŒ ๋Œ์•„์˜ต๋‹ˆ๋‹ค.

๋‚˜๋ฌด 7dc9112b587a2b67a2459e6badf7c14f986408e05dbe8a68e7458a30740ea951 ์ €์žฅ์†Œ์—์„œ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค
github.com/restic/restic/internal/repository.( ์ €์žฅ์†Œ).LoadTree๋‚ด๋ถ€/์ €์žฅ์†Œ/repository.go:711github.com/restic/restic/internal/restic.FindUsedBlobs.func3๋‚ด๋ถ€/์ค‘๋‹จ/find.go:52github.com/restic/restic/internal/restic.FindUsedBlobs.func3๋‚ด๋ถ€/์ค‘๋‹จ/find.go:74github.com/restic/restic/internal/restic.FindUsedBlobs.func4๋‚ด๋ถ€/์ค‘๋‹จ/find.go:89gopkg.in/tomb%2ev2.( ๋ฌด๋ค).run
๊ณต๊ธ‰์—…์ฒด/gopkg.in/tomb.v2/tomb.go:163
๋Ÿฐํƒ€์ž„.goexit
/usr/lib/golang/src/runtime/asm_amd64.s:1337

๋งค์ฃผ ํ•œ ๋ฒˆ ์ „์ฒด ๋ณต์›์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋ฐฑ์—… ๋ฌด๊ฒฐ์„ฑ์„ ํ™•์ธํ•˜๊ณ  ์ผ์ผ ์ŠคํŒŸ ํŒŒ์ผ ๋ณต์›์„ ๋ณด์™„ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋จธ์ง€ ๊ฒ€์‚ฌ๋Š” ๋ฐฑ์—…์— ๋ฌธ์ œ๋ฅผ ํ‘œ์‹œํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ๋ˆ„๋ฝ๋œ Blob์œผ๋กœ ์ธํ•ด ์ „์ฒด ๋ณต์›์ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•ด์„œ๋Š” ์•ˆ ๋˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฌด์–ธ๊ฐ€๊ฐ€ ์ •๋ฆฌ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

์†๋„ ํ–ฅ์ƒ ๋ถ„๊ธฐ์˜ ๋ฒ„๊ทธ์ธ์ง€, ๊ธฐ๋ณธ ์ •๋ฆฌ ์ฝ”๋“œ์˜ ๋ฒ„๊ทธ์ธ์ง€ ์•„๋‹ˆ๋ฉด ์™„์ „ํžˆ ๋‹ค๋ฅธ ๊ฒƒ์ธ์ง€ ๋ถˆ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์Šฌํ”„๊ฒŒ๋„ ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ ํ›Œ๋ฅญํ•œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ์—†์ง€๋งŒ ๊ฐ€์žฅ ํฐ repo์—์„œ ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ repo ์†์ƒ์„ ๋ณธ ๊ฒƒ์€ ์ด๋ฒˆ์ด ๋‘ ๋ฒˆ์งธ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๋” ์ž‘์€ repos๋Š” ์–ด๋–ค ๋ฌธ์ œ๋„ ๋ณด์—ฌ์ฃผ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋ถˆํ–‰ํžˆ๋„ ์žฌ๊ณ  ์ •๋ฆฌ๋กœ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์€ ์ €์žฅ์†Œ์˜ ํฌ๊ธฐ๋กœ ์ธํ•ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ง€๊ธˆ์€ EBS ์Šค๋ƒ…์ƒท์œผ๋กœ ๋˜๋Œ๋ฆด ์˜ˆ์ •์ด์ง€๋งŒ ์ด ๋ฌธ์ œ์™€ ๊ธฐํƒ€ ๋ฌธ์ œ๋ฅผ ๊ณ„์†ํ•ด์„œ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์–ด๋””๊ฐ€ ํ•ฉ๋‹นํ•œ์ง€ ํ…Œ์ŠคํŠธํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค!

์ƒํ™ฉ์„ ๊ฐœ์„ ํ•ด์•ผ ํ•˜๋Š” ์ž‘์€ PR #2507์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ช‡๋ช‡ ๋ถ„๋“ค์ด ์ด๊ฒƒ์— ๋Œ€ํ•ด ๋ช‡ ๊ฐ€์ง€ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค...
๊ฐ์‚ฌ ํ•ด์š”!

์ •๋ฆฌ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์ฝ๊ธฐ - ์žฌํฌ์žฅ์€ blob์„ ์ฝ์€ ๋‹ค์Œ ์ƒˆ ํŒฉ์„ ์—ฐ์†์ ์œผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์žฌํฌ์žฅํ•˜๋Š” ๊ฒฝ์šฐ ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

@DurvalMenezes ๊ฐ€ ๋กœ์ปฌ ๋„คํŠธ์›Œํฌ ๋˜๋Š” ์ธํ„ฐ๋„ท ์ƒ์˜ NAS์ž…๋‹ˆ๊นŒ? ๋กœ์ปฌ ๋„คํŠธ์›Œํฌ์—์„œ Wi-Fi ๋˜๋Š” ์ด๋”๋„ท์„ ํ†ตํ•ด ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๊นŒ?

Blob ์ฝ๊ธฐ/ํŒฉ์„ ๋„คํŠธ์›Œํฌ์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์„ ๋ณ‘๋ ฌํ™”ํ•˜๋Š” ๊ฒƒ์ด ์‰ฌ์šด ์Šน๋ฆฌ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.


์ด์™€๋Š” ๋ณ„๋„๋กœ ํ”„๋ฃจ๋‹(prune)์„ ์ ์ง„์ ์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์€ ์ „๋žต์ด ์•„๋‹๊นŒ ์‹ถ์Šต๋‹ˆ๋‹ค. ๋ณต์ œ์˜ 2๋‹จ๊ณ„ ํ™”์„ ์ˆ˜์ง‘๊ณผ ๊ฐ™์€ ๊ฒƒ: https://github.com/gilbertchen/duplicacy/wiki/Lock-Free-Deduplication#two -step-fossil-collection

์ด์™€๋Š” ๋ณ„๋„๋กœ ํ”„๋ฃจ๋‹(prune)์„ ์ ์ง„์ ์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์€ ์ „๋žต์ด ์•„๋‹๊นŒ ์‹ถ์Šต๋‹ˆ๋‹ค. ๋ณต์ œ์˜ 2๋‹จ๊ณ„ ํ™”์„ ์ˆ˜์ง‘๊ณผ ๊ฐ™์€ ๊ฒƒ: https://github.com/gilbertchen/duplicacy/wiki/Lock-Free-Deduplication#two -step-fossil-collection

์ด ์ฃผ์ œ์— ๋Œ€ํ•œ ๋…ผ์˜๋Š” #1141์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

PR #2513์˜ ๋‘ ๊ฐ€์ง€ ์ƒˆ๋กœ์šด ๋ช…๋ น์ธ 'cleanup-index'์™€ 'cleanup-packs'๋„ ์ƒํ™ฉ์„ ๋งŽ์ด ๊ฐœ์„ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉด ์ €์žฅ์†Œ๊ฐ€ ์ •์ƒ์ธ ๊ฒฝ์šฐ ์žฌํฌ์žฅํ•˜์ง€ ์•Š๊ณ  ์ •๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค..

๊ทธ๋ž˜์„œ ์ €๋Š” ์‹ค์ˆ˜๋กœ ๋‘ ๊ฐ€์ง€๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•œ ์‹œ๊ฐ„์— 1๋ฒˆ ๋Œ€์‹  11๋ฒˆ ์‹œ๊ฐ„๋‹น ๋ฐฑ์—…์„ ์‹คํ–‰ํ–ˆ๊ณ  ์ง€๋‚œ 384์ผ ์ •๋„ ๋™์•ˆ ์žŠ์–ด๋ฒ„๋ฆฌ๊ธฐ ์ž‘์—…์„ ์‹คํ–‰ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. 101417๊ฐœ์˜ ์Šค๋ƒ…์ƒท์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์žŠ๊ฑฐ๋‚˜ ์ •๋ฆฌํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ๋Š๋ฆด ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ ์‚ญ์ œํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

#2718์„ ์‹œ๋„ํ•ด ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ ์Šค๋ƒ…์ƒท์„ "์žŠ์–ด๋ฒ„๋ฆฌ๋Š”" ๊ฐœ์„  ์‚ฌํ•ญ์€ ์—†์Šต๋‹ˆ๋‹ค.
์žŠ์–ด ๋ฒ„๋ฆฌ๋Š” ๋‹จ๊ณ„๊ฐ€ ๋ฌธ์ œ๋ผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์กฐ์–ธํ•ฉ๋‹ˆ๋‹ค.

  • ์˜ˆ๋ฅผ ๋“ค์–ด ๋งˆ์ง€๋ง‰ ๋ฐฑ์—… ๋กœ๊ทธ๋ฅผ ๋ณด๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋ฐฑ์—…์„ ๋งŒ๋“ค์–ด ๋ณด๊ด€ํ•˜๋ ค๋Š” ์Šค๋ƒ…์ƒท์„ ํŒŒ์•…ํ•ฉ๋‹ˆ๋‹ค.
  • ์ €์žฅ์†Œ์˜ /snapshots ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ํ•ด๋‹น ํŒŒ์ผ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ํŒŒ์ผ์„ ์ˆ˜๋™์œผ๋กœ ์‚ญ์ œ
  • ๊ทธ ํ›„ prune ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค(#2718๋กœ ์›ํ•˜๋Š” ๊ฒฝ์šฐ).

๋ฉฐ์น  ๋™์•ˆ๋งŒ ๋ณด๊ด€ํ•˜๋ ค๊ณ  ํ–ˆ์œผ๋ฏ€๋กœ S3์˜ ์ „์ฒด ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์žŠ์–ด ๋ฒ„๋ฆฌ๋Š” ๊ณผ์ •์„ ์‹œ์ž‘ํ–ˆ๊ณ  ๊ทธ๊ฒƒ์€ ๋งค์šฐ ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๊ฐ€ ๋„์›€์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค (๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค). ์•„๋‹ˆ๋ฉด ์ตœ์†Œํ•œ ๋ˆ„๊ตฐ๊ฐ€๋Š” ๊ทธ๊ฒƒ์„ ์žฌ๋ฏธ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ •๋ง๋กœ ์ด ๋ธŒ๋žœ์น˜๋ฅผ ์‹œํ—˜ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค(๋˜๋Š” ์ •๋ง๋กœ, ๊ทธ๊ฒƒ์ด ๋งˆ์Šคํ„ฐ๋กœ ์˜ฎ๊ฒจ์กŒ์œผ๋ฉด ํ•œ๋‹ค). ํ…Œ์ŠคํŠธํ•˜๊ณ  ๊ฐ€์ ธ์˜ค๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ

์น˜๋ช…์ : ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์—ด ์ˆ˜ ์—†์Œ: ํ†ต๊ณ„: ์ œ๊ณตํ•œ AWS ์•ก์„ธ์Šค ํ‚ค ID๊ฐ€ ๋‹น์‚ฌ ๊ธฐ๋ก์— ์—†์Šต๋‹ˆ๋‹ค.

๋งˆ์Šคํ„ฐ ๋นŒ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ ์—†์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ https://github.com/restic/restic/pull/2340 ์˜ ๋ถ„๊ธฐ๋ฅผ ๋ฌธ์ œ ์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

NFS ํƒ‘์žฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ์ด ๋ถ„๊ธฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ AWS ์ €์žฅ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค...

์ƒ๊ด€์—†์ด ๋ชจ๋“  ์ข‹์€ ์ž‘์—…์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค

@vtwaldo21 ์–ด๋–ค ๋ธŒ๋žœ์น˜๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์…จ๋‚˜์š”? #2718์ด์—ˆ๋‚˜?
์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋Š” AWS ์ž๊ฒฉ ์ฆ๋ช…์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋˜ํ•œ NFS๊ฐ€ ๋ฌธ์ œ ์—†์ด ์ž‘๋™ํ•œ ์ด์œ ๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ restic ๋ช…๋ น์ด AWS ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ?

@aawsome , ์ €๋Š” ๋ฐ”๋ณด์ด๊ณ  ๋ถ„๊ธฐ/๋ฌธ์ œ ๋ฒˆํ˜ธ๋ฅผ ๋ฐ”๊พธ๊ณ  ์ •๋ง ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

Branch 2718์€ ์ž˜ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค(AWS ๋ฐ NFS ์ง€์› ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ชจ๋‘์—์„œ). ์•„์ง ์‹คํ–‰ ์ค‘์ด๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋นจ๋ž๋Š”์ง€ ํ™•์‹คํ•˜๊ฒŒ ๋งํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.
Branch 2340์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๊ณ  ๋‚ด๊ฐ€ ์ด ํฌ๋Ÿผ ์Šค๋ ˆ๋“œ์— ์žˆ์—ˆ๋˜ ์ด์œ ์ž…๋‹ˆ๋‹ค.

Branch 2340์€ 0.9.5 ๊ธฐ๋ฐ˜์ด๋ฏ€๋กœ ์กฐ๊ธˆ ์˜ค๋ž˜๋˜์—ˆ์ง€๋งŒ ๋‚˜์˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐ„๋‹จํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.

restic ๋ฐ”์ด๋„ˆ๋ฆฌ๋Š” ๊ฒฝ๋กœ๊ฐ€ RPM(0.9.6)์„ ํ†ตํ•ด ์„ค์น˜๋ฉ๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•œ ์Šค๋ƒ…์ƒท
[๊ณต์žฅ]
restic.2718/restic ์Šค๋ƒ…์ƒท
[๊ณต์žฅ]
restic.2340/restic ์Šค๋ƒ…์ƒท
์น˜๋ช…์ : ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์—ด ์ˆ˜ ์—†์Œ: ํ†ต๊ณ„: ์ œ๊ณตํ•œ AWS ์•ก์„ธ์Šค ํ‚ค ID๊ฐ€ ๋‹น์‚ฌ ๊ธฐ๋ก์— ์—†์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์˜ค๋ฅ˜๋Š” AWS ์ž๊ฒฉ ์ฆ๋ช…๊ณผ ๊ด€๋ จ๋œ ๊ฒƒ์„ ์˜๋ฏธํ•˜์ง€๋งŒ ๋ฌธ์ž ๊ทธ๋Œ€๋กœ ๋ณ€์ˆ˜ ๋ณ€๊ฒฝ ์—†์ด ์—ฐ์†ํ•ด์„œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ง€์ ์— ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‚ด ์ž๋‘๋Š” ~ 2TB ์ €์žฅ์†Œ์— ๋ฉฐ์น ์ด ๊ฑธ๋ฆฌ๋ฏ€๋กœ 2718 ๋ฐ 2340์ด ๋ชจ๋‘ ๋งˆ์Šคํ„ฐ์— ๋ณ‘ํ•ฉ๋˜๋Š” ๋ฐ ๋งค์šฐ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@cbane ๋ชจ๋“  ์ž‘์—…์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! prune ์ฝ”๋“œ๋ฅผ ์žฌ์ž‘์—…ํ•˜๋Š” #2718์„ ๋ฐฉ๊ธˆ ๋ณ‘ํ•ฉํ–ˆ์œผ๋ฉฐ #2340๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ด ๋ฌธ์ œ๋„ ํ•ด๊ฒฐํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ๊ธฐ์—ฌ๋ฅผ ์ฒ˜๋ฆฌํ•œ ๋ฐฉ์‹์— ๋Œ€ํ•ด ๋งค์šฐ ์œ ๊ฐ์Šค๋Ÿฝ๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ œ ์‚ฌ๊ณผ๋ฅผ ๋ฐ›์•„ ์ฃผ์…จ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค. :์‹ค๋งํ•œ:

@MichaelEischer ์™€ ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆด๋Š”๋ฐ, ๊ทธ๋Š” PR #2340์— ์•„์ง ๊ตฌํ˜„๋˜์ง€ ์•Š์€ ๋” ๋งŽ์€ ์•„์ด๋””์–ด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๊ณ  ์–ธ๊ธ‰ํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

@cbane ์ด๋Ÿฌํ•œ ์•„์ด๋””์–ด๋ฅผ ํ˜„์žฌ ์ฝ”๋“œ์— ๋ณ‘ํ•ฉํ•˜๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ์™€ ํ˜‘๋ ฅํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์™„์ „ํžˆ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊ท€ํ•˜์˜ PR์„ ์‚ดํŽด๋ณด๊ณ  ์ง์ ‘ ์ถ”์ถœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. :)

์šฐ๋ฆฌ๋Š” ๋˜ํ•œ ์–ด์ œ ์งง์€ ํ† ๋ก ์„ ํ•˜๊ณ  ๋ฌด์—‡์ด ์ž˜๋ชป๋˜์—ˆ์„ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์—ฌ ๋‹ค์Œ์— ๋” ์ž˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์‹๋ณ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • PR์€ ์ฝ”๋“œ์—์„œ ๋งค์šฐ ๋ฏผ๊ฐํ•œ ์˜์—ญ์„ ๋ณ€๊ฒฝํ–ˆ์œผ๋ฏ€๋กœ(๊ถ๊ทน์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ์ •๋ฆฌ) ์ถ”๊ฐ€ ์กฐ์‚ฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • @MichaelEischer ์™€ @aawsome ์ด PR์„ ๊ฒ€ํ† ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ๋Š”๋ฐ ๋„ˆ๋ฌด ํฝ๋‹ˆ๋‹ค.
  • PR์€ ๋‹จ์ง€ ๋‘ ๊ฐœ์˜ ์ปค๋ฐ‹์ด์—ˆ๊ณ , ๊ทธ ์ค‘ ํ•˜๋‚˜๋Š” ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ์™„์ „ํžˆ ๋‹ค๋ฅธ ๋‹ค๋ฅธ ์ฝ”๋“œ๋กœ ๋Œ€์ฒดํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฒ€ํ† ํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.
  • PR์—๋Š” ์ตœ์†Œ 4-5๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ์•„์ด๋””์–ด์™€ ๊ฐœ์„  ์‚ฌํ•ญ์ด ํฌํ•จ๋˜์–ด ์žˆ์–ด ๊ฒ€ํ† ํ•˜๊ธฐ๊ฐ€ ํ›จ์”ฌ ๋” ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋†“์นœ ๋‹ค๋ฅธ ๊ฒƒ๋“ค์ด ์žˆ์Šต๋‹ˆ๊นŒ?

#2340 ์—์„œ cmd_prune.go ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๋‚ด๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๋Š” ํ•œ #2718 ๋ฐ #2842 ๊ฐ€ @aawsome ์œผ๋กœ ์™„์ „ํžˆ ๋Œ€์ฒด๋˜์—ˆ์Šต๋‹ˆ๋‹ค. #3006์€ index/index.go ๋ณ€๊ฒฝ ์‚ฌํ•ญ๋„ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค.

checker.go ์—์„œ ๊ณ ๋„๋กœ ๋ณ‘๋ ฌํ™”๋œ ํŠธ๋ฆฌ ์›Œํ‚น ๊ตฌํ˜„์„ ์ถ”์ถœํ–ˆ์Šต๋‹ˆ๋‹ค(https://github.com/MichaelEischer/restic/tree/streamtrees ์ฐธ์กฐ) FindUsedBlobs ์ถ”๊ฐ€ ์ฝ”๋“œ ์ค„. ๋ณต์‚ฌ ๋ช…๋ น์—๋„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์–ธ๊ธ‰ํ•œ ๋ถ„๊ธฐ๋Š” ์ธ๋ฑ์Šค ๋ฐ ์Šค๋ƒ…์ƒท ๋กœ๋“œ๋ฅผ ๋ณ‘๋ ฌํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ฝ”๋“œ๋„ ํ†ตํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์ง€์ ์„ ๋” ์ž‘์€ PR๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ๋ฐฑ์—”๋“œ ์—ฐ๊ฒฐ ์ˆ˜์™€ GOMAXPROCS์˜ ์‚ฌ์šฉ์„ #2340์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์œผ๋กœ IO/CPU ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ์— ์ž๋™์œผ๋กœ ์กฐ์ •ํ•˜๋„๋ก ๋‚จ๊ฒจ๋‘๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” #2340์ด๋‚˜ ๋‹ค๋ฅธ prune PR์ด ํ˜„์žฌ ์žฌ์ž‘์„ฑ๋œ ์ธ๋ฑ์Šค์˜ ์—…๋กœ๋“œ๋ฅผ ๋ณ‘๋ ฌํ™”ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•„์ฐจ๋ ธ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰