LINSTOR ์Šคํ† ๋ฆฌ์ง€ ๋ฐ OpenNebula์™€์˜ ํ†ตํ•ฉ

LINSTOR ์Šคํ† ๋ฆฌ์ง€ ๋ฐ OpenNebula์™€์˜ ํ†ตํ•ฉ

์–ผ๋งˆ ์ „ LINBIT ์ง์›๋“ค์€ ์ƒˆ๋กœ์šด SDS ์†”๋ฃจ์…˜์ธ Linstor๋ฅผ ์„ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. DRBD, LVM, ZFS ๋“ฑ ๊ฒ€์ฆ๋œ ๊ธฐ์ˆ ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์™„์ „ ๋ฌด๋ฃŒ ์Šคํ† ๋ฆฌ์ง€์ž…๋‹ˆ๋‹ค. Linstor๋Š” ๋‹จ์ˆœ์„ฑ๊ณผ ์ž˜ ์„ค๊ณ„๋œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ์•ˆ์ •์„ฑ๊ณผ ๋งค์šฐ ์ธ์ƒ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜ ์ €๋Š” ์ด์— ๋Œ€ํ•ด ์ข€ ๋” ์ž์„ธํžˆ ์ด์•ผ๊ธฐํ•˜๊ณ  ์ด ๋ชฉ์ ์„ ์œ„ํ•ด ํŠน๋ณ„ํžˆ ๊ฐœ๋ฐœํ•œ ์ƒˆ๋กœ์šด ๋“œ๋ผ์ด๋ฒ„์ธ linstor_un์„ ์‚ฌ์šฉํ•˜์—ฌ OpenNebula์™€ ์–ผ๋งˆ๋‚˜ ์‰ฝ๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋ณด์—ฌ๋“œ๋ฆฌ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

Linstor๋ฅผ OpenNebula์™€ ๊ฒฐํ•ฉํ•˜๋ฉด ์ž์ฒด ์ธํ”„๋ผ์— ์‰ฝ๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ๋น ๋ฅด๊ณ  ์•ˆ์ •์ ์ธ ํด๋ผ์šฐ๋“œ๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฆฐ์Šคํ„ฐ ์•„ํ‚คํ…์ฒ˜

Linstor๋Š” ๊ทธ ์ž์ฒด๋กœ ํŒŒ์ผ ์‹œ์Šคํ…œ๋„ ๋ธ”๋ก ์Šคํ† ๋ฆฌ์ง€๋„ ์•„๋‹™๋‹ˆ๋‹ค. Linstor๋Š” LVM ๋˜๋Š” ZFS์—์„œ ๋ณผ๋ฅจ ์ƒ์„ฑ์„ ์ž๋™ํ™”ํ•˜๊ณ  DRBD9๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์ œํ•  ์ˆ˜ ์žˆ๋Š” ์ถ”์ƒํ™” ๊ณ„์ธต์„ ์ œ๊ณตํ•˜๋Š” ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ์ž…๋‹ˆ๋‹ค.

๊ณ ์ • ๊ด€๋…

๊ทธ๋Ÿฐ๋ฐ ์ž ๊น, DRBD? โ€” ์ž๋™ํ™”ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

DRBD8์ด ํฐ ์ธ๊ธฐ๋ฅผ ๋Œ์—ˆ๋˜ ๊ณผ๊ฑฐ๋ฅผ ๋– ์˜ฌ๋ ค๋ณด์ž. ํ‘œ์ค€ ์‚ฌ์šฉ์—๋Š” ํ•˜๋‚˜์˜ ํฐ ๋ธ”๋ก ์žฅ์น˜๋ฅผ ๋งŒ๋“ค๊ณ  ๋™์ผํ•œ LVM์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž‘์€ ์กฐ๊ฐ์œผ๋กœ ์ž๋ฅด๋Š” ์ž‘์—…์ด ํฌํ•จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ผ์ข…์˜ mdadm RAID-1์ด์ง€๋งŒ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•œ ๋ณต์ œ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์ ‘๊ทผ ๋ฐฉ์‹์—๋Š” ๋‹จ์ ์ด ์žˆ์œผ๋ฏ€๋กœ DRBD9์˜ ์ถœํ˜„์œผ๋กœ ์Šคํ† ๋ฆฌ์ง€ ์„ค๊ณ„ ์›์น™์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๊ฐ ๊ฐ€์ƒ ๋จธ์‹ ์— ๋Œ€ํ•ด ๋ณ„๋„์˜ DRBD ์žฅ์น˜๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

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

