restic version
ã®åºålinux / amd64ã§go1.10.4ã䜿çšããŠã³ã³ãã€ã«ãããrestic0.9.3
äžè¬çã«ãç§ã¯resticããšãŠã奜ãã§ãã¹ãããã·ã§ããã®äœæ/å埩ã¯å®å
šã«ããŸãæ©èœããŸãã
ãããã倧ããªãªããžããªã§resticãå®è¡ããããšã¯ã»ãšãã©äžå¯èœã§ãã 5 TB / 30ã¹ãããã·ã§ããã®ãªããžããªããããŸãã
ããã¯ã埪ç°ãããã¡ã®ããã«è¡ãããšãç®çãšããŠããŸãïŒæãå€ããã®ãåé€ããææ°ã®ãã®ãè¿œå ããŸãïŒã
ã¹ãããã·ã§ããã®è¿œå ãšåé€ã¯å®ç§ã«æ©èœããŸãããå¿
ç¶çã«ãªããžããªãæŽçããå¿
èŠããããããWEEKSã1 TBã解æŸããã ãã§æžã¿ãŸãïŒæžãæãã®ããïŒã
ãã®éãæ°ããã¹ãããã·ã§ãããäœæã§ããªããããããã§resticã䜿çšããããšã¯ã»ãšãã©äžå¯èœã«ãªããŸãã
ããªãããã§ã«ããã§è¿°ã¹ãããã«
ããªãã¯ãããæ¹åããããã«äœãããããããããŸããã
äŸïŒ
7336415ããŒã¿ãããã®ãã¡5967884ããŸã 䜿çšäžã§ããã1368531ããããåé€ãããŠããããšãããããŸãã
144850ããã¯ãåé€ãã142751ããã¯ãæžãæããŸããããã«ããã1.082 TiBã解æŸãããŸãïŒ2é±éããããŸããïŒïŒ
ç¹ã«ãã¹ãã¬ãŒãžãè³Œå ¥ããã°ããã®ãªã¢ãŒããªããžããªïŒsshã¢ã¯ã»ã¹ä»ãïŒã§CPUãªãœãŒã¹ãå¶éãããŠããå Žåã¯ããªããžããªå šäœãå床ã¢ããããŒãããæ¹ãã¯ããã«é«éã§ãã
@ifedorenkoã®é åºãæ£ãããªããã©ã³ãã«ãã£ãŠè§£æ±ºãããã倧ããªãã¡ã€ã«ãå«ã倧ããªãªããžããª/ãªããžããªã®åŸ©å ã®ããã©ãŒãã³ã¹ã«ãããããã¯ããªããžããªãããŒã«ã«ã«ãªããã«ããã©ãã€ãç°å¢ã§Resticã䜿çšããããã®æ¬¡ã®ãã«ããŒã®ããã§ãããã£ã¹ã¯ã§ãããã«ãŒãããã¯ã€ã³ã¿ãŒãã§ã€ã¹äžã®RESTãµãŒããŒãä»ããŠã¢ã¯ã»ã¹ãããŠããŸããã
çŸåšãçè«äžã®åž¯åå¹ ã10gbit /ç§ã®ãã€ãšã³ãAWSã€ã³ã¹ã¿ã³ã¹äžã®AZããŒã«ã«S3ãã±ããã®ã¬ããžããªã«å¯ŸããŠã空ã®ãã«ãŒãã³ã°ïŒä»¥åã®ã¹ãããã·ã§ãããš100ïŒ åäžã®ã¹ãããã·ã§ããããã«ãŒãã³ã°ïŒã¯æ¬¡ã®ããã«å®è¡ãããŸãã
1ïŒæ°ããã€ã³ããã¯ã¹ã®æ§ç¯-ã160ããã¯/ç§
2ïŒãŸã 䜿çšäžã®ããŒã¿ãèŠã€ãã-åèš56ç§
3ïŒããã¯ã®æžãæã-ã3ããã¯/ç§
160ããã¯/ç§ã¯é ãã§ãããããã§ã蚱容ã§ããŸãïŒ3TBã¬ãã«å¯ŸããŠçŽ80åã®å®è¡æéïŒã
ãããããªã©ã€ã@ 3ããã¯/ç§ã¯ãç§ã®noop pruneã®å Žåã§ããã»ãŒ10æéå®è¡ãããŸãïŒ0ããã¯ãåé€ããŠ111098ããã¯ããªã©ã€ãããŸããããã«ããã180.699 GiBã解æŸãããŸãïŒã 倧èŠæš¡ãªãªããžããªã§æå³ã®ããæŽçãè¡ãã«ã¯ãæ°ããããã¯ã¢ããã24æé以äžããªãŒãºããŸãã
ããã¯ã®æžãæãã¯çŸåšã·ã³ã°ã«ã¹ã¬ããã§è¡ãããŠããããã§ãããã®ãããçŸåšã®ã³ããŒãšããŒãžã®ã¢ãããŒããç¶æãããŠããå Žåã§ããè€æ°ã®ã¯ãŒã«ãŒéã§å®è¡ã§ããããã«ããããšã¯éåžžã«åœ¹ç«ã€å ŽåããããŸãã
å人çã«ã¯ãçŸåšã®ããããã³ã°ãã«ãŒã³ã®å®è£ ãæé©åããããšã«æéãè²»ããããšã¯ãããŸããããã³ããããã³ã°ãã«ãŒã³ã®æ¹ãé·æçãªè§£æ±ºçãšããŠåªããŠãããšæããŸãã
ç§ã¯æè¿ããã«åãçµãã§ããŸãã ãããç§ãããããšã§ãïŒ
ç§ã¯çŸåšãéšåçã«äœ¿çšãããŠããããã¯ã®æžãæãã«äœ¿çšãã䞊ååŠçã®ã¬ãã«ãææ¡ããããã«åãçµãã§ããŸãïŒããã¯ãããã¯ãšã³ãçšã«æ§æãããæ¥ç¶æ°ã«åºã¥ããŠè¡ãäºå®ã§ãïŒã ãŸããããŸããŸãªãšã©ãŒã·ããªãªã§ããã«å€ãã®ãã¹ããè¡ãå¿ èŠããããŸãã
ããã©ãŒãã³ã¹ã®æ°å€ã¯æ¬¡ã®ãšããã§ãïŒ875 GiBã®ããŒã¿ãçŽ180,000ããã¯ã36ã®ã¹ãããã·ã§ãããå«ããªããžããªã䜿çšããããã¯ãšã³ããšããŠã«ãŒãããã¯RESTãµãŒããŒã䜿çšïŒã
ãŸããããã«å€ãã®ããã¯ã®æžãæãã䌎ããçæããããã¹ãã±ãŒã¹ãèšå®ããããšãèšç»ããŠããŸãã
ã³ãŒãããŒïŒ
éåžžã«ææã«èãããŸãïŒ ãããããªããåããŠãããã©ã³ãã§ããããšã確èªãããã§ããïŒ ãã¹ãããŠããããã§ãã
ãããããã®ãã©ã³ãã¯ã¡ã€ã³ãªããžããªããã®ãã©ãŒã¯ã®äžéšã§ãã ç§ã¯ãŸã èªåã®å€æŽãã©ãã«ãå ¬éããŠããŸããã äœæ¥äžã®ããŒãžã§ã³ãæ°æ¥ã§GitHubã«ããã·ã¥ããŠãè©ŠããŠã¿ãããšãã§ããã¯ãã§ãã
OKãä»ã®äººãè©ŠããŠã¿ãæºåãã§ããŠããããŒãžã§ã³ããããŸãã ããã¯ãã®ãã©ã³ãã«ãããŸãïŒ https ïŒ//github.com/cbane/restic/tree/prune-speedup
çŸåšã®å¶éïŒ
ãããšãããã¯ãããã§ããã ãç²ãæ§ã§ããïŒ
ç§ã¯ãããAmazonS3ã®3TB +ãªããžããªã®ã³ããŒã§å°ããã¹ãããŸãããããããŸã§ã®ãšããé©ãã¹ããã®ã«èŠããŸãã æ°é±éããã£ãŠããåããã¯ã®æŽçã1æé以å ã«å®äºããããã«ãªããtmpã¹ããŒã¹ãšããŠæ¯èŒçé ãEBSã䜿çšããŠããŸãã
ããã§æ¬åœã®ã²ãŒã ãã§ã³ãžã£ãŒïŒ çŽ æŽãããä»äºã@ cbaneïŒ
ãããšãç§ã¯å®è¡ã®ã¿ã€ãã³ã°ãééããããšã«æ°ã¥ããŸããã
ãŸã ã·ã³ã°ã«ã¹ã¬ããã§ããã䞊ååã®æ©æµãåããå¯èœæ§ããããšæãããé åã®1ã€ã¯ããã€ã³ããã¯ã¹ã«ãªãããã¯ã®ãã§ãã¯ãã¹ãããã§ããããã¯ããã«ããã©ãã€ãã®ãªããžããªã§ã¯3ã4æéãããå ŽåããããŸãããããã§ã倧èŠæš¡ã§ããå€§å¹ ãªæ¹åãããããšãããããŸãïŒ
@cbaneç§ã¯ããªãã®ãã©ãŒã¯ã«å¯ŸããŠåé¡ãéãããšãã§ããªãã£ãã®ã§ããããã®ããã®ããè¯ãå Žæããããã©ããç§ã«ç¥ãããŠãã ããã
å¥ã®ãã¹ãå®è¡äžã«ãåããã¯ã¯æåŸã«å€±æãïŒæåŸã®ããã¯ãæžãæãïŒã32人ã®ã¯ãŒã«ãŒã§å®è¡ãããŸããã
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
ã«å¯ŸããŠãªããŒã¹ããŸããã
以åã®ããŒãžã§ã³ããã®äž»ãªå€æŽç¹ã¯æ¬¡ã®ãšããã§ãã
RESTIC_REPACK_WORKERS
ç°å¢å€æ°ã¯äœ¿çšãããªããªããŸãããïŒäœ¿çšæžã¿ã®ããããèŠã€ããããã«ãããå°ãäœæ¥ãããããšæã£ãŠããŸãã çŸåšãåã¹ãããã·ã§ããã¯1人ã®ã¯ãŒã«ãŒã«ãã£ãŠåŠçãããŸãã ããã«ãããCPUãããã¹ãããã·ã§ãããå°ãªãå ŽåããŸãã¯ã¹ãããã·ã§ããéã«å€§ããªãµã€ãºã®éããããå ŽåãCPUãªãœãŒã¹ãæªäœ¿çšã®ãŸãŸã«ãªãå¯èœæ§ããããŸãã ãµãããªãŒåŠçãããŸããŸãªã¯ãŒã«ãŒã«åæ£ãããããšæããŸãã ç§ã¯ãããè¡ãæ¹æ³ãç¥ã£ãŠãããšæããŸããç§ã¯å®éã«ãããå®è£ ããå¿ èŠããããŸãã
ç§ã¯ãã®åé¡ïŒãŸãã¯ããã«å¯Ÿããå°æ¥ã®ãã«ãªã¯ãšã¹ãïŒã«ã€ããŠåŒãç¶ãè°è«ããããšã«åŸåãããã¹ãŠãåæ£ããã®ã§ã¯ãªããããã«ã¡ã€ã³ãªããžããªã«ãšã©ãŸãããã«ããŸãã
ãã¹ãããã°ããã§ãã å梱å ã®æåŸã®ã¯ã©ãã·ã¥ã解決ããæ¬åœã«ãæ¬åœã«ããŸãæ©èœããŸãã
䞊ååŠçã®å¢å ããæ©æµãåããããšãã§ããå¯äžã®è¿œå ã®å Žæã¯ãçŸåšã·ã³ã°ã«ã¹ã¬ããã§ããããã¯ã®åé€ã§ãã
ããã¯ã以åã¯ãã«ãŒãã³ã°ã§ããªãã£ãã¬ãã®æåã®ãã«ãŒãã³ã°äžã«ç¹ã«æ¿ããåã¿ä»ããŸããããã¯ãåé€ãå¿ èŠãªããã¯ã_ãããã_ããããã§ãã
ãã ããã·ã³ã°ã«ã¹ã¬ããã®åé€ãè¡ã£ãå Žåã§ãã14.7kããã¯ãæžãæããŠ33kããã¯ãåé€ãã1.7TBã356kããã¯ã®ãªããžããªã«å¯Ÿããæ¯æ¥ã®å¿åŽ/åé€ã«ã¯20å匱ããããŸãã
以åã¯ãåªå®ããããšã¯ãŸã£ããäžå¯èœã§ããã
çŽ æŽãããä»äºãããããšãïŒ
OKãå¥ã®ããŒãžã§ã³ããããŸãã ä»åã®å¯äžã®å®éã®å€æŽã¯ãæªäœ¿çšã®ããã¯ã䞊è¡ããŠåé€ããããšã§ãïŒããã«ã以åã®å€æŽã«ããã€ãã®ãã€ããŒãªèª¿æŽãå ããŸããïŒã å€æŽãããã¹ãããã·ã§ããã¹ãã£ã³ãå®è£ ããŸããããååãªé床ãåŸããããé²è¡ç¶æ³ããŠãŒã¶ãŒã«å ±åããè¯ãæ¹æ³ããªãã£ããããå床åé€ããŸããã
äœãå£ããŠããªããšä»®å®ããŠãããã«ãã«ãªã¯ãšã¹ããéãäºå®ã§ãã ïŒãã ããæåã«å±¥æŽãã¯ãªãŒã³ã¢ããããŸããïŒ @ 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 OKãéè€ããã€ã³ããã¯ã¹ãã¹ãã±ãŒã¹ã§æ©èœããåããã©ã³ãïŒæ©éãã§ã¯ãªãïŒã«æ°ããããŒãžã§ã³ãããã·ã¥ããŸããã è©ŠããŠããã ããŸãããïŒ
ä»ã®èª°ããåé¡ã«æ°ã¥ããªãéããç§ã¯ãã®ãã©ã³ãã®çŸåšã®ããŒãžã§ã³ã§ãã«ãªã¯ãšã¹ããããã«éãããšãèšç»ããŠããŸãã
@cbaneããããšãããããŸãïŒ æšæºã®ãã«ãŒãã³ã°ã¯ãçŽ860GBã®12000+ã¹ãããã·ã§ãããªããžããªããã«ãŒãã³ã°ããã®ã«çŽ55æéããããŸããã ããç©æ¥µçãªäžŠåã¢ãããŒãã§ã¯ã3æé匷ã«ççž®ãããŸããã
ããŠãã£@cbane ãçŽ æŽãããä»äºïŒ
Go1.12.1ã§ã³ã³ãã€ã«ãããDebian9 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ã®ãã¡ã€ã«/ãµããã£ã¬ã¯ããªã§ãããããã¯ã¢ããã«æéããããã24æéã®æ°ããããŒã¿ïŒ10GBæªæºïŒã®ããã¯ã¢ããã®å®è¡ã«24æé以äžããã£ãŠããŸããã ãã©ãŒã©ã ã§ã®ã¢ããã€ã¹ã¯ã restic forget
ïŒæåŸã®3ã€ã®ã¹ãããã·ã§ããã ããæ®ããŠå®è¡ããŸããïŒãå®è¡ãã次ã«restic prune
ãå®è¡ããããšã§ããã OOMã®ãã24æéïŒã 次ã«ããã·ã³ïŒGoogle Compute Cloudäžã®VMïŒãRAMã®2åã«ã¢ããã°ã¬ãŒãããŠãããPRã䜿çšãããšãããäžèšã®ãšã©ãŒãçºçããŸããã
ã¬ã¹ãã£ãã¯ãã§ãã¯ã¯æåããŸããïŒ ããã§ãªãå Žåã¯ãäœãåé¡ãªã®ãããã詳现ã«ææ¡ã§ããã¯ãã§ãã
ç§ã¯éå»90æéïŒPRã䜿çšããŠïŒ restic check
ãå®è¡ããŠããŸããããããŸã§ã®ãšããã次ã®åºåãåŸãããŠããŸãïŒ restic-check-PARTIAL_output.txt
äžèšã®ãã¡ã€ã«ã®æåŸã«èšèŒãããŠããããã«ã restic check
ã¯3æ¥ä»¥äžåã«ææ°ã®ã¡ãã»ãŒãžïŒãã¹ãããã·ã§ãããããªãŒããããã確èªããŠãã ãããïŒã衚瀺ããŠããŸã... ïŒ-/å®éãããã»ã¹ã®ãstraceãã¯ãåãããŒã«ã«ãã£ãã·ã¥ãã¡ã€ã«ãäœåºŠãéããŠããããšã瀺ããŠããŸãã
`` `æ¥ä»; strace -t -f -p 2608 -e openat 2>ïŒ1 | grep openat | egrep -v unfinished \ |åé| é
2019幎7æ23æ¥ç«ææ¥00ïŒ41ïŒ59UTC
[pid 26508] 00:41:59 openatïŒAT_FDCWDã "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 2608] 00:41:59 openatïŒAT_FDCWDã "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 2615] 00:41:59 openatïŒAT_FDCWDã "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 5482] 00:41:59 openatïŒAT_FDCWDã "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 2615] 00:41:59 openatïŒAT_FDCWDã "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 3688] 00:41:59 openatïŒAT_FDCWDã "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 5482] 00:41:59 openatïŒAT_FDCWDã "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 2608] 00:41:59 openatïŒAT_FDCWDã "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 2638] 00:41:59 openatïŒAT_FDCWDã "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 2638] 00:41:59 openatïŒAT_FDCWDã "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
And then, almost 10 hours later:
2019幎7æ23æ¥ç«ææ¥10ïŒ14ïŒ27UTC
[pid 2632] 10:14:27 openatïŒAT_FDCWDã "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 2639] 10:14:28 openatïŒAT_FDCWDã "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 2634] 10:14:28 openatïŒAT_FDCWDã "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 2613] 10:14:28 openatïŒAT_FDCWDã "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 2634] 10:14:28 openatïŒAT_FDCWDã "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 3688] 10:14:28 openatïŒAT_FDCWDã "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 2617] 10:14:28 openatïŒAT_FDCWDã "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 3688] 10:14:28 openatïŒAT_FDCWDã "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 2634] 10:14:28 openatïŒAT_FDCWDã "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 2611] 10:14:28 openatïŒAT_FDCWDã "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
`` `
resticrebuild-indexãå®è¡ããŠããæ°ããããã¯ã¢ãããå®è¡ããããšã§ããçšåºŠå埩ã§ããå ŽåããããŸãã äžè¶³ããŠããããã¯ã®ãããããããã¯ã¢ãã察象ã®å Žæã§ãŸã å©çšå¯èœãªå Žåã¯ãæ°ããããã¯ã¢ããã«ãã£ãŠãªããžããªã«å床远å ãããŸãã ããã«ãããæ¢åã®ããã¯ã¢ãããåã³æ©èœããå¯èœæ§ããããŸã
次ã«ãããè©ŠããŠã¿ãããšæããŸãã ãã®restic check
ã24æé以å
ã«çµäºããªãå Žåã¯ãSIGINTããŠããã restic rebuild-index
ãå®è¡ããŸãã åæ§ç¯ã€ã³ããã¯ã¹ã«ã¯ããã®PRã䜿çšããå¿
èŠããããŸããïŒ ã¬ã¹ãã£ãã¯ãã¹ã¿ãŒãããïŒ ãŸãã¯ãä»ã®äœãïŒ
å床ãæè¬ããŸãã
-ãã¥ã«ããŠã
ãããããã¯ææã«èŠããŸããã ããããæåã®æ¹æ³ã¯ã restic rebuild-index
ãå®è¡ããŠããã3ã€ã®ãã£ã¬ã¯ããªã®æ°ããããã¯ã¢ãããå®è¡ããŠãããä»ã®ãã¹ãŠã®ã¹ãããã·ã§ãããå¿ããããšã§ãã ãã®åŸã restic prune
ãæ£åžžã«å®è¡ã§ããããã«ãªããŸãã
rebuild-index
ã³ãŒãã«ã¯è§Šããªãã£ãã®ã§ã奜ããªããŒãžã§ã³ã§ãããè¡ãããšãã§ããŸãã
@cbane ãæçš¿ãç¶ããããã«ïŒç§ã¯5æ¥åã«ããªãã®PRã䜿çšããŠrestic rebuild-index
ãéå§ãïŒã©ã®ããŒãžã§ã³ã§ãããŸããŸããããããªãã®ããŒãžã§ã³ã䜿çšãããšäœæ¥ãç°¡åã«ãªããŸãïŒããã以æ¥å®è¡ãããŠããŸãã æåã®æ°æ¥éã®çµ¶æçãªæ¥ïŒããŒã»ã³ããŒãžããæšå®ãããšã30æ¥ä»¥äžå®è¡ãããããšã瀺ããŠããããã«èŠããå ŽåïŒãé床ãäžãã£ãããã§ãããš10æ¥ã»ã©ïŒå°ãªããšãçŸåšã¯ïŒå®è¡ããå¿
èŠããããŸãã ããªããžããªå
ã®ãã¡ã€ã«ã®ã«ãŠã³ãããã§ãŒãºïŒã
ãã®rebuild-index
ãæ£åžžã«çµäºãããšä»®å®ãããšãPRã§restic prune
ãå®è¡ããèšç»ã§ãã ãããã©ããªãããããªãã«ç¥ãããŸãã
å
šå¡ãææ°ã®ç¶æ
ã«ä¿ã€ïŒç¡æã®$ 300 GCloudã¯ã¬ãžãããçµäºãã prune
ãå®è¡ããããã«äœæããªããã°ãªããªãã£ã104GBã®VMã«å®å
šã«é£ãå°œããããŸããïŒãããŠãããããrebuild-index
ãïŒã ãªãã·ã§ã³ãäžè¶³ããŠããŸãïŒ-/ãã®æ··ä¹±ããæãåºãæ¹æ³ãèŠã€ãããšãã«/æŽæ°ããŸãã
ãã©ã³ãã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æçš¿ããåºåãããå®éã«ã¯ç§ã®æ¹è¯çã䜿çšããŠããªãããã§ãã BackblazeB2ã§å€§ããªãªããžããªãæŽçãããšãã«åŸãããåºåã¯æ¬¡ã®ãšããã§ãã
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 ãééããªããããã«ãŒã§ã¯ãªãããç§ããã©ã°ãç«ãŠããšèãã1ã€ã®ã¢ã€ãã ïŒãã«ãŒã³ããã¯ã®æžãæãã¯ããªããžããªã倧ãããªãã«ã€ããŠé ããªããŸãã
ããšãã°ã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åã®ã¹ãããã·ã§ããã«ãŸã 䜿çšãããŠããããŒã¿ãæ€çŽ¢ãããã¹ãããã§ãã¡ã¢ãªäœ¿çšéãæ倧1GBRSSãã8GBRSSã«èšãäžããããšã«ã泚æããŠãã ããã Resticã¯æçµçã«æ倧16GBã®RSSã«ãªããŸãã ãªããžããªã®ãµã€ãºã倧ããããšãèãããšãããããé¿ããããŸããã
ãªããžããªã®èªã¿èŸŒã¿ã€ã³ããã¯ã¹
[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 ããè©«ã³ç³ãäžããŸãã ãã«ãŒã³é床ã®èµ€ããã·ã³-ããã€ãã®ç¬ç«ãããããã¡ã€ãªã³ã°ãè¡ã£ãŠãããšãã«ã2ã€ã®ãªããžããªãç°ãªãAZã«ããããšã«æ°ã¥ããŸããããã®ãããéãã¯å®å šã«ãããé ãAZãžã®é 延ã®éãã«ãããã®ã§ããã
倧èŠæš¡ãªãªããžããªïŒ20.791TiBã40,522,693ãããïŒã§ã¯ãããŸã 䜿çšäžã®ããŒã¿ãæ€çŽ¢ãããã¹ãããã§ãã«ãŒãã³ã°äžã«æ¬¡ã®ãšã©ãŒãçºçããŸãã
ããªãŒ5e40b6de93549df6443f55f0f68f24bf36671e28590579c78bc62f7557490c56ããªããžããªã«èŠã€ãããŸãã
github.com/restic/restic/internal/repositoryãïŒãªããžããªïŒ.LoadTreeinternal / repository / repository.goïŒ711github.com/restic/restic/internal/restic.FindUsedBlobs.func3internal / restic / find.goïŒ52github.com/restic/restic/internal/restic.FindUsedBlobs.func3internal / restic / find.goïŒ74github.com/restic/restic/internal/restic.FindUsedBlobs.func4internal / restic / find.goïŒ89gopkg.in/tomb%2ev2.(Tomb).run
ãã³ããŒ/gopkg.in/tomb.v2/tomb.go:163
runtime.goexit
/usr/lib/golang/src/runtime/asm_amd64.s:1337
ãã¹ãŠã®ããã¯ã¢ãããæ£åžžã«å®äºããresticãã§ãã¯ã§ãšã©ãŒãè¿ãããããšã¯ãããŸããã
ããã§è¡ã䟡å€ã®ããè¿œå ã®æãèµ·ããã @ cbane ïŒ
åæ§ç¯ã€ã³ããã¯ã¹ã«ããããã«ãŒãã³ã°ã¯æåããŸããã ãã«ãŒã³ãããå埩åã®ãããã®ã«ããè¯ãæ¹æ³ããããã©ããããããªãã®ã§ãåé¡ããã€ãã£ãã«åŠçã§ããŸãã
ããŒããä»æ¥ãåããšã©ãŒãçºçããŸããã åæ§ç¯ã€ã³ããã¯ã¹ã§è§£æ±ºããŸãããããã«ãŒãã³ã°èªäœãåé¡ãåŒãèµ·ãããŠããã®ã§ã¯ãªãããšèãå§ããŠããŸãã ã¬ã¹ãã£ãã¯ãã§ãã¯ã¯æ¯åãããã«æ»ããŸãã
ããªãŒ7dc9112b587a2b67a2459e6badf7c14f986408e05dbe8a68e7458a30740ea951ããªããžããªã«èŠã€ãããŸãã
github.com/restic/restic/internal/repositoryãïŒãªããžããªïŒ.LoadTreeinternal / repository / repository.goïŒ711github.com/restic/restic/internal/restic.FindUsedBlobs.func3internal / restic / find.goïŒ52github.com/restic/restic/internal/restic.FindUsedBlobs.func3internal / restic / find.goïŒ74github.com/restic/restic/internal/restic.FindUsedBlobs.func4internal / restic / find.goïŒ89gopkg.in/tomb%2ev2.(Tomb).run
ãã³ããŒ/gopkg.in/tomb.v2/tomb.go:163
runtime.goexit
/usr/lib/golang/src/runtime/asm_amd64.s:1337
æ¯æ¥ã®ã¹ããããã¡ã€ã«ã®åŸ©å ãè£å®ããããã«ãããã¯ã¢ããã®æŽåæ§ãæ€èšŒããããã«ãé±ã«1åå®å šãªåŸ©å ãå®è¡ããŸãã
Resticãã§ãã¯ã§ã¯ããã¯ã¢ããã«åé¡ã¯èŠãããŸããã§ããããblobãæ¬ èœããŠãããããå®å šãªåŸ©å ã¯å€±æããŸãã ãããã£ãŠãããã¹ãã§ã¯ãªãéäžã§äœããåªå®ãããå¯èœæ§ãããããã«èŠããŸãã
ãããã¹ããŒãã¢ãããã©ã³ãã®ãã°ãªã®ããããŒã¹ãã«ãŒã³ã³ãŒãã®ãã°ãªã®ãããããšãå®å šã«äœãä»ã®ãã®ãªã®ãã¯äžæã§ãã æ®å¿µãªãããåçŸæ§ã®é«ããã¹ãã±ãŒã¹ã¯ãããŸããããæ倧ã®ã¬ãã§ãã®ã¿ã€ãã®ã¬ãã®ç Žæãçºçããã®ã¯ããã2åç®ã§ãã ç§ãã¡ã®å°ããªãªããžããªã¯åé¡ã瀺ããŠããŸããã
æ®å¿µãªããããªããžããªã®ãµã€ãºãåå ã§ãã¹ããã¯ãã«ãŒã³ã䜿çšãããã¹ãã¯äžå¯èœã§ãã
ä»ã®ãšãããEBSã¹ãããã·ã§ããã«æ»ããŸããããã®åé¡ãä»ã®åé¡ãåŒãç¶ãç£èŠããæå³ã®ããå Žæã§ãã¹ãã§ããããšãå¬ããæããŸãã
ç¶æ³ãæ¹åããå°ããªPRïŒ2507ãè¿œå ããŸããã ããã«ã€ããŠããã€ãã®ãã¹ããå®è¡ããŠããã ããã°å¹žãã§ã...
ããããšãïŒ
ãã«ãŒãã³ã°ã³ãŒãã®èªã¿åã-åããã¯ãããšblobãèªã¿åãããæ°ããããã¯ãé çªã«ä¿åãããŸãã ãããã¯ãŒã¯ãä»ããŠå梱å ããå Žåã¯ããããããã«ããã¯ã«ãªããŸãã
@DurvalMenezesã¯ãããŒã«ã«ãããã¯ãŒã¯ãŸãã¯ã€ã³ã¿ãŒãããäžã®NASã§ããïŒ ããŒã«ã«ãããã¯ãŒã¯äžã«ããå ŽåãwifiãŸãã¯ã€ãŒãµãããçµç±ã§æ¥ç¶ããŸããïŒ
ãããã®èªã¿åã/ããã¯ã®ä¿åããããã¯ãŒã¯ã«äžŠååããã®ã¯ç°¡åãªæ¹æ³ã®ããã§ãã
ãããšã¯å¥ã«ã代ããã«ãã«ãŒã³ãã€ã³ã¯ãªã¡ã³ã¿ã«ã«ããããšããæ¹ãè¯ãæŠç¥ã§ã¯ãªãããšæããŸãã è€è£œã®2ã¹ãããã®åç³ã³ã¬ã¯ã·ã§ã³ã®ãããªãã®ïŒ https ïŒ//github.com/gilbertchen/duplicacy/wiki/Lock-Free-Deduplication#two -step-fossil-collection
ãããšã¯å¥ã«ã代ããã«ãã«ãŒã³ãã€ã³ã¯ãªã¡ã³ã¿ã«ã«ããããšããæ¹ãè¯ãæŠç¥ã§ã¯ãªãããšæããŸãã è€è£œã®2ã¹ãããã®åç³ã³ã¬ã¯ã·ã§ã³ã®ãããªãã®ïŒ https ïŒ//github.com/gilbertchen/duplicacy/wiki/Lock-Free-Deduplication#two -step-fossil-collection
ãã®ãããã¯ã«é¢ããè°è«ã«ã€ããŠã¯ãïŒ1141ãåç §ããŠãã ããã
PRïŒ2513ã®2ã€ã®æ°ããã³ãã³ããcleanup-indexããšãcleanup-packsããç¶æ³ãå€§å¹ ã«æ¹åããã¯ãã§ãã ãããã®ã³ãã³ãã䜿çšãããšããªããžããªãæ£åžžã§ããå Žåãåããã¯ããã«æŽçãå®è¡ã§ããŸãã
ãã®ããã誀ã£ãŠ2ã€ã®ããšãå®è¡ããŸããã1æéããšã®ããã¯ã¢ããã1åã§ã¯ãªã11åå®è¡ããéå»384æ¥éã»ã©å¿ãããžã§ããå®è¡ããŸããã§ããã 101417ã®ã¹ãããã·ã§ããããããŸãã ãããå¿ããããæŽçãããããã«ã¯é ããããšæããŸãããåé€ããã ãã ãšæããŸãã
ïŒ2718ãè©ŠããŠã¿ãããšãã§ããŸãããã¹ãããã·ã§ããããå¿ãããããšã«å¯Ÿããæ¹åã¯ãããŸããã
å¿ããã¹ããããããªãã®æ©ã¿ã§ãããªãã°ãç§ã¯ããªãã«ã¢ããã€ã¹ããã§ãããïŒ
/snapshots
ãã£ã¬ã¯ããªããæåã§åé€ããŸãprune
ãå®è¡ããŸãïŒïŒ2718ãå¿
èŠãªå ŽåïŒæ°æ¥éã ãä¿æããã€ããã ã£ãã®ã§ãS3ã®ãã£ã¬ã¯ããªå šäœãåé€ããŠæåããããçŽããŸãã ç§ã¯forgetããã»ã¹ãéå§ããŸããããéåžžã«é·ãæéãããããŸãããæ°ãããã©ã³ãã圹ç«ã€ãïŒããã§ã¯ãªãããã«èŠããŸãïŒãå°ãªããšã誰ãããããé¢çœããšæããããããªããšæããŸããã
ç§ã¯æ¬åœã«ãã®ãã©ã³ããè©ŠããŠã¿ããã§ãïŒãŸãã¯ãå®éã«ããã¹ã¿ãŒã«ãã«ããããããã®ã«ãšæããŸãïŒã ç§ã¯ãã¹ãããŠååŸããããšããŸãã
èŽåœçïŒèšå®ãã¡ã€ã«ãéãããšãã§ããŸããïŒçµ±èšïŒæå®ããAWSã¢ã¯ã»ã¹ããŒIDãã¬ã³ãŒãã«ååšããŸããã
ãã¹ã¿ãŒãã«ãã䜿çšãããšåé¡ãªãåäœããŸãã ãŸãã httpsïŒ//github.com/restic/restic/pull/2340ã®ãã©ã³ããåé¡ãªã䜿çšã§ããŸããã
NFSããŠã³ãããããªããžããªã§ãã®ãã©ã³ãã䜿çšã§ããŸãããAWSã«ä¿åãããŠãããªããžããªã®ã¿ãæ©èœããŠããŸããã ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã®æ¹æ³ãããããŸãã...
é¢ä¿ãªããã¹ãŠã®è¯ãä»äºã«æè¬ããŸã
@ vtwaldo21ã©ã®ãã©ã³ããè©ŠããŸãããïŒ ïŒ2718ã§ãããïŒ
ãšã©ãŒã¡ãã»ãŒãžã¯ãAWSã¯ã¬ãã³ã·ã£ã«ã«åé¡ãããããšã瀺ããŠããŸãã ããã¯ãNFSãåé¡ãªãæ©èœããçç±ã説æããŠããå¯èœæ§ããããŸãã
ä»ã®resticã³ãã³ãã¯AWSãªããžããªã§æ©èœããŸããïŒ
@aawsome ãç§ã¯ã°ãã§ããã©ã³ã/ã€ã·ã¥ãŒçªå·ãå ¥ãæ¿ããŠãæ¬åœã«æ··ä¹±ããŸããã ãããã
ãã©ã³ã2718ã¯åé¡ãªãæ©èœããŸããïŒAWSãšNFSããµããŒããããªããžããªã®äž¡æ¹ã§ïŒã ããããŸã å®è¡ãããŠããã®ã§ãç§ã¯ãããããéãã£ããã©ãããæ確ã«èšãããšã¯ã§ããŸãã
ãã©ã³ã2340ãåé¡ãæ±ããŠããŠããªãç§ããã®ãã©ãŒã©ã ã¹ã¬ããã«åå ããã®ãã説æããŸããã
ãã©ã³ã2340ã¯0.9.5ããŒã¹ãªã®ã§ãå°ãå€ãã§ãããããã»ã©æªãã¯ãããŸããã ç§ã¯æ¬¡ã®ãããªç°¡åãªãã¹ããè¡ã£ãŠããŸããã
Resticãã€ããªã¯ããã¹ãRPMïŒ0.9.6ïŒãä»ããŠã€ã³ã¹ããŒã«ãããã ãã§ãã
ã¬ã¹ãã£ãã¯ã¹ãããã·ã§ãã
ãäœåã
restic.2718 / resticã¹ãããã·ã§ãã
ãäœåã
restic.2340 / resticã¹ãããã·ã§ãã
èŽåœçïŒèšå®ãã¡ã€ã«ãéãããšãã§ããŸããïŒçµ±èšïŒæå®ããAWSã¢ã¯ã»ã¹ããŒIDãã¬ã³ãŒãã«ååšããŸããã
ãããã£ãŠããšã©ãŒã¯AWSã¯ã¬ãã³ã·ã£ã«ã«äœããããããšãæå³ããŸãããç§ã¯æåéããå€æ°ãå€æŽããã«ã³ãã³ããé£ç¶ããŠå®è¡ããŠããŸãã ãã®ãã©ã³ãã«ã¯ä»ã«äœãåé¡ãããããã§ãã
ç§ã®ãã«ãŒã³ã¯2TBãŸã§ã®ã¬ãã«æ°æ¥ãããã®ã§ã2718ãš2340ã®äž¡æ¹ããã¹ã¿ãŒã«ããŒãžãããããšã«éåžžã«èå³ããããŸã
@cbaneã¯ããªãã®ãã¹ãŠã®ä»äºã«æè¬ããŸãïŒ ãã«ãŒã³ã³ãŒããäœãçŽããïŒ2718ãããŒãžããŸãããããã«ããããã®åé¡ãšïŒ2340ã解決ããããšæããŸãã
ãäžäŸ¿ããããããŠç³ãèš³ããããŸããããè©«ã³ç³ãäžããŸãã ïŒæ®å¿µã ã£ãïŒ
@MichaelEischerãšè©±ãããŸããããPRïŒ2340ã«ã¯ãŸã å®è£ ãããŠããªãã¢ã€ãã¢ãå«ãŸããŠãããšã®ããšã§ããã®åé¡ãåéããŸãã
@cbaneã¯ããããã®ã¢ã€ãã¢ãçŸåšã®ã³ãŒãã«ããŒãžããããã«ç§ãã¡ãšååããããšã«èå³ããããŸããïŒ ããã§ãªãå Žåã¯å®å šã«ç解ã§ããŸãããããªããç§ãã¡ã¯ããªãã®PRã調ã¹ãŠãèªåãã¡ã§ããããæœåºããŸã:)
ãŸããæšæ¥ã¯çã話ãåããè¡ããäœãããŸããããªãã£ãã®ããç¹å®ããããšããã®ã§ã次åã¯ãã£ãšããŸããããããã«ãªããŸããã ç§ãã¡ãç¹å®ããããã€ãã®ãã€ã³ãã¯æ¬¡ã®ãšããã§ãã
ç§ãéããä»ã®äœãïŒ
ïŒ2340ããcmd_prune.goãžã®å€æŽã¯ãïŒ2718ã«ãã£ãŠå®å šã«çœ®ãæãããã @ aawsomeã«ãã£ãŠïŒ2842ã«å®å šã«åã£ãŠä»£ããããŠããããšãããããŸãã ïŒ3006ã¯ãindex /index.goã®å€æŽã眮ãæããŸãã
checker.go
ïŒhttps://github.com/MichaelEischer/restic/tree/streamtreesãåç
§ïŒããé«åºŠã«äžŠååãããããªãŒãŠã©ãŒãã³ã°ã®å®è£
ãæœåºããŸãããããã«ãããããã€ãã®äžŠåFindUsedBlobs
ãå®è£
ã§ããŸããè¿œå ã®ã³ãŒãè¡ã ã³ããŒã³ãã³ãã«ãåå©çšã§ããŸãã ç§ãèšåãããã©ã³ãã¯ãã€ã³ããã¯ã¹ãšã¹ãããã·ã§ããã®ããŒãã䞊ååããããã«äœ¿çšãããã³ãŒããçµ±åããŸãã ãã©ã³ããããå°ããªPRã«åå²ããŸãã
ããã«ãããããã¯ãšã³ãæ¥ç¶æ°ãšGOMAXPROCSã®äœ¿çšãæ®ããïŒ2340ã®æ®ãã®éšåãšããŠIO / CPU䞊ååŠçã«èªåçã«èª¿æŽãããããã§ãã
çŸåšãïŒ2340ãä»ã®ãã«ãŒãã³ã°PRããæžãæããããã€ã³ããã¯ã¹ã®ã¢ããããŒãã䞊ååããŠããªãããšã«æ°ã¥ããŸããã
æãåèã«ãªãã³ã¡ã³ã
ç§ã¯æè¿ããã«åãçµãã§ããŸãã ãããç§ãããããšã§ãïŒ
ç§ã¯çŸåšãéšåçã«äœ¿çšãããŠããããã¯ã®æžãæãã«äœ¿çšãã䞊ååŠçã®ã¬ãã«ãææ¡ããããã«åãçµãã§ããŸãïŒããã¯ãããã¯ãšã³ãçšã«æ§æãããæ¥ç¶æ°ã«åºã¥ããŠè¡ãäºå®ã§ãïŒã ãŸããããŸããŸãªãšã©ãŒã·ããªãªã§ããã«å€ãã®ãã¹ããè¡ãå¿ èŠããããŸãã
ããã©ãŒãã³ã¹ã®æ°å€ã¯æ¬¡ã®ãšããã§ãïŒ875 GiBã®ããŒã¿ãçŽ180,000ããã¯ã36ã®ã¹ãããã·ã§ãããå«ããªããžããªã䜿çšããããã¯ãšã³ããšããŠã«ãŒãããã¯RESTãµãŒããŒã䜿çšïŒã
ãŸããããã«å€ãã®ããã¯ã®æžãæãã䌎ããçæããããã¹ãã±ãŒã¹ãèšå®ããããšãèšç»ããŠããŸãã