google을 지탱하는 기술] 제3장
TRANSCRIPT
Google 을 지탱하는 기술
3. 구글의 분산 스토리지
Digital ContentTom
목차• GFS(Google File System) - 정의 및 특징 - 문제점 및 장애 - 구조 및 읽기 , 쓰기 • Bigtable- 분산 스토리지 시스템 -Bigtable vs RDB -Tablet -Table - 성능향상 방법 - 구조• Chubby- 분산 잠금 서비스 - 정의 및 구조 - 특징• Tip
GFS(Google File System)
• 정의 및 특징 -GFS 란 ? 대용량 data 를 읽기 , 쓰기를 위한 기반 기술로서 대용량 파일을 고속으로 전송하고 안전하게 보관하는 기술
<GFS> < 일반 FS>
다수의 HDD를 조합
-> 보다
효율적취급하
는 파일이 거대
파일에 대해 항상
복사본 유지
업데이트 하지 않고 , 기록된 것을
읽기만 한다
GFS(Google File System)
• 구조 -Master: GFS 전체의 상태를 관리하고 통제하는 중앙 서버 -Chunk Server: 실제 HDD 의 입출력 담당 -Client: GFS 를 이용해 파일을 읽고 쓰는 Application
Client Master
Chunk S Chunk S
Chunk
64MB
Chunk S
Chunk S
Chunk S
GFS(Google File System)
• 읽기 • 쓰기
세컨드리 프라이머리 세컨드리
Client Master
Chunk S
Chunk S
Chunk S
Client 가 Master 에게 Chunk와 Chunk S 에 관한 정보를 알아내 그중 가장 가까이 있는 곳에 있는 Chunk S 를 골라
data 요청
Client Master
Chunk S
Chunk S
Chunk S
Primary 는 data 의 기록 과정을 통제하고 Client 는 가장 가까운
Chunk S 로 data 를 전송한다 . 이후 data 를 받지 못한 Chunk S 들에게
data 를 복사한다
GFS(Google File System)
• 문제점 및 장애 -Client 가 기록할 data 가 여러 개의 Chunk 로 나뉜 경우 “ 원자적 쓰기” - 관련 있는 data 를 한데 모으는 Record 를 이용해 하나의 처리가 마지막까지 중단되지 않고 단번에 이루어지게 설계 - 스냅샷 file
“copy on write” file
Chunk
Chunk
Chunk
Chunk
스냅샷
GFS(Google File System)
• 문제점 및 장애
Chunk Chunk Server
Master
문제점 Disk 장애읽을 내용
변경
통신두절 Master 정지
해결책 Chunk Server 의
Checksum으로 감지
Client 는 다른 Chunk S 에
접속 , Master에게 새로운 Server 를 할당 받음
Operation Los 에
변경내용을 항시 기록해 , 그것을 이용해 고장 직전으로
재현
Bigtable- 분산 스토리지 시스템Bigtable Table RDB Table
columnrow
값
row key column family
row
Column
Time stamp
구조화된 데이터
Bigtable- 분산 스토리지 시스템• Table -Bigtable 에서의 Table 은 처음에 row key 와 column Family 에 의해
정의된다
< 완성된 Table 의 >
<Bigtable 에 저장된 정보 >
Row key Contents: Anchor:example.com
Anchor:example.kr
Google.com <html> **** Google 구글
<html> ****
<html> ****
key 값Google.com + contents:+t1 <html> ***Google.com + contents:+t2 <html> ***
Google.com + anchor:example.com+t3 Google
Google.com + anchor:example.kr+t4 구글
Bigtable- 분산 스토리지 시스템• 구조 - 다수의 Server 로 Table 을 분산처리 한다 -Master: Bigtable 의 전체 통괄 -Tablet Server: Tablet 을 관리
-Client: data 를 읽고 쓰는 역할
Master
ClientGFS
Chubby
Chunk S
Chunk S
Chunk S
Bigtable- 분산 스토리지 시스템Tablet
TableRow
Tablet
Tablet Server
Server
Server
로그
데이터
데이터
데이터
관리정보
관리정보
관리정보
Table Tablet Tablet Server GFS
Bigtable- 분산 스토리지 시스템Tablet 분할 , 결합
Table1:Z
Tablet 검색
A
Z
Table1:m
Table1:Z
A
M
N
Z
SSTable
SSTable
Chubby
Root tablet
Meta data tablet
User tablet
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Bigtable- 분산 스토리지 시스템• Bigtable 의 성능 향상 방법
Locality Groups
• 동시에 사용 가능성이 큰 Column Family 를 Locality Groups 으로 그룹화하고 , 그룹마다 SSTable 을 분리할 수 있다 .
데이터 압축
• 읽기 , 쓰기를 하는 데이터는 Locality Groups 별로 지정된 방법을 통해 자동으로 압축하고 해제할 수 있다 .
읽기 캐시• Data를 읽어올 때 매번 SSTable로 데이터를 가지러 가는 것이 아니라 가능한 한 Tablet Server의 메모리상에 데이터를 남겨두어
성능을 개선한다 .
Commit 로그의 일괄 처리• Client 로부터 한번에 대용량 쓰기 요청을 받은 경우 , 그것들을 일일이 순서대로 처리하는 것이 아니라 모두 모아서 Commit 로그에
기록한다 .
Chubby- 분산 잠금 서비스• Chubby 란 ? - 소용량이면서도 높은 신뢰성과 몇몇 편리한 기능을 제공하는 분산
스토리지 . 단독으로 사용되고 , 다른 분산 시스템을 구축하기 위한 기반으로 사용됨
<Chubby 의 전체구조 >
Client
Client
Master
Master
Master
Master
Master
Chubby- 분산 잠금 서비스• 특징 - 파일 시스템으로 이용
파일에 접근하기
파일명 /ls/<셀명 >wombat/pouch ->Lock service 의 약어
셀의 이름을 DNS 에 문의하면 모든
레플리카의 어드레스를 구할 수 있다
Local 셀과 global셀
Local 셀가까이 있는 셀에
접근하고 싶은 경우 이용
Global 셀전 세계로부터 접근이 가능한 Chubby 셀
파일의 읽기와 쓰기
읽기 , 쓰기마스터가 모든 데이터를
가지고 있으므로 , 마스터에 요구
ACL일기 , 쓰기 , 변경에
대해서 각각 그 동작을 허가할 사용자 목록 정의
Chubby- 분산 잠금 서비스- 잠금 서비스의 이용
• 공유 잠금• 배타적 잠금
• GFS 도 Chubby와 조합해 간접적으로 잠금 가능
• Chubby 장애• Chubby셀의
마스터가 정지하면 다른 레플리카가 마스터로 전환
• Client 정지• 외부 리소스를
안전하게 잠금
파일의 잠금
외부 리소스의
잠금
페일오버시퀀서
Chubby- 분산 잠금 서비스- 통지를 활용
감시 등록 작성 소멸 캐시 < 서버의 사활 감시 > < 어드레스의 취득 >
변경 갱신 파기
재취득 어드레스 확인 < 마스터의 치환 > < 어드레스의 갱신 >
마스터
Server
Server
마스터
Server
Server
마스터
마스터
마스터
이벤트 통지의 응용
캐시의 갱신
Tip
silon
EMC
EMC Isilon
Global Name Space
지원 불가 지원
FS Size 16TB 최대 1,728TB
최대 성능 스토리지 가능한 최대
성능
최대 10GB
CPU 간섭 CPU 분리 구조
CPU 공유 사용 구조
Client S/W 있음 없음
파일 시스템 복구
전체 파일시스템
fsck
전체 파일시스템
fsck
Tip
HDD SSD
VS
HDD SSD•저렴한 가격•SSD 에 비해 대용량•느린 속도
•반도체 사용으로 인한 읽기와 쓰기시간 단축으로 인한 작업 효율 상승•소비전력 , 소음 감소•비싼 가격