๋ฆฌ์†Œ์Šค ๋ฐ ๋ฐฑ์—”๋“œ

์ƒˆ๋กœ์šด ๋ธ”๋ก ์žฅ์น˜๋ฅผ ์ƒ์„ฑํ•  ๋•Œ Linstor๋Š” ํด๋Ÿฌ์Šคํ„ฐ์˜ ์—ฌ๋Ÿฌ ๋…ธ๋“œ์— ํ•„์š”ํ•œ ์ˆ˜์˜ ๋ณต์ œ๋ณธ์„ ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ๊ฐ ๋ณต์ œ๋ณธ์„ DRBD ๋ฆฌ์†Œ์Šค๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

๋ฆฌ์†Œ์Šค์—๋Š” ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ ์ž์› โ€” LVM ๋˜๋Š” ZFS ํ’€์˜ ๋…ธ๋“œ์— ์žˆ๋Š” DRBD ์žฅ์น˜์ž…๋‹ˆ๋‹ค.
    ํ˜„์žฌ ์—ฌ๋Ÿฌ ๋ฐฑ์—”๋“œ์— ๋Œ€ํ•œ ์ง€์›์ด ์žˆ์œผ๋ฉฐ ๊ทธ ์ˆ˜๋Š” ์ง€์†์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. LVM, ThinLVM ๋ฐ ZFS๊ฐ€ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ๋‘ ๊ฐœ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์Šค๋ƒ…์ƒท์„ ์ƒ์„ฑํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋””์Šคํฌ ์—†๋Š” ๋ฆฌ์†Œ์Šค โ€” ๋ฐฑ์—”๋“œ ์—†์ด ๋…ธ๋“œ์— ๋ฐฐ์น˜๋˜์ง€๋งŒ ์ผ๋ฐ˜ ๋ธ”๋ก ์žฅ์น˜๋กœ ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์žˆ๋Š” DRBD ์žฅ์น˜์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์ฝ๊ธฐ/์“ฐ๊ธฐ ์ž‘์—…์€ ๋ฐ์ดํ„ฐ ๋ฆฌ์†Œ์Šค๋กœ ๋ฆฌ๋””๋ ‰์…˜๋ฉ๋‹ˆ๋‹ค. ๋””์Šคํฌ ์—†๋Š” ๋ฆฌ์†Œ์Šค์— ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์•„๋‚ ๋กœ๊ทธ๋Š” iSCSI LUN์ž…๋‹ˆ๋‹ค.

๊ฐ DRBD ๋ฆฌ์†Œ์Šค๋Š” ์ตœ๋Œ€ 8๊ฐœ์˜ ๋ณต์ œ๋ณธ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ทธ ์ค‘ ํ•˜๋‚˜๋งŒ ํ™œ์„ฑํ™”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ, ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๋„ ๊ทธ๋Ÿด ๊ฑฐ์˜ˆ์š” ์ค‘-๊ณ ๋“ฑ๋ถ€ ์ตœ์†Œํ•œ ํ•˜๋‚˜์˜ Primary๊ฐ€ ์žˆ๋Š” ํ•œ ํ•ด๋‹น ์‚ฌ์šฉ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋‹จ์ˆœํžˆ ์„œ๋กœ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์ œํ•  ๋ฟ์ž…๋‹ˆ๋‹ค.

