Borg: λŒ€μ—­ν­ μ œν•œ 지원 μΆ”κ°€

에 λ§Œλ“  2016λ…„ 02μ›” 14일  Β·  5μ½”λ©˜νŠΈ  Β·  좜처: borgbackup/borg

이 λ¬Έμ œλŠ” #5의 ν™•μΈλž€ λͺ©λ‘μ— λ‚˜νƒ€λ‚©λ‹ˆλ‹€. 닀락방 λ¬Έμ œμž…λ‹ˆλ‹€: https://github.com/jborg/attic/issues/103. 여기에 μ˜κ²¬μ„ μΆ”κ°€ν•΄μ•Ό ν•˜λŠ”μ§€ μ•„λ‹ˆλ©΄ 여기에 μ˜κ²¬μ„ μΆ”κ°€ν•΄μ•Ό ν•˜λŠ”μ§€ 확신이 μ—†μ—ˆμŠ΅λ‹ˆλ‹€.


λŒ€μ—­ν­μ„ μ œν•œν•˜κΈ° μœ„ν•΄ μΆ”κ°€λœ 지원을 μ›λž˜ 문제둜 μš”μ²­ν•©λ‹ˆλ‹€. trickle 이(κ°€) μ˜΅μ…˜μœΌλ‘œ μ–ΈκΈ‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ‚¬λžŒλ“€μ€ borgκ°€ sshλ₯Ό 톡해 νŒŒμ΄ν”„λ₯Ό μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— μž‘λ™ν•˜μ§€ μ•Šμ„ 것이라고 λ§ν–ˆμŠ΅λ‹ˆλ‹€. λ°˜λ©΄μ— λ¬Όλ°©μšΈμ€ μ†ŒμΌ“μ—μ„œ μž‘λ™ν•©λ‹ˆλ‹€.

sshfs와 ν•¨κ»˜ borgλ₯Ό μ‚¬μš©ν•˜λŠ” 경우(즉, rsync.net에 λ°±μ—…), λ¬Όλ°©μšΈμ„ μ‚¬μš©ν•˜λŠ” 것이 μ œλŒ€λ‘œ μž‘λ™ν•  것이라고 λ³΄κ³ ν•˜κ³  μ‹Άμ—ˆμŠ΅λ‹ˆλ‹€. ssh 마운트λ₯Ό μˆ˜ν–‰ν•  λ•Œ νŠΈλ¦¬ν΄μ„ ν˜ΈμΆœν•΄μ•Ό ν•©λ‹ˆλ‹€. λ”°λΌμ„œ λŒ€μ—­ν­μ„ 5Mbps둜 μ œν•œν•˜λ €λ©΄ λ‹€μŒμ„ μ‚¬μš©ν•©λ‹ˆλ‹€.

trickle -u 5000 sshfs username<strong i="11">@hostname</strong>: /path/to/mountpoint
borg create ...
documentation

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

νŒŒμ΄ν”„ 뷰어와 래퍼 슀크립트λ₯Ό μ‚¬μš©ν•˜μ—¬ λŒ€μ—­ν­μ„ μ œν•œν•  수 μžˆμŠ΅λ‹ˆλ‹€.
이에 λŒ€ν•œ λ‚˜μ˜ κ²¬ν•΄λŠ” pvκ°€ ν•„μš”ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•˜κ³  속도 μ œν•œμ΄ μ½”λ“œμ—μ„œ 항상 μ‰¬μš΄ 것은 μ•„λ‹ˆκΈ° λ•Œλ¬Έμ—(+ 이미 λ³΅μž‘ν•œ 섀정에 더 λ§Žμ€ λ³΅μž‘μ„±μ„ μΆ”κ°€ν•˜κΈ° λ•Œλ¬Έμ—) borg에 λŒ€μ—­ν­ 지원을 μΆ”κ°€ν•˜λŠ” 것보닀 pvλ₯Ό λ¬Έμ„œν™”ν•˜λŠ” 것이 λ°”λžŒμ§ν•˜λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. μœ λ‹‰μŠ€ μ² ν•™μœΌλ‘œ: ν•œ κ°€μ§€λ§Œ μž˜ν•˜λ©΄ λ©λ‹ˆλ‹€(그리고 νŒŒμ΄ν”„, λ‚˜λŠ” νŒŒμ΄ν”„λ₯Ό μ’‹μ•„ν•©λ‹ˆλ‹€... ;)

μš°λΆ„νˆ¬μ— pipeviewer(pv)λ₯Ό μ„€μΉ˜ν•˜κ³  λ°λΉ„μ•ˆμΌ κ°€λŠ₯성이 κ°€μž₯ λ†’μŠ΅λ‹ˆλ‹€. sudo apt-get install pv

