์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ LXD 5.0 โ€‹โ€‹์ถœ์‹œ

Canonical์€ ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌ์ž LXD 5.0 โ€‹โ€‹๋ฐ ๊ฐ€์ƒ ํŒŒ์ผ ์‹œ์Šคํ…œ LXCFS 5.0์˜ ๋ฆด๋ฆฌ์Šค๋ฅผ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. LXD ์ฝ”๋“œ๋Š” Go๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ Apache 2.0 ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. 5.0 ๋ถ„๊ธฐ๋Š” ์žฅ๊ธฐ ์ง€์› ๋ฆด๋ฆฌ์Šค๋กœ ๋ถ„๋ฅ˜๋ฉ๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ๋Š” 2027๋…„ XNUMX์›”๊นŒ์ง€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰์„ ์œ„ํ•œ ๋Ÿฐํƒ€์ž„์œผ๋กœ liblxc ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์œ ํ‹ธ๋ฆฌํ‹ฐ ์„ธํŠธ(lxc-create, lxc-start, lxc-stop, lxc-ls ๋“ฑ), ์ปจํ…Œ์ด๋„ˆ ๊ตฌ์ถ•์„ ์œ„ํ•œ ํ…œํ”Œ๋ฆฟ ๋ฐ ๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ๋Œ€ํ•œ ๋ฐ”์ธ๋”ฉ ์„ธํŠธ์ž…๋‹ˆ๋‹ค. ๊ฒฉ๋ฆฌ๋Š” ํ‘œ์ค€ Linux ์ปค๋„ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค, ipc ๋„คํŠธ์›Œํฌ ์Šคํƒ, uts, ์‚ฌ์šฉ์ž ID ๋ฐ ๋งˆ์šดํŠธ ์ง€์ ์„ ๊ฒฉ๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. cgroup์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ œํ•œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ถŒํ•œ์„ ๋‚ฎ์ถ”๊ณ  ์•ก์„ธ์Šค๋ฅผ ์ œํ•œํ•˜๊ธฐ ์œ„ํ•ด Apparmor ๋ฐ SELinux ํ”„๋กœํ•„, Seccomp ์ •์ฑ…, Chroots(pivot_root) ๋ฐ ๊ธฐ๋Šฅ๊ณผ ๊ฐ™์€ ์ปค๋„ ๊ธฐ๋Šฅ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