DRBD ์žฅ์น˜๋ฅผ ์‹œ์Šคํ…œ์— ์„ค์น˜ํ•˜๋ฉด ์ž๋™์œผ๋กœ ๊ธฐ๋ณธ, ๋”ฐ๋ผ์„œ DRBD ์šฉ์–ด๋กœ ๋””์Šคํฌ ์—†๋Š” ๋ฆฌ์†Œ์Šค๋„ ๊ธฐ๋ณธ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์™œ Linstor๊ฐ€ ํ•„์š”ํ•œ๊ฐ€์š”?

๋ฆฌ์†Œ์Šค ์ง‘์•ฝ์ ์ธ ๋ชจ๋“  ์ž‘์—…์„ ์ปค๋„์— ์œ„์ž„ํ•จ์œผ๋กœ์จ Linstor๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ DRBD ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ์„ ์‰ฝ๊ฒŒ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋ฐ˜ Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค.
๋˜ํ•œ ๊ทธ๊ฐ€ ์ƒ์„ฑํ•œ ๊ฐ ๋ฆฌ์†Œ์Šค๋Š” ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ ๋ฐ ๊ธฐํƒ€ DRBD ๋ฆฌ์†Œ์Šค์˜ ์ƒํƒœ์— ๊ด€๊ณ„์—†์ด ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๋…๋ฆฝ์ ์ธ DRBD ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

Linstor๋Š” ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ๊ตฌ์„ฑ ์š”์†Œ๋กœ๋งŒ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  • Linstor ์ปจํŠธ๋กค๋Ÿฌ - ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ API๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฉ”์ธ ์ปจํŠธ๋กค๋Ÿฌ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ์œ„์„ฑ๊ณผ ํ†ต์‹ ํ•˜์—ฌ ์—ฌ์œ  ๊ณต๊ฐ„์„ ํ™•์ธํ•˜๊ณ  ์ƒˆ ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑ ๋ฐ ์‚ญ์ œํ•˜๋Š” ์ž‘์—…์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๋‹จ์ผ ์ธ์Šคํ„ด์Šค์—์„œ ์‹คํ–‰๋˜๋ฉฐ ๋‚ด๋ถ€(H2) ๋˜๋Š” ์™ธ๋ถ€(PostgreSQL, MySQL, MariaDB)์ผ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • Linstor ์œ„์„ฑ โ€” ๋ชจ๋“  ์Šคํ† ๋ฆฌ์ง€ ๋…ธ๋“œ์— ์„ค์น˜๋˜์–ด ์ปจํŠธ๋กค๋Ÿฌ์— ์—ฌ์œ  ๊ณต๊ฐ„์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ณ , ์ปจํŠธ๋กค๋Ÿฌ๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ๊ทธ ์œ„์— ์ƒˆ ๋ณผ๋ฅจ๊ณผ DRBD ์žฅ์น˜๋ฅผ ์ƒ์„ฑ ๋ฐ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