래퍼 슀크립트 생성: ( /usr/local/bin/pv-wrapper 에 μƒμ„±ν•˜κ² μŠ΅λ‹ˆλ‹€)

#!/bin/bash
     ## -q, --quiet              do not output any transfer information at all
     ## -L, --rate-limit RATE    limit transfer to RATE bytes per second
export RATE=307200
pv -q -L $RATE  | "$@"

μ™„λ£Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€. BORG_RSH ν™˜κ²½μ„ μΆ”κ°€ν•˜μ‹­μ‹œμ˜€.
export BORG_RSH='/usr/local/bin/pv-wrapper.sh ssh '

이제 λ³΄κ·ΈλŠ” λŒ€μ—­ν­μ΄ μ œν•œλ©λ‹ˆλ‹€. pv의 쒋은 점은 속도 μ œν•œμ„ μ¦‰μ„μ—μ„œ λ³€κ²½ν•  수 μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.
pv -R $(pidof pv) -L 102400

λ©€ν‹° ν…ŒλΌλ°”μ΄νŠΈ 데이터 μ„ΈνŠΈλ₯Ό μ΄λ™ν•˜κ³  근무 μ‹œκ°„ λ™μ•ˆ λŒ€μ—­ν­μ„ μ‘°μ ˆν•΄μ•Ό ν–ˆλ˜ rsync와 λ™μΌν•œ 섀정을 μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€.

# example cron setup:
00 09 * * 1-5 root ( pidof pv > /tmp/.pv-pid && pv -R $(cat /tmp/.pv-pid ) -L  307200)
00 18 * * * root ( pidof pv > /tmp/.pv-pid && pv -R $(cat /tmp/.pv-pid ) -L  819200)

ν…ŒμŠ€νŠΈ:
각 ν…ŒμŠ€νŠΈ 전에 원격 μ €μž₯μ†Œκ°€ μ œκ±°λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

좜처: 총 3μ–΅ 2천만
νŒŒμ΄ν”„ λ·°μ–΄ 없이:
지속 μ‹œκ°„: 5λΆ„ 8.50초
파일 수: 60

## wrapper:
pv -q -L 307200 | "$@"
지속 μ‹œκ°„: 18λΆ„ 7.00초

pv -q -L 102400 | "$@"
40λΆ„ ν›„ 싀행이 μ€‘μ§€λ˜κ³  μ˜ˆμƒ μ‹€ν–‰ μ‹œκ°„μ€ μ•½ 54뢄이며 borg --progress 좜λ ₯은 μ˜ˆμƒκ³Ό μΈλΌμΈλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

pipeviewer둜 μ›λž˜ ν…ŒμŠ€νŠΈν–ˆμ§€λ§Œ 속도 μ œν•œ μ—†μŒ:
지속 μ‹œκ°„: 6λΆ„ 29.38초
이 ν…ŒμŠ€νŠΈλŠ” μ‹€ν—˜μ‹€ μ‘°κ±΄μ—μ„œ μ‹€ν–‰λ˜μ§€ μ•Šμ•˜μœΌλ―€λ‘œ λ‹€λ₯Έ μ‚¬μš©μžκ°€ λŒ€μ—­ν­ κ°€μš©μ„±μ— 영ν–₯을 λ―ΈμΉ©λ‹ˆλ‹€.

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

νŒŒμ΄ν”„ 뷰어와 래퍼 슀크립트λ₯Ό μ‚¬μš©ν•˜μ—¬ λŒ€μ—­ν­μ„ μ œν•œν•  수 μžˆμŠ΅λ‹ˆλ‹€.
이에 λŒ€ν•œ λ‚˜μ˜ κ²¬ν•΄λŠ” pvκ°€ ν•„μš”ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•˜κ³  속도 μ œν•œμ΄ μ½”λ“œμ—μ„œ 항상 μ‰¬μš΄ 것은 μ•„λ‹ˆκΈ° λ•Œλ¬Έμ—(+ 이미 λ³΅μž‘ν•œ 섀정에 더 λ§Žμ€ λ³΅μž‘μ„±μ„ μΆ”κ°€ν•˜κΈ° λ•Œλ¬Έμ—) borg에 λŒ€μ—­ν­ 지원을 μΆ”κ°€ν•˜λŠ” 것보닀 pvλ₯Ό λ¬Έμ„œν™”ν•˜λŠ” 것이 λ°”λžŒμ§ν•˜λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. μœ λ‹‰μŠ€ μ² ν•™μœΌλ‘œ: ν•œ κ°€μ§€λ§Œ μž˜ν•˜λ©΄ λ©λ‹ˆλ‹€(그리고 νŒŒμ΄ν”„, λ‚˜λŠ” νŒŒμ΄ν”„λ₯Ό μ’‹μ•„ν•©λ‹ˆλ‹€... ;)

