์ƒ์„ฑ ์‹๋ณ„์ž

bsr์€ ๋ณต์ œ ๋ฐ์ดํƒ€ ์ƒ์„ฑ์„ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ์ƒ์„ฑ ์‹๋ณ„์ž(GI, Generation Identifiers)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ bsr ๋‚ด๋ถ€ ๋ฉ”์นด๋‹ˆ์ฆ˜์—์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • ๋‘ ๋…ธ๋“œ๊ฐ€ ์‹ค์ œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ฉค๋ฒ„์ธ์ง€ ๊ฒฐ์ •ํ•  ๋•Œ (๊ฐ™์€ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์˜ ๋…ธ๋“œ๊ฐ€ ์•„๋‹Œ ์šฐ์—ฐํ•œ ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ ์‹๋ณ„)

  • ๋…ธ๋“œ ๊ฐ„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์žฌ๋™๊ธฐํ™”์˜ ๋ฐฉํ–ฅ์„ ๊ฒฐ์ •ํ•  ๋•Œ

  • ์ „์ฒด ์žฌ๋™๊ธฐํ™”๊ฐ€ ํ•„์š”ํ•œ์ง€ ํ˜น์€ ๋ถ€๋ถ„ ์žฌ๋™๊ธฐํ™”๋กœ ์ถฉ๋ถ„ํ•œ์ง€ ๊ฒฐ์ •ํ•  ๋•Œ

  • ์Šคํ”Œ๋ฆฟ ๋ธŒ๋ ˆ์ธ(์ดํ•˜ SB)์„ ์‹๋ณ„ํ•  ๋•Œ

์ƒ์„ฑ ์‹๋ณ„์ž

bsr์€ ๋‹ค์Œ์˜ ๊ฒฝ์šฐ์— ์ƒˆ๋กœ์šดย ๋ฐ์ดํ„ฐ ์ƒ์„ฑ(Data Generation)์ด ์‹œ์ž‘๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•˜๊ณ  ์ƒˆ๋กœ์šด GI ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • ์ดˆ๊ธฐ ์ „์ฒด ๋™๊ธฐํ™” ์‹œ

  • disconnected ๋œ ๋ฆฌ์†Œ์Šค๊ฐ€ Primary ์—ญํ• ๋กœ ์Šน๊ฒฉํ•  ๋•Œ

  • Primaryย ์—ญํ• ์˜ ๋ฆฌ์†Œ์Šค๊ฐ€ disconnecting ๋  ๋•Œ

    • ์ƒˆ๋กœ์šด GI ๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ์‹œ์ ์€ ๋””์Šคํฌ์— ์“ฐ๊ธฐ I/O ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ, ๋ฆฌ์†Œ์Šค๊ฐ€ Connected ์—ฐ๊ฒฐ ์ƒํƒœ์— ์žˆ๊ณ  ์–‘ ๋…ธ๋“œ์˜ ๋””์Šคํฌ ์ƒํƒœ๊ฐ€ UpToDate ์ด๋ฉด ์–‘ ๋…ธ๋“œ์˜ ํ˜„์žฌ GI๋Š” ๋™์ผํ•˜๋‹ค ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.
๋ชจ๋“  ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ์ƒ์„ฑ์€ 8 ๋ฐ”์ดํŠธ์˜ UUID(universally unique identifier) ๋กœ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. UUID์˜ ์ตœํ•˜์œ„ ๋น„ํŠธ๋Š” ๋…ธ๋“œ์˜ ์—ญํ• ์„ ํ‘œํ˜„ํ•˜๋ฉฐ Primary๋Š” 1, Secondary๋Š” 0์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.ย 

GI ํŠœํ”Œ

