๋ฌธ์ ํด๊ฒฐ
๋์คํฌ ์ฅ์
๋์คํฌ ์ฅ์ (์ค๋ฅ)๋ ๋์คํฌ ์คํ ๋ฆฌ์ง ๊ณ์ธต์ ๋ฌผ๋ฆฌ์ ์ฐ๊ฒฐ ๋จ์์ ๋จ์ ์ด ์ธ์๋ ๋ฏธ๋์ด ํ์, ๋ฐฐ๋ ์นํฐ, SCSI ์ค๋ฅ ๋ฑ ์๊ธฐ์น ์์ ์ฅ์ ๋ก ์ธํด ๋์คํฌ I/O ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒ ์ ๋๋ค. ์ด๋ฌํ ์ฅ์ ๋ค์ ์ผ์์ ์ผ๋ก ๋ฐ์ํ๋ค๊ฐ ์ ์ํ ๋๊ธฐ๋ ํ๊ณ ์๊ตฌ์ ์ฅ์ ๋ก ์ด์ด์ง๊ธฐ๋ ํฉ๋๋ค. bsr ์์ ์ด๋ฌํ ์ฅ์ ๋ฅผ ์ผ์์ ์ฅ์ ์ ์๊ตฌ์ ์ฅ์ ์ ํ์ผ๋ก ๊ตฌ๋ถํ๊ณ ์ ํ์ ๋ฐ๋ผ ์ค๋ฅ๋ฅผ ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌํฉ๋๋ค.
์ผ์์ ์ฅ์ ๋ ์คํ ๋ฆฌ์ง ๊ณ์ธต์์ ์ด๋ค ์ด์ ๋ก ์ธํด ์ค๋ฅ๊ฐ ์ ์ ๋ฐ์ ํ๋ค๊ฐ ๋ค์ ์ ์ํ๋๋ ์ํฉ์ ๋๋ค. ์ด๋ด ๊ฒฝ์ฐ์๋ ๋์คํฌ ๊ต์ฒด๊ฐ ํ์ํ ์ ๋์ ์ฌ๊ฐํ ์ํฉ์ด ์๋๋ฏ๋ก ๋๋๋ก์ด๋ฉด ์๋น์ค ์ด์์ ์ง์ํ๋ฉด์ ๊ธฐ ๋ฐ์๋ ์๋ฌ์ ๋ํด์๋ง ๋ณ๋๋ก ํด์ํ๊ณ ๋ณต์ ๋ ๊ณ์ ์ด์๋๋๋ก ํ๋๊ฒ ํจ์จ์ ์ ๋๋ค.ย ์ฆ ์ผ์์ ์ค๋ฅ ์ํฉ์์๋ย I/O ์๋ฌ๊ฐ ๋ฐ์ํ ๋ธ๋ก ์์ญ์ out-of-sync ๋ก ๊ธฐ๋กํ๊ณ ์ค๋ฅ๋ฅผ ์์ ๊ณ์ธต์ผ๋ก ์ ๋ฌํฉ๋๋ค. ์์ ํ์ผ์์คํ ์ ํด๋น ๋ธ๋ก์ผ๋ก I/O ๋ฅผ ์ฌ์๋ ํ๊ณ ์ฌ์๋๋ I/O ๊ฐ ์ฑ๊ณตํ๋ฉด ์์ฐ์ค๋ฝ๊ฒ OOS ๊ฐ ํด์๋๋๋ก ํฉ๋๋ค. ์ด๋ ๊ฒ ๋ฐ์ํ๋ ์ค๋ฅ๊ฐ ์ฌ์๋๋ฅผ ํตํด ๊ธ๋ฐฉ ํด์๋๋ฉด ์ผ์์ ์ค๋ฅ๋ก ์ฒ๋ฆฌํ ์ ์์ง๋ง ์ฌ ์๋๋ฅผ ๊ณ์ ํด๋ I/O ์ค๋ฅ๊ฐ ํด์๋์ง ์์ ๊ฒฝ์ฐ์ ์ด๊ฒ์ ์๊ตฌ์ ์ธ ์ค๋ฅ๊ฐ ๊ฐ์ฃผํ๊ณ ๋์คํฌ ์ํ๋ฅผ ๋ถ๋ฆฌ(detach)ํ์ฌ ๋ณต์ ๊ฐ ์ค๋จ๋๋๋ก ํฉ๋๋ค.
์๊ตฌ์ ์ธ ๋์คํฌ ์ค๋ฅ๋ ๋์คํฌ ๊ต์ฒด ๋ฑ ๋์คํฌ ์ฅ์ ์ ๋ํ ์กฐ์น๊ฐ ํ์ํ ์ํฉ์ผ๋ก ์ ์ฒด ์ฌ๊ตฌ์ฑ์ ์ ์ฐจ๋ฅผ ํตํด ๋ณต๊ตฌํด์ผ ํฉ๋๋ค.
I/O ์๋ฌย ์ฒ๋ฆฌ ์ ์ฑ ์ ๋ฆฌ์์ค <disk> ์น์ ์ on-io-error ์ต์ ์ ํตํด ์ค์ ๋ฉ๋๋ค.
resource <resource> {
ย ย disk {
ย ย ย ย on-io-errorย <strategy>;
max-passthrough-count 100;
ย ย ย ย ...
ย ย }
ย ย ...
}
ํด๋น ์ต์ ์ <common> ์น์ ์ ์ ์ํ๋ค๋ฉดย ๋ชจ๋ ๋ฆฌ์์ค์ ์ ์ฉ๋ฉ๋๋ค.
<strategy>๋ ๋ค์๊ณผ ๊ฐ์ ์ธ ๊ฐ์ง ์ต์ ์ด ์์ต๋๋ค.
passthrough on-io-error์ย ๊ธฐ๋ณธ๊ฐ์ผ๋ก ํ์๊ณ์ธต์ I/O ์ค๋ฅ๋ฅผ ์์ ๊ณ์ธต์ ๋ณด๊ณ ํฉ๋๋ค. I/O ์ค๋ฅ๋ Primary ๋ ธ๋์ผ ๊ฒฝ์ฐ ๋ง์ดํธ ๋ ํ์ผ์์คํ ์ผ๋ก ๋ณด๋ด๊ณ , Secondary ๋ ธ๋์์๋ Primary ๋ ธ๋๋ก ์ฐ๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ฌํ๊ฑฐ๋ (๋ณต์ ์ฐ๊ฒฐ์ด ์์ ๊ฒฝ์ฐ)๋ฌด์ ๋ฉ๋๋ค.ย ์ด๋ ๋์คํฌ ์ํ๋ ํ ์ํ๋ฅผ ์ ์งํ๋ฉฐย ํด๋น ์๋ฌ๋ธ๋ญ์ ๋ํด OOS๋ก ๊ธฐ๋กํฉ๋๋ค. I/O ์ค๋ฅ๋ ์์์ ์ํด ์ฌ์๋ ๋์ด ์ ์ ์ฒ๋ฆฌ๋๊ฑฐ๋ ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์๋ ์ ์์ต๋๋ค. ์ฌ์๋๊ฐ ๋์ด๋ ์ค๋ฅ๊ฐ ์ง์๋๋ฉด ๋ค์์ detach ์ ์ฑ ์ ์ํด ์ฒ๋ฆฌ๋ฉ๋๋ค.
max-passthrough-count ํจ์ค์ค๋ฃจ๋ฅผ ๋ฌดํ์ ํ ์๋ ์์ต๋๋ค. ์ผ์ ์ ์ด์ ํจ์ค์ค๋ฃจ๊ฐ ๋ฐ๋ณต๋ ๊ฒฝ์ฐ ์๊ตฌ์ ๋์คํฌ ์ฅ์ ๋ก ๊ฐ์ฃผํด์ผ ํ๊ณ ์ฌ๊ธฐ์ ์๊ณ์ ์ ์ง์ ํฉ๋๋ค.
detach ํ์๊ณ์ธต์ I/O ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด, ๋ ธ๋๋ ์ฅ์น๋ฅผ ๋ณต์ ๋ณผ๋ฅจ์ผ๋ก๋ถํฐ ๋ถ๋ฆฌ(detach)์ํค๊ณ diskless ์ํ๋ก ์ ํํฉ๋๋ค.
call-local-io-error. ๋ก์ปฌ I/O ์๋ฌ ํธ๋ค๋ฌ๋ก ์ ์๋ ๋ช ๋ น์ ํธ์ถํฉ๋๋ค. ์ด ์ต์ ์ local-io-error <cmd> ๊ฐ ๋ฆฌ์์ค์ <handlers> ์น์ ์ ์ ์๋์ด ์์ด์ผ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.ย local-io-error ํธ์ถ ๋ช ๋ น ๋๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ฉด ย I/O ์๋ฌ ์ฒ๋ฆฌ๋ฅผ ์ ์ ์ผ๋ก ์ฌ์ฉ์์ ๊ฒฐ์ ์ ๋งก๊น๋๋ค.
์๋ฌ์ฒ๋ฆฌ ์ ์ฑ ์ ๋ฆฌ์์ค๊ฐ ์ด์์ค์ด๋๋ผ๋ adjust ๋ช ๋ น์ ํตํด ์ค์๊ฐ ์ ์ฉํ ์ ์์ต๋๋ค.
passthrough ์ ์ฑ ์ ํน์ง
bsr ์ ํ์์ SCSI ์คํ ๋ฆฌ์ง ๊ณ์ธต์์ ๋ฐ์ํ๋ ์ค๋ฅ๋ค์ ์ ์ฐํ๊ฒ ๋์ฒํ ์ ์์ด์ผ ํฉ๋๋ค.
๊ทธ๋์ ๋์คํฌ ์ฅ์ ์ ์ฑ ์ผ๋ก ์ ๊ณตํด ์๋ detach ์ ์ฑ ์ ์๋น์ค ์ด์๊ด์ ์์ ๋ณต์ ๊ฐ ํน์ ์์ ์ ์ผ๋ฐฉ์ ์ผ๋ก ์ค๋จ๋๋ ์ ์ฑ ์ด์์ต๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ ์ฌํ ๋ณต๊ตฌ๋ ์ด๋ ต๊ณ ์๋น์ค ์ด์ ์ง์ ์ธก๋ฉด์์๋ ๋ถ๋ฆฌํฉ๋๋ค.
ํจ์ค์ค๋ฃจ ์ ์ฑ ์ I/O ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ํด๋น ๋ธ๋ญ์ ๋ํด์ OOS ๋ฅผ ๊ธฐ๋กํ๊ณ ์คํจ๋ I/Oย ๊ฒฐ๊ณผ๋ฅผ ํ์ผ์์คํ ์ผ๋ก ์ ๋ฌํฉ๋๋ค. ์ด ๋ ํ์ผ์์คํ ์ด ์๋ฌ๊ฐ ๋ฐ์ํ ๋ธ๋ญ์ ๋ํด ๋ค์ ์ฐ๊ธฐํ์ฌ ์ด๋ฅผ ํตํด OOS๋ฅผ ํด์ํ๋ค๋ฉด ์ด๋ ์ผ์์ ์ธ ๋์คํฌ ๊ณ์ธต์ ์๋ฌ๋ฅผ ํ์ผ์์คํ ์ค์ค๋ก ๊ทน๋ณตํ๋๋ก ์ ๋ํ๊ฒ ๋ฉ๋๋ค. ๋น๋ก ํ์ผ์์คํ ์ ๋์ ํน์ฑ์ ๋ฐ๋ผ ์์ ํ OOS๊ฐ ํด์๋์ง ๋ชปํ๋ค๊ณ ํ๋๋ผ๋ ์ผ๋ถ ๋จ๊ฒจ์ง OOS ๋ ์ฐ๊ฒฐ ์ฌ์๋ ๋ฑ์ ํตํด ์ฌ๋๊ธฐํ ํ์ฌ ํด๊ฒฐํ ์๋ ์์ต๋๋ค.
ํจ์ค์ค๋ฃจ ์ ์ฑ ์ ์๋ฌ ๋ธ๋ญ์ FS๊ฐ ์ค์ค๋ก ํด๊ฒฐํ๊ฑฐ๋ ๋๊ธฐํ๋ฅผ ํตํด ํด์ํ๋๋ก ์ ๋ํ๊ณ , ๋์คํฌ I/O ์ ์ผ์์ ๋ฌธ์ ๊ฐ ์๋๋ผ๋ ๊ธฐ๋ณธ์ ์ธ ์๋น์ค ์ด์์ ์ง์ํ๋๋ก ๋ณด์ฅํฉ๋๋ค.
์ผ์์ ์ฅ์ ์ฒ๋ฆฌ
I/O ์๋ฌ ์ ์ฑ ์ ํจ์ค์ค๋ฃจ(passthough)๋ก ์ค์ ํ ๊ฒฝ์ฐ I/O ์๋ฌ์ ๊ฒฐ๊ณผ๋ ํ์ผ์์คํ ์ผ๋ก ์ ๋ฌ๋๊ณ ย bsr ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ I/O ๋ธ๋ญ์ OOS๋ก ๊ธฐ๋กํฉ๋๋ค.ย ์ด๋ฌํ OOS๋ I/O ์๋ฌ๊ฐ ์ผ์์ ์ด์๋ค๋ฉด ํ์ผ์์คํ ์ ์ํด ์ฌ ์๋ ๋์ด ์ค์ค๋ก ํด์๋๊ฑฐ๋, ๊ทธ๋ ์ง ์๋ค๋ฉด ๋ณต์ ์ฌ์ฐ๊ฒฐ์ ํตํด ์ฌ๋๊ธฐํ๋ฅผ ์ ๋ํ์ฌ ํด๋น OOS ์์ญ์ ํด์ํฉ๋๋ค. ์ด ๋ OOS๋ฅผ ํด์ํ๋ ๋๊ธฐํ์ ๋ฐฉํฅ์ด๋ ์ ์ฒด ์ฌ๋ถ ๋ฑ์ ์ด์์ ๊ด๋ฆฌ์ ๋๋ HA ์ด์ ๋ก์ง์ ๋งก๊น๋๋ค.ย
๋์คํฌ ์ค๋ฅ ์ ์ฑ ์ detach ์ ์ฑ ์ผ๋ก ํ์ฌ ๋ฆฌ์์ค ๋ถ๋ฆฌ๋ฅผ ์๋์ผ๋ก ์ํํ ์๋ ์์ผ๋ ์๋๋ถ๋ฆฌ(detach) ์ ์ฑ ๋ณด๋ค๋ passthrough ์ ์ฑ ์ผ๋ก ์ค์ ํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. passthrough ์ ์ฑ ์ด ๋์คํฌ์ ์ผ์์ ์ค๋ฅ์ ๋ฅ๋์ ์ผ๋ก ๋์ฒํ ์ ์๋ ๋งํผ ์๋น์ค ์ด์ ์ธก๋ฉด์์ ๋ณด๋ค ๋ ํฉ๋นํฉ๋๋ค.
bsr ์ I/O ์ค๋ฅ๊ฐ ์ผ์์ ์ธ์ง ๋๋ ์๊ตฌ์ ์ธ์ง ํ๋จํ ์ ์์ผ๋ฉฐ ์นํฐ ๋จ์์ I/O ์ค๋ฅ ์ถ์ ๋ฑ์ ๊ตฌ์ฒด์ ์ธ ์ค๋ฅ ํต๊ณ๋ฅผ ์ ์งํ์ง ์์ต๋๋ค. ์ค๋ฅ๊ฐ ๋ฐ์ํ ํด๋น ์ฅ์น์ ๋ํ I/O ์๋ฌ ๋ฐ์ ํ์ ์ ๋ณด๋ง ๊ฐ์งํฉ๋๋ค. ๊ตฌ์ฒด์ ์ธ ์ ๋ณด๋ ์ ์ ์์ง๋ง bsradm status์ I/O ์๋ฌ ํ์๋ฅผ ํ ๋๋ก ์๋ฌ๊ฐ ๋ฐ์ํ ์ ๋๋ฅผ ํ์ ํ ์ ์์ต๋๋ค. ๋ง์ฝ ์ผ์์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค๋ฉด status์ ๋ณด์ฌ์ง๋ io error ์ oos ๋ ๋ค์๊ฐ์ ์๋ง ๊ธฐ๋ก๋์ด ์์ ๊ฒ์ด๋ฉฐ ์๊ฐ์ด ์ง๋๋ ๊ทธ ์์ ์ฆ๊ฐํ์ง ์์ ๊ฒ ์ ๋๋ค.
์๊ตฌ์ ์ค๋ฅ ์ฒ๋ฆฌ
์ผ์์ ์ผ๋ก I/O ์ค๋ฅ๊ฐ ๋ฐ์ํ์ฌ ๋ค์๊ฐ์ OOS๊ฐ ๊ธฐ๋ก๋๋ ์ํฉ์ ์ ์ธํ ๋ชจ๋ ๋์คํฌ ์ค๋ฅ ์ํฉ์ ์๊ตฌ์ ์ค๋ฅ ์ํ๋ก ๊ฐ์ฃผํฉ๋๋ค.
์๊ตฌ์ ์ค๋ฅ๋ ๋ค์ํ ์ํฉ์์ ๋ฐ์ํ ์ ์์ต๋๋ค. ๋์คํฌ์ ์ค์ ๋ฌผ๋ฆฌ์ ์ธ ์์(๋ฐฐ๋๋ธ๋ญ)์ด ๋ฐ์ํ ๊ฒฝ์ฐ ๋๋ ์คํ ๋ฆฌ์ง์ ์ฐ๊ฒฐ๋ ์ผ์ด๋ธ์ด ๋จ์ ๋์ด ๋ณผ๋ฅจ์ด ์ ๊ฑฐ๋ ๊ฒฝ์ฐ SCSI ์ปจํธ๋กค๋ฌ์ ์ฅ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ๋ฑย ์ค์ ๋ก ์คํ ๋ฆฌ์ง ๊ณ์ธต์ ๋ฌธ์ ๊ฐ ์๋ ์ํฉ์ ํฌํจํด, ๊ด๋ฆฌ์์ ์ค์ ๋๋ bsr๊ณผ ํธํ๋์ง ์๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ์ํฅ์ผ๋กย ๋ณผ๋ฅจ์ด ์ ๊ฑฐ๋๋ ๋ณต์ ์ธ์ ์ธ ์ํฉ ๋ฑ์ด ๋ชจ๋ ํฌํจ๋ฉ๋๋ค. ์ด๋ฌํ ์๊ตฌ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๊ด๋ฆฌ์๋ ๋ณต์ ๋ฅผ ์ฌ๊ตฌ์ฑํ๊ฑฐ๋ย ๋์คํฌ๋ฅผ ๊ต์ฒดํด์ผย ํฉ๋๋ค. ์๊ตฌ์ ๋์คํฌ ์ค๋ฅ๋ฅผ ์กฐ์นํ๊ธฐ ์ํด์ ๋จผ์ ย ๋ฆฌ์์ค๋ฅผ down ํ ์ดํย ๋์คํฌ๋ฅผ ๋ณต์ ์ํ์์ ๋ถ๋ฆฌ(detach)ํด์ผ ํฉ๋๋ค. ๋ฌผ๋ก ์ฌ๊ตฌ์ฑ์ ํด์ผ ํ๋ ๋ณต์ ๋ฆฌ์์ค์ ๋ํด์ ๋ฉํ๋์คํฌ๋ฅผ ์ฌ์ด๊ธฐํ ํด์ผ ํฉ๋๋ค.
๋์คํฌ ๊ต์ฒด
๋ค์๊ณผ ๊ฐ์ดย ๋ฉํ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ฌ์์ฑํ๊ณ , ๋ฆฌ์์ค๋ฅผ ๋ค์ ์ฐ๊ฒฐํฉ๋๋ค. ํ์ํ๋ค๋ฉด ๋ช ์์ ์ผ๋ก ๋๊ธฐํ ๋ช ๋ น์ ์ํํ์ฌ ์ ์ฒด๋๊ธฐํ๋ฅผ ์งํํฉ๋๋ค.
C:\Program Files\bsr\bin>bsradm down <resource>
ย ย
C:\Program Files\bsr\bin>bsradm create-md <resource>
v08 Magic number not found
Writing meta data...
initialising activity log
NOT initializing bitmap
New bsr meta data block sucessfully created.
ย
ย
C:\Program Files\bsr\bin>bsradm up <resource>
C:\Program Files\bsr\bin>bsradm invalidate <resource>
๊ธฐํ
๋์คํฌ ์ฝ๊ธฐ ์ค๋ฅ, ๋ฉํ๋์คํฌ I/O ์ค๋ฅ์ ๋ํด์ ์๋ ๋ถ๋ฆฌ(detach) ์ ์ฑ ์ด ์ ์ฉ๋๊ณ ๋ณต์ ๋ฅผ ์ค๋จํฉ๋๋ค. ์ค๋จ๋ ๋ฆฌ์์ค๋ ์ฌ๊ตฌ์ฑ์ ํตํด์๋ง ๋ณต๊ตฌ ๋ ์ ์์ต๋๋ค.
๋ ธ๋ ์ฅ์
ํ๋์จ์ด์ ์ฅ์ ๊ฐ ๋ฐ์๋๊ฑฐ๋ ๋๋ ์๋์ ์ธ ๊ฐ์ ์ผ๋ก ์ธํ์ฌ ๋ ธ๋๊ฐ ๋ค์ด๋๋ฉด ์๋ํธ ๋ ธ๋๋ ์ํฉ์ ๊ฐ์งํ๊ณ ์ฐ๊ฒฐ ์ํ๋ฅผย Connecting ์ผ๋ก ์ ํํ๊ณ ์๋ ๋ ธ๋๊ฐ ๋ค์ ๋ํ๋ ๋๊น์ง disconnected ๋ชจ๋ ์ํ๋ก ๋๊ธฐํฉ๋๋ค.ย ๋ ธ๋ ์ฅ์ ๋ ๋ณดํต ์๋๋ณต๊ตฌ๋๋ ์ผ์์ ์ฅ์ ๋ก ์ทจ๊ธ๋์ง๋ง ์๊ตฌ์ ์ฅ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ์์์ ์ผ๋ก ๋ณต๊ตฌํด์ผ ํฉ๋๋ค.
Secondary ์ ์ผ์์ ์ฅ์
ํ๊น ์ธก์ด ๋ค์ด๋ฌ์ ๊ฒฝ์ฐ ์์ค ์ธก์ disconnected ๋ชจ๋๋ก ์ด์์ ์ง์ํ ์ ์์ง๋ง ๋ธ๋ก์ ๋ํ ์์ ์ฌํญ์ ์๋ ๋ ธ๋๋ก ๋ณต์ ๋์ง ์์ต๋๋ค. ๋ค๋ง ๋ณ๊ฒฝ๋๊ณ ์๋ ๋ธ๋ก์ ๋ํ ์ ๋ณด๋ ๋ด๋ถ์ ์ผ๋ก ์ ์ฅํ์ฌ ์ถํ ์๋ ๋ ธ๋๊ฐ ๋ณต๊ตฌ๋ ์ ๋ณ๊ฒฝ ๋ ๋ธ๋ญ์ ๋ํด ๋๊ธฐํ ํ ์ ์๋๋ก ๋๊ธฐ ํฉ๋๋ค.
Primary ์ ์ผ์์ ์ฅ์
๋ณต์ ์ค Primary ๋ ธ๋๊ฐ ์ ์์ฅ์ ๋ฑ์ ์ํด ์๊ธฐ์น ์๊ฒ ์ค๋จ ๋ ์ ์์ต๋๋ค. ์ด ์ํ๋ฅผ Crashed Primary ์ํ๋ผ๊ณ ํฉ๋๋ค. ์ด ๋ ์๋ํธ ๋ ธ๋๋ Primary ๋ ธ๋๊ฐ ์ฌ๋ผ์ง ๊ฒ์ ๊ฐ์งํ๊ณ disconneted ๋ชจ๋๋ก ์ ํํฉ๋๋ค. Crashed Primary ๋ ธ๋๋ ๋ถํ ๊ณผ์ ์ ๊ฑฐ์ณ ์ฌ๊ธฐ๋ ๋๊ณ ์๋น์ค์ ์ํด ์๋ Secondary ์ญํ ๋ก ๊ธฐ๋ํฉ๋๋ค. ์ฌ๊ธฐ์ Primary ์ญํ ๋ก ์๋ ์น๊ฒฉ์ํค์ง๋ ์์ต๋๋ค. Crashed Primary ๋ ธ๋๋ Secondary ๋ ธ๋์ ์ฐ๊ฒฐ์ ์๋ฆฝํ๊ณ ์ด ๊ณผ์ ์์ ์๋ ธ๋๋ ์๋ก Crashed Primary ์ํ๊ฐ ๋์์์ ์ธ์งํฉ๋๋ค. ์ดํ, ๋๊ธฐํ์ ๊ณผ์ ์ ํตํด ์ ๋ ธ๋์ ์ ํฉ์ฑ์ ์ผ์น ์ํต๋๋ค. ์ฅ์ ๋ ธ๋๊ฐ ๋ณต๊ตฌ๋๋ฉด ๋ ์ด์ ์๋ ๊ฐ์ ์ ํ์ํ์ง ์์ง๋ง ํด๋ฌ์คํฐ ๊ด๋ฆฌ ์์ฉ ํ๋ก๊ทธ๋จ(HA)์ ์ํด ํน์ ๋ ธ๋์ ๋ํ ์น๊ฒฉ์ ํตํด ์ด์์๋น์ค๋ฅผ ์ง์ํ ์ ์์ต๋๋ค.
์์ค ์ธก์ด ๋ค์ด๋ฌ์ ๊ฒฝ์ฐ HA ๋ ์ฐ์ ์ ์ฒด ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํด์ผ ํฉ๋๋ค. ์ ์ฒด ์ฌ๋ถ์ ๋ฐ๋ผ ์ถํ ์์ค ๋ ธ๋๊ฐ ๋ณต๊ตฌ๋์ด ํด๋ฌ์คํฐ์ ํฉ๋ฅ ๋์์ ๋ ์ด๋ ๋ ธ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ๋๊ธฐํ ํ ์ง๊ฐ ํ๊ฐ๋ฆ ๋ฉ๋๋ค.
์ ์ฒด๋ฅผ ํ๋ฉด ๋๊ธฐ๋ ธ๋ ์๋ ๋ ธ๋๊ฐ ์๋ก์ด ์์ค ๋ ธ๋์ ์ญํ ์ ์ํํฉ๋๋ค.
์ ์ฒด๋ฅผ ํ์ง ์๊ณ ๋๊ธฐํ ๊ฒฝ์ฐ ์๋ ์์ค ๋ ธ๋์๋ ๋ ธ๋๊ฐ ๋๊ธฐํ ์์ค๋ ธ๋์ ์ญํ ์ ์ํํฉ๋๋ค.
Primary ๋ ธ๋ ์ฅ์ ์ ๊ฒฝ์ฐย AL ์ ํตํ ํน๋ณํ ๋ฉ์ปค๋์ฆ์ผ๋ก ๋ธ๋ก ๋๋ฐ์ด์ค์ ์ ํฉ์ฑ์ ๋ง์ถ๊ฒ ๋ฉ๋๋ค. ์ด์ ๊ด๋ จํ ์์ธํ ์ค๋ช ์ย ์กํฐ๋นํฐ ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
์๊ตฌ์ ์ฅ์
์๊ตฌ์ ์ด๊ฑฐ๋ ๋ณต๊ตฌ๊ฐ ๋ถ๊ฐ๋ฅํ ์ฅ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ, ๋ค์ ๋จ๊ณ๋ฅผ ์ํํด์ผ ํฉ๋๋ค.
์ฅ์ ๊ฐ ๋ฐ์ํ ํ๋์จ์ด๋ฅผ ์ ์ฌํ ์ฑ๋ฅ ๋ฐ ๋์คํฌ ์ฉ๋์ ํ๋์จ์ด๋ก ๊ต์ฒดํฉ๋๋ค.
ํ๊น์์ ๊ธฐ์กด ๋ณด๋ค ์์ ์ฉ๋์ ๋์คํฌ๋ก ๊ต์ฒดํ ๊ฒฝ์ฐ ๋ณต์ ์ฐ๊ฒฐ์ด ๊ฑฐ๋ถ๋๋ฏ๋ก ์ฃผ์ํด์ผ ํฉ๋๋ค.
๊ธฐ๋ณธ ์์คํ ๊ณผ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ค์นํฉ๋๋ค.
bsr์ ์ค์นํ๊ณ , ๋์ํ๊ณ ์๋ ๋ ธ๋์ /etc/bsr.d/ ์๋์ ์๋ ํ์ผ๋ค๊ณผ /etc/bsr.conf๋ฅผ ๋ณต์ฌํฉ๋๋ค.
๋ฆฌ์์ค ์ฌ๊ตฌ์ฑย ์ ๋ง๊ฒ ์ฌ ๊ตฌ์ฑํ๊ณ , ๋ฆฌ์์ค๋ฅผ ๊ธฐ๋ํ๊ณ ์ด๊ธฐ ๋๊ธฐํ๋ฅผ ์์ํฉ๋๋ค.
๋ง์ผ Primary ๊ฐ ์ด๋ฏธ ๋์ํ๊ณ ์๋ค๋ฉด ์ฐ๊ฒฐ๋๋ฉด์ ์๋์ผ๋ก ๋๊ธฐํ๊ฐ ์์๋๋ฏ๋ก ์๋์ผ๋ก ๋๊ธฐํ๋ฅผ ํ ํ์๋ ์์ต๋๋ค.
์คํ๋ฆฟ ๋ธ๋ ์ธ
์คํ๋ฆฟ ๋ธ๋ ์ธ ๋์ ์ค์
bsr ์ ์คํ๋ฆฟ ๋ธ๋ ์ธ์ ๊ฐ์งํ๋ฉด ์๋์ผ๋ก ์ด์์์๊ฒ ์๋ฆด ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
์คํ๋ฆฟ ๋ธ๋ ์ธ ๋ฐ์ ์๋ฆผ
์คํ๋ฆฟ ๋ธ๋ ์ธ ๋ฐ์ ์ ์ด๋ฅผ ๊ฐ์งํ๊ณ ์ ํ๋ค๋ฉด ์คํ๋ฆฟ ๋ธ๋ ์ธ ํธ๋ค๋ฌ๋ฅผ ๊ตฌ์ฑํ์ฌ ๊ฐ์งํ ์ ์์ต๋๋ค. ๋ค์์ ์ด์ ๋ํ ๋ฆฌ์์ค ๊ตฌ์ฑ ์ ์ ๋๋ค.
resource <resource>
ย ย handlers {
ย ย ย ย split-brainย <handler>;
ย ย ย ย ...
ย ย }
ย ย ...
}
<handler>๋ ์์คํ ์์์ ์คํฌ๋ฆฝํธ์ ๊ฐ์ ์คํ ๊ฐ๋ฅํ ํํ์ ๋ชจ๋๋ก ๊ตฌ์ฑํฉ๋๋ค. ๋ณดํต ๋ฐฐ์นํ์ผ์ด๋ ์ ์คํฌ๋ฆฝํธ์ ๊ฐ์ ์คํ ํํ๋ก ๊ตฌ์ฑํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
์ฃผ์ ํ ์
์คํ๋ฆฟ ๋ธ๋ ์ธ ํธ๋ค๋ฌ์ ๋ฆฌํด ๊ฒฐ๊ณผ๋ bsr ์ปค๋ ์์ง๊ณผ ๋๊ธฐ์ ์ผ๋ก ์ฐ๊ณ๋๊ธฐ ๋๋ฌธ์ ํธ๋ค๋ฌ์ ์คํ ๊ฒฐ๊ณผ๊ฐ ๋ฆฌํด๋์ง ์์ ๊ฒฝ์ฐ ์ปค๋ ์์ง์ ์ํฅ์ ์ค ์ ์์ต๋๋ค. ๋ณต์กํ์ง ์์ ๋จ์ํ ์คํฌ๋ฆฝํธ๋ก ๊ตฌ์ฑํ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
์คํ๋ฆฟ ๋ธ๋ ์ธ ํธ๋ค๋ฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ ๋์ด์์ต๋๋ค.ย ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ํธ๋ค๋ฌ ์๋น์ค๋ฅผ ํ์ฑํํ ์ ์์ต๋๋ค.
bsrcon /handler_use 1
์คํ๋ฆฟ ๋ธ๋ ์ธ ์ํ ํ์ธ
์คํ๋ฆฟ ๋ธ๋ ์ธ์ด ๋ฐ์ํ์ ๋์ ์ํ ์ถ๋ ฅ ๊ฒฐ๊ณผ ์ ๋๋ค.
C:\Users\Administrator>bsrsetup status r0 --verbose --statistic
r0 node-id:0 role:Primary suspended:no
write-ordering:drain req-pending:0
volume:0 minor:2 disk:UpToDate
size:10467328 read:29847120 written:3029330 al-writes:260 bm-writes:0 upper-pending:0 lower-pending:0
al-suspended:no al-pending-changes:0 al-used:0 accelbuf-used:0 blocked:no
D3W2K22BSRAG-002 node-id:1 connection:StandAlone error:split-brain role:Unknown congested:no
volume:0 replication:Off peer-disk:DUnknown resync-suspended:no
received:0 sent:11803912 out-of-sync:329892 pending:0 unacked:0
D3W2K22BSRAG-003 node-id:2 connection:Connected role:Secondary congested:no
volume:0 replication:Established peer-disk:UpToDate resync-suspended:no
received:0 sent:16247308 out-of-sync:0 pending:0 unacked:0
ย
์๋ ๋ณต๊ตฌ
๋ณต์ ์ฐ๊ฒฐ ๋จ์ ํ ์ ๋ ธ๋๊ฐ Primary ์ญํ ์ด์๋ค๋ ๊ฒ์ ๊ฐ์งํ๋ค๋ฉดย ์๋ ๋ ธ๋์ย ์ฌ ์ฐ๊ฒฐํ๋ ์์ ์ย ์คํ๋ฆฟ ๋ธ๋ ์ธ(Split-brain)์ผ๋ก ํ๋จํ๊ณ ์ฆ์ ๋ณต์ ์ฐ๊ฒฐ์ ๋์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ก๊ทธ์ ๋ค์๊ณผ ๊ฐ์ ๋ฉ์์ง๋ฅผ ๋จ๊น๋๋ค.
Split-Brain detected, dropping connection!ย
ํ๋์ ๋ ธ๋์์ย ์คํ๋ฆฟ ๋ธ๋ ์ธ์ด ๊ฐ์ง๋๋ฉดย ๋ฆฌ์์ค๋ย StandAlone ์ํ๊ฐ ๋ฉ๋๋ค. ์ ๋ ธ๋๊ฐ ๋์์ย ์คํ๋ฆฟ ๋ธ๋ ์ธ์ ๊ฐ์งํ๋ค๋ฉด ์ ๋ ธ๋ ๋ชจ๋ StandAlone ์ํ๊ฐ ๋์ง๋ง, ํ ๋ ธ๋์์ย ์คํ๋ฆฟ ๋ธ๋ ์ธ์ ๊ฐ์งํ๊ธฐ ์ ์ ์๋ ๋ ธ๋๊ฐ ์ฐ๊ฒฐ์ ๋จผ์ ๋๊ฒ ๋๋ฉด SB๋ฅผ ๊ฐ์งํ์ง ๋ชปํ ์ฑ ๋จ์ง Connecting ์ํ๋ก ์ ์งํฉ๋๋ค.
์คํ๋ฆฟ ๋ธ๋ ์ธ์ ๋ณต๊ตฌํ๊ธฐ ์ํด์ ์คํ๋ฆฟ ๋ธ๋ ์ธย ์๋ ๋ณต๊ตฌ ๊ตฌ์ฑ์ด ๋์ด ์์ง ์๋ ํ, ๋ณ๊ฒฝ์ฌํญ์ ํ๊ธฐํ ๋ ธ๋(victim)๋ฅผ ๋จผ์ ์ ํํ๊ณ ๋ค์๊ณผ ๊ฐ์ ์ ์ฐจ๋ฅผ ํตํด ์๋์ผ๋ก ๋ณต๊ตฌํด์ผ ํฉ๋๋ค.
๋จผ์ ์ ๋ ธ๋์์ ๋ค์์ ๋ช ๋ น์ ํตํด StandAlone ์ํ๋ก ๋ง๋ญ๋๋ค.
bsradm disconnect <resource>
ํ๊ธฐํ ๋ ธ๋(victim)์์ ์๋ ๋ช ๋ น์ ์ํํฉ๋๋ค.ย
bsradm secondary <resource>
bsradm connect --discard-my-data <resource>
์ด์ ๋ ธ๋(survivor) ์์ ์ฐ๊ฒฐํฉ๋๋ค. ๋ ธ๋๊ฐ ์ด๋ฏธ Connecting ์ํ์๋ค๋ฉด ์๋์ผ๋ก ์ฐ๊ฒฐ๋๊ธฐ ๋๋ฌธ์ ์ด ๋จ๊ณ๋ฅผ ์๋ตํ ์ ์์ต๋๋ค.
bsradm connect <resource>
์ ์์ ์ผ๋ก ์ฐ๊ฒฐ๋๋ฉดย victim์ ๋ณต์ ์ํ๋ ์ฆ์ SyncTarget์ผ๋ก ๋ณ๊ฒฝ๋๊ณ , ๋ ธ๋ ๊ฐ์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ ๋ค์ด survivor ๋ ธ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ๋๊ธฐํ ๋ฉ๋๋ค.
์คํ๋ฆฟ ๋ธ๋ ์ธ์ ํ๊ธฐ ๋ ธ๋(victim)์ ๋ฐ์ดํฐ๋ ์ ์ฒด ๋๋ฐ์ด์ค ์ฐจ์์์ ๋๊ธฐํ๊ฐ ์ด๋ฃจ์ด์ง์ง ์์ต๋๋ค. ๋จ์ง victim์ ์์ ์ฌํญ์ ๋กค๋ฐฑํ๊ณ , ๋ชจ๋ ์์ ์ฌํญ์ ๋ํดย ์คํ๋ฆฟ ๋ธ๋ ์ธย survivor์์ victim๋ ธ๋๋ก ์ ํ๋ฉ๋๋ค. ์ฆ ๋ณ๊ฒฝ ๋ถ์ ๋ํด์๋ง ๋๊ธฐํ๊ฐ ์ด๋ฃจ์ด ์ง๋๋ค.
์ฌ๋๊ธฐํ๊ฐ ์๋ฃ๋๋ฉดย ์คํ๋ฆฟ ๋ธ๋ ์ธ์ ํด๊ฒฐ๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ๋ฉฐ, ๋ ๋ ธ๋๋ ๋ค์ย ์์ ํ ์ผ์น๋ ์ด์คํ ๋ณต์ ์ ์ฅ ์์คํ ์ผ๋ก ๋ณต๊ตฌ๋ฉ๋๋ค.ย
๋ค์ค ์คํ๋ฆฟ ๋ธ๋ ์ธ
1:N ๋ณต์ ํ๊ฒฝ์์ ๋ ธ๋๋ค ๊ฐ์ ์คํ๋ฆฟ ๋ธ๋ ์ธ์ด ๋ค์ค์ผ๋ก ๋ฐ์๋ ์ ์์ต๋๋ค.ย
์๋ฅผ ๋ค์ด A-B-C ์ 1:2 ๋ณต์ ๊ตฌ์ฑ์ ๊ฒฝ์ฐ ๊ฐ ๋ ธ๋์ ์ฐ๊ฒฐ์ ๋จ์ ํ๊ณ ๋ชจ๋ ๋ ธ๋์ ๋ฆฌ์์ค๋ฅผ ์น๊ฒฉ ํย ๋ณผ๋ฅจ์ I/O ๋ฅผ ์ํํฉ๋๋ค. ์ด ํ ๊ฐ ๋ ธ๋๋ฅผ ๊ฐ๋ฑํ์ฌ ์ฌ ์ฐ๊ฒฐํ๋ฉด ๊ฐ๊ฐ์ ๋ ธ๋๊ฐ์ ์คํ๋ฆฟ ๋ธ๋ ์ธ์ด ๋ฐ์๋ฉ๋๋ค. ์ด ๋ ์คํ๋ฆฟ ๋ธ๋ ์ธ์ A-B ๋ ธ๋๊ฐ, B-C ๋ ธ๋๊ฐ์ ๋๋ A-C ๋ ธ๋ ๊ฐ์ ์คํ๋ฆฟ ๋ธ๋ ์ธ ์ํฉ์ด๋ฉฐ ํด๋ฌ์คํฐ ๋ด ๋ ธ๋๊ฐ์ SB๊ฐ ๋ค์ค์ผ๋ก ๋ฐ์๋ ์ํฉ์ ๋๋ค. ์ด๋ด ๊ฒฝ์ฐ ๋ค์ค SB์ ํด๊ฒฐ์ ๋ ธ๋๋ค ๊ฐ์ ๊ฐ๋ณ ์ฐ๊ฒฐ ๊ธฐ์ค์ผ๋ก ๋ค์์ ์ ์ฐจ์ ๋ฐ๋ผ ์์ฐจ์ ์ผ๋ก ํด๊ฒฐํด์ผ ํฉ๋๋ค.
Survival ๋ ธ๋์ Victim ๋ ธ๋๋ฅผ ๊ฒฐ์ ํ๊ณ ๋ชจ๋ ๋ ธ๋์์ disconnect ํ์ฌ StandAlone ์ํ๋ฅผ ๋ง๋ญ๋๋ค.
SB๊ฐ ๋ฐ์ํ ๋ ธ๋๊ฐ์ SB๋ฅผ ํด๊ฒฐํฉ๋๋ค.
Survival ๋ ธ๋๋ย bsrsetup connect [resource]ย [victim node-id] ๋ช ๋ น์ ํตํด Connecting ์ํ๋ก ์ง์
Victim ๋ ธ๋๋ย bsrsetup connect [resource]ย [survival node-id]ย --discard-my-data ๋ช ๋ น์ ํตํด SB ํด๊ฒฐ
SB๊ฐ ํด๊ฒฐ๋๊ณ ๋๋ฉด ์ฐ๊ฒฐ์ด ๋์ง ์์ Victim ๋ ธ๋ ๊ฐ์ ์ฐ๊ฒฐ์ ๋ณต์ํฉ๋๋ค.ย bsrsetup connect [resource]ย [victim node-id]
SB ๋ฅผ ํด๊ฒฐํ์ฌ ์ฐ๊ฒฐ์ ๋ณต์ํ๋ ๋์ค 2์ฐจ SB๊ฐ ๋ฐ์๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค. ์ด๋ด ๊ฒฝ์ฐ ์์ ๋์ผํ ์ ์ฐจ๋ก SB๋ฅผ ํด๊ฒฐํฉ๋๋ค.
์๋ย ๋ณต๊ตฌ
์คํ๋ฆฟ ๋ธ๋ ์ธ์ด ๋ฐ์ํ๋ฉด ๊ด๋ฆฌ์์๊ฒ๋ย ์คํ๋ฆฟ ๋ธ๋ ์ธ ์๋ ๋ณต๊ตฌ(Manual split brain recovery)๊ฐ ๊ถ์ฅ๋์ง๋ง, ๊ฒฝ์ฐ์ ๋ฐ๋ผ์๋ ๊ทธ ๊ณผ์ ์ ์๋ํํ๋ ๊ฒ์ด ์ข์ ์๋ ์์ต๋๋ค.
bsr์ ์คํ๋ฆฟ ๋ธ๋ ์ธ์ ์๋ ๋ณต๊ตฌํ ์ ์๋ ๋ช ๊ฐ์ง ์๊ณ ๋ฆฌ์ฆ์ ์ ๊ณตํฉ๋๋ค.
Younger Primary ๋ ธ๋์ ์์ ๋ถ ํ๊ธฐ:ย ๋คํธ์ํฌ ์ฐ๊ฒฐ์ดย ๋ค์ ๋ณต๊ตฌย ๋๊ณ ์คํ๋ฆฟ ๋ธ๋ ์ธ์ด ๊ฐ์ง๋๋ฉด, ์ต๊ทผ Primary ์ญํ ๋ก ์ ํํ ๋ ธ๋์ ์์ ๋ถ์ ํ๊ธฐํฉ๋๋ค.
Older Primary ๋ ธ๋์ ์์ ๋ถ ํ๊ธฐ: ๋คํธ์ํฌ ์ฐ๊ฒฐ์ดย ๋ค์ ๋ณต๊ตฌย ๋๊ณ ์คํ๋ฆฟ ๋ธ๋ ์ธ์ด ๊ฐ์ง๋๋ฉด, ์ฒ์ Primaryย ์ญํ ์ ๊ฐ์ก๋ ๋ ธ๋์ ์์ ๋ถ์ ํ๊ธฐํฉ๋๋ค.
์์ ๋ด์ฉ์ด ์ ์ Primary ๋ฐ์ดํฐ ํ๊ธฐ - ์์ชฝ ๋ ธ๋์์ ์์ ๋ด์ฉ์ด ๋ ์ ์ ์ชฝ ๋ ธ๋๋ฅผ ํ์ธํ์ฌ ๊ทธ ๋ ธ๋์ ๋ด์ฉ์ ํ๊ธฐํฉ๋๋ค.
๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ฌํญ์ด ์๋ ํธ์คํธ๋ก ๋ณต๊ตฌ - ์คํ๋ฆฟ ๋ธ๋ ์ธ ๋์ ๋ฐ์ดํฐ์ ์์ ์ด๋ ฅ์ด ์๋ ๋ ธ๋๊ฐ ์๋ค๋ฉด ํด๋น ๋ ธ๋๋ก ๋ณต๊ตฌ์ํค๊ณ ์คํ๋ฆฟ ๋ธ๋ ์ธ ํด๊ฒฐ์ ์ ์ธํฉ๋๋ค. ํ์ง๋ง ์ด๊ฒ์ ์์ฃผ ๋๋ฌธ ๊ฒฝ์ฐ์ ๋๋ค. ์์ชฝ ๋ ธ๋์์ ๋ฆฌ์์ค ๋ณผ๋ฅจ์ ํ์ผ์์คํ ์ ๋ง์ดํธ(์ฌ์ง์ด ์ฝ๊ธฐ์ ์ฉ)๋งย ํ๋๋ผ๋ ๋ณผ๋ฅจ ๋ด์ฉ์ ์์ ์ฌํญ์ด ๋ฐ์ํ๊ธฐ ์ฌ์ฐ๋ฉฐ, ๊ทธ ํ์๋ ์ด ๋ฐฉ์์ผ๋ก ์๋ ๋ณต๊ตฌ๋ ๊ฐ๋ฅ์ฑ์ ์๋ค๊ณ ๋ด์ผ ํฉ๋๋ค.
์๋ ์คํ๋ฆฟ ๋ธ๋ ์ธ ๋ณต๊ตฌ๋ฅผ ์ฌ์ฉํ ์ง ์ฌ๋ถ๋ ๋์ฒด๋ก ์์ฉํ๋ก๊ทธ๋จ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ์๋ฅผ ๋ค์ด bsr์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํธ์คํ ํ๋ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด๋ณด๋ฉด ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ์ฐ๊ด๋ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ์น ์์ฉํ๋ก๊ทธ๋จ์์๋ ํ๊ธฐ ํด์ผํ ๋ณ๊ฒฝ์ฌํญ์ด ๊ฑฐ์ ์์ด์ ์๋ ๋ณต๊ตฌ๊ฐ ๊ด์ฐฎ์ ์๋จ์ด ๋ ์ ์์ง๋งย ๋ฐ๋๋ก ๊ธ์ต ๋ฐ์ดํฐ ์ฒ๋ผ ๊ทธ ์ด๋ ํ ๋ฐ์ดํฐ๋ผ๋ ํจ๋ถ๋ก ํ๊ธฐ๊ฐ ํ๋ ์ฑ๊ฒฉ์ ๊ฐ์ง๊ณ ์๋ ํ๊ฒฝ์์๋ ์ฌ๋์ด ์ง์ ์๋ ๋ณต๊ตฌ๋ฅผ ํด์ผ ํ ๊ฒ์ ๋๋ค. ์๋ ์คํ๋ฆฟ ๋ธ๋ ์ธ ๋ณต๊ตฌ๋ฅผ ํ์ฑํํ๊ธฐ ์ ์ ์์ฉํ๋ก๊ทธ๋จ์ ์๊ตฌ์ฌํญ์ ์ ์คํ๊ฒ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
์๋ ๋ณต๊ตฌ ์ ์ฑ
์๋ split-brain ๋ณต๊ตฌ ์ ์ฑ ์ ๊ตฌ์ฑํ๊ธฐ ์ํด์๋ bsr์ด ์ ๊ณตํ๋ ๋ช ๊ฐ์ง ๊ตฌ์ฑ ์ต์ ์ ์ดํดํด์ผ ํฉ๋๋ค. bsr์ SB ๊ฐ์ง ์ Primary๋ก ์์๋ ๋ ธ๋์ ์์ ๋ฐ๋ผ ๋ณต๊ตฌ ์ ์ฑ ์ ๊ตฌ๋ถํ๊ณ , ์ด์ ๋ํ ์๋ ๋ณต๊ตฌ ์ ์ฑ ์ ๋ฆฌ์์ค์ <net> ์น์ ์ ๋ค์๊ณผ ๊ฐ์ ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑํฉ๋๋ค.
after-sb-0pri. SB๊ฐ ๋ฐ์๋ ์์ ์, ์ด๋ค ๋ ธ๋๋ Primary ์ญํ ์ ์์ง ์์ ์ํฉ์ผ๋ก ๋ณต๊ตฌ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.ย
disconnectย : ์๋์ผ๋ก ๋ณต๊ตฌํ์ง ์์ต๋๋ค. ๊ตฌ์ฑ๋ SB ํธ๋ค๋ฌ ์คํฌ๋ฆฝํธ๊ฐ ์๋ค๋ฉด ์ด๋ฅผ ํธ์ถํ๊ณ , disconnected ๋ชจ๋๋ฅผ ์ง์ํฉ๋๋ค.
discard-younger-primaryย : ๋ง์ง๋ง์ผ๋ก Primary ์ญํ ์ ํ๋ค๊ณ ์ถ์ ๋๋ ๋ ธ๋์์ ์์ ์ฌํญ์ ์ทจ์ํ๊ณ ๋๋๋ฆฝ๋๋ค. younger primary๋ฅผ ํ๋จํ ์ ์๋ค๋ฉดย discard-zero-changes,ย discard-least-changes ์์๋ก ๋์ํ๊ฒ ๋ฉ๋๋ค.ย
discard-least-changesย : ์ต์์ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ฐ์ํ ๋ ธ๋์์ย ์์ ์ฌํญ์ ์ทจ์ํ๊ณ ๋๋๋ฆฝ๋๋ค.
discard-zero-changesย : ๋ณ๊ฒฝ ์ฌํญ์ด ๋ฐ์ํ์ง ์์ ๋ ธ๋๊ฐ ์๋ค๋ฉด, ๋ค๋ฅธ ๋ ธ๋์ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํฉ๋๋ค.
after-sb-1pri.ย SB๊ฐ ๋ฐ์๋ ์์ ์, ํ๋์ ๋ ธ๋๊ฐ Primary ์ญํ ์ ์๋ย ์ํฉ์ผ๋ก ๋ณต๊ตฌ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.ย
disconnectย :ย ์๋์ผ๋ก ๋ณต๊ตฌํ์ง ์์ต๋๋ค. ๊ตฌ์ฑ๋ SB ํธ๋ค๋ฌ ์คํฌ๋ฆฝํธ๊ฐ ์๋ค๋ฉด ์ด๋ฅผ ํธ์ถํ๊ณ , disconnected ๋ชจ๋๋ฅผ ์ง์ํฉ๋๋ค.
consensusย : SB victim์ด ์ ํ๋ ์ ์๋ค๋ฉด ์๋์ผ๋ก ํด๊ฒฐํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด,ย disconnect์ฒ๋ผ ๋์ํฉ๋๋ค.
call-pri-lost-after-sbย :ย SB victim์ด ์ ํ๋ ์ ์๋ค๋ฉด, victim ๋ ธ๋์์ย pri-lost-after-sb ํธ๋ค๋ฌ๋ฅผ ํธ์ถํฉ๋๋ค. ์ด ํธ๋ค๋ฌ๋ <
handlers
> ์น์ ์ ๊ตฌ์ฑ๋์ด์ผ ํ๊ณ , ํด๋ฌ์คํฐ์์ ๋ ธ๋๊ฐ ๊ฐ์ ๋ก ์ ๊ฑฐ๋ฉ๋๋ค.discard-secondaryย : ํ์ฌ Secondary ์ญํ ์ ์๋ ๋ ธ๋๋ฅผ SB victim์ผ๋ก ๋ง๋ญ๋๋ค.
after-sb-2pri.ย SB๊ฐ ๋ฐ๊ฒฌ๋ ์์ ์ ์ ๋ ธ๋์์ Primary ์ญํ ์ ์๋ ์ํฉ์ผ๋ก,ย ๋ณต๊ตฌ ๋ฐฉ๋ฒ์ disconnect ๋ฅผ ํตํ ์๋ ๋ณต๊ตฌ๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ตฌ์ฑ ํ์ผ ์์ฑ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
resource <resource> {
ย ย ย ย handlers {
ย ย ย ย ย ย ย ย split-brainย "C:/Tools/script/split-brain.bat";
ย ย ย ย ย ย ย ย ...
ย ย ย ย }
ย ย ย ย net {
ย ย ย ย ย ย ย ย after-sb-0pri discard-zero-changes;
ย ย ย ย ย ย ย ย after-sb-1pri discard-secondary;
ย ย ย ย ย ย ย ย ...
ย ย ย ย }
ย ย ย ย ...
} |
SB ํธ๋ค๋ฌ์ ๋ฐฐ์น ํ์ผ ๊ตฌ์ฑ์์ ์ฌ์ฉํ๋ ํ์ผ๋ค์ ์ ๋ ๊ฒฝ๋ก๋ก ๊ธฐ์ ๋์ด์ผ ํฉ๋๋ค.
ย
SB ํด๊ฒฐ(๋ณต๊ตฌ) ๋๊ธฐํ ์ค ์ฌ ์ฐ๊ฒฐ์ด ๋ฐ์ํ ๊ฒฝ์ฐ ๋ค์ SB ๋ฐ์ ์ํฉ์ผ๋ก ๋์๊ฐ๋๋ค. SB ํด๊ฒฐ์ด ์๋ฃ๋์ง ์์์ ์์ง์ ์์ธก ๋ ธ๋๊ฐ SB ์ํ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
bsr 1.7 ์ดํ ๋ถํฐ๋ ์ด ๋ถ๋ถ์ ๋ณ๊ฒฝํ์ฌ ํ ๋ฒ SB ํด๊ฒฐ์ด ์๋๋๋ฉด ์ฌ ์ฐ๊ฒฐ์ด ๋๋๋ผ๋ ์ดํ SB ํด๊ฒฐ์ด ์๋ฃ๋ ๋ ๊น์ง SB ํด๊ฒฐ์ ์๋์ผ๋ก ์ํํ๋๋ก ํฉ๋๋ค.
ย
์ฅ์น ์ฐธ์กฐ ์ค๋ฅ
bsr ์ ๋ด๋ถ์ ์ผ๋ก ๋ฐฑํน ๋๋ฐ์ด์ค์ ๋ํ ์ฐธ์กฐ ํ์๋ฅผ ์ ์ง ํฉ๋๋ค. ์ฐธ์กฐ ํ์๋ ํน์ ํ๋ก์ธ์ค๊ฐ ์ฅ์น๋ฅผ ์ด์์ ๋ ์ฆ๊ฐํ๊ณ ๋ซ์ผ๋ฉด ๊ฐ์๋๋๋ฐ ์ด๋ฅผ ํตํด ์ฅ์น์ ๋ํ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌํ๊ณ ๋ฆฌ์์ค๋ฅผ ์ ๋ฆฌํ๋ ์์ ์ ํน์ ํ๋ก์ธ์ค๊ฐ ์ฅ์น ๋ณผ๋ฅจ์ ๋ ์ด์ ์ฐธ์กฐํ์ง ์๋๋ก ๊ฐ์ ํฉ๋๋ค.
bsr ๋ฆฌ์์ค๋ฅผ ๊ตฌ์ฑํ๋ ์ด๊ธฐ ๋๋ ์ฅ์น๋ฅผ umount ํ๋ ๊ณผ์ ์์ ์ฐธ์กฐํ์๊ฐ 0 ์ด ์๋ ๊ฒฝ์ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด๋ค ํ๋ก์ธ์ค๊ฐ ์ฅ์น๋ฅผ ์ด์๋ค๊ฐ ๋ซ์ง ์์๊ธฐ ๋๋ฌธ์ bsr ์ ์ด๋ฅผ ๊ฐ์งํ๊ณ ์ค๋ฅ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
ย
๋ฆฌ์์ค ๊ตฌ์ฑ ์ค๋ฅ
bsr ๋ฆฌ์์ค์ backing device ๋ฅผ ์ด๋ค ํ๋ก์ธ์ค๊ฐ ์ฐธ์กฐํ๊ณ ์๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๋ก ์ฅ์น attach์ ์คํจํ๊ฒ ๋ ๊ฒ ์ ๋๋ค. 16 ์ค๋ฅ ์ฝ๋๋ EBUSY ์ ํด๋นํฉ๋๋ค.
[open_backing_dev] [DRIVER:140] bsr_erro<3> bsr bsr0/0 bsr0: Failed to open("/dev/sdb1") backing device with -16
ย
down ์ค๋ฅ
๋ฆฌ์์ค down ์์ ์ ์ฅ์น์ ๋ํ ์ฐธ์กฐํ์๊ฐ 0์ด ์๋๋ผ๋ฉด down ์ ์คํจ ํ๊ณ ๋ค์๊ณผ ๊ฐ์ ๋ก๊ทธ๊ฐ ์ถ๋ ฅ ๋ฉ๋๋ค.
bsr volume(r0) Secondary failed (error=0: State change failed: (-12) Device is held open by someone
ย
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด bsr ๋ณผ๋ฅจ์ ์ฐธ์กฐํ๊ณ ์๋ ํ๋ก์ธ์ค๋ฅผ ํ์ ํ์ฌ ํด๋น ๋ชจ๋์ ๊ฐ์ ์ค๋จ(fuser -ck) ์ํค๋ ๋ฑ ๋ณผ๋ฅจ์ ๋ํ ์ฐธ์กฐํ์๊ฐ ๊ฐ์ ๋๋๋ก ์กฐ์น ํด์ผ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, Ubuntu 20.04 ์ด์์์ multipath-tools(0.8.3)๋ multipath.conf ์ ๋ค์๊ณผ ๊ฐ์ ์์ธ ์ฒ๋ฆฌ๋ฅผ ํตํด bsr ์ฅ์น์ ๋ํ ์ฐธ์กฐ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด multipath-tools ๋ก ์ธํด bsr ๋ณผ๋ฅจ์ด ์ง์์ ์ผ๋ก ์ฐธ์กฐ๋์ด down ์ ํ ์ ์๊ฒ ๋ฉ๋๋ค.
blacklist {
devnode "^(sd)[a-z]"
devnode "^(bsr)[0-9]"
}
ย
์ ํ ์ญ์ ์คํจ
์ ํ ์ญ์ ๊ฐ ์คํจํ ๊ฒฝ์ฐ ๋ค์ ์์์ ๋ฐ๋ผ ์๋์ผ๋ก ์ญ์ ํ ์ ์์ต๋๋ค.
์ปค๋๋ชจ๋ ์ญ์
bsrvflt.sys ์ญ์
HKLM, System\CurrentControlSet\Control\Class\{71A27CDD-812A-11D0-BEC7-08002BE2092F}
์UpperFilters
ํค์ ๊ฐ ๋ด์ฉ ์ค bsrvflt ๋ฌธ์์ด ์ ๊ฑฐ ํ ๋ ์ง์คํธ๋ฆฌ ์ ์ฅHKLM, System\CurrentControlSet\Services\
bsrvflt ํค ์ญ์
bsrfsflt.sys ์ญ์
HKLM, System\CurrentControlSet\Services\
bsrfsflt ํค ์ญ์
์์ฉ ์๋น์ค ์ญ์
sc stop bsr
sc delete bsr
ํ๊ฒฝ๋ณ์ ์ญ์
BSR_PATH, CYGWIN ์์คํ ํ๊ฒฝ๋ณ์ ์ญ์
Program Files\bsr ๊ฒฝ๋ก์ ์ค์น๋ ํ์ผ๋ค ์ญ์
๋ฆฌ๋ถํ
ย