1 - ring 이란
2 - swift는 어떻게 안전하게 데이터를 보관하는가?
3 - swift는 어떻게 확장하는가?
우선 아래와 같은 용어의 정의가 추가적으로 필요하다.
replica
만약에 저장한 창고에 쥐가 나와서 가끔씩 카드하나만 갉아 먹거나, 바구니 전체를 갉아 먹거나, 책장 칸막이 하나를 갉아 먹는다고 가정해 보자.
카드가 갉아 먹힐 것을 대비해서 하나의 카드가 아닌 2개의 카드를 추가로 복사해서 (총 3개의 카드로 만들어서) 칸막 이 안에 넣는다고 가정하자.
이 똑같은 여러장의 카드가 replica 이다.
zone
이 때 가장 안전하게 보관 하려면 3장의 카드는 각각 다른 칸막이에 저장되어야 가장 안전할 것이다. (한 칸막이 안에 3개를 다 넣으면 한 칸막이 전체를 갉아 먹을때 문제)
현재는 칸막이 단위가 가장 안전하게 보관할 단위이다. swift는 이를 zone이라고 표현한다.
zone은 실제 시스템에서 그 규모나 용도에 따라 디렉토리,디스크,서버,랙,데이터센터 등으로 세팅가능하다. 그리고 저장될 데이터는 반드시 각기 다른 zone에 저장되어야 한다. (안전을 위해)
replica
만약에 저장한 창고에 쥐가 나와서 가끔씩 카드하나만 갉아 먹거나, 바구니 전체를 갉아 먹거나, 책장 칸막이 하나를 갉아 먹는다고 가정해 보자.
카드가 갉아 먹힐 것을 대비해서 하나의 카드가 아닌 2개의 카드를 추가로 복사해서 (총 3개의 카드로 만들어서) 칸막 이 안에 넣는다고 가정하자.
이 똑같은 여러장의 카드가 replica 이다.
zone
이 때 가장 안전하게 보관 하려면 3장의 카드는 각각 다른 칸막이에 저장되어야 가장 안전할 것이다. (한 칸막이 안에 3개를 다 넣으면 한 칸막이 전체를 갉아 먹을때 문제)
현재는 칸막이 단위가 가장 안전하게 보관할 단위이다. swift는 이를 zone이라고 표현한다.
zone은 실제 시스템에서 그 규모나 용도에 따라 디렉토리,디스크,서버,랙,데이터센터 등으로 세팅가능하다. 그리고 저장될 데이터는 반드시 각기 다른 zone에 저장되어야 한다. (안전을 위해)
그렇다면 이렇게 3장의 카드를 칸막이에 분배해서 넣는 방법을 생각해 보자.
3장의 카드를 넣기 위해서 장부를 새로 만들어 보았다.
새로 만든 장부의 기본 규칙을 생각해 보자.
- 카드 고유번호 마지막 자리에 따라 정해진 칸막이 번호들은 같은 번호가 오면 안된다. (같은 데이터는 같은 zone에 저장되면 안된다.)
- 또한 골고루 저장 가능 하도록 장부안에 칸막이 번호들을 고르게 지정해 놨다.
고유번호 마지막 자리가 2번이니 3,4,5번 칸막이에 2번 바구니에 저장 될 것이다.
partition
여기서 partition에 대해서 다시 생각해 보자.
2번 칸막이에 들어갈 바구니는 어떤 것들일까?장부를 살펴보면 2번 칸막이안에 있을 바구니는 다음과 같다.
- 0번(2행3열에 2번 칸막이)
- 1번(3행2열에 2번 칸막이)
- 4번(6행4열에 2번 칸막이)
- 5번(7행3열에 2번 칸막이)
- 6번(8행2열에 2번 칸막이)
- 9번(11행4열에 2번 칸막이)
이와 같이 같은 partition은 다른 device에 존재할 수 있다.
다음도 생각해 보자
partition(바구니)이 없다고 생각해 보자.바구니가 없다고 하더라도 121357632번의 고유번호의 카드는 3,4,5번 칸막이에 저장될 수 있다.
하지만 만약 쥐가 3번 칸막이를 갉아 먹었다고 생각해 보자.
새로 카드를 복사해서 집어 넣어야 하는데 장부를 봤을때 고유번호 뒷자리가 2번인 카드들이 4,5번 칸막이에 있는 것은 알지만 어떤 카드인지는 일일히 찾아야 할 것이다.
하지만 바구니를 사용했다면 고유번호 뒷자리가 2번인 카드들은 4,5번 칸막이의 2번 바구니에 담겨 있을것이므로 그 바구니의 카드들만 복사해서 넣으면 된다.
방금 이 설명은 zone(혹은 device)가 망가졌을때 replicator라는 swift의 데몬이 하는 일에 대한 설명이다.
마지막으로 partition은 데이터를 담고 replication 하기 위한 단위 일뿐임을 기억해야 한다.
특히 partition의 단위는 디렉토리에 매치된다고 생각해야 한다. 왜냐하면 일반적으로 partition은 수십만개에서 수백만 개 혹은 수천만개까지도 필요할 수 있다.
그렇기 때문에 데이터를 저장하는 단위(디렉토리, 디스크, 서버, 랙, 데이터센터) 중에서 디렉토리 밖에 이 이 역할을 할 수 있는 것이 없다.
device
지금 설명에서는 device와 zone을 1:1로 설명한 상태이다.
하지만 실제 클러스터를 구성하기 위해서는 수많은 device를 사용할 수 도 있다.
예를 들어 본다면 갑자기 쥐들이 책장 하나를 통채로 갉아 먹는 일이 발생해서 아무래도 안전을 위해서 책장 단위로 카드를 관리 해야겠다고 생각했다.5개의 책장은 각각 3개의 칸막이가 있다.
이를 위해서 예산을 늘려서 새로 5개의 책장을 새로 구입했다고 생각하자.
이제 zone의 단위는 칸막이가 아닌 책장이다.
이때 칸막이는 device로 생각할 수 있다.
이를 위해 장부도 새로 기입했다. 우선 같은 책장안에 같은 카드는 안 넣기로 하고(zone isolation) 기입해 본다.
2-1의 의미는 2번 책장의 1번 칸막이 이다.
또한 각 칸막이(device)의 횟수는 모두다 2번씩 들어 갈 수 있게 장부를 작성한 것이 보인다.(1-1번도 2번, 5-3번도
2번 등)
이제 카드를 넣으면 책장 하나를 갉아 먹더라도 카드를 잃어 버리지 않는 환경을 만들었다.
이전은 device와 zone의 비율을 1:1로 매치해서 생성해서 device하나가 망가지면 zone이 망가지는 것과 같은 결과이 다.
하지만 지금은 device와 zone의 비율을 3:1로 매치해서 device도 하나가 망가져도 zone전체가 망가지지는 않는다.
마지막으로 zone과 device 그리고 partition의 관계를 정리해 보자.
zone
device
partition
그렇다면 만약 책장이 가득차서 책장마다 칸막이를 한개씩 더 구입한다면 어떤 일들이 필요할까?
책장의 칸막이가 기존의 칸막이 보다 2배로 큰 칸막이의 책장을 사면 어떻게 될까?
이 글은 앞에 가이드에 추가적으로 아래의 개념을 설명했다.
* replica
* zone, device, partition
이제 카드를 넣으면 책장 하나를 갉아 먹더라도 카드를 잃어 버리지 않는 환경을 만들었다.
이전은 device와 zone의 비율을 1:1로 매치해서 생성해서 device하나가 망가지면 zone이 망가지는 것과 같은 결과이 다.
하지만 지금은 device와 zone의 비율을 3:1로 매치해서 device도 하나가 망가져도 zone전체가 망가지지는 않는다.
마지막으로 zone과 device 그리고 partition의 관계를 정리해 보자.
zone
- zone은 데이터를 안전하게 보관하기 위한 단위이다.
- 같은 데이터의 replica는 다른 zone에 저장되어야 한다.
- zone은 데이터센터, 랙, 서버, 디스크, 디렉토리를 사용할 수 있다.
- zone은 device들의 리스트로 구성 된다.
device
- device는 증설 혹은 제거를 위한 단위이다. (다음장에서 device가 추가될때의 시나리오를 생각해 본다.)
- device는 서버, 디스크, 디렉토리를 사용할 수 있다. 하지만 증설/제거를 위한 단위로 생각했을때 디스크가 적합하다.
- device는 zone에 포함되며 partition들을 가지고 있다.
- device가 갖는 partition들은 다른 device들도 가지고 있다. (replica 갯수 만큼)
- ring안에 나타나는 device의 빈도수가 데이터 분배 횟수에 영향을 미친다.
partition
- partition은 replica와 균등분배를 위한 단위이다.
- 한 partition은 replica 갯수 만큼 서로 다른 zone안에 device에 저장되어 있다.
- partition은 수십만,수천만 생성해야 함으로 디렉토리에 매치하는 것이 적합하다.
- partition의 갯수가 클 수록 균등한 분배가 이루어지나 메모리, 디스크에 문제와 replication에 걸리는 시간에 문제가 있다. (다음장에서 추가 설명)
그렇다면 만약 책장이 가득차서 책장마다 칸막이를 한개씩 더 구입한다면 어떤 일들이 필요할까?
책장의 칸막이가 기존의 칸막이 보다 2배로 큰 칸막이의 책장을 사면 어떻게 될까?
이 글은 앞에 가이드에 추가적으로 아래의 개념을 설명했다.
* replica
* zone, device, partition
댓글 없음:
댓글 쓰기