Restic: λͺ…령쀄 μ˜΅μ…˜μœΌλ‘œ λ©”λͺ¨λ¦¬ μ†ŒλΉ„ 쀄이기

에 λ§Œλ“  2016λ…„ 02μ›” 15일  Β·  13μ½”λ©˜νŠΈ  Β·  좜처: restic/restic

μ•ˆλ…•ν•˜μ„Έμš” @fd0μž…λ‹ˆλ‹€! λΈ”λ‘œκ·Έμ— λ§ν¬λ˜μ–΄ 있고 도ꡬ와 개발 ν”„λ‘œμ„ΈμŠ€ 뒀에 μˆ¨μ€ μ² ν•™κ³Ό 철학을 정말 μ’‹μ•„ν•˜κ²Œ

μ΄μ•ΌκΈ°μ˜ ν•œ μ§€μ μ—μ„œ restic은 ν˜„μž¬ μ—¬λŸ¬ νŒŒμΌμ„ 읽기 μœ„ν•΄ μ•½ 300MB의 RAM을 ν• λ‹Ήν•˜λ―€λ‘œ 예λ₯Ό λ“€μ–΄ Raspberry Piμ—μ„œ μ‹€ν–‰ν•˜κΈ°μ— μ ν•©ν•˜μ§€ μ•Šλ‹€κ³  μ–ΈκΈ‰ν–ˆμŠ΅λ‹ˆλ‹€. λ©”λͺ¨λ¦¬κ°€ λΆ€μ‘±ν•œ ARM μž₯μΉ˜μ—μ„œ restic을 μ‚¬μš©ν•  수 μžˆλ„λ‘ λŸ°νƒ€μž„ μ‹œ μˆ˜λ™μœΌλ‘œ ν•΄λ‹Ή 숫자λ₯Ό μ€„μ΄λŠ” λͺ…령쀄 μ˜΅μ…˜μ„ μΆ”κ°€ν•  생각이 μžˆλŠ”μ§€ κΆκΈˆν•©λ‹ˆλ‹€. μœ λΉ„μΏΌν„°μŠ€ RasPi μ˜†μ— Android 및 Sailfish μž₯치λ₯Ό λ°±μ—…ν•  μƒκ°μ΄μ—ˆμŠ΅λ‹ˆλ‹€.

optimization repo v2 need triaging feature enhancement

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

이에 λŒ€ν•œ 진전이 μžˆμŠ΅λ‹ˆκΉŒ? μ œν•œμ μ΄μ§€λ§Œ λ©”λͺ¨λ¦¬ μ†Œμ§„μœΌλ‘œ 인해 백업이 더 이상 μ™„λ£Œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€(1.5TB μ €μž₯μ†Œ, ~23G RAM, b2 λ°±μ—”λ“œ μ‚¬μš©). Afaik, ν˜„μž¬ λ™μ‹œμ„±μ€ μ†ŒμŠ€ 자체λ₯Ό μˆ˜μ •ν•΄μ•Όλ§Œ μˆ˜μ •ν•  수 μžˆμ§€λ§Œ(https://github.com/restic/restic/issues/979#issuecomment-374359647), 이것은 μ‹€μ œλ‘œ μœ μ§€ 관리할 수 μ—†μŠ΅λ‹ˆλ‹€.

λͺ¨λ“  13 λŒ“κΈ€

λ ˆμŠ€ν‹±μ— 관심을 κ°€μ Έμ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. μ œκ°€ κ°•μ—°μ—μ„œ μ–ΈκΈ‰ν•œ μ•½ 300MiB의 램 μˆ˜λŠ” (주둜) 두 가지 μš©λ„λ‘œ μ‚¬μš©λ©λ‹ˆλ‹€.

  • scrypt(μ•”ν˜Έ) 계산: scrypt에 λŒ€ν•œ μƒμˆ˜λŠ” ν˜„μž¬ ν•˜λ“œ μ½”λ”©λ˜μ–΄ 있으며 ν˜„μž¬ μ‹œμŠ€ν…œμ—μ„œ scryptκ°€ μ–Όλ§ˆλ‚˜ μ–΄λ €μš΄μ§€ μžλ™μœΌλ‘œ νŒŒμ•…ν•˜λŠ” μ½”λ“œλ₯Ό μΆ”κ°€ν•˜λŠ” #17이 μžˆμŠ΅λ‹ˆλ‹€.
  • λ©”λͺ¨λ¦¬μ— λ°±μ—…ν•  λΈ”λ‘­/팩 버퍼가 μ—¬λŸ¬ 개 μžˆλŠ” 경우: μ΄λŠ” ν—ˆμš©λ˜λŠ” μ΅œλŒ€ λ™μ‹œμ„±κ³Ό λ°€μ ‘ν•˜κ²Œ μ—°κ²°λ©λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄ μžλ™ μ‘°μ • μ½”λ“œλ„ κ°–κ³  μ‹Άμ§€λ§Œ λͺ…령쀄 μ˜΅μ…˜λ„ κ°€λŠ₯ν•©λ‹ˆλ‹€.

μœ„μ˜ λ‚΄ μš”μ μ„ μš”μ•½ν•˜μžλ©΄: 그것은 κ³„νšλ˜μ–΄ 있고 μ–΄λŠ μ‹œμ μ—μ„œ κ΅¬ν˜„λ  κ²ƒμž…λ‹ˆλ‹€.

λ‚˜μ—κ²Œ 쒋은 μ†Œλ¦¬. 그런 λ‹€μŒ ν•΄λ‹Ή κΈ°λŠ₯을 μΆ”μ ν•˜κΈ° μœ„ν•΄ 이 문제λ₯Ό 계속 κ³΅κ°œν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

λ™μ˜.

μ„œλ²„ κ΄€μ μ—μ„œλ„ 이 μ£Όμ œμ— 관심이 μžˆμœΌλ―€λ‘œ λ©”λͺ¨λ¦¬κ°€ λΆ€μ‘±ν•  ν•„μš”λŠ” μ—†μ§€λ§Œ "아직 μΆ©λΆ„ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€". :) 예λ₯Ό λ“€μ–΄ ~950GB의 데이터( scanned 64173 directories, 2147728 files in 2:41 )κ°€ μžˆλŠ” 메일 μ„œλ²„κ°€ 있고 2GB의 RAM이 μžˆλŠ” OOM에 restic( ionice -c 3 nice -n 19 )이 μžˆμŠ΅λ‹ˆλ‹€. restic(νŒŒμΌλ‹Ή/GB/....λ‹Ή)에 λŒ€ν•œ λ©”λͺ¨λ¦¬ μš”κ΅¬ 사항을 κ³„μ‚°ν•˜λŠ” 데 μ•Œλ €μ§„ μˆ«μžκ°€ μžˆμŠ΅λ‹ˆκΉŒ? (λ‚˜λŠ” λͺ¨λ“  μ’…λ₯˜μ˜ λ‹€λ₯Έ VMμ—μ„œ restic으둜 OOM을 λ§Œλ‚¬μŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ μš”κ΅¬ 사항이 미리 μ•Œλ €μ§€λ©΄ 삢이 더 μ‰¬μ›Œμ§€κ³  λ©”λͺ¨λ¦¬ μ†ŒλΉ„λ₯Ό μ€„μ΄λŠ” 방법이 μžˆλ‹€λ©΄ 쒋을 κ²ƒμž…λ‹ˆλ‹€.)

