IM-Dedup: An Image Management System Based on Deduplication Applied in DWSNs

2013. 10. 31. 19:35Deduplication

IM-Dedup: An Image Management System Based on Deduplication Applied in DWSNs

- Department of Computer and Technology, Hangzhou Dianzi University, Hangzhou, Zhejiang 310018, China

 

이 논문은 OpenStack에서 이미지 파일을 블록으로 나누고, Fingerprint pretrancsmission 기술을 이용하여, 중복 데이터 블록 전송을 피하기 위하고, 이미지 스토리지 서버에서 중복 제거 모듈을 가진 파일 시스템을 활용함으로써 저장 공간을 줄이기 위한 이미지 관리 시스템 (IM-Dedup)에 대한 논문이다.

 

1. OpenStack Glance

OpenStack에서 이미지를 저장하기 위해서는 2가지 방법이 있다.

(1) Glance 클라이언트에서 Glacne API를 통해 가상 머신 이미지를 Glance Stroage에 저장 하는 방법

(2) Dashboard에서 가상 머신 이미지를 저장하는 방법

(1)방법은 관리자에 의해서 모든 사용자들이 가상 머신 이미지를 사용할 수 있고자 할 때 사용되며 (2)방법은 사용자에 의해 개인의 가상 머신 이미지를 사용하고자 할 때 이용된다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. EXT3 File System

OpenStack은 EXT3 파일 시스템을 사용하고 있는Ubuntu 리눅스 커널 위에서 설치 된다. 그림4에서 보듯이 EXT3 파일 시스템은 하디 디스크 파티션을 4096 byte(4KB) 데이터 블록으로 구성한다. (파일은 4KB블록으로 Chunking 된다. ) 이러한 데이터 블록은 데이터 블록 그룹으로 나누어 진다.

파일은 128byte의 Inode를 가지고 있는데, Inode 에는 파일 타입, 액세스 퍼미션, 파일 소유자, 타임 스탬프, 파일 크기, 데이터 블록 포인터 등을 포함하고 있다.

 

3. Fingerprint Storage

 

블록 그룹은 32768개의 블록을 가지고 있으며, 여기서 160개의 블록에 해당하는 공간을 Fingerprint Storage의 공간으로 할당한다. 그림 3과 같이 Fingerprint Storage는 Fingerprint, Reference Number 가 배열 형태로 구성된다. 이를 통해 모든 블록 그룹에서 데이터 블록에 인덱싱할 수 있다. Fingerprint 1개는 20Byte로서 16Byte는 Fingerprint Value이며, 나머지 4byte는 Reference Number이다.

4. Fingerprint Filter

 

Fingerprint Filter는 메모리 상의 인덱스 구조이다. 디스크에서 Fingerprint의 탐색 속도를 높이는 것을 목표로 하며, 그림 7과 같이 설계 된다.

Index Key는 Fingerprint의 앞에서부터 n비트까지 이며 Bucket key는 뒤에서부터 K bit까지이다. Fingerprint Filter는 2^n개 만큼의 Index key table을 가지고 있으며, 각각의 Index key는 Bucket List를 맵핑 한다. Bucket List에는 Bucket Key와, 데이터 블록 Number가 배열 형태로 존재한다.

새로운 데이터 블록이 디스크에 쓰여지기 전에, Fingerprint Filter는 새로운 디스크 블록의 Fingerrprint의 N + K를 검사하는데 이전에 N + K 와 일치하면 Fingerprint Filter는 상응하는 데이터 블록 번호를 반환할 것이다. 하지만 똑 같은 N+K를 공유한 핑거프린트 값은 하나 이상일 수도 있기 때문에, 시스템은 Return 된 블록 번호를 통하여 상응하는 Fingerprint Stroage의 Fingerprint의 데이터 블록 값과 일치하는지를 확인한다.

 

이를 단계적으로 설명하면, 그림 8과 같이 설명할 수 있다.

새로운 파일이 로드 되면, 시스템은 블록 단위로 Chunking 하고, Fingerprint를 계산한다.

Fingerprint가 만들어지면 이는 Fingerprint Filter에서 검사하게 되는데 Fingerprint에 없으면 이는 블록이 중복되지 않음을 나타낸다. 그리고 나서 시스템은 디스크안에 블록을 저장하고 Inode를 수정한다.

 

 

 

 

 

Design IM- Dedup System

 

IM – Dedup 시스템은 다음 그림 9와 같이 설계 된다.

사용자가 Instance Launch 요구를 하면, Glance는 가상 머신 이미지로 사용할 컴퓨터 노드에 요청된 이미지를 전달한다.

Step 1) Glacne Client는 Glance Server에게 이미지를 업로딩 한다고 메시지를 보낸다.. 이에 Glance Server는 이미지 데이터베이스에 이미지 정보를 등록하고 Glacne Server는 파일에 대해 새로운 아이노드를 만들고 파일 기록을 준비한다.

Step 2) Glance Client는 파일을 Chunking 한다. Chunk C를 얻은 후 Glance 클라이언트는 관련된 Fingerprint F를 계산하고 그것을 Glance Server에 보낸다.

Step 3) Glance Server는 Fingerprint F를 수신하고 이를 Fingerprunt Filter로 보낸다. Fingerprint Filter는 F의 N+K 비트를 확인한다. 있으면 Step 4, 없으면 step 6

Step 4) Fingerprint Storage에서 Fingerprint를 검색한다. F가 새로운 Fingerprint라면, Step 5, 그렇지 않으면 Step 6으로 간다

 

Step 5) Chunk C의 Fingerprint F와 똑 같은 Chunk C의 Fingerprint F가 있다면, Chunk C를 가르키는 Inode Pointer을 수정한다.

 

Step 6) Chunk C를 보내라는 Glance Clinet측에 보내고, Chunk C를 Stroage 에 저장한 후 Chunk C를 가르키기 위한 포인터를 수정한다

Step 7) 파일이 끝날 때 까지 Go to Step 2)

Step 8) Finish image upload Process