LXC ์™ธ์—๋„ LXD๋Š” CRIU ๋ฐ QEMU ํ”„๋กœ์ ํŠธ์˜ ๊ตฌ์„ฑ ์š”์†Œ๋„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. LXC๊ฐ€ ๊ฐœ๋ณ„ ์ปจํ…Œ์ด๋„ˆ ์ˆ˜์ค€์—์„œ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ํ•˜์œ„ ์ˆ˜์ค€ ํˆดํ‚ท์ด๋ผ๋ฉด LXD๋Š” ์—ฌ๋Ÿฌ ์„œ๋ฒ„ ํด๋Ÿฌ์Šคํ„ฐ์— ๋ฐฐํฌ๋œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ค‘์•™ ์ง‘์ค‘์‹์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. LXD๋Š” REST API๋ฅผ ํ†ตํ•ด ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•œ ์š”์ฒญ์„ ๋ฐ›์•„๋“ค์ด๊ณ  ๋‹ค์–‘ํ•œ ์Šคํ† ๋ฆฌ์ง€ ๋ฐฑ์—”๋“œ(๋””๋ ‰ํ† ๋ฆฌ ํŠธ๋ฆฌ, ZFS, Btrfs, LVM), ์ƒํƒœ ์Šฌ๋ผ์ด์Šค๊ฐ€ ์žˆ๋Š” ์Šค๋ƒ…์ƒท, ํ•œ ๋จธ์‹ ์—์„œ ๋‹ค๋ฅธ ๋จธ์‹ ์œผ๋กœ ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ์˜ ์‹ค์‹œ๊ฐ„ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ง€์›ํ•˜๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค๋กœ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ €์žฅํ•˜๋Š” ๋„๊ตฌ. LXCFS๋Š” ์ปจํ…Œ์ด๋„ˆ์—์„œ ์˜์‚ฌ FS /proc ๋ฐ /sys๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ, ๊ฐ€์ƒํ™”๋œ ํ‘œํ˜„์ธ cgroupfs๋Š” ์ปจํ…Œ์ด๋„ˆ์— ์ผ๋ฐ˜ ๋…๋ฆฝ ์‹œ์Šคํ…œ์˜ ๋ชจ์–‘์„ ์ œ๊ณตํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ๊ฐœ์„  ์‚ฌํ•ญ:

  • ๋“œ๋ผ์ด๋ธŒ ๋ฐ USB ์žฅ์น˜์˜ ํ•ซ ํ”Œ๋Ÿฌ๊น… ๋ฐ ๋ถ„๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์ƒ ๋จธ์‹ ์—์„œ๋Š” SCSI ๋ฒ„์Šค์— ์ƒˆ ์žฅ์น˜๊ฐ€ ๋‚˜ํƒ€๋‚˜๋ฉด ์ƒˆ ๋””์Šคํฌ๊ฐ€ ๊ฐ์ง€๋˜๊ณ , USB ํ•ซํ”Œ๋Ÿฌ๊ทธ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด USB ์žฅ์น˜๊ฐ€ ๊ฐ์ง€๋ฉ๋‹ˆ๋‹ค.
  • ํ•„์š”ํ•œ ๋„คํŠธ์›Œํฌ ์žฅ์น˜๊ฐ€ ์—†์–ด ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ์—๋„ LXD๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. LXD๋Š” ์‹œ์ž‘ ์‹œ ์˜ค๋ฅ˜๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋Œ€์‹  ํ˜„์žฌ ์กฐ๊ฑด์—์„œ ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€ ํ™˜๊ฒฝ ์ˆ˜๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ๋‚˜๋จธ์ง€ ํ™˜๊ฒฝ์€ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์ด ์„ค์ •๋œ ํ›„ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.
  • ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ ์œ„ํ•ด OVN(๊ฐœ๋ฐฉํ˜• ๊ฐ€์ƒ ๋„คํŠธ์›Œํฌ)์„ ์‚ฌ์šฉํ•˜๋Š” ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์œ„ํ•œ ์ƒˆ๋กœ์šด ํด๋Ÿฌ์Šคํ„ฐ ๋ฉค๋ฒ„ ์—ญํ• ์ธ ovn-chassis๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ovn-chassis ์—ญํ• ์„ ํ• ๋‹นํ•˜๋ฉด OVN ๋ผ์šฐํ„ฐ์˜ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์„œ๋ฒ„๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์Šคํ† ๋ฆฌ์ง€ ํŒŒํ‹ฐ์…˜์˜ ๋‚ด์šฉ์„ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์ ํ™”๋œ ๋ชจ๋“œ๊ฐ€ ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ ๋ฆด๋ฆฌ์Šค์—์„œ ์—…๋ฐ์ดํŠธ๋Š” ๋จผ์ € zfs ๋˜๋Š” btrfs์˜ ๋ณด๋‚ด๊ธฐ/๋ฐ›๊ธฐ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ ์ธ์Šคํ„ด์Šค ๋˜๋Š” ํŒŒํ‹ฐ์…˜์„ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ตฌ์„ฑ๋˜์—ˆ์œผ๋ฉฐ, ๊ทธ ํ›„ ์ƒ์„ฑ๋œ ๋ณต์‚ฌ๋ณธ์€ rsync ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜์—ฌ ๋™๊ธฐํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ƒ ๋จธ์‹  ์—…๋ฐ์ดํŠธ์˜ ํšจ์œจ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์ƒˆ ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” ์†Œ์Šค ๋ฐ ๋Œ€์ƒ ์„œ๋ฒ„๊ฐ€ ๋™์ผํ•œ ์Šคํ† ๋ฆฌ์ง€ ํ’€์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ rsync ๋Œ€์‹  ์Šค๋ƒ…์ƒท ๋ฐ ๋ณด๋‚ด๊ธฐ/๋ฐ›๊ธฐ ์ž‘์—…์ด ์ž๋™์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ณ ๊ธ‰ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋…ผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • cloud-init์—์„œ ํ™˜๊ฒฝ์„ ์‹๋ณ„ํ•˜๋Š” ๋…ผ๋ฆฌ๊ฐ€ ์žฌ์ž‘์—…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ํ™˜๊ฒฝ ์ด๋ฆ„ ๋Œ€์‹  UUID๊ฐ€ ์ธ์Šคํ„ด์Šค ID๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • sched_setscheduler ์‹œ์Šคํ…œ ํ˜ธ์ถœ ํ›„ํ‚น์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์–ด ๊ถŒํ•œ์ด ์—†๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ”„๋กœ์„ธ์Šค ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Thinpool์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํฌ๊ธฐ๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด lvm.thinpool_metadata_size ์˜ต์…˜์ด ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • lxc์˜ ๋„คํŠธ์›Œํฌ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ ํŒŒ์ผ ํ˜•์‹์ด ์žฌ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค ๋ฐ”์ธ๋”ฉ, ๋„คํŠธ์›Œํฌ ๋ธŒ๋ฆฌ์ง€, VLAN ๋ฐ OVN ๋„คํŠธ์›Œํฌ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ตœ์†Œ ๊ตฌ์„ฑ ์š”์†Œ ๋ฒ„์ „์— ๋Œ€ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์ด ์ฆ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค: Linux ์ปค๋„ 5.4, Go 1.18, LXC 4.0.x ๋ฐ QEMU 6.0.
  • LXCFS 5๋Š” ํ†ตํ•ฉ cgroup ๊ณ„์ธต ๊ตฌ์กฐ(cgroup2)์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๊ณ , /proc/slabinfo ๋ฐ /sys/devices/system/cpu๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ , ์กฐ๋ฆฝ์„ ์œ„ํ•ด meson ํˆดํ‚ท์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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