ãããªãå ±åãã
ããã¹ãç
2幎åã®ã«ãŒãã«çºæ¿ã¬ãŒãã®å€åã«ãããMail.Ru Mailã®éã®ã³ã¹ããåæžããæ¹æ³ã«ã€ããŠèããããããŸããã è³Œå ¥ããããŒããŠã§ã¢ã®éãšãã¹ãã£ã³ã°ã®äŸ¡æ Œãåæžããå¿ èŠããããŸããã ä¿åããå ŽæãèŠã€ããããã«ãã¡ãŒã«ã®æ§æãèŠãŠã¿ãŸãããã
ã€ã³ããã¯ã¹ãšæåã®æ¬æãããªã¥ãŒã ã®15ïŒ ããã¡ã€ã«-85ïŒ ãå ããŠããŸãã æé©åã®ããã®å Žæããã¡ã€ã«ïŒæåã®æ·»ä»ãã¡ã€ã«ïŒã§æ¢ãå¿ èŠããããŸãã åœæããã¡ã€ã«ã®éè€æé€ã¯å®è£ ãããŠããŸããã§ããã èŠç©ããã«ãããšãã¡ãŒã«å šäœã®36ïŒ ãç¯çŽã§ããŸããåãæçŽãå€ãã®ãŠãŒã¶ãŒã«å±ããŸãïŒåçä»ãã®ãœãŒã·ã£ã«ãããã¯ãŒã¯ãäŸ¡æ Œè¡šä»ãã®ã·ã§ãããªã©ïŒã ãã®æçš¿ã§ã¯ã PSIAltã®ãªãŒããŒã·ããã®äžã§è¡ããããã®ãããªã·ã¹ãã ã®å®è£ ã«ã€ããŠèª¬æããŸãã
ã¡ã¿æ å ±ãªããžããª
ãã¡ã€ã«ã®ã¹ããªãŒã ãããããã¡ã€ã«ãéè€ããŠãããã©ããããã°ããç解ããå¿ èŠããããŸãã ç°¡åãªè§£æ±ºçã¯ããã¡ã€ã«ã®å 容ã«åºã¥ããŠçæãããååãä»ããããšã§ãã sha1ã䜿çšããŠããŸãã å ã®ãã¡ã€ã«åã¯ã¬ã¿ãŒèªäœã«ä¿åããããããé¢åãèŠãå¿ èŠã¯ãããŸããã
ã¬ã¿ãŒãåãåãããã¡ã€ã«ãååŸããsha1ã®å 容ããèšç®ããèšç®ã®å€ãã¬ã¿ãŒã«è¿œå ããŸããã ããã¯ãã¬ã¿ãŒãéä¿¡ãããšãã«å°æ¥ã®ãªããžããªã§ç°¡åã«ãã¡ã€ã«ãèŠã€ããããããã«ããããã«å¿ èŠã§ãã
ããã§ãã¡ã€ã«ãåããŸãã ãªããžããªã«åãåãããããšã«èå³ããããŸãïŒsha1ã®ãã¡ã€ã«ã¯ãããŸããïŒ ããã¯ããã¹ãŠã®sha1ãã¡ã¢ãªã«ä¿åããå¿ èŠãããããšãæå³ããŸãã fileDBã¹ãã¬ãŒãžã®å Žæã«ååãä»ããŸãããã
åããã¡ã€ã«ãç°ãªãæåã«ããããšãã§ããŸãã ãããã£ãŠããã®ãããªãã¡ã€ã«ã®æåæ°ã®ã«ãŠã³ã¿ãŒãä¿æããŸãã
ãã¡ã€ã«ãè¿œå ãããšãã«ãŠã³ã¿ãŒãå¢å ããŸãã ãã¡ã€ã«ã®çŽ40ïŒ ãåé€ãããŸãã ãããã£ãŠããã¡ã€ã«ãã¯ã©ãŠãã«ã¢ããããŒããããŠããã¬ã¿ãŒãåé€ããå Žåã¯ãã«ãŠã³ã¿ãŒãæžããå¿ èŠããããŸãã 0ã«éãããšããã¡ã€ã«ãåé€ã§ããŸãã
ããã§æåã®åé¡ã«çŽé¢ããŸããæåïŒã€ã³ããã¯ã¹ïŒã«é¢ããæ å ±ã¯ããã·ã¹ãã ã«ããããã¡ã€ã«ã«é¢ããæ å ±ã¯å¥ã®ã·ã¹ãã ã«ãããŸãã ããã«ãããããšãã°æ¬¡ã®ãããªãšã©ãŒãçºçããå ŽåããããŸãã
- æçŽãåé€ããèŠæ±ãæ¥ãŸãã
- ã·ã¹ãã ã¯æåã€ã³ããã¯ã¹ãäžããŸãã
- 圌ã¯ãã¡ã€ã«ïŒsha1ïŒãããããšã確èªããŸãã
- ãã¡ã€ã«ãåé€ããèŠæ±ãéä¿¡ããŸãã
- é害ãçºçããã¡ãã»ãŒãžã¯åé€ãããŸããã
ãã®å Žåãæåã¯ã·ã¹ãã ã«æ®ããã«ãŠã³ã¿ãŒã¯1ã€æžå°ããŸããã ãã®æçŽã®åé€ã2åç®ã«ãªã£ãå Žåãã«ãŠã³ã¿ãŒãåã³æžãããŠåé¡ãååŸããŸãã ãã¡ã€ã«ã¯ãã1æåã§ããããã®ã«ãŠã³ã¿ãŒã¯ãŒãã§ãã
ããŒã¿ã倱ããªãããšãéèŠã§ãã ãŠãŒã¶ãŒãã¬ã¿ãŒãéããŠãããã¡ã€ã«ãååšããªããšããç¶æ³ãèš±å¯ããããšã¯ã§ããŸããã åæã«ããã£ã¹ã¯ã«å°ãäœåãªãã¡ã€ã«ãä¿åããŠãåé¡ã¯ãããŸããã ã«ãŠã³ã¿ãŒããŒãã«æ£ããæžå°ãããã©ãããæ確ã«ç€ºãã¡ã«ããºã ãããã°ååã§ãã ãããè¡ãããã«ãå¥ã®ãã£ãŒã«ã-ããžãã¯ããããŸããã
ã¢ã«ãŽãªãºã ã¯ç°¡åã§ãã ã¬ã¿ãŒã§ã¯ããã¡ã€ã«ã®sha1ãšãšãã«ããã1ã€ã®ä»»æã®æ°å€ãçæããŠä¿åããŸãã ãã¡ã€ã«ã®å ¥åãŸãã¯åé€ã®èŠæ±ã¯ãã¹ãŠããã®çªå·ã§è¡ãããŸãã ãã£ã«ãªã¯ãšã¹ããåä¿¡ãããå Žåãä¿åãããŠããããžãã¯ã«ãã®çªå·ãè¿œå ããŸãã åé€ããå Žåã¯ãåé€ããŸãã
ãããã£ãŠããã¹ãŠã®æåãæ£ããåæ°ã ãã«ãŠã³ã¿ãŒãå¢æžãããšãéæ³ããŒãã«ãªããŸãã ãŒã以å€ã®å Žåããã¡ã€ã«ãåé€ã§ããŸããã
äŸãèŠãŠã¿ãŸãããã sha1ãã¡ã€ã«ããããŸãã äžåºŠãã©ããã£ã³ã°ãããæåãå ¥åãããšã345ã«çããä¹±æ°ïŒããžãã¯ïŒãçæãããŸãã
ä»ãåããã¡ã€ã«ã§å¥ã®æçŽãå±ããŸãã ããžãã¯ïŒ123ïŒãçæãããã¡ã€ã«ãã¢ããããŒãããŸãã æ°ããããžãã¯ãå€ãããžãã¯ã«è¿œå ãããã«ãŠã³ã¿ãŒã1ã€å¢ããŸãã ãã®çµæãFileDBã§ã¯sha1ã®ããžãã¯ã¯468ã«ãªããã«ãŠã³ã¿ãŒ-2ã«ãªããŸããã
ãŠãŒã¶ãŒã¯2çªç®ã®æåãåé€ããŸãã 2çªç®ã®æåã«æ ŒçŽãããŠããéæ³ã¯çŸåšã®éæ³ããå·®ãåŒãããã«ãŠã³ã¿ãŒã1ã€æžããŸãã
ãŸãããã¹ãŠãé 調ã«é²ãã§ããç¶æ³ãèããŸãã ãŠãŒã¶ãŒã¯æåã®æåãåé€ããŸãã ãã®åŸãéæ³ãšã«ãŠã³ã¿ãŒã¯ãŒãã«ãªããŸãã ãã®ãããããŒã¿ã¯äžè²«ããŠããããããã¡ã€ã«ãåé€ã§ããŸãã
äœããããŸããããªãã£ããšããŸããããæåã®æåã¯2ã€ã®åé€ã³ãã³ããéä¿¡ããŸããã ã«ãŠã³ã¿ãŒïŒ0ïŒã¯ãã¡ã€ã«ãžã®ãªã³ã¯ããªãããšã瀺ããŸãããããžãã¯ïŒ222ïŒã¯åé¡ãéç¥ããŸããããŒã¿ãäžè²«ããç¶æ ã«ãªããŸã§ãã¡ã€ã«ãåé€ããããšã¯ã§ããŸããã
ç¶æ³ãå®æãããŠãæåã®æåãåé€ããããšä»®å®ããŸãããã ãã®å Žåãéæ³ïŒâ123ïŒã¯äŸç¶ãšããŠããŒã¿ã®äžæŽåãæå³ããŸãã
ä¿¡é Œæ§ã®ããã«ãã«ãŠã³ã¿ãŒããŒãã«ãªããããžãã¯ãïŒãã®å Žåãããžãã¯= 222ãã«ãŠã³ã¿ãŒ= 0ïŒã§ã¯ãªãå Žåããã¡ã€ã«ã¯ãåé€ããªãããã©ã°ã«èšå®ãããŸãã ãã®ãããå€ãã®è¿œå ãšåé€ã®åŸãå¶ç¶ã®äžèŽã«ãã£ãŠãããžãã¯ãšã«ãŠã³ã¿ãŒããŒãã«ãªã£ããšããŠãããã¡ã€ã«ã«åé¡ããããåé€ã§ããªãããšãããããŸãã
FileDBã«æ»ããŸãã ãšã³ãã£ãã£ã«ã¯ãã©ã°ããããŸãã ããªããèšç»ããŠãããã©ããã«ãããããã圌ãã¯å¿ èŠã«ãªããŸãã ããšãã°ããã¡ã€ã«ãåé€äžå¯ãšããŠããŒã¯ããå¿ èŠããããŸãã
äž»ãªãã®ãé€ããŠããã¡ã€ã«ã®ãã¹ãŠã®ããããã£ããããŸãïŒããã¯ç©ççã«ãããŸãã ãã®å Žæã¯ããµãŒããŒïŒIPïŒãšãã©ã€ããèå¥ããŸãã ãã£ã¹ã¯ãåãããã®ãããªãµãŒããŒã2å°å¿ èŠã§ãã
ãããã1ã€ã®ãã£ã¹ã¯ã«ã¯å€ãã®ãã¡ã€ã«ããããŸãïŒãã®äŸã§ã¯çŽ2,000,000ïŒã ã€ãŸããFileDBã®ãããã®ãšã³ããªã«ã¯ãä¿åå Žæãšåããã£ã¹ã¯ãã¢ããããŸãã ãããã£ãŠããã®æ å ±ãFileDBã«ä¿åããã®ã¯ç¡é§ã§ãã ãããå¥ã®ããŒãã«ã«åãåºããFileDBã«æ°ããããŒãã«ã®ã¬ã³ãŒãã瀺ãIDãæ®ããŸãã
ãã®ãããªãã¢ã®èª¬æã«å ããŠããã©ã°ãã£ãŒã«ããå¿ èŠã§ããããšã¯æããã§ãã ãã©ã°ã«ã¯ããã£ã¹ã¯ãããã¯ãããŠãããšããæ å ±ãå«ãŸããŠããŸããããšãã°ã1ã€ãæµåºãã2ã€ç®ãã³ããŒãããŠãããããæ°ããæ å ±ãæžã蟌ãããšã¯ã§ããŸããã
ãŸããåãã£ã¹ã¯ã®ç©ºã容éãç¥ãå¿ èŠããããŸãã ãããã®ãã£ãŒã«ããããŒãã«ã«è¿œå ããŸãã
ãã¹ãŠãè¿ éã«æ©èœããã«ã¯ãFileDBãšPairDBãRAMã«ååšããå¿ èŠããããŸãã Tarantool 1.5ã䜿çšããŠãã ããã ä»ããææ°ããŒãžã§ã³ã䜿çšããå¿ èŠããããšèšããªããã°ãªããŸããã FileDBã«ã¯5ã€ã®ãã£ãŒã«ãïŒãããã20ã4ã4ã4ã4ãã€ãïŒããããåèš36ãã€ãã®ããŒã¿ããããŸãã åããããŒã«ã¯ã16ãã€ããšåãã£ãŒã«ãé·ããšã«1ãã€ããå«ãŸããŸãã ã¬ã³ãŒãããšã«åèš57ãã€ãã
Tarantoolã§ã¯ãæ§æã§å²ãåœãŠã®æå°ãµã€ãºãèšå®ã§ãããããã¡ã¢ãªãªãŒããŒããããã»ãŒãŒãã«æžããããšãã§ããŸãã 1ã€ã®ã¬ã³ãŒãã«å¿ èŠãªã ãæ£ç¢ºã«å²ãåœãŠãŸãã 1200äžã®ãã¡ã€ã«ããããŸãã
(57 * 12 * 10^9) / (1024^3) = 637 Gb
ããããããã ãã§ã¯ãããŸãããsha1ãã£ãŒã«ãã«ã€ã³ããã¯ã¹ãå¿ èŠã§ãã ãããŠãããã¯ã¬ã³ãŒãããšã«ããã«12ãã€ãã§ãã
(12 * 12 * 10^9) / (1024^3) = 179 Gb
åèšã§ãçŽ800 Gbã®RAMãååŸãããŸãã ãã ããã¬ããªã«ãå¿ããªãã§ãã ãããããã¯Ã2ãæå³ããŸãã
256 Gbã®RAMãæèŒãããã·ã³ã䜿çšããå Žåã8å°ã®ãã·ã³ãå¿ èŠã§ãã
PairDBã®ãµã€ãºãèŠç©ããããšãã§ããŸãã ãã ããå¹³åãã¡ã€ã«ãµã€ãºã¯1 MBã§ããã£ã¹ã¯ã®ãµã€ãºã¯1 Tbã§ãã ããã«ãããçŽ1,000,000åã®ãã¡ã€ã«ããã£ã¹ã¯ã«ä¿åã§ããŸãã ãããã£ãŠãçŽ28,000æã®ãã£ã¹ã¯ãå¿ èŠã§ãã PairDBã®1ã€ã®ãšã³ããªã¯2ã€ã®ãã£ã¹ã¯ãèšè¿°ãããããPairDBã«ã¯14,000ã¬ã³ãŒãããããŸãã ããã¯ãFileDBãšæ¯èŒããŠãããããã§ãã
ãã¡ã€ã«ã®ã¢ããããŒã
ããŒã¿ããŒã¹æ§é ãææ¡ããŸããã次ã«ãã·ã¹ãã ãæäœããããã®APIã«é²ã¿ãŸãããã ã¢ããããŒãããã³åé€ã¡ãœãããå¿ èŠãªããã§ãã ãã ããéè€æé€ã«ã€ããŠã¯èŠããŠãããŠãã ãããã¢ããããŒãããããšããŠãããã¡ã€ã«ããã§ã«ãªããžããªã«ããå¯èœæ§ããããŸãã ããäžåºŠå ¥åããã®ã¯æå³ããããŸããã ãã®ããã次ã®ãããªã¡ãœãããå¿ èŠã«ãªããŸãã
- incïŒsha1ãmagicïŒ -ã«ãŠã³ã¿ãŒãå¢ãããŸãã ãã¡ã€ã«ããªãå Žåã¯ããšã©ãŒãè¿ããŸãã éæ³ãå¿ èŠã ãšããããšãæãåºããŠãã ããã ããã«ããã誀ã£ããã¡ã€ã«ã®åé€ããä¿è·ãããŸãã
- uploadïŒsha1ãmagicïŒ-incããšã©ãŒãè¿ããå Žåã«åŒã³åºãå¿ èŠããããŸãã ãã®ããããã®ãããªãã¡ã€ã«ã¯ãªããã¢ããããŒãããå¿ èŠããããŸãã
- decïŒsha1ãmagicïŒ -ãŠãŒã¶ãŒãã¡ãã»ãŒãžãåé€ãããšåŒã³åºãããŸãã ãŸããã«ãŠã³ã¿ãŒãæžãããŸãã
- GET / sha1-åçŽã«httpçµç±ã§ãã¡ã€ã«ãããŠã³ããŒãããŸãã
ã¢ããããŒãäžã«äœãèµ·ãããèŠãŠã¿ãŸãããã ãã®ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããããŒã¢ã³ã«ã¯ãiprotoãããã³ã«ãéžæããŸããã ããŒã¢ã³ã¯ä»»æã®æ°ã®ãã·ã³ã«åãããŠã¹ã±ãŒãªã³ã°ããå¿ èŠããããããç¶æ ãä¿åããŸããã ãœã±ãããªã¯ãšã¹ããæ¥ãŸãïŒ
ã³ãã³ãã®ååã«ãã£ãŠãããããŒã®é·ããããããæåã«èªã¿åããŸãã ããã§ã origin-lenãã¡ã€ã«ã®é·ããéèŠã§ãã ãããæºããããã«ãããã€ãã®ãµãŒããŒãéžæããå¿ èŠããããŸãã PairDBå šäœãåºåããã ãã§ãæ°åã®ã¬ã³ãŒããããããŸããã 次ã«ãç®çã®ãã¢ãéžæããããã®æšæºã¢ã«ãŽãªãºã ã䜿çšããŸãã ãã¹ãŠã®ãã¢ã®èªç±ç©ºéã®åèšã«çããé·ãã®ã»ã°ã¡ã³ããæ§æããã»ã°ã¡ã³ãäžã®ãã€ã³ããã©ã³ãã ã«éžæããŸãã ã»ã°ã¡ã³ããããã®ãã€ã³ããã©ã®ãã¢ã§ããããéžæãããŸãã
ãã ãããã®ãããªåçŽãªæ¹æ³ã§ãã¢ãéžæããããšã¯å±éºã§ãã ãã¹ãŠã®ãã£ã¹ã¯ã90ïŒ æºæ¯ã§ã空ã®ãã£ã¹ã¯ãè¿œå ãããšããŸãã ããªãã®ç¢ºçã§ããã¹ãŠã®æ°ãããã¡ã€ã«ãããã«æ³šãããŸãã ãã®åé¡ãåé¿ããã«ã¯ãå ±éã®ã»ã°ã¡ã³ããäœæããããã«ããã¢ã®ç©ºãé åã§ã¯ãªãã空ãé åããN次ã®æ ¹ãååŸããå¿ èŠããããŸãã
ããã€ãéžæããŸããããããŒã¢ã³ã¯ã¹ããªãŒãã³ã°äžã§ãããã¡ã€ã«ãã¹ãã¢ã«ã¹ããªãŒãã³ã°ãå§ããå ŽåãåŸæ»ãããããšã¯ã§ããŸããã ãããã£ãŠãå®éã®ãã¡ã€ã«ãã¢ããããŒãããåã«ãæåã«å°ããªãã¹ããã¡ã€ã«ãéä¿¡ããŸãã ãã¹ããã¡ã€ã«ããã£ã±ãã«ãªã£ãŠããå Žåã¯ããœã±ãããããã¡ã€ã«ã³ã³ãã³ããæžç®ããã¹ãã¬ãŒãžã«ã¹ããªãŒãã³ã°ããŸãã ããã§ãªãå Žåã¯ãå¥ã®ãã¢ãéžæããŸãã Sha1ã¯ãªã³ã¶ãã©ã€ã§æ€èšã§ããããã泚ããšãã«ããã«ãã§ãã¯ããŸãã
ããŒããŒããéžæãããã£ã¹ã¯ã®ãã¢ã«ãã¡ã€ã«ãæžã蟌ãããšãæ€èšããŠãã ããã ãã£ã¹ã¯ãæèŒãããã·ã³ã§ã¯ãnginxãäžããŠwebdavãããã³ã«ã䜿çšããŸããã æçŽãå±ããŸããã ãã®ãã¡ã€ã«ã¯ãŸã FileDBã«ååšããªããããããŒããŒãä»ããŠããã€ãã®ãã£ã¹ã¯ã«ã¢ããããŒãããå¿ èŠããããŸãã
ãã ããå¥ã®ãŠãŒã¶ãŒãåãã¡ãŒã«ãåä¿¡ããã®ã劚ãããã®ã¯ãããŸãããã¡ãŒã«ã«2人ã®åä¿¡è ããããšããŸãã ãã®ãã¡ã€ã«ã¯ãŸã FileDBã«ãããŸããã å¥ã®ããŒããŒããŸã£ããåããã¡ã€ã«ãã¢ããããŒãããåããã¢ãéžæã§ããŸãã
ã»ãšãã©ã®å Žåãnginxã¯åé¡ãæ£ãã解決ããŸããããã¹ãŠãå¶åŸ¡ããå¿ èŠããããããè€éãªååã§ãã¡ã€ã«ãä¿åããŸãã
åããŒããŒãä¹±æ°ãæžã蟌ãååã®éšåã¯ãèµ€ã§åŒ·èª¿è¡šç€ºãããŠããŸãã ãããã£ãŠã2ã€ã®PUTã¯äº€å·®ãããç°ãªããã¡ã€ã«ãã¢ããããŒãããŸãã nginxã201ã«å¿çãããšãããŒããŒã¯ã¢ãããã¯MOVEæäœãè¡ããæçµçãªãã¡ã€ã«åãæå®ããŸãã
2çªç®ã®ããŒããŒããã¡ã€ã«ãã¢ããããŒãããMOVEãäœæãããšããã¡ã€ã«ã¯äžæžããããŸãããããã¯åããã¡ã€ã«ã§ã-åé¡ã¯ãããŸããã ãã£ã¹ã¯ã«è¡šç€ºãããããFileDBã«ã¬ã³ãŒããè¿œå ããå¿ èŠããããŸãã ã¿ã©ã³ãã¥ã©ã¯2ã€ã®ã¹ããŒã¹ã«åãããŠããŸãã ä»ã®ãšããããŒãã®ã¿ã䜿çšããŸãã
ãã ããæ°ãããã¡ã€ã«ã®ãšã³ããªãåã«è¿œå ãã代ããã«ããã¡ã€ã«ã«ãŠã³ã¿ãã€ã³ã¯ãªã¡ã³ããããããã¡ã€ã«ãšã³ããªãè¿œå ããã¹ãã¢ãããã·ãŒãžã£ã䜿çšããŸãã ãªããã ããŒããŒããã¡ã€ã«ãFileDBã«ãªãããšã確èªãããã¡ã€ã«ãã¢ããããŒãããŠãšã³ããªãè¿œå ããéã誰ãããã§ã«ãã®ãã¡ã€ã«ãã¢ããããŒãããŠãšã³ããªãè¿œå ã§ããŸããã äžèšã§ã¯ããŸãã«ãã®ãããªç¶æ³ãèããŸããã 1éã®æçŽã«ã¯2人ã®åå人ãããã2人ã®ããŒããŒããããåãå§ããŸããã 2çªç®ãçµäºãããšãFileDBã«ã移åããŸãã
ãã®å Žåã2çªç®ã®ããŒããŒã¯åã«ã«ãŠã³ã¿ãŒãã€ã³ã¯ãªã¡ã³ãããŸãã
ã§ã¯ãdecããã·ãŒãžã£ã«é²ã¿ãŸãããã ã·ã¹ãã ã«ãšã£ãŠ2ã€ã®ã¿ã¹ã¯ãåªå ãããŸã-ãã¡ã€ã«ããã£ã¹ã¯ã«æžã蟌ã¿ããã£ã¹ã¯ããã¯ã©ã€ã¢ã³ãã«ãã°ããæäŸããããšãä¿èšŒãããŠããŸãã ç©çãã¡ã€ã«ãåé€ãããšãã£ã¹ã¯ã®è² è·ãçºçããæåã®2ã€ã®ã¿ã¹ã¯ã«å¹²æžããŸãã ãããã£ãŠããªãã©ã€ã³ã§è»¢éããŸãã decããã·ãŒãžã£èªäœãã«ãŠã³ã¿ãæžãããŸãã ããžãã¯ã®ããã«åŸè ããŒãã«ãªã£ãå Žåãä»ã®èª°ããã¡ã€ã«ãå¿ èŠãšããŸããã ã¿ã©ã³ãã¥ã©ã®space0ããspace1ã«ãã®ã¬ã³ãŒãã転éããŸãã
decrement (sha1, magic){ counter-- current_magic â= magic if (counter == 0 && current_magic == 0){ move(sha1, space1) } }
ãã«ããªãŒ
ååºèã«ã¯ãããŒã¿ã®æŽåæ§ãšäžè²«æ§ãç£èŠããValkyrieããŒã¢ã³ããããspace1ã§åäœããŸãã 1ã€ã®ãã©ã€ã-1ã€ã®ããŒã¢ã³ã€ã³ã¹ã¿ã³ã¹ã ããŒã¢ã³ã¯ãã£ã¹ã¯äžã®ãã¡ã€ã«ã1ã€ãã€èª¿ã¹ããã¡ã€ã«ãšã³ããªãspace1ã«ãããã©ãããã€ãŸãåé€ããå¿ èŠããããã©ããã確èªããŸãã
ããããdecïŒïŒæäœã®å®è¡äžã«ãã¡ã€ã«ãspace1ã«è»¢éããŠãããValkyrieããã¡ã€ã«ãæ€åºãããŸã§ã«æéãããããŸãã ãã®ããããããã®2ã€ã®ã€ãã³ãã®éããã¡ã€ã«ã¯space0ã«äœåºŠãã¢ããããŒãã§ããŸãã
ãããã£ãŠãValkyrieã¯ããã¡ã€ã«ãspace0ã«ãããã©ãããããã«ç¢ºèªããŸãã ãããçºçããã¬ã³ãŒãã®pair_idãçŸåšã®Valkyrieã䜿çšããŠãããã£ã¹ã¯ã®ãã¢ã瀺ããŠããå Žåãspace1ããã¬ã³ãŒããåé€ããŸãã
ãšã³ããªããªãå Žåããã¡ã€ã«ã¯åé€ã®åè£ã§ãã ããã§ããspace0ã§ã®ãªã¯ãšã¹ããšç©ççãªåé€ã®éã«ã¯æéå·®ããããŸãã ãããã£ãŠããã®ã®ã£ããã§ã¯ãã¹ããŒã¹0ã«ãã¡ã€ã«ãšã³ããªã衚瀺ãããå¯èœæ§ãåã³ãããŸãã ãããã£ãŠããã¡ã€ã«ãæ€ç«ããŸãã
ãã¡ã€ã«ãåé€ãã代ããã«ãdeletedãštimestampãååã«è¿œå ããŠååãå€æŽããŸãã ã€ãŸããèšå®ã§æå®ãããæéã®éãã¿ã€ã ã¹ã¿ã³ã+ãã¡ã€ã«ãç©ççã«åé€ããŸãã é害ãçºçãããã¡ã€ã«ã誀ã£ãŠåé€ãããããšã決å®ãããå ŽåããŠãŒã¶ãŒã¯ãã®ãã¡ã€ã«ã«ã¢ã¯ã»ã¹ããŸãã ãã¡ã€ã«ã埩å ããããŒã¿ã倱ãããšãªããšã©ãŒãä¿®æ£ããŸãã
ããã§ã2ã€ã®ãã£ã¹ã¯ããããããããã«ç¬èªã®ValkyrieãããããšãæãåºããŠãã ããã Valkyriesã¯äºãã«åæããŠããŸããã 質åãçºçããŸãïŒspace1ãããšã³ããªãåé€ããã®ã¯ãã€ã§ããïŒ
2ã€ã®ããšãè¡ããŸãã æåã«ãç¹å®ã®ãã¡ã€ã«ã«ValkyrieãŠã£ã¶ãŒãã®1ã€ãå²ãåœãŠãŸãã ããã¯éåžžã«ç°¡åã«è¡ãããŸãããã¡ã€ã«åã®æåã®ãããã§ãã 0ã®å Žåããã¹ã¿ãŒã¯disk0ã§ã1ã®å Žåããã¹ã¿ãŒã¯disk1ã§ãã
ä»ãç§ãã¡ã¯ããããæéå ã«åºããŸãã ãªã³ãŒã«ïŒãã¡ã€ã«ãšã³ããªãspace0ã«ããå ŽåãæŽåæ§ããã§ãã¯ããããžãã¯ãã£ãŒã«ãããããŸãã ã¬ã³ãŒããspace1ã«è»¢éãããšããéæ³ã¯å¿ èŠãªãããã転éæéã®ã¿ã€ã ã¹ã¿ã³ããspace1ã«æžã蟌ã¿ãŸãã çŸåšãValkyrieãã¹ã¿ãŒã¯space1ã®ã¬ã³ãŒããããã«åŠçããã¹ã¬ãŒãã¯ã¿ã€ã ã¹ã¿ã³ãã«é 延ãè¿œå ããåŸã§ã¬ã³ãŒããåŠçããspace1ããã¬ã³ãŒããåé€ããŸãã
ããã«ãããããã«ãã©ã¹ãåŸãããŸãã ãã¡ã€ã«ããã¹ã¿ãŒã§èª€ã£ãŠéé¢ãããå Žåããã¹ã¿ãŒãèŠæ±ãããšããã°ã§ããã衚瀺ããããããææ¡ãããŸãã ãã®éã«ãã¡ã€ã«ãèŠæ±ããã¯ã©ã€ã¢ã³ãã¯ã¹ã¬ãŒãã§ãããã³ã°ããããŠãŒã¶ãŒã¯ãã¡ã€ã«ãåãåããŸãã
Valkyrieããã£ã¹ã¯äžã«sha1ãšããååã®ãã¡ã€ã«ãèŠã€ãããã®ãã¡ã€ã«ïŒåé€ã®åè£ãšããŠïŒã«space1ã«ãšã³ããªãããå Žåã調ã¹ãŸããã ä»ã«ã©ããªãªãã·ã§ã³ãå¯èœãèŠãŠã¿ãŸãããã
äŸã ãã¡ã€ã«ã¯ãã£ã¹ã¯äžã«ãããŸãããFileDBã«ã¯èšé²ããããŸããã äœããã®çç±ã§Valkyrieãã¹ã¿ãŒãäœããã®çç±ã§ãã°ããåäœããªãã£ãå Žåãã¹ã¬ãŒãã¯ãã¡ã€ã«ãæ€ç«ããspace1ãããšã³ããªãåé€ããŸããã ãã®å Žåãsha1.deleted.tsã䜿çšããŠãã¡ã€ã«ãæ€ç«ããŸãã
å¥ã®äŸã ã¬ã³ãŒãã¯ãããŸãããå¥ã®ãã¢ãæããŸãã ããã¯ã1ã€ã®ã¡ãã»ãŒãžã2人ã®åä¿¡è ã«éä¿¡ãããå Žåããã¡ã€ã«ã®ã¢ããããŒãæã«çºçããå¯èœæ§ããããŸãã å³ãæãåºããŸãããã
2çªç®ã®ããŒããŒãæåã®ããŒããŒãšåããã£ã¹ã¯ãã¢ã«ãã¡ã€ã«ãããŠã³ããŒãããªãã£ãå Žåã¯ã©ããªããŸããïŒ space0ã®ã«ãŠã³ã¿ãã€ã³ã¯ãªã¡ã³ãããŸããããžã£ã³ã¯ãã¡ã€ã«ã¯ããã泚ããããã£ã¹ã¯ã®ãã¢ã«æ®ããŸãã ãã®ãã¢ã«é²ã¿ããã¡ã€ã«ãèªã¿èŸŒãŸããsha1ãäžèŽããããšã確èªããŸãã ãã¹ãŠãåé¡ãªããã°ããã®ãããªãã¡ã€ã«ã¯ããã«åé€ã§ããŸãã
Valkyrieã¯ãéé¢ããããã¡ã€ã«ã«ééããããšããããŸãã æ€ç«ã®æå¹æéãåããŠããå Žåããã¡ã€ã«ã¯åé€ãããŸãã
ãŽã¡ã«ããªãŒã¯è¯ããã¡ã€ã«ãèŠã€ããŸããã sha1ãšæ¯èŒããŠããã£ã¹ã¯ããèªã¿åã£ãŠæŽåæ§ããã§ãã¯ããå¿ èŠããããŸãã 次ã«-ãã¢ããå¥ã®ãã©ã€ãã«ç§»åããããã«ãã¡ã€ã«ããããã©ããã確èªããŸãã ããã«ã¯HEADãªã¯ãšã¹ãã§ååã§ãã ãã¡ã€ã«ã®æŽåæ§ã¯ããã®ãã·ã³ã§å®è¡ãããŠããããŒã¢ã³ã«ãã£ãŠãã§ãã¯ãããŸãã çŸåšã®ãã·ã³ã§ãã¡ã€ã«ã®æŽåæ§ã䟵害ãããŠããå Žåãããã«å¥ã®ãã£ã¹ã¯ããããŒããããŸãã ãã®ãã©ã€ãã«ãã¡ã€ã«ããªãå Žåã¯ãçŸåšã®ãã©ã€ãã§2çªç®ãŸã§ãã£ã±ãã«ããŸãã
æåŸã®ã±ãŒã¹ã§ãããã£ã¹ã¯ã®åé¡ãèæ ®ããå¿ èŠããããŸãã ç£èŠåŸã管çè ã¯ãããèµ·ãã£ãããšãç解ããŸãã ãã£ã¹ã¯ããµãŒãã¹ïŒèªã¿åãå°çšïŒã¢ãŒãã«ãã2çªç®ã®ãã£ã¹ã¯ã§ãŒããæé ãéå§ããŸãã 2çªç®ã®ãã£ã¹ã¯ã®ãã¹ãŠã®ãã¡ã€ã«ã¯ãä»ã®ãã¢ã«æ£åšããŠããŸãã
çµæ
æåã«æ»ããŸãããã ã¡ãŒã«ã¯æ¬¡ã®ããã«ãªããŸããã
æ°ããåè·¯ã«ç§»è¡ããåŸã18 Pbãç¯çŽããŸããã
ã¡ãŒã«ã¯32 Pbãå æãå§ããŸããïŒ25ïŒ -ã€ã³ããã¯ã¹ã75ïŒ -ãã¡ã€ã«ïŒã 解æŸããã18 Pbã«ãããé·ãéãæ°ããéãè³Œå ¥ããªãããšãã§ããŸããã
PS sha1ã«ã€ããŠ
ã³ã¡ã³ãã«ã¯å€ãã®è³ªåããããããããã«è¿œå ããŸãã çŸåšãSHA-1èªäœã®è¡çªã®æ¢ç¥ã®å ¬ã«èšç®ãããäŸã¯ãããŸããã å§çž®é¢æ°ãžã®ãã¯ãã«ãåæåããããã®è¡çªïŒSHA-1ããªãŒã¹ã¿ãŒãè¡çªïŒã®äŸããããŸãã ã©ã³ãã ãªè¡çªã120ååã®ãã¡ã€ã«ã§çºçããå¯èœæ§ïŒ10 ^ -38æªæºïŒã
ãããããããå¯èœã ãšããŸãã ãã®å Žåãsha1ã䜿çšããŠãã¡ã€ã«ãèŠæ±ãããšããã¢ããããŒãæã«ç¹å®ã®ã¬ã¿ãŒã®ã€ã³ããã¯ã¹ã§èšæ¶ãããµã€ãºãšcrc32ã®ã³ã³ãã©ã€ã¢ã³ã¹ããã§ãã¯ããŸãã ã€ãŸã ãã¡ã€ã«ããã®ã¬ã¿ãŒã§ã¢ããããŒããããå Žåã«ã®ã¿ãã¡ã€ã«ãæäŸããŸããããã§ãªãå Žåã¯äœãæäŸããŸããã