Linstor๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•ต์‹ฌ ๊ฐœ๋…์œผ๋กœ ์šด์˜๋ฉ๋‹ˆ๋‹ค.

  • ๋…ธ๋“œ โ€” DRBD ๋ฆฌ์†Œ์Šค๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ์‚ฌ์šฉ๋  ๋ฌผ๋ฆฌ์  ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.
  • ์Šคํ† ๋ฆฌ์ง€ ํ’€ โ€” DRBD ๋ฆฌ์†Œ์Šค๊ฐ€ ์œ„์น˜ํ•  ๋…ธ๋“œ์— ์ƒ์„ฑ๋œ LVM ๋˜๋Š” ZFS ํ’€์ž…๋‹ˆ๋‹ค. ๋””์Šคํฌ ์—†๋Š” ํ’€๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋””์Šคํฌ ์—†๋Š” ๋ฆฌ์†Œ์Šค๋งŒ ์œ„์น˜ํ•˜๋Š” ํ’€์ž…๋‹ˆ๋‹ค.
  • ๋ฆฌ์†Œ์Šค ์ •์˜ โ€” ๋ฆฌ์†Œ์Šค์˜ ์ •์˜๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด๋ฆ„๊ณผ ๋ชจ๋“  ์†์„ฑ์„ ์„ค๋ช…ํ•˜๋Š” ํ”„๋กœํ† ํƒ€์ž…์ž…๋‹ˆ๋‹ค.
  • ๋ณผ๋ฅจ ์ •์˜ โ€” ๋ณผ๋ฅจ ์ •์˜. ๊ฐ ๋ฆฌ์†Œ์Šค๋Š” ์—ฌ๋Ÿฌ ๋ณผ๋ฅจ์œผ๋กœ ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ฐ ๋ณผ๋ฅจ์—๋Š” ํฌ๊ธฐ๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ž์› โ€” ๋ธ”๋ก ์žฅ์น˜์˜ ์ƒ์„ฑ๋œ ์ธ์Šคํ„ด์Šค๋กœ, ๊ฐ ๋ฆฌ์†Œ์Šค๋Š” ํŠน์ • ๋…ธ๋“œ์™€ ์ผ๋ถ€ ์Šคํ† ๋ฆฌ์ง€ ํ’€์— ๋ฐฐ์น˜๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฆฐ์Šคํ„ฐ ์„ค์น˜

Ubuntu๋ฅผ ์‹œ์Šคํ…œ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด... ๊ทธ๋…€๋ฅผ ์œ„ํ•ด ์กด์žฌํ•œ๋‹ค ์ค€๋น„๋œ PPA:

add-apt-repository ppa:linbit/linbit-drbd9-stack
apt-get update

๋˜๋Š” Proxmox์˜ ๊ณต์‹ ์ €์žฅ์†Œ์—์„œ Linstor๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” Debian:

wget -O- https://packages.linbit.com/package-signing-pubkey.asc | apt-key add -
PVERS=5 && echo "deb http://packages.linbit.com/proxmox/ proxmox-$PVERS drbd-9.0" > 
    /etc/apt/sources.list.d/linbit.list
apt-get update

์ œ์–ด ์žฅ์น˜

๋ชจ๋“  ๊ฒƒ์ด ์—ฌ๊ธฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค :

apt-get install linstor-controller linstor-client
systemctl enable linstor-controller
systemctl start linstor-controller

์Šคํ† ๋ฆฌ์ง€ ๋…ธ๋“œ

Linux ์ปค๋„์€ ํ˜„์žฌ ํŠธ๋ฆฌ ๋‚ด ์ปค๋„ ๋ชจ๋“ˆ๊ณผ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. DRBD8, ๋ถˆํ–‰ํžˆ๋„ ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ์—๊ฒŒ ์ ํ•ฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค DRBD9:

apt-get install drbd-dkms

์‹ค์Šต์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด DRBD8๊ฐ€ ์•„๋‹Œ DRBD9 ๋ชจ๋“ˆ์ด ์‹œ์Šคํ…œ์— ๋กœ๋“œ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๋ถ€๋ถ„์˜ ์–ด๋ ค์›€์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋‹คํ–‰ํžˆ๋„ ๋‹ค์Œ์„ ์‹คํ–‰ํ•˜์—ฌ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

modprobe drbd
cat /proc/drbd

๋„ค๊ฐ€ ๋ณธ๋‹ค๋ฉด ๋ฒ„์ „ : 9 - ๋งŒ์•ฝ ๊ทธ๋ ‡๋‹ค๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ๊ดœ์ฐฎ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„์ „ : 8 - ์ด๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Œ์„ ์˜๋ฏธํ•˜๋ฉฐ ์ด์œ ๋ฅผ ์ฐพ์œผ๋ ค๋ฉด ์ถ”๊ฐ€ ์กฐ์น˜๋ฅผ ์ทจํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ์„ค์น˜ํ•ด๋ณด์ž ๋ฆฐ์Šคํ„ฐ ์œ„์„ฑ ะธ drbd-utils:

