KR20150043331A - 메시지 전달 시 첨부물을 중복제거하고 첨부물을 자동으로 복구하는 기법 - Google Patents

메시지 전달 시 첨부물을 중복제거하고 첨부물을 자동으로 복구하는 기법 Download PDF

Info

Publication number
KR20150043331A
KR20150043331A KR20157003876A KR20157003876A KR20150043331A KR 20150043331 A KR20150043331 A KR 20150043331A KR 20157003876 A KR20157003876 A KR 20157003876A KR 20157003876 A KR20157003876 A KR 20157003876A KR 20150043331 A KR20150043331 A KR 20150043331A
Authority
KR
South Korea
Prior art keywords
state
attachment
email
file
data set
Prior art date
Application number
KR20157003876A
Other languages
English (en)
Inventor
크리스토프 룸프
알로크 다리월
아이베일로 디미트로브
쳉 호
링컨 리우
브랜든 파이
쿠마르 파수마시
그루이아 피티고이-아론
존 로드리구에스
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20150043331A publication Critical patent/KR20150043331A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/113Details of archiving
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/07User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail characterised by the inclusion of specific contents
    • H04L51/08Annexed information, e.g. attachments

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

파일 시스템에서 파일 및/또는 블랍을 중복제거하는 시스템 및 기법이 제공된다. 일 실시예에서, 이메일 시스템이 개시되는데, 이 이메일 시스템은 연관된 첨부물의 집합을 포함하는 이메일 메시지를 수신한다. 시스템은 연관된 첨부물이 이메일 시스템에 이전에 저장되었는지 여부와, 저장된 첨부물의 상태를 결정하고, 첨부물의 상태가 첨부물의 사본을 공유하기에 적합한 경우, 첨부물을 공유하기 위한 명령이 있을 시 첨부물에 대한 참조를 제공한다. 또 다른 실시예에서, 시스템은 저장된 첨부물이 손상되었는지를 판정하고, 그런 경우, 가능하면 첨부물에 대한 참조를 공유하기 전에 첨부물을 복구하여 시도할 수 있다.

Description