감사 ν•΄μš”!

λ‚΄ κ²½ν—˜μ€ 1.5TB μ €μž₯μ†Œ 크기(λ°±μ—…μš©)에 λŒ€ν•΄ μ•½ 4GB의 RAMμž…λ‹ˆλ‹€. prune은 훨씬 더 λ§Žμ€ 것을 ν•„μš”λ‘œ ν•©λ‹ˆλ‹€(~9-10GB의 RAM).

λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰μ€ 주둜 νŠΉμ • μ‹œμŠ€ν…œμ˜ 데이터 크기가 μ•„λ‹ˆλΌ μ €μž₯μ†Œ 크기에 따라 λ‹€λ¦…λ‹ˆλ‹€. λ”°λΌμ„œ λ‚˜λ¨Έμ§€ μ €μž₯μ†Œ μžμ²΄κ°€ ~1TB인 경우 2GB RAM(μŠ€μ™‘ μ—†μŒ)이 μžˆλŠ” μ‹œμŠ€ν…œμ—μ„œ 100KB νŒŒμΌμ„ λ°±μ—…ν•˜λŠ” 것은 λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€.

μ—¬κΈ°:

  • 짓닀:
    restic 0.8.3 (v0.8.3-11-gda77f4a2) compiled with go1.9.4 on linux/amd64
  • 차원(κ·ΈλŸ¬λ‚˜ μ‹€μ œλ‘œ λ§Žμ€ μ €μž₯μ†Œ 볡제, 메타데이터 μΊμ‹œ, λΉŒλ“œ 디렉토리 λ“±μ˜ λŒ€λΆ€λΆ„μ˜ νŒŒμΌμ€ μ‹€μ œλ‘œ μ œμ™Έλ˜κ³  resticμ—μ„œ λ³΄κ³ ν•œ μˆ«μžλŠ” μ΄λŸ‰μ„ λ°˜μ˜ν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€):
    118775 directories 829113 files 129.220 GiB
  • λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰: 일일 μ‹€ν–‰λ‹Ή μ•½ 3.8G