bsr์€ ๋กœ์ปฌ ๋ฆฌ์†Œ์Šค ๋ฉ”ํƒ€ ๋ฐ์ดํƒ€ ๋‚ด์— ํ˜„์žฌ์™€ ๊ณผ๊ฑฐ์˜ย ๋ฐ์ดํ„ฐ ์ƒ์„ฑ(data generation)ย ์ •๋ณด๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ 4๊ฐœ(Tuple)๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • Current UUIDย - ๋กœ์ปฌ๋…ธ๋“œ์˜ ํ˜„์žฌ data generation์— ๋Œ€ํ•œ GI(์ƒ์„ฑ ์‹๋ณ„์ž)์ž…๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค๊ฐ€ Connected ์ƒํƒœ์ด๊ณ  ๋™๊ธฐํ™”๊ฐ€ ๋œ ์ƒํƒœ๋ผ๋ฉด ์ด Current UUID ๋Š” ์–‘ ๋…ธ๋“œ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

  • Bitmap UUIDย - ๋””์Šคํฌ์ƒ์˜ ๋™๊ธฐํ™” ๋น„ํŠธ๋งต์˜ ๋ณ€ํ™”๋ฅผ ์ถ”์ ํ•˜๋Š” UUID์ž…๋‹ˆ๋‹ค. ๋””์Šคํฌ์˜ ๋™๊ธฐํ™” ๋น„ํŠธ๋งต ์ž์ฒด๋ฅผ ๋ณด๋ฉด, ์ด ์‹๋ณ„์ž๋Š” disconnected ๋ชจ๋“œ ์ƒํƒœ์—์„œ๋งŒ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์ผ ๋ฆฌ์†Œ์Šค๊ฐ€ Connected ๋ผ๋ฉด ์ด UUID๋Š” ํ•ญ์ƒ ๋น„์–ด(zero)์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • Two Historical UUIDsย - ํ˜„์žฌ์˜ Current UUID์˜ ์ด์ „์˜ ์ƒํƒœ์˜€๋˜ data generation ์‹๋ณ„์ž๋“ค์ด๋ฉฐ 2๊ฐœ๋ฅผ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.ย 

์ด 4๊ฐ€์ง€ ๋ชจ๋‘๋ฅผ ๋ฌถ์–ด์„œ "generation identifier tuple" ๋˜๋Š” ์งง๊ฒŒ "GI ํŠœํ”Œ" ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

GI ๋ณ€๊ฒฝ ๊ณผ์ •

์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ์ƒ์„ฑ ์‹œ์ž‘

  • ๋…ธ๋“œ๊ฐ„ ์—ฐ๊ฒฐ์ด ๋Š์–ด ์งˆ ๋•Œ (๋„คํŠธ์›Œํฌ ์˜ค๋ฅ˜, ์ˆ˜๋™์กฐ์ž‘ ํฌํ•จ)

  • ์—ฐ๊ฒฐ๋œ ์ƒํƒœ์—์„œ ์ƒ๋Œ€ ๋…ธ๋“œ์˜ ๋””์Šคํฌ๊ฐ€ ๋ณต์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜์˜ํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ ์ผ ๊ฒฝ์šฐ(peer-disk:Outdated)ย 

bsr์€ ์œ„ ๋‘ ๊ฐ€์ง€ ๊ฒฝ์šฐ์— ๋Œ€ํ•ดย ๋กœ์ปฌ GI๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

  1. ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ์ƒ์„ฑ์„ ์œ„ํ•ด ์‹ ๊ทœ UUID๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด UUID๋Š” Primary ๋…ธ๋“œ๋ฅผ ์œ„ํ•œ ์ƒˆ๋กœ์šด Current UUID๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.ย 

  2. ์ด์ „์˜ UUID๋Š” ์ด์ œ ๋น„ํŠธ๋งต ๋ณ€ํ™” ์ƒํ™ฉ์„ ์ถ”์ ํ•˜๋Š” generation์„ ์˜๋ฏธํ•˜๊ธฐ ๋•Œ๋ฌธ์—, Primary ๋…ธ๋“œ์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด Bitmap UUID๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

  3. Secondary ๋…ธ๋“œ์—์„œ๋Š” GI ํŠœํ”Œ์˜ ๋ณ€ํ™”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

UUID๋Š” ๋ณผ๋ฅจ์— ์“ฐ๊ธฐ I/O ๊ฐ€ ๋ฐœ์ƒ ๋˜์—ˆ์„ ๋•Œ ์‹ ๊ทœ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ GI๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๋ณด๋‹ค ๋” ์ •ํ™•ํ•œ ์กฐ๊ฑด์€ ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง€๋Š” ๋“ฑ์˜ ๊ธฐ์กด ์กฐ๊ฑด์— ๋”ํ•ด ๋ณผ๋ฅจ์˜ ์“ฐ๊ธฐ I/O ๋ฐœ์ƒ์ด ์š”๊ตฌ๋ฉ๋‹ˆ๋‹ค.

์žฌ๋™๊ธฐํ™” ์‹œ์ž‘

์žฌ๋™๊ธฐํ™”๊ฐ€ ์‹œ์ž‘๋  ๋•Œ GI ํŠœํ”Œ์˜ ๋ณ€ํ™”๋Š” ์—†์Šต๋‹ˆ๋‹ค.

์žฌ๋™๊ธฐํ™” ์™„๋ฃŒ

