구성:
회의 중 확인:
"as is right now they have, like, one pool, 45 clusters. And you
see the pool zero is where they have right now, yeah, 54"
계획:
"in March there will be, like similar spike, same number, same
memory. Yeah, more memory, and it'll be pool one."
사양:
계획:
"They don't know when there will be a third pool coming in...
it'll be around 20 nodes, so it'll be lower number of nodes."
사양:
고객사 질문:
"how do we get pool in production? Like, you know, like, without
no downtime... what are the checklists? Like, what is a driver?"
벤더 설명:
"the behavior of one pool cluster and two pool cluster is different,
right? But once you go to two, pool is a two, pool, three, pool four,
pool five, pool is the same behavior."
핵심:
Single Pool:
"when the request comes to any node in the system, this node, even
though I don't have the data, it will know in constant time where
the file is immediately just [from] its key, its name"
특징:
Multi-Pool:
"when the request arrives to the server, we'll make the request to
all the pools, right? So pool one through pool 10 at the same time
fan out... So latency wise, is the same cost"
메커니즘:
1. 요청이 임의 노드 도착
2. 모든 Pool에 동시 Fan-out 쿼리
3. 파일 소유 Pool 응답
4. 해당 Pool에서 데이터 스트리밍
지연시간:
"that extra step taxes the performance. But of course, it's only
millisecond tax. So if you're latency sensitive, you wouldn't want
this. But in reality, it's not that big of an impact."
고객사 질문:
"when there are different number [of nodes]... when pool zero is
50 nodes... and then pool 1 [is] 25 way less notes."
벤더 답변:
"even though the pool is smaller than the original what matters is
the set size. Set Size, same size will be same performance given
the same network cards and similar NVMe."
핵심 원리:
데이터 읽기:
"let's assume initial set size equals four. When you do [a read],
let's say your request arrives on the first node... you'll only
be reading four drives. So at the same time, either these four
nodes or these four nodes will be [reading] at the same rate."
병렬 처리:
계획:
벤더 확인:
"the cluster will actually behave as if now it has 75 [nodes]...
But both writes and reads have a small latency increase... the
behavior of two pools, three pools, 10 pools, is the same as
only two pools."
결과:
벤더 설명:
"new files coming in will automatically start getting load balanced.
So the problem, even if you have the problem right now, as the time
goes by, the problem will naturally start balancing"
메커니즘:
"the weighted placement algorithm will start putting the data
wherever there's [most] space. When they start balancing their
[capacity], yeah."
핵심 개념:
1. 신규 데이터: 자동으로 용량 여유 있는 Pool로
2. 가중치 기반: 빈 공간 많은 Pool에 높은 가중치
3. 자연스러운 균등화: 시간 경과에 따라 자동 밸런싱
상황:
고객사 우려:
"if you don't do any rebalancing, it'll probably become like, 20%
will be Hadoop [in Pool 0], and here [Pool 1], like, you know,
like 60% can be like Hadoop and maybe a little bit of ETL"
예상 결과 (리밸런싱 없이):
고객사 질문:
"wouldn't it be better if they have like, 50-50?"
핵심 설명:
"Think about it this way. It's a cluster. It's nothing [but] a
collection of erasure sets. An erasure set has a collection of
drives. So even within the ETL data set, data is scattered."
기술적 이유:
1. Erasure Coding: 데이터는 이미 여러 노드/드라이브에 분산
2. Set 기반: 파일은 Erasure Set 단위로 분산
3. Pool 추가: 더 많은 Set 선택지 제공
결론:
"The presence of another pool means more [erasure sets], just more
[sets] for us to grab data from... every single ETL or [Hadoop]
file will be scattered somewhere else."
벤더 설명:
"as soon as this becomes a pool, they will naturally have [access],
yes, because you have twice as many network cards to serve the ETL
traffic as if you were treating them as separate."
메커니즘:
1. 요청 분산: 모든 노드가 요청 수신 가능
2. NIC 활용: 108개 노드의 모든 NIC 활용
3. 자연스러운 균등화: 네트워크 레벨에서 자동 분산
고객사 시나리오:
"you definitely want both applications [ETL and Hadoop]... the
request to travel to both [pools]... whichever server gets the
request... will retrieve the data from the other pool"
결과:
기존 데이터를 Pool 간 재분배하는 작업
벤더 설명:
"the only thing that will happen is that [Pool 0] will do some stuff,
and then you get a tiny bit [in Pool 1]... This can only happen after
rebalance. New files coming in, they'll be automatically placed into
both [pools]"
특징:
명확한 입장:
"rebalancing doesn't make sense when you have rebalance. I mean,
you're already petabyte size, petabyte rebalance is going to take
a while, especially because of the [consumption] of the network.
So unless you already are constrained by access pattern, I will
not recommend rebalance"
이유:
1. 시간 소요: 매우 오래 걸림
2. 네트워크 부하: 대역폭 집중 소비
3. 실익 없음: 자동 균등화로 충분
현재 환경:
"rebalancing 1.5 petabytes of data on their network should take
between six and 12 days."
조건:
대규모 환경 시:
"imagine when you have 20 petabytes, and you think, Oh, let me
rebalance 10 petabytes, it will take even longer. So unless the
networking is faster."
서비스 저하:
"but then [users] will be like, this is slow. It's like, oh,
we are rebalancing. Sorry, yeah"
대안:
"if you [did], let's start rebalance at night and stop rebalancing
in the morning. Maybe [users] will notice that you're slowly shifting
the data. Could work"
벤더 설명:
"rebalances makes more sense if everything is continuously being
accessed."
조건:
고객사 시나리오:
"Team A... wants to... read a very specific data over and over
and over... that'll hit the same pool, like, same location of
the disk, like, over and over and over."
우려:
벤더 설명:
"[Hot spot] only happens if it's the same file. So let's say you
do compaction, the file becomes one gigabyte, and now you're only
reading that over and over and over."
핵심:
결론:
"as soon as it's two objects, those are most likely going to be
[in different] erasure sets... most likely they're going to be
separate"
벤더 명확화:
"if that's the case, rebalancing will eventually not solve the
problem... if hotspot only happens for the [same] files, it
doesn't really help"
이유:
벤더 소개:
"the history of rebalance was [Disney+]... they thought they needed
to... rebalance their clusters because of the video. But turns out...
they found out that there's a hot file, hot content, they can just
get put the file in place, and MinIO automatically will move it to
wherever there's capacity."
Disney+ 상황:
해결책:
"if there's only a movie, very popular movie, everyone wants to
watch the movie, then they [do] the get put, so it's [redistributed]"
메커니즘:
1. GET: 인기 파일 읽기
2. PUT: 동일 파일 다시 쓰기
3. 자동 재배치: MinIO가 용량 여유 있는 곳에 자동 배치
효과:
"it'll then overwrite wherever there is [capacity], and that's
going to be on the new pool."
벤더 평가:
"they rarely rebalance because [it] didn't make sense."
서비스 특성:
초기 계획:
"when they [added pools], they thought they needed to... rebalance
their clusters because of the video."
벤더가 구축:
"we built this for them... But so far, they just, they never used
[rebalancing]"
이유:
결론:
공격적 확장:
"Rakuten... were adding pools like every quarter. At some point
they had 10 pools."
특징:
이유:
"they will actually read from everywhere. So they will continuously
rebalance."
벤더 경험:
"the [final] rebalance was the heavy one. I think it took like
three weeks."
과정:
Pool 병합:
"At some point they reach [optimal] pool size, we told them start
merging"
유일한 예외:
"that was the only case where it made sense, but they were reading
very aggressively from everywhere."
목적:
벤더 설명:
"we even tested that with JP Morgan Chase. There was [like] 1%
performance difference between... an empty cluster and a half cluster"
결과:
고객 반응:
"they were really, really angry when we told them you don't need
to rebalance, because they're so used to rebalancing on their
NetApp and on their Pure and on their EMC"
기존 스토리지 습관:
실증:
"when we... because we're using erasure code. If I'm using four
drives across four nodes over here and four drives across four
nodes over here, the capacity doesn't matter. It's the number of
drives across the number of nodes."
최종 합의:
"That takes away the need for any rebalancing."
벤더 언급:
벤더 설명:
"on the AI store directly, there's thin provisioning of volumes.
So even if the drive doesn't have capacity for a new volume, you
can allocate a volume that's not really provisioned"
Thin Provisioning:
시나리오:
"if you have two pools, you can decommission a smaller pool into
a larger pool. Let's say you have five or 10 nodes, and you're
bringing another 5-10 nodes, you could decommission the smaller
pool into a larger pool with a thin provision[ed] device."
단계:
1. Pool 1: 5 노드 (기존)
2. Pool 2: 5 노드 추가
3. 목표: 10 노드 단일 Pool
방법:
"That's how you can actually make the second pool merge into the
third pool."
고객사 질문:
"when they want to... [merge] the pool, yeah, first, [decommission]
the existing pool one... which means that, like data in [pool one]
should be migrated to... pool zero or something, right?"
벤더 답변:
"if you didn't have thin provision... the CSI will say there's no
space. So that's why you need thin provision, so that you can
actually schedule both on the same place and then do the in place
replacement"
메커니즘:
1. Thin Provision: 동일 물리 드라이브에 2개 볼륨 할당
2. Decommission: Pool 1 데이터를 Pool 0으로 이동
3. 물리 공간: 점진적으로 Pool 0 볼륨으로 재할당
예시:
"let's say [the pool] is 60%, [there's] some space. So you
[thin] provision another seven terabyte drive [on the] same
physical drive... So you start doing the decommission... and
the data will start [filling]"
고객사:
"What if... thin provisioning is [disabled]... decommission is
still available... they're adding the existing pool one and then
add to the additional node, and the creation pool... is still
available, right?"
벤더 답변:
"Yes, that they can do that, yes... it's not a requirement, but
still, it makes it convenient for the... dynamic [volume allocation]...
and also... The management of the PVC"
결론:
고객사 요청:
"what are the checklists? Like, what is a driver? [What] should
they check... what is difference in... production cluster?"
항목:
1. 네트워크
하드웨어
소프트웨어
1단계: Pool 생성
2단계: 검증
3단계: 성능 테스트
4단계: 프로덕션 투입
계획:
자동 분산:
"new files coming in will automatically start getting load balanced"
벤더 확인:
"So the question, Can I split this and do ETL Hadoop? Yes, you can.
Not a problem. So it's just a warning that we don't want you to
think that rebalancing a petabyte of data is good idea."
고객사 질문:
"what is the like, the golden ratio... when [do they] know they
have [to] expand... like, 60%? when pool zero is at 60% or 70%?"
벤더 권장:
"80% [is the expansion trigger]"
임계값:
예비 용량:
"we reserve a certain amount of capacity... 50% [margin]...
80% [trigger]"
벤더 경험:
"we have a customer that wants to add Four exabytes, they cannot
get The servers in time."
현실:
"we also have a bank customer that wants to add a pool and they
can't get memory for their servers."
공급사 선택:
"Customers... are selecting their hardware vendors based on who
actually can deliver... Lenovo and Cisco were hoarding all the
eight and 16 terabyte... drives"
권장:
가용 자원:
"they currently have 20 nodes available for any type of testings
right now, until March."
벤더 제안:
"we do two warps, one small objects and one large objects on the
large 20 node pool, single pool... and then we destroy it. And
then we can do [multiple pools]"
방법론:
1. Single Pool (20 노드)
Multiple Pools
비교 분석
예상 결과:
"single pool should be like this, and like multiple should be
slightly behind, but like pretty close, like one 2% difference,
mainly on the request per second. Throughput should be the same"
목표:
방법:
"test four node pool, add to a four node pool, add to a four node
pool, versus just doing a 12 node pool."
JPMC 결과:
"we did two fours, and then we did an eight... the performance
it was, it was basically a nil. I mean, it was 1%"
확장 가이드 문서
리밸런싱 가이드
Warp 테스트 지원
Pool 병합 가이드
용량 계획 도구
Pool 1 준비
테스트 환경
Hadoop 마이그레이션 계획
Pool 1 투입 (3월)
모니터링 강화
Pool 1 추가 후 벤치마크
자동 밸런싱 모니터링
✅ 결정: 리밸런싱 수행하지 않음
이유:
1. 자동 Weighted Placement Algorithm
2. 신규 데이터 자동 균등 분산
3. 높은 비용 (6~12일, 네트워크 부하)
4. 실익 없음 (성능 차이 미미)
예외:
✅ 결정: GET + PUT 방식 사용
방법:
1. 핫스팟 파일 식별
2. GET으로 읽기
3. PUT으로 다시 쓰기
4. 자동으로 용량 여유 있는 Pool로 이동
효과:
✅ 결정: 80% 용량 도달 시 확장
임계값:
✅ 결정: 다양한 크기 Pool 허용
근거:
예시:
✅ 리밸런싱 하지 말 것
✅ 80% 용량 도달 시 확장
✅ 다양한 크기 Pool 허용
✅ GET + PUT 사용
✅ 리밸런싱 회피
✅ Warp 정기 벤치마크
✅ 모니터링 강화
문서 버전: 1.0
최종 수정일: 2026년 2월 6일
다음 리뷰: Pool 1 추가 후 (2026년 3월)
"they found out that there's a hot file, hot content, they can
just get put the file in place, and MinIO automatically will
move it to wherever there's capacity."
"Rakuten was adding pools like every quarter. At some point
they had 10 pools... the [final] rebalance... took like three
weeks."
"There was [like] 1% performance difference between... an empty
cluster and a half cluster... they were really, really angry
when we told them you don't need to rebalance"
"new files coming in will automatically start getting load balanced...
the weighted placement algorithm will start putting the data wherever
there's [most] space."