apt-get install linstor-satellite drbd-utils
systemctl enable linstor-satellite
systemctl start linstor-satellite

ํด๋Ÿฌ์Šคํ„ฐ ๋งŒ๋“ค๊ธฐ

์Šคํ† ๋ฆฌ์ง€ ํ’€ ๋ฐ ๋…ธ๋“œ

๋ฐฑ์—”๋“œ๋กœ ์šฐ๋ฆฌ๋Š” ThinLVM, ์™œ๋ƒํ•˜๋ฉด ์ด๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๋ฉฐ ์Šค๋ƒ…์ƒท์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
์„ธํŠธ LVM2, ์•„์ง ์ƒ์„ฑํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๋ชจ๋“  ์Šคํ† ๋ฆฌ์ง€ ๋…ธ๋“œ์— ThinLVM ํ’€์„ ์ƒ์„ฑํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

sudo vgcreate drbdpool /dev/sdb
sudo lvcreate -L 800G -T drbdpool/thinpool

๋ชจ๋“  ์ถ”๊ฐ€ ์ž‘์—…์€ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์ง์ ‘ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

linstor node create node1 127.0.0.11
linstor node create node2 127.0.0.12
linstor node create node3 127.0.0.13

์Šคํ† ๋ฆฌ์ง€ ํ’€์„ ์ƒ์„ฑํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

linstor storage-pool create lvmthin node1 data drbdpool/thinpool
linstor storage-pool create lvmthin node2 data drbdpool/thinpool
linstor storage-pool create lvmthin node3 data drbdpool/thinpool

์ด์ œ ์ƒ์„ฑ๋œ ํ’€์„ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

linstor storage-pool list

๋ชจ๋“  ๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์™„๋ฃŒ๋˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

+------------------------------------------------- ------------------------------------- ----+ | ์Šคํ† ๋ฆฌ์ง€ํ’€ | ๋…ธ๋“œ | ๋“œ๋ผ์ด๋ฒ„ | ํ’€์ด๋ฆ„ | ์—ฌ์œ  ์šฉ๋Ÿ‰ | ์ด์šฉ๋Ÿ‰ | ์Šค๋ƒ…์ƒท ์ง€์› | |------------------------------------------------ - ------------------------------------------------- - ---| | ๋ฐ์ดํ„ฐ | ๋…ธ๋“œ1 | LVM_THIN | drbdpool/thinpool | 64GiB | 64GiB | ์‚ฌ์‹ค | | ๋ฐ์ดํ„ฐ | ๋…ธ๋“œ2 | LVM_THIN | drbdpool/thinpool | 64GiB | 64GiB | ์‚ฌ์‹ค | | ๋ฐ์ดํ„ฐ | ๋…ธ๋“œ3 | LVM_THIN | drbdpool/thinpool | 64GiB | 64GiB | ์‚ฌ์‹ค | +------------------------------------------------- ------------------------------------- ----+

DRBD ๋ฆฌ์†Œ์Šค

์ด์ œ ์ƒˆ๋กœ์šด DRBD ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

linstor resource-definition create myres
linstor volume-definition create myres 1G
linstor resource create myres --auto-place 2

์ƒ์„ฑ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

linstor resource list 