์žฌ๋™๊ธฐํ™”๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ๋™๊ธฐํ™” ์†Œ์Šค๋Š” ๋น„ํŠธ๋งต uuid ๋ฅผ rotate ์‹œํ‚ค๊ณ  ๋™๊ธฐํ™” ํƒ€๊ฒŸ์€ ๋™๊ธฐํ™” ์†Œ์Šค์˜ GI ํŠœํ”Œ ์ „์ฒด ์…‹์„ ์ˆ˜์‹ ํ•˜์—ฌ ๋™์ผํ•˜๊ฒŒ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

GI ์ƒํƒœ ์‹๋ณ„

๋…ธ๋“œ๊ฐ„์— ์—ฐ๊ฒฐ์ด ๋งบ์–ด์ง€๋ฉด ๋‘ ๋…ธ๋“œ๋Š” ํ˜„์žฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” GI ๋ฅผ ๊ตํ™˜ํ•˜๊ณ , ๊ฑฐ๊ธฐ์— ๋งž์ถฐ์„œ ์ ์ ˆํ•œ ๋™์ž‘์„ ์ง„ํ–‰ํ•˜๋Š”๋ฐ ์—ฌ๊ธฐ์—” ๋ช‡๊ฐ€์ง€ ๋™์ž‘์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

  • ์–‘์ชฝ์˜ Current UUID๊ฐ€ ๋น„์–ด ์žˆ๋Š” ๊ฒฝ์šฐ
    ์–‘์ชฝ Current UUID๊ฐ€ ๋น„์–ด ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ์ง€ํ•˜์˜€๋‹ค๋ฉด, ์ด๋Ÿฐ ๊ฒฝ์šฐ๋Š” ๋ณดํ†ต ์ƒˆ๋กญ๊ฒŒ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ๋™๊ธฐํ™”๊ฐ€ ์‹œ์ž‘๋œ ์ ์ด ์—†๋Š” ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ๋™๊ธฐํ™”๊ฐ€ ์ž๋™์œผ๋กœ ์ง„ํ–‰๋˜์ง€ ์•Š์œผ๋ฉฐ ์ˆ˜๋™์œผ๋กœ ๋™๊ธฐํ™”๋ฅผ ์‹œ์ž‘ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ํ•œ์ชฝ ๋…ธ๋“œ์˜ Current UUID๊ฐ€ ๋น„์–ด ์žˆ๋Š” ๊ฒฝ์šฐ
    ์ƒ๋Œ€ ๋…ธ๋“œ์˜ Current UUID๋Š” ๋น„์–ด์žˆ๊ณ  ์ž์‹ ์˜ ๊ฒƒ์€ ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒƒ์„ ๊ฐ์ง€ํ•˜์˜€๋‹ค๋ฉด, ์ด๋Ÿฐ ๊ฒฝ์šฐ๋Š” ๋ณดํ†ต ์ƒˆ๋กญ๊ฒŒ ๊ตฌ์„ฑ๋œ ๋ฆฌ์†Œ์Šค์—์„œ ์ „์ฒด ๋™๊ธฐํ™”๋ฅผ ๋ฐ”๋กœ ์‹œ๋„ํ•œ ์ƒํƒœ์ด๊ณ , ๋กœ์ปฌ๋…ธ๋“œ๊ฐ€ ๋™๊ธฐํ™”์˜ ์†Œ์Šค๋กœ ์„ ํƒ๋œ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. bsr ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์˜์—ญ์˜ ๋ชจ๋“  ๋น„ํŠธ๋ฅผ on-disk sync bitmap์— ์„ค์ •ํ•˜๊ณ  ์†Œ์Šค๋กœ์จ ๋™๊ธฐํ™”๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ๋Š” (๋กœ์ปฌ UUID๊ฐ€ ๋น„์–ด์žˆ๊ณ , ์ƒ๋Œ€๊ฐ€ ๋น„์–ด์žˆ์ง€ ์•Š์„ ๋•Œ) bsr์ด ๋™์ผํ•œ ์ ˆ์ฐจ๋ฅผ ์ง„ํ–‰ํ•˜๊ฒ ์ง€๋งŒ ๋กœ์ปฌ ๋…ธ๋“œ๊ฐ€ ํƒ€๊ฒŸ์œผ๋กœ ๋™๊ธฐํ™” ๋˜๋Š” ๊ฒƒ๋งŒ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

  • ์–‘์ชฝ์˜ Current UUID๊ฐ€ ๋™์ผํ•œ ๊ฒฝ์šฐ
    ์ž์‹ ์˜ Current UUID์™€ ์ƒ๋Œ€์˜ UUID๊ฐ€ ๋น„์–ด์žˆ์ง€ ์•Š๊ณ  ๊ฐ™์œผ๋ฉด, ์ด๋Ÿฐ ๊ฒฝ์šฐ๋Š” ๋ณดํ†ต Secondary ์—ญํ•  ์ค‘ disconnected ๋ชจ๋“œ๊ฐ€ ๋˜๊ณ  disconnected ์ค‘์— ์–ด๋–ค ๋…ธ๋“œ์—์„œ๋„ ์Šน๊ฒฉ์ด ์—†์—ˆ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ๋™๊ธฐํ™”๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์€ ์ƒํƒœ์ด๊ณ  ๋™๊ธฐํ™”๊ฐ€ ์ง„ํ–‰๋˜์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค.

  • Bitmap UUID๊ฐ€ ์ƒ๋Œ€ ๋…ธ๋“œ์˜ Current UUID์™€ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ
    ์ž์‹ ์˜ Bitmap UUID๊ฐ€ ์ƒ๋Œ€์˜ Current UUID์™€ ๊ฐ™๊ณ  ์ƒ๋Œ€์˜ Bitmap UUID ๊ฐ€ ๋น„์–ด์žˆ์Œ์„ ๊ฐ์ง€ํ•˜์˜€๋‹ค๋ฉด, ์ด๋Ÿฐ ๊ฒฝ์šฐ๋Š” ์ •์ƒ์ ์ธ ์ƒํƒœ์ด๋ฉฐ Secondary ์—ญํ• ์ผ ๋•Œ ์žฅ์•  ์ƒํ™ฉ์ด ์ƒ๊ฒจ์„œ Primary ์—ญํ• ๋กœ ์Šน๊ฒฉ์‹œํ‚จ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ƒ๋Œ€ ๋…ธ๋“œ๋Š” Primary๊ฐ€ ๋œ ์ ์ด ์—†์œผ๋ฉฐ ๊ทธ ์ „๊นŒ์ง€๋Š” ๋™์ผํ•œ data generation์œผ๋กœ ์ž‘์—…๋˜์—ˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. bsr์€ ๋กœ์ปฌ๋…ธ๋“œ๋ฅผ ๋™๊ธฐํ™” ์†Œ์Šค๋กœ ์„ค์ •ํ•˜๊ณ  ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์žฌ๋™๊ธฐํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ค€๋น„ ํ•ฉ๋‹ˆ๋‹ค.
    ๋ฐ˜๋Œ€๋กœ ๋กœ์ปฌ๋…ธ๋“œ๊ฐ€ ์ž์‹ ์˜ Bitmap UUID๋Š” ๋น„์–ด์žˆ๊ณ  ์ƒ๋Œ€์˜ Bitmap์ด ์ž์‹ ์˜ Current UUID์™€ ๋™์ผํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์ธ์ง€ํ•œ๋‹ค๋ฉด ์ด๊ฒƒ๋„ ์ •์ƒ์ ์ด๋ฉฐ ๋กœ์ปฌ ๋…ธ๋“œ์˜ ์‹คํŒจ ์ดํ›„์— ๋ฐœ์ƒํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. bsr์€ ๋กœ์ปฌ๋…ธ๋“œ๋ฅผ ๋™๊ธฐํ™” ํƒ€๊ฒŸ์œผ๋กœ ๋†“๊ณ  ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์žฌ๋™๊ธฐํ™”๋ฅผ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค.

  • Current UUID๊ฐ€ ์ƒ๋Œ€ ๋…ธ๋“œ์˜ Historical UUID์™€ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ
    ์ž์‹ ์˜ Current UUID๊ฐ€ ์ƒ๋Œ€ ๋…ธ๋“œ์˜ Historicalย UUID์™€ ์ผ์น˜ํ•˜๋Š” ๊ฒƒ์„ ๊ฐ์ง€ํ•˜์˜€๋‹ค๋ฉด, ์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.ย 2๊ฐœ์˜ ๋ฐ์ดํƒ€ ์…‹(data sets)์ด ๊ณตํ†ต์˜ ์ด์ „ย ์„ธ๋Œ€ย ๋‚ด์šฉ์„ ๊ณต์œ ํ•˜๋Š” ๋™์•ˆ, ์ƒ๋Œ€ ๋…ธ๋“œ๋Š” ์ตœ์‹ ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€์ง€๋งŒ Bitmap ์ •๋ณด๋Š” ์ง€๋‚œ ์‹œ์ ์˜ ๊ฒƒ์ด๊ธฐ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ผ๋ฐ˜์ ์ธ ๋™๊ธฐํ™”๋กœ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.ย ์ด๋Ÿฐ ๊ฒฝ์šฐ bsr์€ ๋””๋ฐ”์ด์Šค ์ „์ฒด๋ฅผ out-of-sync ๋กœ ๋งˆํ‚น์„ ํ•˜๊ณ  ๋กœ์ปฌ ๋…ธ๋“œ๋ฅผ ๋™๊ธฐํ™” ํƒ€๊ฒŸ์ด ๋˜๊ฒŒํ•˜์—ฌ ์ „์ฒด ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์žฌ๋™๊ธฐํ™”๋ฅผ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ์ด์™€ ๋ฐ˜๋Œ€๋กœ ๋กœ์ปฌ ๋…ธ๋“œ์˜ Historicalย UUID ์ค‘์— ์ƒ๋Œ€์˜ Current UUID์™€ ๋งค์นญ๋˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋กœ์ปฌ ๋…ธ๋“œ๋ฅผ ๋™๊ธฐํ™” ์†Œ์Šค๊ฐ€ ๋˜๊ฒŒํ•˜๊ณ  ๊ทธ ์™ธ์—๋Š” ๋™์ผํ•œ ์ ˆ์ฐจ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • Bitmap UUID๋Š” ์ผ์น˜, Current UUID๋Š” ๋ถˆ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ
    ์ž์‹ ์˜ Current UUID์™€ ์ƒ๋Œ€์˜ Current UUID์™€๋Š” ๋‹ค๋ฅด๊ณ  Bitmap UUID๋Š” ์ผ์น˜ํ•˜๋Š” ๊ฒƒ์„ ๊ฐ์ง€ํ•˜์˜€๋‹ค๋ฉด ์Šคํ”Œ๋ฆฟ ๋ธŒ๋ ˆ์ธ(Split-brain)์ด ๋ฐœ์ƒํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.ย ์–‘ ๋…ธ๋“œ๋Š” disconnect ์ƒํƒœ๋กœ ๋‚จ๊ฒจ์ง€๊ณ  ์ž๋™ํ•ด๊ฒฐ์ด ์„ค์ •๋˜์–ด ์žˆ์ง€ ์•Š๋Š” ํ•œ ์ž‘์—…์ž๊ฐ€ ์ง์ ‘ ์ˆ˜๋™์œผ๋กœ ์Šคํ”Œ๋ฆฟ ๋ธŒ๋ ˆ์ธ ์ƒํ™ฉ์„ ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • Current / Bitmap UUID ๋ชจ๋‘ ๋ถˆ์ผ์น˜ ํ•˜๊ณ  Historical UUID ๊ฐ€ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ
    ์ž์‹ ์˜ Current, Bitmap UUID๊ฐ€ ๊ฐ๊ฐ์˜ ์ƒ๋Œ€ UUID์™€ ๋‹ค๋ฅด๊ณ  Historical UUID ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ผ์น˜ํ•˜๋Š” ๊ฒƒ์„ ๊ฐ์ง€ ํ•˜์˜€๋‹ค๋ฉด ์ด์ „ ์กฐ์ƒ ์„ธ๋Œ€์—์„œ์˜ ์Šคํ”Œ๋ฆฟ ๋ธŒ๋ ˆ์ธ ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ž๋™๋ณต๊ตฌ ์„ค์ •์ด ๋˜์–ด์žˆ๋‹ค ํ•˜๋”๋ผ๋„ ์˜๋ฏธ๊ฐ€ ์—†์œผ๋ฉฐ ์ˆ˜๋™์œผ๋กœ ๋ณต๊ตฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. BSR์€ disconnect ์ƒํƒœ๊ฐ€ ๋˜๊ณ  ์ž‘์—…์ž๊ฐ€ ์ง์ ‘ ์Šคํ”Œ๋ฆฟ ๋ธŒ๋ ˆ์ธ ์ƒํ™ฉ์„ ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์–ด๋– ํ•œ UUID๋„ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ
    ๋งˆ์ง€๋ง‰์œผ๋กœ, ๋‘ ๋…ธ๋“œ์˜ GI ํŠœํ”Œ์—์„œ ๋งค์นญ๋˜๋Š” ๊ฒƒ์ด ํ•œ๊ฐ€์ง€๋„ ์—†๋‹ค๋ฉด ๊ด€๋ จ์—†๋Š” ๋ฐ์ดํƒ€๋ผ๊ณ  ๊ฒฝ๊ณ ๋ฅผ ๋‚จ๊ธฐ๊ณ  disconnect ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ „ํ˜€ ๊ด€๋ จ ์—†๋Š” ๋…ธ๋“œ๊ฐ„์— ์—ฐ๊ฒฐ๋  ๊ฒƒ์„ ๋Œ€๋น„ํ•œ ์•ˆ์ „์กฐ์น˜์ž…๋‹ˆ๋‹ค.

ย