2013. 10. 23. 21:28ㆍCloud/VM image Distribution
Data Deduplication + Bittorrent
System Design
① User Peer에서는 이미지 서버로부터 다운받은 토렌트파일의 포함되어있는 이미지파일의 전체 Hash 리스트를 바탕으로 새로운Chunk-hash Table을 만든다. 이 Chunk-hash Table에는 Hash값만 들어가 있을 뿐, Chunk의 메모리주소는 포함되어 있지 않다.
Chunk Hash |
Data 주소 |
Label |
A1 |
||
A2 |
||
…. |
||
……………………. |
< New Chunk-hash Table >
② User Peer는 Tracker로부터 전달받은 ' Tracker Response ' 메시지에 포함되어 있는 Swarm내의 Peer IP주소를 바탕으로 다른 Peer들과 Bittorrent Handshaking을 실시한다.
이후, 일반적인 비트토렌트 동작 방법으로 다른 Peer는 현재 내가 가지고 있는 Chunk에 대해 User에게 알려준다(Have 메시지), 이 메시지에는 Chunk-Hash값이 포함된다.
③ 다른 Peer로 부터Chunk-hash를 건네 받은 User Peer는 먼저 Old Chunk-hash Table에서 순차적으로 해당 Chunk-hash 값을 검색한다.
④ 일치 하는 Chunk-hash값이 없으면 Chunk-hash를 다시 peer로 전송하여 Chunk를 다운 받고 다운 받은 Chunk는 메모리에 저장한다. 이후 새로 만든 Chunk-hash Table(New Chunk-hash Table )에 메모리주소를 저장한다.
⑤ 일치 하는 Chunk-hash값이 있으면, Old Chunk-hash Table의 Label에 공유로 갱신한다. 그리고 Old Chunk-hash Table에 있던 Chunk-hash는 그대로 유지한 채, 해당 Chunk-hash의 메모리 주소를 New Chunk-hash Table에 갱신한다. *새로이 만들어지는 이미지 파일에는 청크파일이 아닌, 기존에 가지고 있던 Chunk의 주소 값이 들어가게 된다.
Chunk Hash |
Data 주소 |
Label |
A1 |
0xxx001122 |
공유 |
A2 |
0xxx001126 |
|
B1 |
0xxx001442 |
|
B2 |
0xxx001443 |
공유 |
< Old Chunk-hash Table >
⑥ Chunk-hash Table에 공유 라벨이 붙은 Chunk-hash는 두 이미지간의 공통 청크의 Hash값이므로 이는 교차이미지 배포모델에서 공통 청크를 공유하는 스웜내에서 공유 되게 한다.
'Cloud > VM image Distribution' 카테고리의 다른 글
Image Transger Optimization for Agile Development (0) | 2013.10.24 |
---|---|
Orchestra (0) | 2013.10.24 |
VMTorrent (0) | 2013.10.24 |
분할 VM이미지에 대한 두가지 전형적인 P2P 모델 (0) | 2013.10.24 |
Bittorrent + VM image Distribution (0) | 2013.10.23 |