μš°λΆ„νˆ¬μ— pipeviewer(pv)λ₯Ό μ„€μΉ˜ν•˜κ³  λ°λΉ„μ•ˆμΌ κ°€λŠ₯성이 κ°€μž₯ λ†’μŠ΅λ‹ˆλ‹€. sudo apt-get install pv

래퍼 슀크립트 생성: ( /usr/local/bin/pv-wrapper 에 μƒμ„±ν•˜κ² μŠ΅λ‹ˆλ‹€)

#!/bin/bash
     ## -q, --quiet              do not output any transfer information at all
     ## -L, --rate-limit RATE    limit transfer to RATE bytes per second
export RATE=307200
pv -q -L $RATE  | "$@"

μ™„λ£Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€. BORG_RSH ν™˜κ²½μ„ μΆ”κ°€ν•˜μ‹­μ‹œμ˜€.
export BORG_RSH='/usr/local/bin/pv-wrapper.sh ssh '

이제 λ³΄κ·ΈλŠ” λŒ€μ—­ν­μ΄ μ œν•œλ©λ‹ˆλ‹€. pv의 쒋은 점은 속도 μ œν•œμ„ μ¦‰μ„μ—μ„œ λ³€κ²½ν•  수 μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.
pv -R $(pidof pv) -L 102400

λ©€ν‹° ν…ŒλΌλ°”μ΄νŠΈ 데이터 μ„ΈνŠΈλ₯Ό μ΄λ™ν•˜κ³  근무 μ‹œκ°„ λ™μ•ˆ λŒ€μ—­ν­μ„ μ‘°μ ˆν•΄μ•Ό ν–ˆλ˜ rsync와 λ™μΌν•œ 섀정을 μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€.

# example cron setup:
00 09 * * 1-5 root ( pidof pv > /tmp/.pv-pid && pv -R $(cat /tmp/.pv-pid ) -L  307200)
00 18 * * * root ( pidof pv > /tmp/.pv-pid && pv -R $(cat /tmp/.pv-pid ) -L  819200)

ν…ŒμŠ€νŠΈ:
각 ν…ŒμŠ€νŠΈ 전에 원격 μ €μž₯μ†Œκ°€ μ œκ±°λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

좜처: 총 3μ–΅ 2천만
νŒŒμ΄ν”„ λ·°μ–΄ 없이:
지속 μ‹œκ°„: 5λΆ„ 8.50초
파일 수: 60

## wrapper:
pv -q -L 307200 | "$@"
지속 μ‹œκ°„: 18λΆ„ 7.00초

pv -q -L 102400 | "$@"
40λΆ„ ν›„ 싀행이 μ€‘μ§€λ˜κ³  μ˜ˆμƒ μ‹€ν–‰ μ‹œκ°„μ€ μ•½ 54뢄이며 borg --progress 좜λ ₯은 μ˜ˆμƒκ³Ό μΈλΌμΈλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

pipeviewer둜 μ›λž˜ ν…ŒμŠ€νŠΈν–ˆμ§€λ§Œ 속도 μ œν•œ μ—†μŒ:
지속 μ‹œκ°„: 6λΆ„ 29.38초
이 ν…ŒμŠ€νŠΈλŠ” μ‹€ν—˜μ‹€ μ‘°κ±΄μ—μ„œ μ‹€ν–‰λ˜μ§€ μ•Šμ•˜μœΌλ―€λ‘œ λ‹€λ₯Έ μ‚¬μš©μžκ°€ λŒ€μ—­ν­ κ°€μš©μ„±μ— 영ν–₯을 λ―ΈμΉ©λ‹ˆλ‹€.

자주 λ¬»λŠ” μ§ˆλ¬Έμ— μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ³‘ν•©λœ pr #705.

μ—¬κΈ°μ„œ 였래된 문제λ₯Ό λ²”ν•˜λŠ” 것은 μ•Œκ³  μžˆμ§€λ§Œ μ•„λ§ˆλ„ 보그에 μžˆμ–΄μ•Ό ν•  무언가에 λŒ€ν•œ λ‹€μ†Œ λ³΅μž‘ν•œ ν•΄κ²° λ°©λ²•μž…λ‹ˆλ‹€. λ˜ν•œ λ„€νŠΈμ›Œν¬, I/O 및 μ»΄ν“¨νŒ…μ— λŒ€ν•΄ λ³„λ„μ˜ 쑰절 μ˜΅μ…˜μ΄ 있으면 μœ μš©ν•  κ²ƒμž…λ‹ˆλ‹€.

@ddevault 이와 κ΄€λ ¨λœ νŠΉμ • λ¬Έμ œκ°€ μžˆλŠ” 경우 μƒˆ λ¬Έμ œμ— μ„€λͺ…ν•˜μ„Έμš”.

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