메시지 전달 시 첨부물을 중복제거하고 첨부물을 자동으로 복구하는 기법{DE-DUPLICATING ATTACHMENTS ON MESSAGE DELIVERY AND AUTOMATED REPAIR OF ATTACHMENTS}
데이터베이스 및 메모리 관리 분야에 있어서, 주어진 컴퓨터 내에서, 다수의 컴퓨터 내에서 또는 컴퓨팅 및 네트워크 환경에 걸쳐, 중복 파일("블랍(blobs)"으로 지칭됨)의 수를 줄이는 것이 바람직할 수 있다. 이러한 프로세스를 자동화하기 위해, 컴퓨터 또는 환경은 이들 블랍을 식별하고 이후 적절한 조치를 취할 필요가 있다.
중복 파일을 피하기 위한 노력은 그에 따른 디스크 공간의 절약, I/O 및 네트워크 대역폭 절약으로 보상을 받는다. 따라서, 중복 파일을 정확하고 효율적으로 취급 및 관리하는 것이 바람직할 수 있다.
이하에서 본 명세서에서 기술되는 몇몇 양상들의 기본적인 이해를 제공하기 위한 본 발명의 간단한 요약이 제공된다. 이 요약은 청구대상의 완전한 개요는 아니다. 본 요약은 청구대상의 핵심 또는 중요한 요소를 확인하고자 하는 것이 아니며 또한 본 발명의 범주를 기술하려는 것도 아니다. 본 요약의 한가지 목적은 이하에서 제공되는 보다 상세한 설명에 대한 서두로서 청구대상의 몇몇 개념을 간단한 형태로 제시하려는 것이다.
파일 시스템 내에서 파일 및/또는 블랍을 중복제거(de-duplicating)하는 시스템 및 기법이 제공된다. 일 실시예에서, 이메일 시스템이 개시되는데, 이 이메일 시스템은 연관된 첨부물들의 집합을 포함하는 이메일 메시지를 수신한다. 시스템은 연관된 첨부물이 이메일 시스템에서 이전에 저장되었는지 여부와, 저장된 첨부물의 상태를 결정하고, 첨부물의 상태가 그 첨부물의 사본을 공유하기에 적합한 경우, 첨부물을 공유하기 위한 요청이 있을 시 첨부물에 대한 참조를 제공한다. 또 다른 실시예에서, 시스템은 저장된 첨부물이 손상되었는지를 검출할 수 있고, 손상된 경우, 가능하면 첨부물에 대한 참조를 공유하기 전에, 그 첨부물을 복구(repair)하려 시도한다.
일 실시예에서, 파일 시스템에서 데이터를 중복제거하는 방법이 개시되는데, 이 파일 시스템은 하나 이상의 파일을 포함하고, 각 파일은 데이터 집합을 포함하고, 데이터 집합은 둘 이상의 사용자에 의해 공유될 수 있다. 방법은 파일 시스템에 저장될 파일을 수신하는 단계와, 상기 파일 내의 데이터 집합이 상기 파일 시스템 내에 이전에 저장되었는지 여부를 검사하는 단계와, 상기 데이터 집합이 상기 파일 시스템에 저장되어 있는 경우, 저장된 데이터 집합의 상태를 검사하는 단계와, 상기 저장된 데이터 집합의 상태가 상기 파일의 사본을 공유하기에 적합한 경우, 상기 데이터 집합을 공유하기 위한 명령이 있을 시 상기 파일에 대한 참조를 제공하는 단계를 포함한다.
또 다른 실시예에서, 이메일 시스템에서 데이터를 중복제거하는 시스템이 개시되는데, 이 시스템은 이메일 클라이언트들의 집합과 통신하는 이메일 서버와, 이메일 및 연관된 첨부물을 저장하는 데이터베이스- 이 데이터베이스는 이메일 메시지, 연관된 첨부물, 이메일 메시지에 관한 메타데이터 및 상기 연관된 첨부물에 관한 메타데이터를 포함하는 그룹의 적어도 하나를 저장함 -와, 이메일 클라이언트들의 집합 사이에서 첨부물의 공유를 관리하는 모듈을 포함할 수 있고, 이메일 클라이언트들의 집합 사이에서 첨부물의 공유를 관리하는 상기 모듈은 첨부물의 상태를 검출할 수 있고 상기 첨부물의 상태에 따라 상기 첨부물에 대한 참조 포인터를 공유할 수 있다.
본 시스템의 다른 특징 및 측면은 본 출원서에 제공된 도면과 연계하여 이하의 상세한 설명에서 제공된다.
도면을 참조하여 예시적인 실시예가 설명된다. 본 명세서에 개시된 실시예 및 도면은 제한적이기보다는 예시적인 것으로 간주되어야 한다.
도 1은 본 발명의 원리에 따라 본 발명의 다양한 실시예가 동작 및 지속될 수 있는 하나의 예시적인 컴퓨팅 및/또는 네트워크 환경을 나타낸다.
도 2는 본 발명의 원리에 따라 구성된 블랍 관리 시스템의 상태 표/흐름도의 일 실시예이다.
도 3은 본 발명의 원리에 따라 구성된 이메일 전달 시스템 및 연관된 블랍 관리 시스템의 상위 레벨의 흐름도에 대한 일 실시예이다.
본 명세서에서 사용되는 바와 같이, "컴포넌트", "시스템", "인터페이스" 등의 용어는 컴퓨터 관련 엔티티, 즉 하드웨어, (예를 들어 실행가능) 소프트웨어, 및/또는 펌웨어를 지칭하려 한다. 예를 들어, 컴포넌트는 프로세서에서 실행되는 프로세스, 프로세서, 객체, 실행가능한 것, 프로그램 및/또는 컴퓨터일 수 있다. 예를 들어, 서버에서 실행되는 애플리케이션과 서버 모두는 컴포넌트일 수 있다. 하나 이상의 컴포넌트는 하나의 프로세스 내에 상주할 수 있고 컴포넌트는 하나의 컴퓨터 상에서 로컬화될 수 있고 및/또는 둘 이상의 컴퓨터 간에 분산될 수 있다.
청구대상은 도면을 참조하여 설명되며, 도면 전체에 걸쳐 유사한 요소를 지칭하는데 유사한 참조 번호가 사용된다. 이하의 설명에서, 예시 목적으로, 본 발명의 완전한 이해를 제공하기 위해 다수의 특정 세부사항이 설명된다. 그러나, 청구대상은 이들 특정 세부사항없이도 실시될 수 있음은 자명하다. 다른 예로서, 잘 알려져 있는 구조 및 장치는 본 발명의 설명을 용이하게 하기 위해 블록도로 도시되어 있다.
소개
파일 시스템, 데이터베이스, 이메일 시스템 등의 공간, 처리 시간 및 전체 비용을 절약하는 것에 관심이 있는 경우, 전체 시스템에 걸쳐 파일("블랍")의 중복제거를 효율적으로 관리할 수 있는 시스템을 구현하는 것이 바람직할 수 있다. 이러한 시스템은 또한 특히 데이터 보안, 데이터 복구 및 데이터 무결성과 같은 개념과 관련이 있을 수 있다.
도 1은 본 발명의 실시예들이 동작하고 상주할 수 있는 컴퓨팅/네트워킹 환경(100)의 일 예이다. 도 1은 이메일 시스템의 형태로 도시되어 있지만, 본 발명의 원리는 데이터베이스 관리 또는 파일 시스템 관리의 애플리케이션에도 동일하게 적용될 수 있다.
환경(100)에서, 복수의 이메일 클라이언트(102a, 102b, 102c)가 있을 수 있다. 이 예에서, 클라이언트(102a)는 클라이언트(102a)는 첨부물을 갖는 이메일(104)을 작성하고 그 이메일을 또 다른 클라이언트(102b)를 목적지로 하여 네트워크 시스템(106)에 전송한다. 클라이언트(102b)는 이어서 첨부물을 갖는 이메일을 제3 클라이언트(102c)로 전송하기로 결정할 수 있다.
네트워크 시스템(106) 내에는, 아마도 당업계에 알려져 있는 다수의 다른 서버, 라우터 및 다른 네트워크 컴포넌트와 함께 이메일 서버(108)가 존재할 수 있다. 예를 들어, 마이크로소프트 아웃룩® 이메일 시스템의 설계에서, 시스템은 데이터의 사본이 독립적인 하드드라이브, 제어기 및 머신에 상주하는 것을 보장한다. 이러한 종류의 시스템은 "Just a Bunch Of Disk"의 약자인 "JOBD"라는 별명을 갖는다. JBOD 시스템에서, 하드드라이브 제어기는 관여하지 않으려 하는데, 이는 제어기가 이전에 다루었던 고장에 대해 소프트웨어가 더 많은 관심을 갖는다는 것을 의미한다. 이들 고장의 범위는 하드드라이브 그 자체의 펌웨어 버그에서부터 제어기에 의해 이전에 자동으로 고쳐진 "회복불능 판독 에러"와 같은 문제까지 이른다. 또한, 소프트웨어는 이제 드라이브를 주기적으로 스크러브(scrub)하여 "비트 로트(bit rot)"(즉, 어떤 이유로 판독불가능하거나 손상된 데이터)에 대해 데이터를 검사할 수 있다. 이 경우, 산업 표준 펌웨어 제어기를 대체하는 분산형 "RAID" 제어기를 소프트웨어로 완전히 구성할 수 있다.
이러한 JBOD 시스템을 위한 소프트웨어는 하드드라이브가 복구 동작을 스케쥴링하고, 고장을 검출하며, 복구를 진단하는 것을 모니터링할 수 있다. 이 소프트웨어는 또한 특정 유형의 고장에 대해 지속적으로 모니터링하는 다수의 "감시장치(watchdogs)"를 포함할 수 있다. 감시장치가 찾고 있는 고장을 검출한 경우, 이 감시장치는 복구 프로세스를 자동으로 작동시킬 수 있는 경고를 발동시킨다. 이 복구 프로세스의 범위는 머신의 재부팅 또는 프로세스의 재시작에서부터, 데이터 손상을 치유하거나 또는 심지어 진척이 이루어지지 않는 경우 사람을 포함시키는 것까지 이른다.
전체 시스템의 일부(110)로서, 시스템이 액세스하는 이메일 메시지의 양호한 사본(예를 들어, 118a, 118b)이 (예를 들어, 참조번호(116) 내에) 얼마나 있는지를 소프트웨어가 정확히 알 수 있도록 메타데이터(112) 및 중복(redundant) 메타데이터(114)가 이용될 수 있다. 소프트웨어가 너무 적은 사본을 발견한 경우, 잠재적으로 위험한 상황을 피하기 위해 복구 동작들에 대한 우선순위를 정할 수 있다. 복구가 너무 오래 걸리는 경우, 데이터를 다른 위치로 완전히 이동시키는 것이 가능하다.
시스템은 본래의 이메일 메시지를 이들이 전달되었을 때와 정확히 동일하게 저장함으로써 복제된 이메일 메시지를 효율적으로 관리 및 저장할 수 있다. 변경된 이메일 메시지에 대한 데이터(예를 들어, 읽음/읽지않음, 폴더 내의 위치 등)는 예를 들어 메타데이터 저장소(112)에 별개로 저장된다.
시스템은 머신들의 집합을 포함할 수 있는데, 각 머신은 이메일 메시지의 사본 및 도달된 메시지를 도달 날짜별로 정리하여 기록하는 저널(journal)을 가질 수 있다. 머신들은 가끔 서로 대화할 수 있고, 그들의 저널을 비교할 수 있으며, 모든 머신으로 복사되지 않은 것으로 알게 된 임의의 메시지를 복사할 수 있다. 이것은 다양한 이유로, 대부분 머신, 네트워크 또는 하드드라이브 고장으로 인해 발생할 수 있다. 어떤 경우에는, 저널이 동기화로부터 너무 벗어나며, 이 경우 시스템은 완전한 비교/복사를 행한다.
하드드라이브가 더 커지고 더 저렴해졌지만, 이들이 데이터를 검색하는 속도는 그리 많이 달라지지는 않았다. 이것은 하드드라이브가 보다 큰 하드드라이브에 보다 많은 데이터를 저장할 수 있을지라도, 하드드라이브는 결국 요구되는 속도를 처리할 수 없을 것이다. 이 분야에서 유망되는 하나의 기술은 플래시 저장소(소위 SSD, 고체 상태 드라이브)이다. SSD는 SD 카드 또는 USB 스틱에서 발견할 수 있는 것과 유사한 기술을 이용하지만, 보다 빠른 내부 칩셋 및 보다 긴 수명을 갖는다. 통상의 하드드라이브는 초당 100번 정도의 판독/기록 동작을 수행할 수 있는 반면, 가장 빠른 몇몇 SSD는 초당 10만이 넘는 동작을 수행할 수 있다. 그러나, 이것은 기가바이트 단위의 저장을 원하는 경우 하드드라이브보다 10배 내지 100배 더 비쌀 수 있기 때문에 비용이 많이 든다.
이메일 메시지를 저장하는 경우, 시스템은 당신 폴더 내에서의 메시지들의 목록, 당신 메시지의 읽음/읽지않음 상태, 대화 스레딩, 이동 전화 동기화 등과 같은 이들 메시지에 대한 정보(메타데이터(112))를 추적할 수 있다. 이 메타데이터는 우리의 전체 저장 공간의 매우 작은 부분을 차지하는 경향이 있지만, 그의 꾸준히 변화하는 특성으로 인해, 하드드라이브 상에서 많은 부하를 소비할 수 있다.
이 작고 빠르게 변하는 데이터 세트에 대해 SSD를 사용함으로써, 또한 메시지를 저장하는데 이용가능한 가장 큰 하드드라이브를 사용함으로써, 시스템은 우리 시스템의 성능에 어떠한 희생도 시키지 않고 보다 크고 보다 저렴한 하드드라이브에서의 트렌드의 장점을 취할 수 있다.
일 실시예에서, 시스템은 (파일 및/또는 메시지 전달시) 파일 및/또는 메시지가 주어진 임계 크기(Y라고 함)보다 큰 지, 또는 파일 및/또는 메시지가 주어진 임계 크기(Y라고 함)보다 큰 첨부물(들)(X라고 함)을 갖는지를 검출할 수 있다. 그런 경우, 시스템은 정확한 파일, 메시지 또는 첨부물(들)(X)이 시스템 상의 사용자에게 이미 전달되었는지, 그 사용자에 의해 공유(또는 저장)되었는지를 확인할 수 있다. 파일, 메시지 및/또는 첨부물이 시스템 상의 사용자에게 전달 및/또는 공유되었는지를 확인하기 위해, 시스템은 파일, 메시지 및/또는 첨부물에 대해 해시 함수를 수행할 수 있고, 일치하는지에 대해 이전 해시 결과들을 비교할 수 있다. 또한, 시스템은 상태 메타데이터, 공유 및/또는 복제가 어떻게 및/또는 누구와 함께 이루어졌는지에 대한 메타데이터를 포함하여, 파일, 이메일 메시지 및/또는 첨부물에 관한 메타데이터를 저장 및/또는 유지할 수 있다.
파일, 메시지 및/또는 첨부물이 전달, 공유되었고, '블랍'이 양호한 상태에 있으며 이미 X에 대한 참조 및/또는 링크의 또 다른 임계 개수(Z라고 함)보다 많지 않은 경우, 파일 시스템 상에 X를 다시 저장하지 않고, 새로운 메시지 전달을 위해 그 블랍에 대한 참조 카운트 및 그 블랍에 대한 '포인트'를 증가시킨다. 이러한 프로세스 동안, 시스템은 또한 디스크 상의 '블랍'이 손상되었는지를 검출할 수 있고, 손상된 경우 복구하거나 양호한 X로 교체할 수 있다. 예를 들어, 도 1의 상황에서, 클라이언트(102b)는 동일한 첨부물을 가진 이메일(104)을 또 다른 타겟 클라이언트 및/또는 엔티티로 전달하는 경우, 시스템은 첨부물의 또 다른 복제물을 생성하지 않고 첨부물에 대한 포인터 참조를 전송할 수 있다.
데이터베이스, 이메일 시스템 및/또는 다른 파일 시스템과 같은 다른 시스템은 도 1을 참조하여 설명한 것과는 다른 아키텍처를 가질 수 있지만, 본 출원의 기술은 또한 이러한 다른 아키텍처를 이용할 수 있다.
중복제거 실시예
(단지 예시 목적인) 이메일 시스템의 경우, 시스템의 일 실시예는 메일 전달시 중복된 첨부물을 식별하고, 이들을 파일 저장소에서 중복제거하여, 아마도 34% 이상의 디스크 절약 및 I/O 및 네트워크 대역폭 절약을 달성할 수 있다. 첨부물을 고유하게 식별하는 것 외에, 시스템은 '블랍'의 라이프 사이클을 이해하는 것과, '블랍'이 손실 또는 손상된 경우 다른 소스 머신 또는 디스크 드라이브로부터 '블랍'의 재-복제를 어떻게 수행할지와, 파일 시스템에 대한 저장 및 I/O의 효율성을 보장하기 위한 핫-스팟 '블랍' 관리를 어떻게 수행할지를 포함할 수 있다.
다수의 이메일 시스템에서, 콘텐츠의 많은 부분은 다수의 이메일 계정에 걸쳐 저장되는 큰 첨부물들의 작은 집합을 포함함을 주목해야 한다. 이러한 관점에서, 본 발명의 다른 실시예는 이들 첨부물이 한번(또는 제한된 횟수만큼) 저장되고 복수의 계정 내에 또는 그에 걸쳐 공유되게 함으로써 장점을 취하려 한다. 일 실시예에서, 시스템은 메시지 파일로부터 첨부물을 추출하여 별도로 저장함으로써 이들 첨부물은 이들이 유래되는 계정과는 독립적으로 참조 및 추적될 수 있다.
본 발명의 다른 실시예는 아래의 동작을 수행하기 위한 모듈을 포함할 수 있다.
(1) 중복 발견: 새롭게 전달된 콘텐츠가 중복제거 대상 후보로서 식별되게 하고 기존 중복이 발견되고 이용되게 하는 인덱스 메카니즘을 구현하기 위한 모듈.
(2) 중복 유지: 하드드라이브 고장 및 데이터 손상에 직면했을 때 중복제거된 데이터를 복구하고 유지하는 모듈, 또한 다른 실시예에서, 이 모듈은 단일 중복 제거된 블랍이 여러 계정에 영향을 미칠 수 있기 때문에 특히 주의한다.
(3) 가비지 콜렉션: 더 이상의 참조되지 않는 첨부물을 안전하게 제거하는 모듈.
몇몇 실시예에서, 단일 SQL 데이터베이스의 범주와 일치하도록 중복제거의 범주를 선택할 수 있다. 이러한 경우, 동일한 SQL 데이터베이스 내에 저장되는 계정에 의해 참조되는 중복 블랍이 발견될 수 있다. 이러한 실시예에서, 이러한 범주는 시스템이 공간 절약을 달성할 수 있게 해주는 한편, 동시에 중복 발견 및 가비지 콜렉션을 간단하게 한다. 몇몇 실시예에서, 단일 첨부물의 분실에 의해 야기될 수 있는 피해의 양을 제한하기 위해 동일한 복제물의 다수의 사본이 상이한 디스크 그룹에 저장되게 할 수 있다.
이메일 부분/첨부물의 식별 및 관리
일 실시예에서, 다양한 이메일 부분을 식별하는 모듈은 이들 부분(예를 들어, 첨부물 등)을 중복제거 대상으로 검출 및/또는 식별하는 것이 바람직할 수 있다. 식별 모듈의 다른 측면에서, 이 모듈은 또한 동일한 또는 다른 개인에 대해 이미 분할(shred)되었을 수 있는 첨부물들을 파악 및/또는 성공적으로 식별할 수 있고 또한 프라이버시 또는 데이터 손상 걱정없이 동일한 분할된 첨부물에 대한 다수의 계정 포인트를 가질 수 있다. 예를 들어, 첨부물들 간에 고유성을 부여하기 위해 암호 해시가 사용될 수 있다.
또한, 중복제거되는 첨부물이 디스크 상에 이미 존재하는 경우, 첨부물을 더 이상 디스크에 기록할 필요는 없지만, 시스템은 단순히 참조카운트(refcount)를 증가시키고, 그것을 재기록하지 않음으로써 디스크 공간, IO 및 네트워크 대역폭을 절약할 수 있다. 모듈이 블랍의 라이프 사이클에 주의를 기울이고 추적하는 것이 바람직할 수 있다. 보다 구체적으로, 모듈은 분할된 첨부물이 예를 들어 그를 삭제하려할 때 취할 수 있는 다양한 상태를 통해 블랍을 추적할 수 있고, 그것에 대한 참조를 감소/증가시킬 수 있거나, 또는 그것을 대체할 수 있다. 블랍이 손실 및/또는 손상된 경우, 다른 소스 머신/디스크로부터의 자동화된 재-복제가 바람직할 수 있다. 또한, 예를 들어 자동으로, 손실된 메타데이터를 복원하고 저장소를 다시 일관성 있게 하는 것과; (본 명세서에서 설명되어 있는 바와 같이) 참조카운트를 증가시킬 첨부물의 우선순위화; 및 참조들이 인기있는 경우 핫 스팟을 줄이기 위한 스필 오버 메카니즘(spill over mechanism)과 같은 좀 더 많은 기술들이 요구될 수 있다.
블랍을 포함할 수 있는 첨부물 및 다른 객체의 식별을 위해, 몇몇 실시예는 이 식별을 MIME 부분들의 경계에서 행할 수 있다. 이 실시예에서, 시스템에 의해 사용/인식되는 복수의 메시지 표현들이 있을 수 있다. 즉,
(1) "문자 그대로의 MIME": 이것은 SMTP를 통해 수신되었을 때의 바로 그 MIME 메시지일 수 있다. 첨부물은 베이스64 또는 바이너리 인코딩된 스트림으로서 포함될 수 있다.
(2) "압축된 MIME" 또는 "V1": 이것은 Xpress를 통해 압축된 문자 그대로 MIME 포맷일 수 있다.
(3) "AttachStore" 메시지 포맷: 이것은 추출된 첨부물을 가지며 이들을 파일의 끝에 별도로 배치한 컨테이너일 수 있다.
일 실시예에서, "AttachStore" 포맷을 개선하여 디스크 상에서 별개의 파일로서 저장되는 블랍에 대한 포인터를 지원하는 것이 바람직할 수 있다. 이러한 실시예에서, 아래와 같이 AttachStore에서 변화를 행하는 것이 가능할 수 있다.
(1) 블랍Id 및 해시는 ATTACHMENT_LIST_NODE에 저장될 수 있다.
(2) 완전한 파일 CRC는 CRC 검증을 간단히 하기 위해 파일의 끝에 저장될 수 있다.
또한, 블랍은 msg, index, ptf, blob(해시의 첫 번째 2개의 문자; 첨부물 해시)와 같이 메시지가 저장될 수 있는 위치에 평행한, 파일 시스템 상의 별개의 디렉토리 구조에 저장될 수 있다.
일 실시예에서, 블랍 파일들을 하나의 큰 디렉토리로서 저장하지 않는 것이 바람직할 수 있는데, 그 이유는 그것이 많은 수의 엔트리에 도달하면 심하게 조각난 디렉토리 파일을 야기할 수 있기 때문이다. 따라서, 일 실시예에서, 해시의 첫번째 2개의 문자를 디렉토리 이름으로서 사용하고 그런 다음 디렉토리 당 파일의 개수를 원하는 개수(예를 들어, 수천 개)로 제한하는 것이 바람직할 수 있다.
또한, 이 실시예는 머신/db 레벨에서 중복제거를 구현할 수 있다. 이 접근방식은 보다 큰 규모(예를 들어, 머신 또는 심지어 전체 데이터 센터(DC))에서 직접 적용될 수 있다. 손상된 것으로 발견된 개개의 중복제거된 블랍은 로컬 내에 또는 심지어 원격 DC 내에 존재하는 다른 사본으로부터 복원될 수 있다. 치명적인 데이터 장애 이후 복원을 위한 예외 처리가 행해질 수 있다.
하나의 상태도 실시예
이들의 수명 동안, 블랍들은 이들이 생성, 손상, 치유 및 삭제됨에 따라 다양한 상태로 천이하는 경향이 있을 것이다. 이러한 측면은 블랍의 라이프 사이클을 설명하는 상태 천이 접근방식을 이용하는 하나의 실시예를 야기할 수 있다. 상태들은 어떤 API가 블랍에 적용(또는 다시 사용)될 수 있고 다양한 작업들이 서로 방해하지 않는 것을 보장하는데 사용될 수 있는지를 결정할 수 있다. 이와 달리, 또 다른 실시예는 블랍을 관리하는데 참조 카운트에 의존할 수 있지만, 상태를 사용하는 것이 바람직할 수 있는데, 그 이유는 0의 참조 카운트에 대해 상이한 해석들이 있을 수 있고 이들은 다르게 취급될 수 있기 때문이다.
또 다른 실시예에서, 시스템은 예를 들어 도 2에 도시되어 있는 바와 같이 상태도(200)를 만들 수 있다. 시스템(200)은 본 명세서에서 설명되어 있는 바와 같이, 복수의 상태, 즉 예를 들어 모두손상(AllCorrupt) 상태(202), 잠정적인(Tentative) 상태(204), 삭제 상태(206), 복원 상태(208), 오펀(Orphan) 상태(210), 부분손상(SomeCorrupt) 상태(212), 양호한(Good) 상태(214) 및 Tbl-블랍 행 삭제 상태(216)를 포함할 수 있다. 언급한 바와 같이, 시스템은 블랍에 대한 포인터들의 개수에 대한 카운터(즉, "참조카운트(Refcount)")를 (아마도 메타데이터 저장소에) 유지할 수 있다. 모든 블랍이 "손상됨"으로 지정된 경우, 상태 데이터는 두 개의 상태, 즉 (1) 참조카운트=0인 경우, 잠정적인 상태, 또는 (2) 참조카운트>0인 경우, 모두손상 상태 중 하나를 반영할 수 있다. 시스템은 저장 및/또는 액세스에 대한 요청을 잠정적인 상태(204)로 전송할 수 있다.
필요에 따라, 시스템은 잠정적인 상태(204)에서 블랍을 생성할 수 있는데, 이 경우 블랍은 저장하도록 (예를 들어, "HBM") "커밋"되고 시스템은 양호한 상태(214)로 이전시킬 수 있다. 일 실시예에서, 블랍이 모든 복제물에 물리적으로 기록된 이후에만 저장하도록 블랍을 커밋하는 것이 바람직할 수 있다. 이하에서는 이용된 다양한 상태에 대한 설명이 주어진다.
양호한 상태
이것은 블랍에 대한 정상 상태이다. 그것은 새로운 메시지의 전달 동안 참조추가될 수 있고(AddRef'd) 가비지로 수집되지 않을 것이다. 참조추가(AddRef)는 블랍이 재사용될 수 있음을 나타낼 수 있다. 블랍이 이미 전달되었고 이 상태로 있는 경우, 블랍은 "이미 존재하고", 그에 대한 추가의 참조는 (그것을 다시 저장하지 않고) 그의 참조 카운트의 증가와 블랍의 적절한 재사용을 위한 포인터의 업데이터를 야기할 수 있다.
양호한 블랍은 참조의 수에 대해 소프트 제한(soft limit)을 가질 수 있는데, 이는 블랍의 추가의 사본이 생성되게 할 수 있다.
오펀 상태
이것은 능동적인 참조를 더 이상을 가지지 않을 수 있고 메시지 제거자에 의해 제거될 후보일 수 있는 블랍이다. 그것이 실제로 삭제 상태에 놓일 때까지는, 참조추가될 수 있고 양호한 상태로 다시 돌아갈 수 있다.
잠정적인 상태와 마찬가지로, 원하는 기간 이후, 메시지 제거자는 이들 블랍을 삭제할 것이다.
복원 상태
데이터베이스 손상 또는 최근 트랜잭션 로그의 손실의 경우 디스크로부터 "tbl_blob"을 재구성하는 것이 바람직할 수 있다. 일 실시예에서, tbl_blob는 각 블랍의 위치 및 상태에 대한 정보를 보유하는 데이터 구조일 수 있다. 이 테이블 및/또는 데이터 구조가 손실된 경우, 데이터 복원에 대해 당업계에 알려져 있는 임의의 방식으로 데이터를 복원하는 것이 바람직할 수 있다. 이를 용이하게 하기 위해, 오펀과 유사한 "복원"이라 불리는 상태가 있다. 복원된 블랍은 아직 검증되지 않았기 때문에, 시스템은 이들을 전달을 통해 또는 복원된 메시지를 위해 재사용하기 전에 복원된 블랍을 모니터링해야 한다. 임의의 참조추가에 대해, 복원된 상태에서 블랍이 발견된 경우, 메일 전달은 모든 사본이 손상되지 않도록 보장하기 위해 블랍을 재기록할 수 있다.
데이터베이스 복원은 블랍을 검증하지 않고 일부손상 상태에서 재사용하거나, 또는 무결성을 검증하고 그것을 양호한 것으로 커밋하는 옵션을 가질 수 있다. 몇몇 경우, 데이터베이스 복원은 예를 들어 공유가 되지 않는 경우 블랍의 모든 사본의 무결성을 검증하지 못할 수 있다. 복원이 완결된 경우, 블랍을 먼저 검증/재기록하지 않고 블랍을 재사용하는 것은 바람지하지 않을 수 있기 때문에, 임의의 나머지 블랍은 잠정적인 상태로 이동될 수 있다. 가비지 콜렉션은 복원된 블랍에 대해서는 수행되지 않을 수 있다. 완료되었으면 데이터베이스 복원 프로세스가 삭제하도록(to clean up) 책임이 지워질 수 있다. 참조추가는 유효성을 검증한 이후에만 허락된다.
잠정적인 상태
"잠정적인" 상태는 새로운 블랍을 디스크에 기록하는 프로세스에 의해 사용될 수 있다. 블랍-기록은 네트워크 에러, 전이 에러 등으로 인해 실패할 수 있기 때문에, 블랍을 남겨두고 및/또는 결코 사용한 적이 없는 경우, 이들 블랍이 소거될 수 있도록 이들 블랍이 기록된 위치를 기억하는 것이 바람직할 수 있다. 안전을 위해, 블랍은 모든 사본이 성공적으로 기록된 경우 중복제거되는 것이 적합할 수 있다. 이들 경우, 완전히 중복되는 잠정적인 블랍이 기록되지 않은 경우, 메시지를 완전한 포맷으로 기록하는 것으로 되돌아갈 수 있다. 호출자는 먼저 블랍을 잠정적인 상태로 생성하고, 그런 다음 파일을 모든 공유자에 기록하기 위한 토레스를 호출하고, 그런 다음 CommitHeaderBolbMapping(Commit_HBM)을 통해 또는 상태를 오펀 상태로 설정함으로써 블랍을 전이시킬 수 있다. 일 실시예에서, Commit_HBM은 메타데이터 저장소 내의 블랍 상태를 잠정적인 상태에서 적절한 새로운 상태로 이동시키는 내부 함수 호출일 수 있다(이 경우, 블랍은 사용 및 재사용될 준비가 되어 있을 수 있다). 또한, Commit_HBM은 블랍에 대한 참조카운트를 증가시킬 수 있는데, 예를 들어 잠정적인 상태의 블랍에 대한 Commit_HBM 호출은 그의 상태를 변경시킬 뿐만 아니라, 참조카운트를 1로 증가시킬 수 있다.
블랍이 이미 잠정적인 상태에 있는 경우, 또 다른 블랍이 동시에 전달되는 경우 경쟁 상황이 있을 가능성이 있다. 이 상황은 블랍을 기록하는 것이 결코 기존 데이터를 파괴하는 일이 없도록 보장하게 될 토레스에 의해 다루어진다. (완전한 설명에 대해서는 토레스에 대한 단락을 참조한다)
삭제 상태
메시지 제거자가 디스크 상의 파일을 실제로 삭제하기로 결정하면, 그 삭제 동작을 시작하기 전에 블랍을 "삭제"로 표시할 것이다. 이것은 아무도 반 삭제된(half-deleted) 블랍을 사용하려 시도하지 못하게 보장할 것이다. 모든 사본이 디스크로부터 삭제되었다는 확인이 수신되면, tbl_blob으로부터 행이 제거된다. 에러가 발생하면, 삭제가 확인될 때까지 이 상태로 머무르는 것이 바람직할 수 있다(그 이유는 파일이 더 이상 존재하지 않거나 삭제되기 때문이다).
블랍이 삭제 상태에 있고 호출자가 동일한 해시를 갖는 새로운 블랍을 생성하려 시도하는 경우, 그 새로운 블랍에 대해 다른 데이터베이스 그룹이 선택될 것이다. 참조추가는 옳지 않다(AddRef -- NOT OK).
일부손상 상태
블랍의 임의의 사본이 손상되거나 판독불가능한 것으로 검출되는 경우, 시스템은 블랍을 "일부손상"으로 표시할 수 있거나, 또는 일부 다른 것은 "손상" 상태로 명명된다. 시스템은 어떤 복제물이 손상되었는지에 대한 정보를 저장하지 않는 것이 바람직할 수 있다. 이것은 손상 블랍을 검출하고 및/또는 손상 블랍을 복구하는 모듈에 대한 신호이다("TurboFSS"로도 알려져 있음). 이 모듈은 손상 블랍에 대해 주기적으로 질의할 수 있다. 이 모듈은 이 블랍을 임의의 새로운 전달자에게 이용가능하지 않게 하는 것 외에, 복구를 시도할 수 있다. 시스템은 블랍의 정확한 상태를 알지 못할 수 있기 때문에(뭔가 잘못되었다는 것만을 알고 있기 때문에), 시스템은 중복제거에 대해 블랍을 사용하지 않을 수 있다. 이 출원의 목적을 위해, TurboFSS는 파일 및 블랍이 시스템 내의 다수의 중복 사본 사이에 동기화가 유지되도록 하는 모듈을 참조한다.
TurboFSSsms 또한 복구를 너무 여러번 시도하지 않도록 복구를 수행하는 경우 블랍의 마지막 기록 시간을 고려할 수 있다. 블랍이 참조카운트 0에 도달하는 경우, 그것은 잠정적인 상태로 이동할 수 있는데, 그 이유는 블랍이 재사용되기 전에 블랍을 재기록하는 것이 바람직할 수 있기 때문이다. 일부손상 내의 기존 블랍과 동일한 해시를 갖는 새로운 블랍이 도착하는 경우, 시스템은 그것을 새로운 전달물로 겹쳐쓸 수 있다. 모든 기록이 성공적인 경우, 블랍은 복구된 것으로 표시될 수 있다. 전달 또는 moveuser 동안 공유가 이루어지지 않았기 때문에 부분적으로 중복되는 블랍들은 일부손상 상태로 되지 않는데, 그 이유는 시스템은 모든 블랍들이 완전히 중복되게 기록될 수 없는 경우 중복제거할 수 없기 때문이다. 참조추가는 옳지 않다(AddRef NOT OK).
모두손상 상태
이 상태는 주어진 블랍에 대해 데이터 손실이 발생하였고 모든 복구 시도가 실패하였음을 나타낸다. 복구시 추가적인 시도는 이루어지지 않을 수 있다. 블랍은 수동으로 복구되거나 또는 모든 참조 카운트가 0에 도달하고 이들이 삭제될 때까지 이 상태로 유지될 수 있다.
MoveUser는 (누락 블랍을 포함하여) 전체 계정을 이동시킬 수 있기 때문에, 모두손상 블랍은 블랍이 소스 시스템에서 완전히 누락된 경우 MoveUser에 의해 목적지 시스템에서 생성될 수 있다. 블랍이 이 상태에서 0의 참조카운트에 도달하는 경우, 그것은 잠정적인 상태로 이동할 수 있는데, 그 이유는 블랍을 재사용하기 전에 검증 및/또는 재기록하는 것이 바람직할 수 있기 때문이다. 본 출원의 목적을 위해, MoveUser는 파일 시스템 또는 이메일 시스템 등과의 최적의 균형을 위해 인트라 및 인터데이터 센터 주위에서 이메일 계정을 이동시키는 모듈이다.
일 실시예에서, 이 상태의 블랍들은 일부 사용자 및/또는 개체가 이들을 참조하는 동안 데이터베이스에서 유지될 수 있다. 몇몇 실시예에서, 이러한 블랍의 복구를 위한 복수의 기법이 있을 수 있는데, 이 기법은 다음을 포함할 수 있다.
(1) 동일한 해시를 갖는 새로운 블랍이 전달되는 경우 메일 전달 또는 MoveUser는 기존의 블랍을 복구할 수 있다.
(2) 첨부물이 존재하는지를 알아보기 위해 다른 서버 또는 데이터베이스 그룹을 조사한다.
(3) 액티브싱크(ActiveSync)를 사용하는 사용자의 경우, 시스템은 그로부터 첨부물을 추출할 수 있다.
모두손상 상태의 기존의 블랍과 동일한 해시를 갖는 새로운 블랍이 도달하는 경우, 일 실시예는 그것을 새로운 전달물로 덮어쓰기 할 수 있는데, 그 이유는 영구 저장소가 기록과 멱등이도록 보장되기 때문이다. 모든 기록이 성공적인 경우, 블랍은 양호한 것으로 표시될 것이며 참조추가될 것이다. 참조추가는 옳지 않다(Addref NOT OK).
참조 카운팅
블랍들은 사용자들 간에 공유될 수 있기 때문에, 블랍이 제로(0) 참조에 도달하는 경우 시스템이 블랍을 소거할 수 있도록 블랍이 갖는 참조의 수를 추적하는 것이 바람직할 수 있다. 이와 달리, 시스템은 계정의 원하는 임계 개수에 영향을 미칠 수 있는 데이터 손실을 줄이기는 것이 바람직한 경우 블랍이 너무 많은 참조를 갖게 되는 것을 잠재적으로 방지할 수 있다.
블랍의 상태는 또한 참조 카운트에 영향을 미칠 수 있는데, 그 이유는 소정의 상태는 참조 카운트가 0이기를 바라고 다른 상태는 참조 카운트가 0보다 크기를 바랄 수 있기 때문이다. 예를 들어, 이하의 표는 하나의 실시예의 구현을 반영한다.
Figure pct00001
참조 카운트는 행이 tbl_HeaderBolbMapping(즉, tbl_HBM)에 추가되는 경우 증가되고 행이 제거되는 경우 감소될 수 있다. 메시지가 tbl_deletedmessage로부터 제거되는 경우 행은 tbl_HeaderBlobMapping으로부터 제거될 수 있다. 시스템이 tbl_header로부터의 삭제시 제거하지 않는 것이 바람직할 수 있는데, 그 이유는 이것으로 인해 블랍들의 메시지가 메시지 제거자에 의해 제거되기 전에 블랍들이 가비지를 수집하게 할 수 있기 때문이다. 일 실시예에서, 시스템이 소정의 이유로 메시지 제거자를 되돌리기를 원하는 경우, 첨부물이 여전히 판독될 수 있도록 보장하는 것이 바람직할 수 있다.
참조 카운트가 0에 도달하는 경우, 트리거는 아래와 같은 방식으로 tbl_blob 표에서의 상태를 변경할 수 있다.
Figure pct00002
부분적으로 또는 완전히 손상된 블랍들은 시스템이 이들의 복구를 시도하지 않을 수 있도록 잠정적인 상태로 전이할 수 있다.
일 실시예에서, 시스템은 블랍의 사본의 손실이 가질 수 있는 손해의 양을 제한하기 위해 참조 카운트에 대해 소프트 제한을 집행할 수 있다. 이 제한은 구성 파일로부터 판독될 수 있고 CreatBlob이 호출되는 경우 집행될 수 있다. 블랍이 구성된 제한을 너머선다는 것을 시스템이 알아채린 경우, 시스템은 기존의 블랍을 리턴시키는 보다는 새로운 위치의 새로운 잠정적인 블랍을 리턴시킬 수 있다. 본 출원의 목적을 위해, CreatBlob은 새로운 블랍 위치를 생성하거나 기존의 위치를 재사용할 수 있는 함수 호출이다.
몇몇 실시예에서, 제한은 대수적으로 집행될 수 있고, 그에 따라 추가의 사본은 블랍의 수에 제한값을 곱할 수 있다. 예를 들어, 제한이 블랍 당 100개의 사본인 경우, 두 개의 사본은 100*100=10000개의 사본을 허용할 수 있고 세 개의 사본은 1000^3개의 사본을 허용할 수 있다.
아래의 표는 다수의 상이한 조건에서 가능한 블랍 복구 상태에 대한 일 실시예이다.
Figure pct00003
Figure pct00004

하나의 이메일 시스템 실시예
도 3은 본 발명의 원리에 따라 구성된 하나의 이메일 시스템 실시예를 나타낸다. 특히, 시스템(300)은 중복제거 동작을 위한 이메일 전달 흐름도를 나타낸다. 이메일 시스템(300)은 들어오는 이메일들 및/또는 이들의 첨부물을 수신할 수 있고, 메시지 분석(Parse Message)(302)에서 이메일의 다양한 부분을 분석할 수 있다. 메시지 분석(302)은 다양한 부분에 대한 해시를 계산할 수 있다. 해시 결과는 메시지 및/또는 첨부물을 중복제거할지 여부를 결정하는데 도움을 주기 위해 시스템에 의해 사용될 수 있다.
시스템은 각 블랍(304)을 생성하고 도시되어 있는 바와 같이 "양호" 상태에서 계속할 것을 결정할 수 있다. 블랍의 상태가 "기록"을 원하는 경우, 참조번호(306)에서 블랍은 영구 저장소에 기록될 수 있다. 시스템이 블랍에 대해 완료된 경우, 참조번호(308)에서 시스템은 CommitHBM을 이용할 수 있고 이후 참조번호(310)에서 시스템은 "컴팩트" 메시지를 기록할 수 있다. 그러나, 시스템이 "에러"를 검출하는 경우, 참조번호(312)에서 시스템은 "전체" 메시지를 기록할 수 있다.
전술한 내용은 본 발명의 예시를 포함한다. 물론, 청구대상을 설명하기 위해 컴포넌트들 또는 방법들의 모든 인지가능 조합을 설명할 수는 없지만, 당업자라면 본 발명의 다수의 다른 조합 및 치환이 가능함을 알 수 있을 것이다. 따라서, 청구대상은 첨부한 청구항의 사상 및 범주 내에서 모든 변형, 수정 및 변경을 포함하려 한다.
특히 전술한 컴포넌트, 장치, 회로, 시스템 등에 의해 수행되는 다양한 기능과 관련하여, 이러한 컴포넌트를 설명하는데 사용되는 ("수단"에 대한 참조를 포함하는) 용어는 달리 언급하지 않는다면, 비록 개시되어 있는 구조와 구조적으로 등가이지 않을지라도, 본 명세서에서 예시한 청구대상의 예시적인 측면에서 기능을 수행하는 설명된 컴포넌트의 특정 기능을 수행하는 임의의 컴포넌트에 대응하려 한다. 이와 관련하여, 본 발명은 청구대상의 다양한 방법의 동작 및/또는 이벤트를 수행하는 컴퓨터 실행가능 명령어들을 갖는 컴퓨터 판독가능 매체 및 시스템을 포함함을 알 수 있을 것이다.
또한, 본 발명의 특정 특징은 몇몇 구현 중 오직 하나와 관련하여 기술되었을지라도, 이러한 특징은 임의의 주어진 또는 특정 애플리케이션에 대해 요구되는 및 유리한 대로 다른 구현의 하나 이상의 다른 특징과 결합될 수 있다. 또한, "포함한다(include)" 및 "포함하는"라는 용어 및 이들의 변형이 상세한 설명 또는 청구항에 사용되는 경우, 이들 용어는 "포함하는(comprising)"과 유사하게 포함을 나타내려 한다.

Claims (10)

  1. 파일 시스템에서 데이터를 중복제거(de-duplicating)하는 방법으로서,
    상기 파일 시스템은 하나 이상의 파일을 포함하고, 각각의 상기 파일은 데이터 집합을 포함하고 상기 데이터 집합은 둘 이상의 사용자에 의해 공유될 수 있고, 상기 방법은,
    파일 시스템 내에 저장될 파일을 수신하는 단계와,
    상기 파일 내의 데이터 집합이 상기 파일 시스템에 이전에 저장되었는지 여부를 확인하는 단계와,
    상기 데이터 집합이 상기 파일 시스템 내에 저장되어 있는 경우, 저장된 상기 데이터 집합의 상태를 확인하는 단계와,
    상기 저장된 데이터 집합의 상태가 상기 파일의 사본을 공유하기에 적합한 경우, 상기 데이터 집합을 공유하기 위한 명령이 있을 시 상기 파일에 대한 참조를 제공하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 파일 시스템은 이메일 시스템이고, 상기 파일은 이메일을 포함하고 상기 데이터 집합은 상기 이메일의 첨부물을 포함하고,
    상기 파일 시스템 내에 저장될 파일을 수신하는 단계는 이메일을 수신하는 단계를 더 포함하되, 상기 이메일은 첨부물을 더 포함하는
    방법.
  3. 제2항에 있어서,
    상기 파일 시스템 내에 저장될 파일을 수신하는 단계는 상기 이메일에 대한 메타데이터를 저장하는 단계를 더 포함하고, 상기 메타데이터는 상기 이메일에 관한 메타데이터, 상기 이메일의 첨부물에 대한 메타데이터, 상기 이메일에 대한 상태 메타데이터, 상기 첨부물에 대한 상태 메타데이터, 상기 첨부물을 어떻게 공유할지에 대한 메타데이터 및 상기 첨부물의 중복에 관한 메타데이터를 포함하는 그룹 중 하나를 포함하는
    방법.
  4. 제1항에 있어서,
    상기 저장된 데이터 집합의 상태를 확인하는 단계는 첨부물과 연관된 상태를 할당하는 단계를 더 포함하는 방법.
  5. 제4항에 있어서,
    상기 첨부물과 연관된 상기 상태는 양호한(Good) 상태, 일부 손상(SomeCorrupt) 상태, 모두 손상(Allcorrupt) 상태, 잠정적인(Tentative) 상태, 삭제(Deleting) 상태, 오펀(Orphan) 상태 및 복원된(Recovered) 상태를 포함하는 그룹 중 하나를 포함하는 방법.
  6. 제1항에 있어서,
    상기 저장된 데이터 집합의 상태가 상기 파일의 사본을 공유하기에 적합한 경우, 상기 데이터 집합을 공유하기 위한 명령이 있을 시 상기 파일에 대한 참조를 제공하는 단계는,
    상기 저장된 데이터 집합에 대한 참조 카운트를 증가시키는 단계와,
    상기 저장된 데이터 집합에 대한 포인터 참조를 타겟 엔티티로 전송하는 단계를 더 포함하는 방법.
  7. 제1항에 있어서,
    데이터 집합이 손상되었는지를 검출하는 단계와,
    손상된 경우, 상기 데이터 집합과 연관된 상기 상태를 양호한 상태에서 손상된 상태로 천이시키는 단계와,
    손상된 상기 데이터 집합을 복구하는 단계와,
    상기 데이터 집합과 연관된 상기 상태를 손상된 상태에서 양호한 상태로 천이시키는 단계
    를 더 포함하는 방법.
  8. 이메일 시스템에서 데이터를 중복제거하기 위한 시스템으로서,
    상기 이메일 시스템은,
    이메일 클라이언트들의 집합과 통신하는 이메일 서버와,
    이메일 및 연관된 첨부물을 저장하는 데이터베이스- 상기 데이터베이스는 상기 이메일 메시지, 연관된 첨부물, 상기 이메일 메시지와 관련된 메타데이터 및 상기 연관된 첨부물과 관련된 메타데이터를 포함하는 그룹 중 적어도 하나를 저장함 -와,
    상기 이메일 클라이언트 간의 첨부물의 공유를 관리하는 모듈
    을 포함하되,
    상기 이메일 클라이언트 간의 첨부물의 공유를 관리하는 모듈은 상기 첨부물의 상태를 검출할 수 있고 상기 첨부물의 상태에 따라 상기 첨부물에 대한 참조 포인터를 공유할 수 있는
    시스템.
  9. 제8항에 있어서,
    상기 첨부물의 공유를 관리하는 모듈은 첨부물이 손상되어 있는지를 검출하는 모듈을 더 포함하는 시스템.
  10. 제9항에 있어서,
    상기 첨부물의 공유를 관리하는 모듈은 첨부물의 상태를 유지하는 모듈을 더 포함하는 시스템.
KR20157003876A 2012-08-13 2013-08-06 메시지 전달 시 첨부물을 중복제거하고 첨부물을 자동으로 복구하는 기법 KR20150043331A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/572,900 US9262429B2 (en) 2012-08-13 2012-08-13 De-duplicating attachments on message delivery and automated repair of attachments
US13/572,900 2012-08-13
PCT/US2013/053678 WO2014028261A1 (en) 2012-08-13 2013-08-06 De-duplicating attachments on message delivery and automated repair of attachments

Publications (1)

Publication Number Publication Date
KR20150043331A true KR20150043331A (ko) 2015-04-22

Family

ID=49083737

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20157003876A KR20150043331A (ko) 2012-08-13 2013-08-06 메시지 전달 시 첨부물을 중복제거하고 첨부물을 자동으로 복구하는 기법

Country Status (6)

Country Link
US (2) US9262429B2 (ko)
EP (1) EP2883163A1 (ko)
JP (1) JP6232427B2 (ko)
KR (1) KR20150043331A (ko)
CN (1) CN104584006B (ko)
WO (1) WO2014028261A1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104994011B (zh) * 2015-07-16 2018-09-14 魅族科技(中国)有限公司 一种邮件保存方法及终端
CN104994010B (zh) * 2015-07-16 2018-09-14 魅族科技(中国)有限公司 一种邮件展示方法及终端
CN105007216A (zh) * 2015-07-16 2015-10-28 魅族科技(中国)有限公司 一种邮件回复处理方法及装置
CN105024921B (zh) * 2015-07-16 2018-12-07 魅族科技(中国)有限公司 一种邮件保存方法及终端
CN104994012A (zh) * 2015-07-16 2015-10-21 魅族科技(中国)有限公司 一种邮件发送方法及装置
US10250543B2 (en) 2015-10-23 2019-04-02 International Business Machines Corporation Deduplication of e-mail content by an e-mail server
US10104021B2 (en) * 2015-11-18 2018-10-16 Oracle International Corporation Electronic mail data modeling for efficient indexing
JP7057541B2 (ja) * 2017-03-31 2022-04-20 日本電気株式会社 ネットワークストレージシステム
US10691643B2 (en) * 2017-11-20 2020-06-23 International Business Machines Corporation Deduplication for files in cloud computing storage and communication tools
US10721198B1 (en) * 2019-04-15 2020-07-21 Microsoft Technology Licensing, Llc Reducing avoidable transmission of an attachment to a message by comparing the fingerprint of a received attachment to that of a previously received attachment and indicating to the transmitting user when a match occurs that the attachment does not need to be transmitted
US10721193B1 (en) * 2019-04-15 2020-07-21 Microsoft Technology Licensing, Llc Reducing avoidable transmission of an attachment to a message by comparing the fingerprint of the attachment to be sent to that of an attachment that was previously sent or received by the user and indicating to the user when a match occurs that the attachment is redundant
US20200329000A1 (en) * 2019-04-15 2020-10-15 Microsoft Technology Licensing, Llc Reducing avoidable transmissions of electronic message content
US20200328996A1 (en) * 2019-04-15 2020-10-15 Microsoft Technology Licensing, Llc Reducing avoidable transmissions of electronic message content
US11237893B2 (en) 2019-06-26 2022-02-01 Western Digital Technologies, Inc. Use of error correction-based metric for identifying poorly performing data storage devices
US10969969B2 (en) 2019-06-26 2021-04-06 Western Digital Technologies, Inc. Use of recovery behavior for prognosticating and in-situ repair of data storage devices
US11567921B2 (en) * 2021-03-31 2023-01-31 Microsoft Technology Licensing, Llc Rowgroup consolidation with global delta accumulation and versioning in distributed systems

Family Cites Families (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6732111B2 (en) * 1998-03-03 2004-05-04 Siebel Systems, Inc. Method, apparatus, system, and program product for attaching files and other objects to a partially replicated database
US6735770B1 (en) * 1998-04-27 2004-05-11 Sun Microsystems, Inc. Method and apparatus for high performance access to data in a message store
US6636853B1 (en) * 1999-08-30 2003-10-21 Morphism, Llc Method and apparatus for representing and navigating search results
GB2358263A (en) * 2000-01-13 2001-07-18 Applied Psychology Res Ltd Generating user profile data
DE10064627B4 (de) 2000-02-02 2004-02-12 International Business Machines Corp. Verfahren und System für die Verarbeitung von E-Mail-Nachrichten in einem Datenübertragungssystem
US6625595B1 (en) * 2000-07-05 2003-09-23 Bellsouth Intellectual Property Corporation Method and system for selectively presenting database results in an information retrieval system
US7003551B2 (en) 2000-11-30 2006-02-21 Bellsouth Intellectual Property Corp. Method and apparatus for minimizing storage of common attachment files in an e-mail communications server
US20020152224A1 (en) * 2001-03-06 2002-10-17 Cliff Roth System and method for generating a recommendation guide for use with an EPG
US20030004922A1 (en) * 2001-06-27 2003-01-02 Ontrack Data International, Inc. System and method for data management
US7870089B1 (en) * 2001-12-03 2011-01-11 Aol Inc. Reducing duplication of embedded resources on a network
US7496604B2 (en) * 2001-12-03 2009-02-24 Aol Llc Reducing duplication of files on a network
JP2003223404A (ja) * 2002-01-29 2003-08-08 Toshiba Corp 電子メールシステム
US7788699B2 (en) * 2002-03-06 2010-08-31 Vir2Us, Inc. Computer and method for safe usage of documents, email attachments and other content that may contain virus, spy-ware, or malicious code
US7305430B2 (en) 2002-08-01 2007-12-04 International Business Machines Corporation Reducing data storage requirements on mail servers
US7251680B2 (en) * 2003-10-31 2007-07-31 Veritas Operating Corporation Single instance backup of email message attachments
DE502004001164D1 (de) 2004-06-02 2006-09-21 Ixos Software Ag Verfahren und Vorrichtung zum Verwalten von elektronischen Nachrichten
US8140786B2 (en) * 2006-12-04 2012-03-20 Commvault Systems, Inc. Systems and methods for creating copies of data, such as archive copies
US8233594B2 (en) * 2005-02-07 2012-07-31 Avaya Inc. Caching message information in an integrated communication system
JP2006268329A (ja) * 2005-03-23 2006-10-05 Canon Inc 電子メイルシステム及び電子メイル処理方法
US20090222450A1 (en) * 2005-05-16 2009-09-03 Ron Zigelman System and a method for transferring email file attachments over a telecommunication network using a peer-to-peer connection
US8732087B2 (en) * 2005-07-01 2014-05-20 The Invention Science Fund I, Llc Authorization for media content alteration
US20080086640A1 (en) * 2005-07-28 2008-04-10 Jmj Software, Llc Systems, methods and apparatus of an email client
US7472242B1 (en) 2006-02-14 2008-12-30 Network Appliance, Inc. Eliminating duplicate blocks during backup writes
ATE438247T1 (de) * 2006-06-29 2009-08-15 Ibm Verfahren und system zur e-mail-abwicklung mit geringer redundanz
US20080052284A1 (en) * 2006-08-05 2008-02-28 Terry Stokes System and Method for the Capture and Archival of Electronic Communications
US7831676B1 (en) * 2007-02-21 2010-11-09 Nagar Ajay R Method and system for handling email
US8239479B2 (en) * 2007-06-22 2012-08-07 Microsoft Corporation Server-assisted and peer-to-peer synchronization
US8209506B2 (en) * 2007-09-05 2012-06-26 Emc Corporation De-duplication in a virtualized storage environment
US20090204636A1 (en) * 2008-02-11 2009-08-13 Microsoft Corporation Multimodal object de-duplication
US8650228B2 (en) * 2008-04-14 2014-02-11 Roderick B. Wideman Methods and systems for space management in data de-duplication
US7930306B2 (en) * 2008-04-30 2011-04-19 Msc Intellectual Properties B.V. System and method for near and exact de-duplication of documents
US7996371B1 (en) * 2008-06-10 2011-08-09 Netapp, Inc. Combining context-aware and context-independent data deduplication for optimal space savings
US8631079B2 (en) * 2008-06-20 2014-01-14 Microsoft Corporation Displaying a list of file attachments associated with a message thread
US8484162B2 (en) * 2008-06-24 2013-07-09 Commvault Systems, Inc. De-duplication systems and methods for application-specific data
US8219524B2 (en) * 2008-06-24 2012-07-10 Commvault Systems, Inc. Application-aware and remote single instance data management
US7913114B2 (en) 2008-07-31 2011-03-22 Quantum Corporation Repair of a corrupt data segment used by a de-duplication engine
US9020993B2 (en) * 2008-12-16 2015-04-28 Sandisk Il Ltd. Download management of discardable files
WO2010080591A2 (en) 2008-12-18 2010-07-15 Sumooh Inc. Methods and apparatus for content-aware data partitioning and data de-duplication
US8459245B1 (en) * 2009-01-09 2013-06-11 Budster Enterprises, LLC Induction drive mechanism for a paintball loader
US8645334B2 (en) * 2009-02-27 2014-02-04 Andrew LEPPARD Minimize damage caused by corruption of de-duplicated data
US8346736B2 (en) * 2009-03-16 2013-01-01 International Business Machines Corporation Apparatus and method to deduplicate data
US8234468B1 (en) * 2009-04-29 2012-07-31 Netapp, Inc. System and method for providing variable length deduplication on a fixed block file system
US20100333116A1 (en) * 2009-06-30 2010-12-30 Anand Prahlad Cloud gateway system for managing data storage to cloud storage sites
US8458144B2 (en) * 2009-10-22 2013-06-04 Oracle America, Inc. Data deduplication method using file system constructs
US8121993B2 (en) * 2009-10-28 2012-02-21 Oracle America, Inc. Data sharing and recovery within a network of untrusted storage devices using data object fingerprinting
US8452932B2 (en) * 2010-01-06 2013-05-28 Storsimple, Inc. System and method for efficiently creating off-site data volume back-ups
US8620939B2 (en) * 2010-01-25 2013-12-31 Sepaton, Inc. System and method for summarizing data
US8560292B2 (en) * 2010-02-09 2013-10-15 Google Inc. Location assignment daemon (LAD) simulation system and method
US8868508B2 (en) * 2010-02-09 2014-10-21 Google Inc. Storage of data in a distributed storage system
US20110218973A1 (en) * 2010-03-02 2011-09-08 Renew Data Corp. System and method for creating a de-duplicated data set and preserving metadata for processing the de-duplicated data set
US8732133B2 (en) * 2010-03-16 2014-05-20 Commvault Systems, Inc. Extensible data deduplication system and method
KR101035302B1 (ko) 2010-10-11 2011-05-19 (주)이스트소프트 클라우드 시스템 및 클라우드 시스템에서 파일 압축 및 전송 방법
JP5650982B2 (ja) * 2010-10-25 2015-01-07 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ファイルの重複を排除する装置及び方法
US9491127B2 (en) * 2010-11-22 2016-11-08 Avaya Inc. Apparatus and method for automatically determining a version of a file
US10162553B2 (en) * 2010-11-24 2018-12-25 Western Digital Technologies, Inc. Methods and systems for object level de-duplication for solid state devices
US8380681B2 (en) * 2010-12-16 2013-02-19 Microsoft Corporation Extensible pipeline for data deduplication
US9110936B2 (en) * 2010-12-28 2015-08-18 Microsoft Technology Licensing, Llc Using index partitioning and reconciliation for data deduplication
US8898240B2 (en) * 2011-08-16 2014-11-25 Roderick B. Wideman Messaging policy controlled email de-duplication

Also Published As

Publication number Publication date
EP2883163A1 (en) 2015-06-17
US10671568B2 (en) 2020-06-02
JP6232427B2 (ja) 2017-11-15
WO2014028261A1 (en) 2014-02-20
US20160140138A1 (en) 2016-05-19
CN104584006B (zh) 2018-04-20
CN104584006A (zh) 2015-04-29
JP2015525936A (ja) 2015-09-07
US20140046911A1 (en) 2014-02-13
US9262429B2 (en) 2016-02-16

Similar Documents

Publication Publication Date Title
US10671568B2 (en) De-duplicating attachments on message delivery and automated repair of attachments
US11256665B2 (en) Systems and methods for using metadata to enhance data identification operations
US10162555B2 (en) Deduplicating snapshots associated with a backup operation
US8250033B1 (en) Replication of a data set using differential snapshots
KR101044849B1 (ko) 자동 데이터베이스 또는 파일 시스템 정비 및 수리를 위한시스템 및 방법
US8260747B2 (en) System, method, and computer program product for allowing access to backup data
US9928248B2 (en) Self-healing by hash-based deduplication
CN104932841A (zh) 一种云存储系统中节约型重复数据删除方法
US11914554B2 (en) Adaptable multi-layered storage for deduplicating electronic messages
US11436102B2 (en) Log-structured formats for managing archived storage of objects
US9817834B1 (en) Techniques for performing an incremental backup
US11481319B2 (en) Using data mirroring across multiple regions to reduce the likelihood of losing objects maintained in cloud object storage
CN109947730B (zh) 元数据恢复方法、装置、分布式文件系统及可读存储介质
US7363445B2 (en) Backup method
CN110858168B (zh) 集群节点故障处理方法、装置及集群节点
CN107402841B (zh) 大规模分布式文件系统数据修复方法及设备
US11645333B1 (en) Garbage collection integrated with physical file verification
CN113485872A (zh) 故障处理方法、装置及分布式存储系统
CN110658989B (zh) 用于备份存储垃圾收集的系统和方法
US20200341856A1 (en) System and method for data retention in a decentralized system
JP2012038004A (ja) 加入者情報バックアップ方法及び加入者情報バックアップ装置

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right