+------------------------------------------------- ------------------------------------- ---+ | ๋…ธ๋“œ | ์ž์› | ์Šคํ† ๋ฆฌ์ง€ํ’€ | ๋ณผ๋ฅจNr | ๋ฏธ์„ฑ๋…„์ž | ์žฅ์น˜ ์ด๋ฆ„ | ํ• ๋‹น | ์‚ฌ์šฉ์ค‘ | ์ƒํƒœ | |------------------------------------------------ - ------------------------------------------------- - --| | ๋…ธ๋“œ1 | ๋งˆ์ด๋ ˆ์Šค | ๋ฐ์ดํ„ฐ | 0 | 1084 | /dev/drbd1084 | 52KiB | ๋ฏธ์‚ฌ์šฉ | ์ตœ์‹ ์ •๋ณด | | ๋…ธ๋“œ2 | ๋งˆ์ด๋ ˆ์Šค | ๋ฐ์ดํ„ฐ | 0 | 1084 | /dev/drbd1084 | 52KiB | ๋ฏธ์‚ฌ์šฉ | ์ตœ์‹ ์ •๋ณด | +------------------------------------------------- ------------------------------------- ---+

์—„์ฒญ๋‚œ! โ€” ์ฒ˜์Œ ๋‘ ๋…ธ๋“œ์—์„œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ƒ์„ฑ๋œ ๊ฒƒ์„ ํ™•์ธํ•˜๋ฉด ์„ธ ๋ฒˆ์งธ ๋…ธ๋“œ์—์„œ ๋””์Šคํฌ ์—†๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•ด ๋ณผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

linstor resource create --diskless node3 myres

๋…ธ๋“œ์—์„œ๋Š” ํ•ญ์ƒ ์ด ์žฅ์น˜๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. /dev/drbd1084 ๋˜๋Š” /dev/drbd/by-res/myres/0

์ด๊ฒƒ์ด Linstor์˜ ์ž‘๋™ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์ •๋ณด๋Š” ๋‹ค์Œ์—์„œ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต์‹ ๋ฌธ์„œ.

์ด์ œ OpenNebula์™€ ํ†ตํ•ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

OpenNebula ์„ค์ •

OpenNebula ์„ค์ • ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด์„œ๋Š” ๋„ˆ๋ฌด ๊นŠ์ด ๋‹ค๋ฃจ์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด... ๋ชจ๋“  ๋‹จ๊ณ„๋Š” ๋‹ค์Œ์— ์ž์„ธํžˆ ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต์‹ ๋ฌธ์„œ, ์—ฐ๋ฝํ•ด ๋ณด์‹œ๊ธฐ๋ฅผ ๊ถŒ์žฅํ•˜๋Š” ๊ฒฝ์šฐ OpenNebula์™€ Linstor์˜ ํ†ตํ•ฉ์— ๋Œ€ํ•ด์„œ๋งŒ ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

linstor_un

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜๋Š” ๋‚˜๋งŒ์˜ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. linstor_un, ํ˜„์žฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ์ œ๊ณต๋˜๋ฉฐ ๋ณ„๋„๋กœ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ „์ฒด ์„ค์น˜๋Š” ํ”„๋ŸฐํŠธ์—”๋“œ OpenNebula ๋…ธ๋“œ์—์„œ ์ˆ˜ํ–‰๋˜๋ฉฐ ์ปดํ“จํŒ… ๋…ธ๋“œ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ž‘์—…์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์šฐ์„ , ์šฐ๋ฆฌ๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค jq ะธ Linstor-ํด๋ผ์ด์–ธํŠธ:

apt-get install jq linstor-client

ํŒ€ linstor node list ๋…ธ๋“œ ๋ชฉ๋ก์„ ํ‘œ์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  OpenNebula ์ปดํ“จํŒ… ๋…ธ๋“œ๋ฅผ Linstor ํด๋Ÿฌ์Šคํ„ฐ์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

curl -L https://github.com/OpenNebula/addon-linstor_un/archive/master.tar.gz | tar -xzvf - -C /tmp