이에 λŒ€ν•œ 진전이 μžˆμŠ΅λ‹ˆκΉŒ? μ œν•œμ μ΄μ§€λ§Œ λ©”λͺ¨λ¦¬ μ†Œμ§„μœΌλ‘œ 인해 백업이 더 이상 μ™„λ£Œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€(1.5TB μ €μž₯μ†Œ, ~23G RAM, b2 λ°±μ—”λ“œ μ‚¬μš©). Afaik, ν˜„μž¬ λ™μ‹œμ„±μ€ μ†ŒμŠ€ 자체λ₯Ό μˆ˜μ •ν•΄μ•Όλ§Œ μˆ˜μ •ν•  수 μžˆμ§€λ§Œ(https://github.com/restic/restic/issues/979#issuecomment-374359647), 이것은 μ‹€μ œλ‘œ μœ μ§€ 관리할 수 μ—†μŠ΅λ‹ˆλ‹€.

λ©”λͺ¨λ¦¬ μ‚¬μš© μš”κ΅¬ 사항과 κ΄€λ ¨ν•˜μ—¬ λ³€κ²½λœ 사항이 μžˆμŠ΅λ‹ˆκΉŒ?

λ‚˜λŠ” λ˜ν•œμ΄ λ¬Έμ œμ— 직면 ν•΄ μžˆμŠ΅λ‹ˆλ‹€. 2GB μ‹œμŠ€ν…œ 250GB μ €μž₯μ†Œ. 달리기:

ionice -c 3 nice -n 19 ~/local/bin/restic -r /mnt/restic -p rk check --read-data-subset 3/7

(λ˜ν•œ 3/7μ—μ„œ λ©”λͺ¨λ¦¬ μ‚¬μš©μ„ 쀄이기 μœ„ν•΄ 4/14λ₯Ό μ‚¬μš©) 1.7Gκ°€ κ±Έλ¦½λ‹ˆλ‹€. 잘λͺ»λœ μ‹œμŠ€ν…œμ΄ λ‘λ‡Œλ₯Ό κ΅μ²΄ν•˜κΈ° λ•Œλ¬Έμ— λͺ…령을 μ™„λ£Œν•˜λŠ” 데 10~12μ‹œκ°„μ΄ 걸릴 수 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ μ‹œμŠ€ν…œμ€ μŠ€μ™€ν•‘ λ•Œλ¬Έμ— λ‹€λ₯Έ μ–΄λ–€ 것에도 거의 μ“Έλͺ¨κ°€ μ—†μŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” μ†Œλ°•ν•œ 것을 μ’‹μ•„ν•˜μ§€λ§Œ 이것은 지속 κ°€λŠ₯ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λˆ„κ΅°κ°€μ΄ 문제의 μ‹€μ œ μ œμ•ˆμ΄ 무엇인지 λͺ…ν™•νžˆ ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? λ‚΄ 말은, λ©”λͺ¨λ¦¬ μ†ŒλΉ„/μš”κ΅¬ 사항을 더 μž‘κ²Œ λ§Œλ“€ 수 μžˆλ‹€λ©΄ μ™œ κ·Έλ ‡κ²Œ ν•˜μ§€ μ•Šκ³  λŒ€μ‹  더 적은 λ©”λͺ¨λ¦¬λ₯Ό μ‚¬μš©ν•  수 μžˆλ„λ‘ λͺ…령쀄 μŠ€μœ„μΉ˜κ°€ μžˆμ–΄μ•Ό ν•©λ‹ˆκΉŒ?

κ°€λŠ₯ν•œ 경우 더 적은 곡간을 ν• λ‹Ήν•˜λ©΄ ν”„λ‘œμ„ΈμŠ€κ°€ λŠλ €μ§€λ―€λ‘œ 기본적으둜 이 μž‘μ—…μ„ μˆ˜ν–‰ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€.

λ©”λͺ¨λ¦¬ μ‚¬μš©κ³Ό κ΄€λ ¨ν•˜μ—¬ 이미 κ°œμ„ μ΄ μžˆμ—ˆμœΌλ©° μΌλΆ€λŠ” νŒŒμ΄ν”„λΌμΈμ— μžˆμŠ΅λ‹ˆλ‹€.
μ›μΉ™μ μœΌλ‘œ μ €λŠ” λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰μ„ 쀄이면 훨씬 더 넓은 λΆ„μ•Όμ˜ μž₯μΉ˜μ—μ„œ restic을 μ‚¬μš©ν•  수 μžˆλ‹€λŠ” @rawtaz 의 μ£Όμž₯을

κ·Έλ ‡κΈ΄ ν•˜μ§€λ§Œ, 특히 속도λ₯Ό μœ„ν•΄ κ±°λž˜ν•˜λŠ” λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰μ„ 더 쀄일 수 μžˆλŠ” κ°€λŠ₯성이 λ¬Όλ‘  μžˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” #2794μ—μ„œ 인덱슀 κ΄€λ ¨ κ°€λŠ₯성에 λŒ€ν•΄ μž‘μ—…ν•˜κΈ° μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€.

이에 λŒ€ν•œ μ μ ˆν•œ μ†”λ£¨μ…˜μ€ λ””μŠ€ν¬μ— μžˆλŠ” μ €μž₯μ†Œ 인덱슀λ₯Ό μ‚¬μš©ν•˜κ±°λ‚˜ #1988μ—μ„œ λ…Όμ˜λœ λŒ€λ‘œ ν΄λΌμ΄μ–ΈνŠΈκ°€ 인덱슀의 μΌλΆ€λ§Œ λ‘œλ“œν•˜λ„λ‘ ν—ˆμš©ν•©λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