벤티
Venti벤티는 데이터 블록을 영구적으로 저장하는 네트워크 스토리지 시스템이다.데이터의 160비트 SHA-1 해시(Venti by Venti)가 데이터의 주소 역할을 한다.이것은 동일한 주소에 다른 데이터 블록을 찾을 수 없기 때문에 1회 쓰기 정책을 시행한다. 즉, 동일한 데이터의 다중 쓰기 주소가 동일하기 때문에 중복 데이터를 쉽게 식별하고 1회만 데이터 블록을 저장한다.데이터 블록을 제거할 수 없으므로 영구 또는 백업 스토리지에 이상적임.벤티는 일반적으로 파일 시스템에 영구 스냅숏을 제공하는 데 화석(Potal)과 함께 사용된다.
역사
벤티는 션 퀸랜과 션 도워드가 벨 연구소에서 설계하고 구현했다.2002년 플랜9 배포에 등장했다.서버 대부분을 재구성한 Russ Cox가 벤티에 저장할 데이터 구조(파일, 디렉토리, 메타 데이터)를 만들기 위한 라이브러리를 작성해 최적화를 구현하는 등 개발이 지속되고 있다.Venti는 Plan 9 배포판과 User Space의 Plan 9의 일부로서 많은 UNIX 유사 운영체제에서[1] 모두 사용할 수 있다.Venti는 접근을 위해 수반되는 모듈들과 함께 인페르노의 일부로 포함되어 있다.Venti 서버를 직접 구축할 수 있는 Go(이동)여기에는 다양한 종류의 백엔드 스토리지를 사용하는 예가 포함되어 있다.
세부 사항
벤티는 사용자 공간 데몬이다.[2]클라이언트는 TCP를[2] 통해 Venti에 연결하고 간단한 RPC-프로토콜을 사용하여 통신한다.프로토콜의 가장 중요한 메시지는 아래에 열거되어 있다.지정된 주소에서 주소를 삭제하거나 데이터를 수정하라는 메시지가 없다는 점에 유의하십시오.
벤티가 저장한 데이터 블록은 길이가 512바이트 이상이어야 하며 56킬로바이트 미만이어야 한다.따라서 Venti 사용자/클라이언트가 더 큰 데이터 블록을 저장하려면 데이터 구조(Venti에 저장할 수 있음)를 만들어야 한다.예를 들어, 화석은 큰 파일을 저장하기 위해 해시 트리를 사용한다.Venti 자체는 데이터 블록의 내용과 관련이 없다. 그러나 그것은 데이터 블록의 유형을 저장한다.
벤티의 설계는 다음과 같은 결과를 초래한다.
- 쓰기가 영구적이기 때문에 파일 시스템은 추가 전용이다(데이터 파괴 버그 발생 가능성이 낮은 간단한 구현을 허용함). 파일 시스템 조각화는 일어나지 않는다.
- 클라이언트는 서버의 정확성을 확인할 수 있다: 반환된 데이터의 점수는 요청된 주소와 같아야 한다.SHA-1은 암호화된 보안 해시이기 때문에 데이터를 조작하는 것은 계산상 불가능하다.
- 데이터를 덮어쓸 수 없다.주소가 이미 있으면 데이터가 이미 있는 것이다.
- 사용자 인증 필요 없음:데이터는 삭제할 수 없으며, 점수가 알려져야 읽을 수 있다.유일한 잠재적인 문제는 사용자가 디스크를 채우는 것이다.
- 디스크 구조를 복잡하게 만들지 않고도 데이터를 압축할 수 있다.
데이터 블록은 하드 드라이브에 저장된다.사용 가능한 스토리지, 즉 일반적으로 RAID를 구성하는 디스크를 데이터 로그라고 한다.이 데이터 로그는 아레나라고 불리는 작은 조각으로 나뉘는데, 크기가 작아 CD/DVD나 마그네틱 테이프와 같은 다른 미디어에 쓸 수 있다.데이터 로그의 주소에 점수를 매핑하는 인덱스에 또 다른 하드 드라이브 세트가 사용된다.인덱스에 사용되는 데이터 구조는 고정 크기의 버킷이 있는 해시 테이블이다.벤티는 무작위로 분배되는 점수에 의존하여 버킷이 채워지지 않는다.각 조회에는 디스크 탐색 시간이 한 개씩 소요되기 때문에 인덱스는 일반적으로 액세스 시간이 짧은 여러 개의 하드 드라이브로 구성된다.
사용법.
벤티 서버는 여러 가지 방법으로 클라이언트에 의해 사용될 수 있다.Plan 9 운영 체제는 파일 시스템의 일일 아카이브 스냅샷에 Venti를 사용한다.주 파일 시스템의 이러한 복사본은 날짜별로 정리된 전체 복사본의 파일 트리로 탑재될 수 있다.유틸리티 프로그램 'vac'과 'unvac'은 벤티 서버에서 데이터를 개별 파일 형태로 저장 및 검색하거나 디렉토리와 그 콘텐츠로 사용할 수 있다.'Vacfs'는 원격으로 저장된 모든 데이터의 전체 검색 없이 vac 점수와 관련된 데이터를 검색할 수 있다.데이터와 인덱스 점수는 'rdarena'와 'wrarena'를 사용하여 Venti 서버 간에 중복될 수 있다.Bell Labs의 Plan 9, User Space의 Plan 9, Inperno 및 Venti 프로토콜을 구현하는 모든 클라이언트는 데이터를 저장 및 검색하는 데 서로 교환하여 사용할 수 있다.[3]
해시 충돌
정보이론의 기본 원리는 비둘기구멍 원리로서, 만약 A가 B보다 많은 값을 포함한다면, A에서 B로 매핑되는 어떤 기능에 대해서는 A의 둘 이상의 멤버와 연관된 B의 멤버가 있을 것이라고 기술하고 있다.벤티의 경우, 가능한 SHA-1 해시 집합이 파일 시스템에 저장될 수 있는 모든 가능한 블록 집합보다 분명히 작기 때문에 해시 충돌이 가능하다.
160비트 해시에서의 우발적인 해시 충돌 위험은 엑사바이트의 데이터에서도 매우 작다.그러나 역사적으로 많은 해시함수는 암호화와 계산의 발달로 인해 악의적인 해시 충돌에 점점 취약해진다.[4]Venti는 해시 충돌 문제를 다루지 않는다.[when?] 이 시간 현재, SHA-1에서 충돌을 찾는 것은 여전히 계산상으로는 불가능하지만, 향후 어느 시점에서 Venti가 다른 해시함수로 전환하는 것이 필요할 수 있다.구글은 2017년 2월 23일 SHA-1 약 2회의63.1 SHA-1 평가에서 동일한 SHA-1 해쉬를 가진 서로 다른 PDF 파일 2개를 생성하는 SHAted 공격을 발표했다.[5][circular reference]
참고 항목
- 영구 저장용 Venti를 사용하는 화석 - 스냅샷 파일 시스템
- 사용자 공간의 계획 9
참조
- ^ Linux, FreeBSD, NetBSD, OpenBSD, SunOS 또는 Mac OS X 등
- ^ a b c d 루키엔, 메키엘Venti 분석 및 Memventi 구현.논문.2007년 20대 대학교 N.P: N.P., N.D.20대 대학 Theses Repository.웹. 2014년 10월 13일.<http://essay.utwente.nl/694/1/scriptie_Lukkien.pdf>.
- ^ "Venti (6) man page in the Plan 9 4th edition manual". Man.cat-v.org. Retrieved 2013-04-21.
- ^ "해시 충돌 Q&A." 암호 연구2010년 1월 12일 N.D. 웹의 람부스.<https://web.archive.org/web/20100306180648/http://www.cryptography.com/cnews/hash.html>.
- ^ SHA-1#SHAted_–_first_public_collision
외부 링크
- Venti: 보관 창고에 대한 새로운 접근법, Venti를 설명하는 종이.
- 새로운 Venti 수동 페이지(개요), 섹션 7 Venti 수동 페이지(일반 설명 및 저장 형식 포함)
- 새 Venti 수동 페이지(서버), 섹션 8 Venti 서버 수동 페이지.
- 새 Venti 수동 페이지(도구), 섹션 1 Venti 유틸리티 수동 페이지.
- 클라이언트 및 서버를 구현하기 위한 이동 코드.
- 임보의 벤티 모듈 인페르노, 구글 서머 오브 코드 덕분에 친절하게 살아났다.