mv /tmp/addon-linstor_un-master/vmm/kvm/* /var/lib/one/remotes/vmm/kvm/

mkdir -p /var/lib/one/remotes/etc/datastore/linstor_un
mv /tmp/addon-linstor_un-master/datastore/linstor_un/linstor_un.conf /var/lib/one/remotes/etc/datastore/linstor_un/linstor_un.conf

mv /tmp/addon-linstor_un-master/datastore/linstor_un /var/lib/one/remotes/datastore/linstor_un
mv /tmp/addon-linstor_un-master/tm/linstor_un /var/lib/one/remotes/tm/linstor_un

rm -rf /tmp/addon-linstor_un-master

์ด์ œ OpenNebula ๊ตฌ์„ฑ์— ์ด๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์„ค๋ช…๋œ ๊ฐ„๋‹จํ•œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—.

๊ทธ๋Ÿฐ ๋‹ค์Œ OpenNebula๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

systemctl restart opennebula

๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ, ์‹œ์Šคํ…œ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

cat > system-ds.conf <<EOT
NAME="linstor-system"
TYPE="SYSTEM_DS"
STORAGE_POOL="data"
AUTO_PLACE="2"
CLONE_MODE="snapshot"
CHECKPOINT_AUTO_PLACE="1"
BRIDGE_LIST="node1 node2 node3"
TM_MAD="linstor_un"
EOT

onedatastore create system-ds.conf

๊ทธ๋ฆฌ๊ณ  ์ด๋ฏธ์ง€ ์ €์žฅ์†Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

cat > images-ds.conf <<EOT
NAME="linstor-images"
TYPE="IMAGE_DS"
STORAGE_POOL="data"
AUTO_PLACE="2"
BRIDGE_LIST="node1 node2 node3"
DISK_TYPE="BLOCK"
DS_MAD="linstor_un"
TM_MAD="linstor_un"
EOT

onedatastore create images-ds.conf

  • ๋งค๊ฐœ ๋ณ€์ˆ˜ AUTO_PLACE OpenNebula์˜ ๊ฐ ์ƒˆ ์ด๋ฏธ์ง€์— ๋Œ€ํ•ด ์ƒ์„ฑ๋  ๋ฐ์ดํ„ฐ ๋ณต์ œ๋ณธ ์ˆ˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
  • ๋งค๊ฐœ ๋ณ€์ˆ˜ CLONE_MODE ์ƒˆ ๊ฐ€์ƒ ๋จธ์‹ ์„ ์ƒ์„ฑํ•  ๋•Œ ์ด๋ฏธ์ง€๊ฐ€ ๋ณต์ œ๋˜๋Š” ๋ฐฉ์‹์„ ์ •ํ™•ํ•˜๊ฒŒ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. snapshot โ€” ์ด๋ฏธ์ง€์˜ ์Šค๋ƒ…์ƒท์„ ์ƒ์„ฑํ•˜๊ณ  ์Šค๋ƒ…์ƒท์—์„œ ๊ฐ€์ƒ ๋จธ์‹ ์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. copy โ€” ๊ฐ ๊ฐ€์ƒ ๋จธ์‹ ์— ๋Œ€ํ•œ ์ด๋ฏธ์ง€์˜ ์ „์ฒด ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • ะ’ BRIDGE_LIST ์ด๋ฏธ์ง€ ๋ณต์ œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ง€์›๋˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ „์ฒด ๋ชฉ๋ก์€ ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”. README ํ”„๋กœ์ ํŠธ.

์ด๊ฒƒ์œผ๋กœ ์„ค์ •์ด ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๊ณต์‹ ์‚ฌ์ดํŠธ์—์„œ ์ผ๋ถ€ ์–ดํ”Œ๋ผ์ด์–ธ์Šค๋ฅผ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜คํ”ˆ๋„ค๋ทธ๋ผ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋กœ๋ถ€ํ„ฐ ๊ฐ€์ƒ ๋จธ์‹ ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ๋งํฌ:
https://github.com/OpenNebula/addon-linstor_un

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€