Lxd ์ฐจ์ธ๋ ์์คํ
์ปจํ
์ด๋ ๊ด๋ฆฌ์์ด๋ฏ๋ก ๋ค์๊ณผ ๊ฐ์ด ๋งํฉ๋๋ค.
LXD ์ฝ์ด ๋ก์ปฌ Unix ์์ผ์ ๋ฌผ๋ก ์ ์ ํ ๊ตฌ์ฑ์ด ์ค์น๋ ๊ฒฝ์ฐ ๋คํธ์ํฌ๋ฅผ ํตํด REST API๋ฅผ ์ ๊ณตํ๋ ๊ถํ ์๋ ๋ฐ๋ชฌ(๋ฃจํธ ๊ถํ์ผ๋ก ์คํ๋๋ ์๋น์ค)์ ๋๋ค. LXD์ ํจ๊ป ์ ๊ณต๋๋ ๋ช ๋ น์ค ๋๊ตฌ์ ๊ฐ์ ํด๋ผ์ด์ธํธ๋ ์ด REST API๋ฅผ ํตํด ์์ฒญํฉ๋๋ค. ์ด๋ ๋ก์ปฌ ํธ์คํธ์ ์ก์ธ์คํ๋ ์๊ฒฉ ํธ์คํธ์ ์ก์ธ์คํ๋ ๋ชจ๋ ๊ฒ์ด ๋์ผํ๊ฒ ์๋ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ด ๊ธฐ์ฌ์์๋ LXD์ ๊ฐ๋ ์ ๋ํด ์์ธํ ๋ค๋ฃจ์ง ์์ ๊ฒ์ด๋ฉฐ ์ปจํ ์ด๋์ ๋ณ๋ ฌ๋ก QEMU ๊ฐ์ ๋จธ์ ์ ์ง์ํ๋ ์ต์ ๋ฒ์ ์ LXD ๊ตฌํ์ ํฌํจํ์ฌ ๋ฌธ์์ ์ค๋ช ๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๊ธฐ๋ฅ์ ๊ณ ๋ คํ์ง ์์ ๊ฒ์ ๋๋ค. ๋์ ์คํ ๋ฆฌ์ง ํ ์ค์ , ๋คํธ์ํน, ์ปจํ ์ด๋ ์คํ, ๋ฆฌ์์ค ์ ํ ์ ์ฉ, ์ค๋ ์ท ์ฌ์ฉ ๋ฐฉ๋ฒ ๋ฑ ์ปจํ ์ด๋ ๊ด๋ฆฌ์ ๊ธฐ๋ณธ ์ฌํญ๋ง ๋ฐฐ์ฐ๋ฏ๋ก LXD์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ์ดํด๋ฅผ ์ป๊ณ Linux์์ ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ ์ฒด ์ ๋ณด๋ฅผ ๋ณด๋ ค๋ฉด ๊ณต์ ์ถ์ฒ๋ฅผ ์ฐธ์กฐํ์ธ์.
ํญํด
์ค์น LXD ์คํ ๋ฆฌ์ง LXD(์คํ ๋ฆฌ์ง) LXD ์ด๊ธฐํ ์ค ์ปจํ ์ด๋ ์์ฑ ๋ฐ ๊ด๋ฆฌ
์ค์น LXD ^
Ubuntu ๋ฐฐํฌํ์ LXD ์ค์น ^
Ubuntu 19.10 ๋ฐฐํฌ ํจํค์ง์์ lxd
์ ๋ฐฉ์ก์ด ์์ด
apt search lxd
lxd/eoan 1:0.7 all
Transitional package - lxd -> snap (lxd)
์ฆ, ๋ ๊ฐ์ ํจํค์ง๊ฐ ํ ๋ฒ์ ์ค์น๋ฉ๋๋ค. ํ๋๋ ์์คํ ํจํค์ง๋ก, ๋ค๋ฅธ ํ๋๋ ์ค๋ ํจํค์ง๋ก ์ค์น๋ฉ๋๋ค. ์์คํ ์ ๋ ๊ฐ์ ํจํค์ง๋ฅผ ์ค์นํ๋ฉด ์ค๋ ํจํค์ง ๊ด๋ฆฌ์๊ฐ ์ค๋ ํจํค์ง๋ฅผ ์ ๊ฑฐํ๋ฉด ์์คํ ํจํค์ง๊ฐ ๊ณ ์๊ฐ ๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
ํจํค์ง ์ฐพ๊ธฐ lxd
์ค๋
์ ์ฅ์์์ ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
snap find lxd
Name Version Summary
lxd 3.21 System container manager and API
lxd-demo-server 0+git.6d54658 Online software demo sessions using LXD
nova ocata OpenStack Compute Service (nova)
nova-hypervisor ocata OpenStack Compute Service - KVM Hypervisor (nova)
distrobuilder 1.0 Image builder for LXC and LXD
fabrica 0.1 Build snaps by simply pointing a web form to...
satellite 0.1.2 Advanced scalable Open source intelligence platform
๋ช
๋ น์ ์คํํ์ฌ list
๋น์ ์ ํจํค์ง๊ฐ ์๋์ง ํ์ธํ ์ ์์ต๋๋ค lxd
์์ง ์ค์น๋์ง ์์์ต๋๋ค:
snap list
Name Version Rev Tracking Publisher Notes
core 16-2.43.3 8689 stable canonicalโ core
LXD๋ ์ค๋
ํจํค์ง์์๋ ๋ถ๊ตฌํ๊ณ ์์คํ
ํจํค์ง๋ฅผ ํตํด ์ค์นํด์ผ ํฉ๋๋ค. lxd
, ์์คํ
์ ํด๋น ๊ทธ๋ฃน์ ์์ฑํ๊ณ ํ์ํ ์ ํธ๋ฆฌํฐ๋ฅผ /usr/bin
๊ธฐํ
sudo apt update
sudo apt install lxd
ํจํค์ง๊ฐ ์ค๋ ํจํค์ง๋ก ์ค์น๋์๋์ง ํ์ธํ๊ฒ ์ต๋๋ค.
snap list
Name Version Rev Tracking Publisher Notes
core 16-2.43.3 8689 stable canonicalโ core
lxd 3.21 13474 stable/โฆ canonicalโ -
Arch Linux ๋ฐฐํฌํ์ LXD ์ค์น ^
์์คํ ์ LXD ํจํค์ง๋ฅผ ์ค์นํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ ์คํํด์ผ ํฉ๋๋ค. ์ฒซ ๋ฒ์งธ ๋ช ๋ น์ ์ ์ฅ์์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์์คํ ์ ํจํค์ง ๋ชฉ๋ก์ ์ ๋ฐ์ดํธํ๊ณ ๋ ๋ฒ์งธ ๋ช ๋ น์ ํจํค์ง๋ฅผ ์ง์ ์ค์นํฉ๋๋ค.
sudo pacman -Syyu && sudo pacman -S lxd
ํจํค์ง ์ค์น ํ ์ผ๋ฐ ์ฌ์ฉ์๊ฐ LXD๋ฅผ ๊ด๋ฆฌํ๋ ค๋ฉด ์์คํ
๊ทธ๋ฃน์ ์ถ๊ฐํด์ผ ํฉ๋๋ค. lxd
:
sudo usermod -a -G lxd user1
์ฌ์ฉ์๋ฅผ ํ์ธํด๋ณด์ user1
๊ทธ๋ฃน์ ์ถ๊ฐ๋จ lxd
:
id -Gn user1
user1 adm dialout cdrom floppy sudo audio dip video plugdev netdev lxd
๊ทธ๋ฃน์ ๊ฒฝ์ฐ lxd
๋ชฉ๋ก์ ํ์๋์ง ์์ผ๋ฉด ์ฌ์ฉ์ ์ธ์
์ ๋ค์ ํ์ฑํํด์ผ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ ค๋ฉด ๋ก๊ทธ์์ํ ํ ๋์ผํ ์ฌ์ฉ์๋ก ๋ก๊ทธ์ธํด์ผ ํฉ๋๋ค.
๋ค์์์ ํ์ฑํ systemd
์์คํ
์์ ์ LXD ์๋น์ค ๋ก๋:
sudo systemctl enable lxd
์๋น์ค๋ฅผ ์์ํด ๋ณด๊ฒ ์ต๋๋ค.
sudo systemctl start lxd
์๋น์ค ์ํ ํ์ธ:
sudo systemctl status lxd
์คํ ๋ฆฌ์ง LXD(์คํ ๋ฆฌ์ง) ^
์ด๊ธฐํ๋ฅผ ์์ํ๊ธฐ ์ ์ LXD์ ์คํ ๋ฆฌ์ง๊ฐ ๋ ผ๋ฆฌ์ ์ผ๋ก ์ด๋ป๊ฒ ๋ฐฐ์ด๋์ด ์๋์ง ์ดํดํด์ผ ํฉ๋๋ค.
์ ์ฅ (์คํ ๋ฆฌ์ง)
- ์ด๋ฏธ์ง - Linux ์ปค๋ ์์ด ํน๋ณํ ์กฐ๋ฆฝ๋ ๋ฐฐํฌํ์ด๋ฉฐ ์ธ๋ถ ์์ค์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ปจํ ์ด๋ - ์ด๋ฏธ์ง์์ ๋ฐฐํฌ๋ ๋ฐฐํฌํ์ด๋ฉฐ ๋ฐ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ค๋ ์ท - ๋์๊ฐ ์ ์๋ ์ปจํ ์ด๋ ์ํ์ ์ค๋ ์ท์ ๋๋ค.
LXD์์ ์คํ ๋ฆฌ์ง๋ฅผ ๊ด๋ฆฌํ๋ ค๋ฉด ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ์ญ์์ค. lxc storage
ํค๋ฅผ ์ง์ ํ์ฌ ์ป์ ์ ์๋ ์ธ์ฆ์ - lxc storage --help
๋ค์ ๋ช ๋ น์ ๋ชจ๋ ๋ชฉ๋ก์ ํ์ํฉ๋๋ค. ์คํ ๋ฆฌ์ง ํ LXD ์คํ ๋ฆฌ์ง์์:
lxc storage list
+---------+-------------+--------+--------------------------------+---------+
| NAME | DESCRIPTION | DRIVER | SOURCE | USED BY |
+---------+-------------+--------+--------------------------------+---------+
| hddpool | | btrfs | /dev/loop1 | 2 |
+---------+-------------+--------+--------------------------------+---------+
| ssdpool | | btrfs | /var/lib/lxd/disks/ssdpool.img | 4 |
+---------+-------------+--------+--------------------------------+---------+
์ ์ฒด ๋ชฉ๋ก์ ๋ณด๋ ค๋ฉด ์ ์ฅ ์ฉ๋ ์ ํํ ํญ๋ชฉ์์ ์คํ ๋ฆฌ์ง ํ ํ์ ๋ด์ฌํ๋ค lxc storage volume list
:
lxc storage volume list hddpool
+-------+----------------------------------+-------------+---------+
| TYPE | NAME | DESCRIPTION | USED BY |
+-------+----------------------------------+-------------+---------+
| image | ebd565585223487526ddb3607f515... | | 1 |
+-------+----------------------------------+-------------+---------+
lxc storage volume list ssdpool
+-----------+----------------------------------+-------------+---------+
| TYPE | NAME | DESCRIPTION | USED BY |
+-----------+----------------------------------+-------------+---------+
| container | alp3 | | 1 |
+-----------+----------------------------------+-------------+---------+
| container | jupyter | | 1 |
+-----------+----------------------------------+-------------+---------+
| image | ebd565585223487526ddb3607f515... | | 1 |
+-----------+----------------------------------+-------------+---------+
๋ํ ๋ง์ฝ์ ์ํด ์คํ ๋ฆฌ์ง ํ ์์ฑ ์ BTRFS ํ์ผ ์์คํ ์ ์ ํํ ๋ค์ ๋ชฉ๋ก์ ๊ฐ์ ธ์ต๋๋ค. ์ ์ฅ ์ฉ๋ ๋๋ ํ์ ๋ณผ๋ฅจ BTRFS ํด์์์๋ ๋ค์ ํ์ผ ์์คํ ์ ํดํท์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
sudo btrfs subvolume list -p /var/lib/lxd/storage-pools/hddpool
ID 257 gen 818 parent 5 top level 5 path images/ebd565585223487526ddb3607f5156e875c15a89e21b61ef004132196da6a0a3
sudo btrfs subvolume list -p /var/lib/lxd/storage-pools/ssdpool
ID 257 gen 1820 parent 5 top level 5 path images/ebd565585223487526ddb3607f5156e875c15a89e21b61ef004132196da6a0a3
ID 260 gen 1819 parent 5 top level 5 path containers/jupyter
ID 263 gen 1820 parent 5 top level 5 path containers/alp3
LXD ์ด๊ธฐํ ์ค ^
์ปจํ
์ด๋๋ฅผ ์์ฑํ๊ณ ์ฌ์ฉํ๊ธฐ ์ ์ ๋คํธ์ํฌ์ ์คํ ๋ฆฌ์ง๋ฅผ ์์ฑํ๊ณ ๊ตฌ์ฑํ๋ ์ผ๋ฐ LXD ์ด๊ธฐํ๋ฅผ ์ํํด์ผ ํฉ๋๋ค. ์ด ์์
์ ๋ค์ ๋ช
๋ น์ ํธ์ถํ์ฌ ๋ชฉ๋ก์์ ์ฌ์ฉํ ์ ์๋ ํ์ค ํด๋ผ์ด์ธํธ ๋ช
๋ น์ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก ์ํํ ์ ์์ต๋๋ค. lxc --help
๋๋ ์ด๊ธฐํ ๋ง๋ฒ์ฌ๋ฅผ ์ฌ์ฉํ์ฌ lxd init
๋ช ๊ฐ์ง ์ง๋ฌธ์ ๋ตํฉ๋๋ค.
์คํ ๋ฆฌ์ง ํ์ฉ ํ์ผ ์์คํ
์ ํ ^
์ด๊ธฐํ ์ค์ LXD๋ ๊ธฐ๋ณธ ํ์ผ ์์คํ
์ ํ ๊ฒฐ์ ์ ํฌํจํ์ฌ ๋ช ๊ฐ์ง ์ง๋ฌธ์ ํฉ๋๋ค. ์คํ ๋ฆฌ์ง ํ. ๊ธฐ๋ณธ์ ์ผ๋ก BTRFS ํ์ผ ์์คํ
์ด ์ ํ๋ฉ๋๋ค. ์์ฑ ํ์๋ ๋ค๋ฅธ FS๋ก ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค.. FS๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
ํน์
๋ช
๋ถ ๋ด๋น
Btrfs
LVM
ZFS
์ธํ
์ต์ ํ๋ ์ด๋ฏธ์ง ์ ์ฅ
์๋
์
์
์
์
์ต์ ํ๋ ์ธ์คํด์ค ์์ฑ
์๋
์
์
์
์
์ต์ ํ๋ ์ค๋
์ท ์์ฑ
์๋
์
์
์
์
์ต์ ํ๋ ์ด๋ฏธ์ง ์ ์ก
์๋
์
์๋
์
์
์ต์ ํ๋ ์ธ์คํด์ค ์ ์ก
์๋
์
์๋
์
์
์ฐ๊ธฐ ์ ๋ณต์ฌ
์๋
์
์
์
์
๋ธ๋ก ๊ธฐ๋ฐ
์๋
์๋
์
์๋
์
์ฆ์ ๋ณต์
์๋
์
์
์
์
์ปจํ
์ด๋ ๋ด๋ถ์์ ์ฌ์ฉํ ์ ์๋ ์คํ ๋ฆฌ์ง ๋๋ผ์ด๋ฒ
์
์
์๋
์๋
์๋
์ด์ ์ค๋
์ท์์ ๋ณต์(์ต์ ์๋)
์
์
์
์๋
์
์คํ ๋ฆฌ์ง ํ ๋น๋
์(*)
์
์
์
์๋
๋ง๋ฒ์ฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋คํธ์ํฌ ๋ฐ ์คํ ๋ฆฌ์ง ํ ์ด๊ธฐํ ^
์ฐ๋ฆฌ๊ฐ ์ดํด๋ณผ ๋ค์ ๋ช ๋ น์ ์ด๊ธฐํ ๋ง๋ฒ์ฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋จํ ์ง๋ฌธ์ ๋ตํ์ฌ LXD์ ์ฃผ์ ๊ตฌ์ฑ ์์๋ฅผ ์ค์ ํ๋ ๊ฒ์ ์ ์ํฉ๋๋ค.
์คํ ๋ช
๋ น lxc init
์๋ ์์ ๊ฐ์ด ์ฝ๋ก ๋ค์ ์ง๋ฌธ์ ๋ํ ๋ต๋ณ์ ์
๋ ฅํ๊ฑฐ๋ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ณ๊ฒฝํ์ญ์์ค.
lxd init
Would you like to use LXD clustering? (yes/no) [default=no]:
Do you want to configure a new storage pool? (yes/no) [default=yes]:
Name of the new storage pool [default=default]: ssdpool
Name of the storage backend to use (lvm, btrfs, dir) [default=btrfs]:
Create a new BTRFS pool? (yes/no) [default=yes]:
Would you like to use an existing block device? (yes/no) [default=no]:
Size in GB of the new loop device (1GB minimum) [default=15GB]: 10GB
Would you like to connect to a MAAS server? (yes/no) [default=no]:
Would you like to create a new local network bridge? (yes/no) [default=yes]:
What should the new bridge be called? [default=lxdbr0]:
What IPv4 address should be used? (CIDR subnet notation, โautoโ or โnoneโ) [default=auto]: 10.0.5.1/24
Would you like LXD to NAT IPv4 traffic on your bridge? [default=yes]:
What IPv6 address should be used? (CIDR subnet notation, โautoโ or โnoneโ) [default=auto]: none
Would you like LXD to be available over the network? (yes/no) [default=no]:
Would you like stale cached images to be updated automatically? (yes/no) [default=yes] no
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:
์ถ๊ฐ ์คํ ๋ฆฌ์ง ํ ์์ฑ ^
์ด์ ๋จ๊ณ์์ ์ฐ๋ฆฌ๋ ์คํ ๋ฆฌ์ง ํ ์ด๋ฆ์ด ๋ถ์ฌ์ง ๊ฒ ssdpool
ํ์ผ์ ๋ด ์์คํ
์ ์์ต๋๋ค. /var/lib/lxd/disks/ssdpool.img
. ์ด ํ์ผ ์์คํ
์ฃผ์๋ ๋ด PC์ ๋ฌผ๋ฆฌ์ SSD ๋๋ผ์ด๋ธ์ ํด๋นํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ ์กฐ์น๋ฅผ ํตํด ์ํ๋๋ ์ญํ ์ ๋ํ ์ดํด๋ฅผ ๋ํ ์ ์์ต๋๋ค. ์คํ ๋ฆฌ์ง ํ ์ ์ฅ์์์ ๋ ๋ฒ์งธ ์ ์ฅ์๋ฅผ ์์ฑํ๊ฒ ์ต๋๋ค. ์คํ ๋ฆฌ์ง ํ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ค๋ฅธ ์ ํ์ ๋์คํฌ์ธ HDD์ ์์นํ๊ฒ ๋ฉ๋๋ค. ๋ฌธ์ ๋ LXD์์๋ ์์ฑ์ ํ์ฉํ์ง ์๋๋ค๋ ๊ฒ์
๋๋ค. ์คํ ๋ฆฌ์ง ํ ์ฃผ์๊ฐ ์์ /var/lib/lxd/disks/
์ฌ๋ณผ๋ฆญ ๋งํฌ๋ ์๋ํ์ง ์์ต๋๋ค. source
.
๊ทธ๋ผ ๋ง๋ค๊ธฐ ์ ์ ์คํ ๋ฆฌ์ง ํ ๋ฃจํ๋ฐฑ ํ์ผ์ด๋ ์ฌ์ฉํ ํ์ผ ์์คํ ์ ๊ธฐ์กด ํํฐ์ ์ ์ ์ํด์ผ ํฉ๋๋ค. ์ด๋ฅผ ์ํด ํฌ๊ธฐ๋ฅผ 10GB๋ก ์ ํํ๋ ํ์ผ์ ์์ฑํ๊ณ ์ฌ์ฉํฉ๋๋ค.
dd if=/dev/zero of=/mnt/work/lxd/hddpool.img bs=1MB count=10000
10000+0 records in
10000+0 records out
10000000000 bytes (10 GB, 9,3 GiB) copied, 38,4414 s, 260 MB/s
๋ฃจํ๋ฐฑ ํ์ผ์ ๋ฌด๋ฃ ๋ฃจํ๋ฐฑ ์ฅ์น์ ์ฐ๊ฒฐํด ๋ณด๊ฒ ์ต๋๋ค.
sudo losetup --find --show /mnt/work/lxd/hddpool.img
/dev/loop1
์ด์ ๋๋ถ์ --show
๋ช
๋ น์ ์คํํ๋ฉด ๋ฃจํ๋ฐฑ ํ์ผ์ด ์ฐ๊ฒฐ๋ ์ฅ์น์ ์ด๋ฆ์ด ํ๋ฉด์ผ๋ก ๋ฐํ๋ฉ๋๋ค. ํ์ํ ๊ฒฝ์ฐ ์ด ์ ํ์ ์ฌ์ฉ ์ค์ธ ๋ชจ๋ ์ฅ์น ๋ชฉ๋ก์ ํ์ํ์ฌ ์์
์ด ์ฌ๋ฐ๋ฅธ์ง ํ์ธํ ์ ์์ต๋๋ค.
losetup -l
NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE DIO LOG-SEC
/dev/loop1 0 0 0 0 /mnt/work/lxd/hddpool.img 0 512
/dev/loop0 0 0 1 0 /var/lib/lxd/disks/ssdpool.img 0 512
๋ชฉ๋ก์์ ํด๋น ์ฅ์น์ ๋ค์์ด ์์์ ํ์ธํ ์ ์์ต๋๋ค. /dev/loop1
๋ฃจํ๋ฐฑ ํ์ผ ํฌํจ /mnt/work/lxd/hddpool.img
, ๊ทธ๋ฆฌ๊ณ ์ฅ์น์์ /dev/loop0
๋ฃจํ๋ฐฑ ํ์ผ ํฌํจ /var/lib/lxd/disks/ssdpool.img
์ด๋ ๊ธฐ๋ณธ๊ฐ์ ํด๋นํฉ๋๋ค. ์คํ ๋ฆฌ์ง ํ.
๋ค์ ๋ช
๋ น์ ์ ๋ช
๋ น์ ๋ง๋ญ๋๋ค. ์คํ ๋ฆฌ์ง ํ ๋ฐฉ๊ธ ์ค๋นํ ๋ฃจํ๋ฐฑ ํ์ผ์ ๊ธฐ๋ฐ์ผ๋ก LXD์์. LXD๋ ๋ฃจํ๋ฐฑ ํ์ผ์ ํฌ๋งทํฉ๋๋ค. /mnt/work/lxd/hddpool.img
์ฅ์น์์ /dev/loop1
BTRFS ํ์ผ ์์คํ
์ ๊ฒฝ์ฐ:
lxc storage create hddpool btrfs size=10GB source=/dev/loop1
์ ์ฒด ๋ชฉ๋ก์ ํ์ํด ๋ณด๊ฒ ์ต๋๋ค. ์คํ ๋ฆฌ์ง ํ ํ๋ฉด์:
lxc storage list
+---------+-------------+--------+--------------------------------+---------+
| NAME | DESCRIPTION | DRIVER | SOURCE | USED BY |
+---------+-------------+--------+--------------------------------+---------+
| hddpool | | btrfs | /dev/loop1 | 0 |
+---------+-------------+--------+--------------------------------+---------+
| ssdpool | | btrfs | /var/lib/lxd/disks/ssdpool.img | 0 |
+---------+-------------+--------+--------------------------------+---------+
์คํ ๋ฆฌ์ง ํ ํฌ๊ธฐ ๋๋ฆฌ๊ธฐ ^
์์ฑ ํ ์คํ ๋ฆฌ์ง ํ, ํ์ํ ๊ฒฝ์ฐ ํ์ฅํ ์ ์์ต๋๋ค. ์ ์ํ ์คํ ๋ฆฌ์ง ํ BTRFS ํ์ผ ์์คํ ์ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ ๋ช ๋ น์ ์คํํฉ๋๋ค.
sudo truncate -s +5G /mnt/work/lxd/hddpool.img
sudo losetup -c /dev/loop1
sudo btrfs filesystem resize max /var/lib/lxd/storage-pools/hddpool
๋ฃจํ๋ฐฑ ์ฅ์น ์ฌ๋กฏ์ ๋ฃจํ๋ฐฑ ํ์ผ ์๋ ์ฝ์
^
ํ ๊ฐ์ง ์์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ํธ์คํธ ์์คํ
์ ์ฌ๋ถํ
ํ ๋ ํ์ผ์ด /mnt/work/lxd/hddpool.img
์ฅ์น ๋ฐ์ผ๋ก "๋ ์๊ฐ" ๊ฒ์
๋๋ค /dev/loop1
LXD ์๋น์ค๋ ์ด ์ฅ์น์์ ๋ณผ ์ ์๊ธฐ ๋๋ฌธ์ ๋ก๋ ์ ์ถฉ๋์ด ๋ฐ์ํฉ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ์ด ํ์ผ์ ์ฅ์น์ ์ฝ์
ํ ์์คํ
์๋น์ค๋ฅผ ๋ง๋ค์ด์ผ ํฉ๋๋ค. /dev/loop1
ํธ์คํธ ์์คํ
์ด ๋ถํ
๋ ๋.
๋ง๋ค์ ๋จ์ ํ์ผ ์ ํ ์๋น์ค ะฒ /etc/systemd/system/
SystemD ์ด๊ธฐํ ์์คํ
์ ๊ฒฝ์ฐ:
cat << EOF | sudo tee -a /etc/systemd/system/lxd-hddpool.service
[Unit]
Description=Losetup LXD Storage Pool (hddpool)
After=local-fs.target
[Service]
Type=oneshot
ExecStart=/sbin/losetup /dev/loop1 /mnt/work/lxd/hddpool.img
RemainAfterExit=true
[Install]
WantedBy=local-fs.target
EOF
์๋น์ค๋ฅผ ํ์ฑํํฉ๋๋ค:
sudo systemctl enable lxd-hddpool
Created symlink /etc/systemd/system/local-fs.target.wants/lxd-hddpool.service โ /etc/systemd/system/lxd-hddpool.service.
ํธ์คํธ ์์คํ ์ ๋ค์ ์์ํ ํ ์๋น์ค ์ํ๋ฅผ ํ์ธํฉ๋๋ค.
systemctl status lxd-hddpool.service
โ lxd-hddpool.service - Losetup LXD Storage Pool (hddpool)
Loaded: loaded (/etc/systemd/system/lxd-hddpool.service; enabled; vendor preset: disabled)
Active: active (exited) since Wed 2020-04-08 03:43:53 MSK; 1min 37s ago
Process: 711 ExecStart=/sbin/losetup /dev/loop1 /mnt/work/lxd/hddpool.img (code=exited, status=0/SUCCESS)
Main PID: 711 (code=exited, status=0/SUCCESS)
ะฐะฟั 08 03:43:52 manjaro systemd[1]: Starting Losetup LXD Storage Pool (hddpool)...
ะฐะฟั 08 03:43:53 manjaro systemd[1]: Finished Losetup LXD Storage Pool (hddpool).
์ถ๋ ฅ์์ ์๋น์ค ์ํ๊ฐ ๋ค์๊ณผ ๊ฐ์์ง ํ์ธํ ์ ์์ต๋๋ค. ํ๋์ ์ธ, ํ๋์ ๋ช
๋ น์ผ๋ก ์คํฌ๋ฆฝํธ ์คํ์ด ์๋ฃ๋์์์๋ ๋ถ๊ตฌํ๊ณ ์ต์
์ ํตํด ์ด ์์
์ ์ํํ ์ ์์์ต๋๋ค. RemainAfterExit=true
.
์์ . ์ปจํ
์ด๋ ๊ถํ ^
๋ชจ๋ ์ปจํ ์ด๋ ํ๋ก์ธ์ค๋ ์ค์ ๋ก ์ปค๋์ ์ฌ์ฉํ์ฌ ํธ์คํธ ์์คํ ์์ ๊ฒฉ๋ฆฌ๋์ด ์คํ๋๋ฏ๋ก ํธ์คํธ ์์คํ ์ ๋ํ ์ปจํ ์ด๋ ํ๋ก์ธ์ค์ ์ก์ธ์ค๋ฅผ ๋์ฑ ๋ณดํธํ๊ธฐ ์ํด LXD๋ ๋ค์๊ณผ ๊ฐ์ ํ๋ก์ธ์ค ๊ถํ์ ์ ๊ณตํฉ๋๋ค.
-
๊ถํ ์๋ ์ปจํ ์ด๋ - ์ด๋ UID ๋ฐ GID๊ฐ ์๋ ํ๋ก์ธ์ค๊ฐ ํธ์คํธ ์์คํ ๊ณผ ๋์ผํ ์์ ์์ ํด๋นํ๋ ์ปจํ ์ด๋์ ๋๋ค. ์๋ฅผ ๋ค์ด UID๊ฐ 0์ธ ์ปจํ ์ด๋์์ ์คํ๋๋ ํ๋ก์ธ์ค๋ UID๊ฐ 0์ธ ํธ์คํธ ์์คํ ์ ํ๋ก์ธ์ค์ ๋์ผํ ์ก์ธ์ค ๊ถํ์ ๋ชจ๋ ๊ฐ์ต๋๋ค. ์ฆ, ์ปจํ ์ด๋์ ๋ฃจํธ ์ฌ์ฉ์๋ ๋ค์ ๊ถํ๋ฟ๋ง ์๋๋ผ ๋ชจ๋ ๊ถํ์ ๊ฐ์ต๋๋ค. ์ปจํ ์ด๋๋ฟ๋ง ์๋๋ผ ์ปจํ ์ด๋์ ๊ฒฉ๋ฆฌ๋ ๋ค์์คํ์ด์ค ์ธ๋ถ๋ก ์ด๋ํ ์ ์๋ ๊ฒฝ์ฐ ํธ์คํธ ์์คํ ์๋ ์์ต๋๋ค.
-
๊ถํ์ด ์๋ ์ปจํ ์ด๋ - ์ด๋ ํ๋ก์ธ์ค๊ฐ 0๋ถํฐ 65535๊น์ง์ ์ซ์๋ฅผ ๊ฐ์ง UID ๋ฐ GID์ ์์ ์์ ์ํ์ง๋ง ํธ์คํธ ์์คํ ์ ๊ฒฝ์ฐ ์์ ์๋ ๊ฐ๊ฐ ์ถ๊ฐ๋ SubUID ๋ฐ SubGID ๋นํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ง์คํฌ๋๋ ์ปจํ ์ด๋์ ๋๋ค. ์๋ฅผ ๋ค์ด ์ปจํ ์ด๋์์ UID=0์ธ ์ฌ์ฉ์๋ ํธ์คํธ ์์คํ ์์ ๋ค์๊ณผ ๊ฐ์ด ํ์๋ฉ๋๋ค.
SubUID + UID
. ์ด๋ ์ปจํ ์ด๋์ ํ๋ก์ธ์ค๊ฐ ๊ฒฉ๋ฆฌ๋ ๋ค์์คํ์ด์ค๋ฅผ ๋ฒ์ด๋ ์ ์๋ ๊ฒฝ์ฐ ํธ์คํธ ์์คํ ๊ณผ ์ ์ ์๊ณ ๋งค์ฐ ๋์ UID/GID๋ฅผ ๊ฐ์ง ํ๋ก์ธ์ค๋ก๋ง ํต์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ํธ์คํธ ์์คํ ์ ๋ณดํธํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์๋ก ์์ฑ๋ ์ปจํ ์ด๋๋ ๊ถํ์ด ์๋ ์ํ์ด๋ฏ๋ก SubUID ๋ฐ SubGID๋ฅผ ์ ์ํด์ผ ํฉ๋๋ค.
SubUID์ SubGID์ ๋ํ ๋ง์คํฌ๋ฅผ ๊ฐ๊ฐ ์ค์ ํ ๋ ๊ฐ์ ๊ตฌ์ฑ ํ์ผ์ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.
sudo touch /etc{/subuid,/subgid}
sudo usermod --add-subuids 1000000-1065535 root
sudo usermod --add-subgids 1000000-1065535 root
๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํ๋ ค๋ฉด LXD ์๋น์ค๋ฅผ ๋ค์ ์์ํด์ผ ํฉ๋๋ค.
sudo systemctl restart lxd
๊ฐ์ ๋คํธ์ํฌ ์ค์์น ๋ง๋ค๊ธฐ ^
์ด์ ์ ์ด๊ธฐํ ๋ง๋ฒ์ฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋คํธ์ํฌ๋ฅผ ์ด๊ธฐํํ๊ธฐ ๋๋ฌธ์ lxd init
๋คํธ์ํฌ ์ฅ์น๋ฅผ ๋ง๋ค์์ต๋๋ค lxdbr0, ์ด ์น์
์์๋ LXD์ ๋คํธ์ํน๊ณผ ํด๋ผ์ด์ธํธ ๋ช
๋ น์ ์ฌ์ฉํ์ฌ ๊ฐ์ ์ค์์น(๋ธ๋ฆฌ์ง)๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ด
๋๋ค.
๋ค์ ๋ค์ด์ด๊ทธ๋จ์ ์ค์์น(๋ธ๋ฆฌ์ง)๊ฐ ํธ์คํธ์ ์ปจํ ์ด๋๋ฅผ ๋คํธ์ํฌ์ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
์ปจํ ์ด๋๋ ๋คํธ์ํฌ๋ฅผ ํตํด ๋ค๋ฅธ ์ปจํ ์ด๋ ๋๋ ์ด๋ฌํ ์ปจํ ์ด๋๊ฐ ์ ๊ณต๋๋ ํธ์คํธ์ ํต์ ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ ค๋ฉด ์ปจํ ์ด๋์ ๊ฐ์ ๋คํธ์ํฌ ์นด๋๋ฅผ ๊ฐ์ ์ค์์น์ ์ฐ๊ฒฐํด์ผ ํฉ๋๋ค. ๋จผ์ ์ค์์น๋ฅผ ์์ฑํ๊ณ , ์ปจํ ์ด๋ ์์ฒด๊ฐ ์์ฑ๋ ํ ์ปจํ ์ด๋์ ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ ํ์ ์ฅ์์ ์ฐ๊ฒฐ๋ฉ๋๋ค.
๋ค์ ๋ช
๋ น์ ์๋ธ๋ท์ด ์๋ ์ค์์น๋ฅผ ์์ฑํฉ๋๋ค. 10.0.5.0/24
๋ฐ IPv4 ์ฃผ์ 10.0.5.1/24
, ๋ํ ๋ค์์ ํฌํจํฉ๋๋ค ipv4.nat
์ปจํ
์ด๋๊ฐ NAT ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ ํธ์คํธ๋ฅผ ํตํด ์ธํฐ๋ท์ ์ก์ธ์คํ ์ ์๋๋ก ๋ค์์ ์ํํฉ๋๋ค.
lxc network create lxdbr0 ipv4.address=10.0.5.1/24 ipv4.nat=true ipv6.address=none
LXD์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋คํธ์ํฌ ์ฅ์น ๋ชฉ๋ก ํ์ธ:
lxc network list
+--------+----------+---------+-------------+---------+
| NAME | TYPE | MANAGED | DESCRIPTION | USED BY |
+--------+----------+---------+-------------+---------+
| eno1 | physical | NO | | 0 |
+--------+----------+---------+-------------+---------+
| lxdbr0 | bridge | YES | | 0 |
+--------+----------+---------+-------------+---------+
Linux ๋ฐฐํฌํ์ ํ์ค ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋คํธ์ํฌ ์ฅ์น๊ฐ ์์ฑ๋์๋์ง ํ์ธํ ์๋ ์์ต๋๋ค. ip link
๋๋ ip addr
:
ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether bc:ee:7b:5a:6b:44 brd ff:ff:ff:ff:ff:ff
altname enp0s25
inet6 fe80::9571:11f3:6e0c:c07b/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: lxdbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether c2:38:90:df:cb:59 brd ff:ff:ff:ff:ff:ff
inet 10.0.5.1/24 scope global lxdbr0
valid_lft forever preferred_lft forever
inet6 fe80::c038:90ff:fedf:cb59/64 scope link
valid_lft forever preferred_lft forever
5: veth3ddab174@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master lxdbr0 state UP group default qlen 1000
link/ether ca:c3:5c:1d:22:26 brd ff:ff:ff:ff:ff:ff link-netnsid 0
๊ตฌ์ฑ ํ๋กํ ^
LXD์ ๊ฐ ์ปจํ ์ด๋์๋ ์์ฒด ๊ตฌ์ฑ์ด ์์ผ๋ฉฐ ์ ์ญ์ ์ผ๋ก ์ ์ธ๋ ๊ตฌ์ฑ์ผ๋ก ํ์ฅํ ์ ์์ต๋๋ค. ๊ตฌ์ฑ ํ๋กํ. ์ปจํ ์ด๋์ ๊ตฌ์ฑ ํ๋กํ์ ์ ์ฉํ๋ ๋ฐ๋ ์บ์ค์ผ์ด๋ ๋ชจ๋ธ์ด ์์ต๋๋ค. ๋ค์ ์์์๋ ์ด๋ฅผ ๋ณด์ฌ์ค๋๋ค.
์ด ์์์๋ LXD ์์คํ
์ ์ธ ๊ฐ์ ํ๋กํ์ด ์์ฑ๋์์ต๋๋ค. default
, hddpool
ะธ hostfs
. ์ธ ๊ฐ์ง ํ๋กํ์ ๋ชจ๋ ๋ก์ปฌ ๊ตฌ์ฑ(ํ์ ์์ญ)์ด ์๋ ์ปจํ
์ด๋์ ์ ์ฉ๋ฉ๋๋ค. ํ๋กํ default
์ฅ์น๊ฐ ์์ต๋๋ค root
๋งค๊ฐ๋ณ์๊ฐ ์๋ ๊ฒ pool
๊ฐ์ ssdpool
ํ์ง๋ง ์บ์ค์ผ์ด๋ ๊ตฌ์ฑ ์ ํ๋ฆฌ์ผ์ด์
๋ชจ๋ธ ๋๋ถ์ ์ปจํ
์ด๋์ ํ๋กํ์ ์ ์ฉํ ์ ์์ต๋๋ค. hddpool
๋งค๊ฐ๋ณ์๊ฐ ์๋ ๊ฒ pool
ํ๋กํ์ ๋์ผํ ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ ์ํฉ๋๋ค. default
์ปจํ
์ด๋๋ ์ฅ์น ๊ตฌ์ฑ์ ์์ ํฉ๋๋ค root
๋งค๊ฐ๋ณ์ ํฌํจ pool
๋๋ฑํ hddpool
๋ฐ ํ๋กํ hostfs
๋จ์ํ ์ปจํ
์ด๋์ ์ ์ฅ์น๋ฅผ ์ถ๊ฐํ๋ฉด ๋ฉ๋๋ค.
์ฌ์ฉ ๊ฐ๋ฅํ ๊ตฌ์ฑ ํ๋กํ ๋ชฉ๋ก์ ๋ณด๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ญ์์ค.
lxc profile list
+---------+---------+
| NAME | USED BY |
+---------+---------+
| default | 1 |
+---------+---------+
| hddroot | 0 |
+---------+---------+
| ssdroot | 1 |
+---------+---------+
ํ๋กํ ์์
์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ช
๋ น์ ์ ์ฒด ๋ชฉ๋ก์ ํค๋ฅผ ์ถ๊ฐํ์ฌ ์ป์ ์ ์์ต๋๋ค. --help
:
lxc profile --help
Description:
Manage profiles
Usage:
lxc profile [command]
Available Commands:
add Add profiles to instances
assign Assign sets of profiles to instances
copy Copy profiles
create Create profiles
delete Delete profiles
device Manage instance devices
edit Edit profile configurations as YAML
get Get values for profile configuration keys
list List profiles
remove Remove profiles from instances
rename Rename profiles
set Set profile configuration keys
show Show profile configurations
unset Unset profile configuration keys
ํ๋กํ ํธ์ง ^
๊ธฐ๋ณธ ๊ตฌ์ฑ ํ๋กํ default
์ปจํ
์ด๋์ ๋ํ ๋คํธ์ํฌ ์นด๋ ๊ตฌ์ฑ์ด ์๊ณ ์๋ก ์์ฑ๋ ๋ชจ๋ ์ปจํ
์ด๋์๋ ๋คํธ์ํฌ๊ฐ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ณ๋์ ๋ช
๋ น์ผ๋ก ๋ก์ปฌ(์ ์ฉ) ๋คํธ์ํฌ ์ฅ์น๋ฅผ ์์ฑํด์ผ ํ์ง๋ง ๊ตฌ์ฑ์์ ๊ธ๋ก๋ฒ ๋คํธ์ํฌ ์ฅ์น๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์ด ํ๋กํ์ ์ฌ์ฉํ๋ ๋ชจ๋ ์ปจํ
์ด๋ ๊ฐ์ ๊ณต์ ๋ ํ๋กํ์
๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ ์ปจํ
์ด๋๋ฅผ ์์ฑํ๋ผ๋ ๋ช
๋ น ์งํ์ ๋คํธ์ํฌ ์ก์ธ์ค๊ฐ ๊ฐ๋ฅํ ๋คํธ์ํฌ๋ฅผ ๊ฐ๊ฒ ๋ฉ๋๋ค. ๋์์ ์ ํ์ด ์์ผ๋ฉฐ ํ์ํ ๊ฒฝ์ฐ ๋์ค์ ์ธ์ ๋ ์ง ๋ก์ปฌ ๋คํธ์ํฌ ์ฅ์น๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
๋ค์ ๋ช
๋ น์ ๊ตฌ์ฑ ํ๋กํ์ ์ฅ์น๋ฅผ ์ถ๊ฐํฉ๋๋ค. eth0
ัะธะฟะฐ nic
๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋จ lxdbr0
:
lxc profile device add default eth0 nic network=lxdbr0 name=eth0
์ค์ ๋ก ๊ตฌ์ฑ ํ๋กํ์ ์ฅ์น๋ฅผ ์ถ๊ฐํ๊ธฐ ๋๋ฌธ์ ์ฅ์น์ ๊ณ ์ IP ์ฃผ์๋ฅผ ์ง์ ํ ๊ฒฝ์ฐ ์ด ํ๋กํ์ ์ฌ์ฉํ๋ ๋ชจ๋ ์ปจํ ์ด๋๊ฐ ๋์ผํ IP ์ฃผ์๋ฅผ ๊ณต์ ํ๋ค๋ ์ ์ ์ ์ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ปจํ ์ด๋์ ๊ณ ์ IP ์ฃผ์๊ฐ ํ ๋น๋ ์ปจํ ์ด๋๋ฅผ ์์ฑํด์ผ ํ๋ ๊ฒฝ์ฐ ํ๋กํ ์์ค์ด ์๋ IP ์ฃผ์ ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์ปจํ ์ด๋ ์์ค(๋ก์ปฌ ๊ตฌ์ฑ)์์ ๋คํธ์ํฌ ์ฅ์น ๊ตฌ์ฑ์ ์์ฑํด์ผ ํฉ๋๋ค.
ํ๋กํ์ ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค.
lxc profile show default
config: {}
description: Default LXD profile
devices:
eth0:
name: eth0
network: lxdbr0
type: nic
root:
path: /
pool: ssdpool
type: disk
name: default
used_by: []
์ด ํ๋กํ์์๋ ์๋ก ์์ฑ๋ ๋ชจ๋ ์ปจํ ์ด๋์ ๋ํด ๋ ๊ฐ์ ์ฅ์น๊ฐ ์์ฑ๋๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
eth0
- ๊ธฐ๊ธฐ ์ข ๋ฅnic
์ค์์น์ ์ฐ๊ฒฐ๋จ(๋คํธ์ํฌ ๋ธ๋ฆฌ์ง)lxdbr0
root
- ๊ธฐ๊ธฐ ์ข ๋ฅdisk
์คํ ๋ฆฌ์ง ํ์ ์ฌ์ฉํ๋ ๊ฒssdpool
์ ํ๋กํ ๋ง๋ค๊ธฐ ^
์ด์ ์ ๋ง๋ ๊ฒ์ ์ฌ์ฉํ๋ ค๋ฉด ์คํ ๋ฆฌ์ง ํ ์ปจํ
์ด๋, ๊ตฌ์ฑ ํ๋กํ ์์ฑ ssdroot
์ฌ๊ธฐ์ ๋ค์๊ณผ ๊ฐ์ ์ฅ์น๋ฅผ ์ถ๊ฐํ๊ฒ ์ต๋๋ค. disk
๋ง์ดํธ ํฌ์ธํธ ํฌํจ /
(๋ฃจํธ) ์ด์ ์ ์์ฑ๋ ๊ฒ์ ์ฌ์ฉํ์ฌ ์คํ ๋ฆฌ์ง ํ - ssdpool
:
lxc profile create ssdroot
lxc profile device add ssdroot root disk path=/ pool=ssdpool
๋ง์ฐฌ๊ฐ์ง๋ก ์ฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ ์ฅ์น๋ฅผ ๋ง๋ญ๋๋ค. disk
, ํ์ง๋ง ์ด ๊ฒฝ์ฐ์๋ ๋ค์์ ์ฌ์ฉํฉ๋๋ค. ์คํ ๋ฆฌ์ง ํ - hddpool
:
lxc profile create hddroot
lxc profile device add hddroot root disk path=/ pool=hddpool
๊ตฌ์ฑ ํ๋กํ ํ์ธ ์ค:
lxc profile show ssdroot
config: {}
description: ""
devices:
root:
path: /
pool: ssdpool
type: disk
name: ssdroot
used_by: []
lxc profile show hddroot
config: {}
description: ""
devices:
root:
path: /
pool: hddpool
type: disk
name: hddroot
used_by: []
์ด๋ฏธ์ง ์ ์ฅ์ ^
์ปจํ ์ด๋๋ Linux ์ปค๋์ด ์๋ ํน๋ณํ ์กฐ๋ฆฝ๋ ๋ฐฐํฌํ ์ด๋ฏธ์ง์์ ์์ฑ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ปจํ ์ด๋๋ฅผ ์คํํ๊ธฐ ์ ์ ์ด ์ด๋ฏธ์ง์์ ๋ฐฐํฌํด์ผ ํฉ๋๋ค. ์ด๋ฏธ์ง ์์ค๋ ์ธ๋ถ ์ ์ฅ์์์ ์ด๋ฏธ์ง๊ฐ ๋ค์ด๋ก๋๋๋ ๋ก์ปฌ ์ ์ฅ์์ ๋๋ค.
์๊ฒฉ ์ด๋ฏธ์ง ์ ์ฅ์ ^
๊ธฐ๋ณธ์ ์ผ๋ก LXD๋ ์ธ ๊ฐ์ง ์๊ฒฉ ์์ค๋ก๋ถํฐ ์ด๋ฏธ์ง๋ฅผ ์์ ํ๋๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- ์ฐ๋ถํฌ: (์์ ์ ์ธ Ubuntu ์ด๋ฏธ์ง์ ๊ฒฝ์ฐ)
- ์ฐ๋ถํฌ-๋ฐ์ผ๋ฆฌ: (์ผ์ผ ์ฐ๋ถํฌ ์ด๋ฏธ์ง์ฉ)
- ์ด๋ฏธ์ง : (๋ค๋ฅธ ๋ฐฐํฌํ์ ๊ฒฝ์ฐ)
lxc remote list
+-----------------+------------------------------------------+--------+--------+
| NAME | URL | PUBLIC | STATIC |
+-----------------+------------------------------------------+--------+--------+
| images | https://images.linuxcontainers.org | YES | NO |
+-----------------+------------------------------------------+--------+--------+
| local (default) | unix:// | NO | YES |
+-----------------+------------------------------------------+--------+--------+
| ubuntu | https://cloud-images.ubuntu.com/releases | YES | YES |
+-----------------+------------------------------------------+--------+--------+
| ubuntu-daily | https://cloud-images.ubuntu.com/daily | YES | YES |
+-----------------+------------------------------------------+--------+--------+
์๋ฅผ ๋ค์ด ์ ์ฅ์ ubuntu:
๋ค์๊ณผ ๊ฐ์ ์ด๋ฏธ์ง๊ฐ ์์ต๋๋ค:
lxc image -c dasut list ubuntu: | head -n 11
+----------------------------------------------+--------------+----------+------------+
| DESCRIPTION | ARCHITECTURE | SIZE | TYPE |
+----------------------------------------------+--------------+----------+------------+
| ubuntu 12.04 LTS amd64 (release) (20150728) | x86_64 | 153.72MB | CONTAINER |
+----------------------------------------------+--------------+----------+------------+
| ubuntu 12.04 LTS amd64 (release) (20150819) | x86_64 | 152.91MB | CONTAINER |
+----------------------------------------------+--------------+----------+------------+
| ubuntu 12.04 LTS amd64 (release) (20150906) | x86_64 | 154.69MB | CONTAINER |
+----------------------------------------------+--------------+----------+------------+
| ubuntu 12.04 LTS amd64 (release) (20150930) | x86_64 | 153.86MB | CONTAINER |
+----------------------------------------------+--------------+----------+------------+
์ ํ๋ ์์ ์ด์ ํ์ํ๊ธฐ ์ํด ์ต์
์ ์ฌ์ฉํ์ต๋๋ค. -c
๋งค๊ฐ๋ณ์ ํฌํจ dasut
, ๋ํ ๋ช
๋ น์ ์ฌ์ฉํ์ฌ ๋ชฉ๋ก์ ๊ธธ์ด๋ฅผ ์ ํํ์ต๋๋ค. head
.
ํํฐ๋ง์ ํตํด ์ด๋ฏธ์ง ๋ชฉ๋ก์ ํ์ํ ์ ์์ต๋๋ค. ๋ค์ ๋ช
๋ น์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๋ฐฐํฌ ์ํคํ
์ฒ๋ฅผ ๋์ดํฉ๋๋ค.
lxc image -c ldast list images:alpine/3.11
+------------------------------+--------------------------------------+--------------+
| ALIAS | DESCRIPTION | ARCHITECTURE |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11 (3 more) | Alpine 3.11 amd64 (20200220_13:00) | x86_64 |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/arm64 (1 more) | Alpine 3.11 arm64 (20200220_13:00) | aarch64 |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/armhf (1 more) | Alpine 3.11 armhf (20200220_13:00) | armv7l |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/i386 (1 more) | Alpine 3.11 i386 (20200220_13:01) | i686 |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/ppc64el (1 more) | Alpine 3.11 ppc64el (20200220_13:00) | ppc64le |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/s390x (1 more) | Alpine 3.11 s390x (20200220_13:00) | s390x |
+------------------------------+--------------------------------------+--------------+
๋ก์ปฌ ์ด๋ฏธ์ง ์ ์ฅ์ ^
์ปจํ
์ด๋ ์ฌ์ฉ์ ์์ํ๋ ค๋ฉด ๊ธ๋ก๋ฒ ์ ์ฅ์์ ์ด๋ฏธ์ง๋ฅผ ๋ก์ปฌ ์ ์ฅ์์ ์ถ๊ฐํด์ผ ํฉ๋๋ค. local:
. ์ด์ ๋ก์ปฌ ์ ์ฅ์๊ฐ ๋น์ด ์์ผ๋ฏ๋ก ๋ช
๋ น์ด ์ด๋ฅผ ํ์ธํฉ๋๋ค. lxc image list
. ๋ฐฉ๋ฒ์ด๋ผ๋ฉด list
์ ์ฅ์๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ๋ก์ปฌ ์ ์ฅ์๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. local:
lxc image list local:
+-------+-------------+--------+-------------+--------------+------+------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE |
+-------+-------------+--------+-------------+--------------+------+------+
์ ์ฅ์์ ์ด๋ฏธ์ง๋ ๋ค์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ๊ด๋ฆฌ๋ฉ๋๋ค.
ํ
๊ธฐ์
lxc ์ด๋ฏธ์ง ๋ณ๋ช
์ด๋ฏธ์ง ๋ณ์นญ ๊ด๋ฆฌ
lxc ์ด๋ฏธ์ง ๋ณต์ฌ
์๋ฒ ๊ฐ ์ด๋ฏธ์ง ๋ณต์ฌ
lxc ์ด๋ฏธ์ง ์ญ์
์ด๋ฏธ์ง ์ญ์
lxc ์ด๋ฏธ์ง ํธ์ง
์ด๋ฏธ์ง ์์ฑ ํธ์ง
lxc ์ด๋ฏธ์ง ์์ถ
์ด๋ฏธ์ง ๋ด๋ณด๋ด๊ธฐ ๋ฐ ๋ค์ด๋ก๋
lxc ์ด๋ฏธ์ง import
์ด๋ฏธ์ง ์ ์ฅ์๋ก ์ด๋ฏธ์ง ๊ฐ์ ธ์ค๊ธฐ
lxc ์ด๋ฏธ์ง ์ ๋ณด
์ด๋ฏธ์ง์ ๋ํ ์ ์ฉํ ์ ๋ณด ํ์
lxc ์ด๋ฏธ์ง ๋ช
๋ถ
์ด๋ฏธ์ง ๋์ด
lxc ์ด๋ฏธ์ง ์๋ก๊ณ ์นจ
์ด๋ฏธ์ง ์๋ก๊ณ ์นจ
lxc ์ด๋ฏธ์ง ํ์
์ด๋ฏธ์ง ์์ฑ ํ์
์ด๋ฏธ์ง๋ฅผ ๊ธ๋ก๋ฒ ์ ์ฅ์์์ ๋ก์ปฌ ์ ์ฅ์๋ก ๋ณต์ฌํฉ๋๋ค. images:
:
lxc image copy images:alpine/3.11/amd64 local: --alias=alpine3
Image copied successfully!
ํ์ฌ ๋ก์ปฌ ์ ์ฅ์์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ์ด๋ฏธ์ง ๋ชฉ๋ก์ ํ์ํด ๋ณด๊ฒ ์ต๋๋ค. local:
:
lxc image -c lfdatsu list local:
+---------+--------------+------------------------------------+--------------+
| ALIAS | FINGERPRINT | DESCRIPTION | ARCHITECTURE |
+---------+--------------+------------------------------------+--------------+
| alpine3 | 73a3093d4a5c | Alpine 3.11 amd64 (20200220_13:00) | x86_64 |
+---------+--------------+------------------------------------+--------------+
LXD ๊ตฌ์ฑ ^
LXD๋ ๋ํํ ๋ชจ๋ ์ธ์๋ ๋น๋ํํ ๊ตฌ์ฑ ์ค์น ๋ชจ๋๋ ์ง์ํฉ๋๋ค. ์ด๋ ๊ตฌ์ฑ์ด YAML ํ์ผ ํ์์ผ๋ก ์ง์ ๋๋ ๊ฒฝ์ฐ์
๋๋ค. ์ด ๋ชจ๋๋ ์คํ์ ์ฐํํ์ฌ ์ ์ฒด ๊ตฌ์ฑ์ ํ ๋ฒ์ ์ค์นํ ์ ์๋ ํน์ ํ์์
๋๋ค. ๋คํธ์ํฌ ๊ตฌ์ฑ, ๊ตฌ์ฑ ํ๋กํ ์์ฑ ๋ฑ์ ํฌํจํ์ฌ ์ด ๋ฌธ์ ์์์ ์ค๋ช
ํ ๋ง์ ๋ํํ ๋ช
๋ น ์ค ํ๋์
๋๋ค. ์ฌ๊ธฐ์๋ ์ด ์์ญ์ ๋ค๋ฃจ์ง ์์ผ๋ฉฐ ์ง์ ํ์ธํด ๋ณผ ์ ์์ต๋๋ค.
๋ค์ ๋ํํ ๋ช
๋ น lxc config
์ฐ๋ฆฌ๊ฐ ์ดํด๋ณผ ๋ด์ฉ์ ํตํด ๊ตฌ์ฑ์ ์ค์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ก์ปฌ ์ ์ฅ์์ ๋ค์ด๋ก๋ํ ์ด๋ฏธ์ง๊ฐ ์ ์ญ ์ ์ฅ์์์ ์๋์ผ๋ก ์
๋ฐ์ดํธ๋์ง ์๋๋ก ํ๋ ค๋ฉด ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ์ฌ ์ด ๋์์ ํ์ฑํํ ์ ์์ต๋๋ค.
lxc config set images.auto_update_cached=false
์ปจํ
์ด๋ ์์ฑ ๋ฐ ๊ด๋ฆฌ ^
์ปจํ
์ด๋๋ฅผ ๋ง๋ค๋ ค๋ฉด ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ์ธ์. lxc init
๊ฐ์ด ์ ๋ฌ๋๋ ๊ณณ ัะตะฟะพะทะธัะพัะธะน:ะพะฑัะฐะท
๊ทธ๋ฐ ๋ค์ ์ปจํ
์ด๋์ ๋ํด ์ํ๋ ID๋ฅผ ์
๋ ฅํฉ๋๋ค. ์ ์ฅ์๋ฅผ ๋ก์ปฌ๋ก ์ง์ ํ ์ ์์ต๋๋ค. local:
๊ธ๋ก๋ฒํ ๊ฒ๋ ๋ง์ฐฌ๊ฐ์ง๋ค. ์ ์ฅ์๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ๋ก์ปฌ ์ ์ฅ์๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ๊ฒ์ํฉ๋๋ค. ์ด๋ฏธ์ง๊ฐ ๊ธ๋ก๋ฒ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ์ง์ ๋ ๊ฒฝ์ฐ ์ด๋ฏธ์ง๋ ๋จผ์ ๋ก์ปฌ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ค์ด๋ก๋๋ ๋ค์ ์ปจํ
์ด๋๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๋ค์ ๋ช ๋ น์ ์คํํ์ฌ ์ฒซ ๋ฒ์งธ ์ปจํ ์ด๋๋ฅผ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.
lxc init alpine3 alp --storage=hddpool --profile=default --profile=hddroot
์ฌ๊ธฐ์ ์ฌ์ฉํ๋ ๋ช ๋ น ํค๋ฅผ ์์๋๋ก ์ดํด๋ณด๊ฒ ์ต๋๋ค.
alpine3
โ ์ด์ ์ ๋ก์ปฌ ์ ์ฅ์์ ์ ๋ก๋๋ ์ด๋ฏธ์ง์ ๋ํด ๋ณ์นญ(alias)์ด ์ง์ ๋ฉ๋๋ค. ์ด ์ด๋ฏธ์ง์ ๋ํ ๋ณ์นญ์ด ์์ฑ๋์ง ์์ ๊ฒฝ์ฐ ์ธ์ ๋ ์ง ํด๋น ์ด๋ฏธ์ง๋ฅผ ์ฐธ์กฐํ ์ ์์ต๋๋ค. ์ง๋ฌธ ์ด๋ ํ ์ด๋ธ์ ํ์๋ฉ๋๋ค.alp
โ ์ปจํ ์ด๋์ ์๋ณ์๋ฅผ ์ค์ ํฉ๋๋ค.--storage
โ ์ด ํค๋ ์คํ ๋ฆฌ์ง ํ ์ปจํ ์ด๋๊ฐ ์์ฑ๋ฉ๋๋ค--profile
โ ์ด๋ฌํ ํค๋ ์ด์ ์ ์์ฑ๋ ๊ตฌ์ฑ ํ๋กํ์ ๊ตฌ์ฑ์ ์ปจํ ์ด๋์ ๊ณ๋จ์์ผ๋ก ์ ์ฉํฉ๋๋ค.
๋ฐฐํฌ์ ์ด๊ธฐํ ์์คํ ์ ์์ํ๋ ์ปจํ ์ด๋๋ฅผ ์์ํฉ๋๋ค.
lxc start alp
๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. lxc launch
ํ์ ๊ฒฐํฉํ ์ ์๋ ๊ธฐ๋ฅ lxc init
ะธ lxc start
ํ ๋ฒ์ ์์
์ผ๋ก.
์ปจํ ์ด๋ ์ํ ํ์ธ:
lxc list -c ns46tb
+------+---------+------------------+------+-----------+--------------+
| NAME | STATE | IPV4 | IPV6 | TYPE | STORAGE POOL |
+------+---------+------------------+------+-----------+--------------+
| alp | RUNNING | 10.0.5.46 (eth0) | | CONTAINER | hddpool |
+------+---------+------------------+------+-----------+--------------+
์ปจํ ์ด๋ ๊ตฌ์ฑ ํ์ธ:
lxc config show alp
architecture: x86_64
config:
image.architecture: amd64
image.description: Alpine 3.11 amd64 (20200326_13:39)
image.os: Alpine
image.release: "3.11"
image.serial: "20200326_13:39"
image.type: squashfs
volatile.base_image: ebd565585223487526ddb3607f5156e875c15a89e21b61ef004132196da6a0a3
volatile.eth0.host_name: vethb1fe71d8
volatile.eth0.hwaddr: 00:16:3e:5f:73:3e
volatile.idmap.base: "0"
volatile.idmap.current: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
volatile.idmap.next: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
volatile.last_state.idmap: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
volatile.last_state.power: RUNNING
devices:
root:
path: /
pool: hddpool
type: disk
ephemeral: false
profiles:
- default
- hddroot
stateful: false
description: ""
์น์
์์ profiles
์ด ์ปจํ
์ด๋๊ฐ ๋ ๊ฐ์ ๊ตฌ์ฑ ํ๋กํ์ ์ฌ์ฉํ๋์ง ํ์ธํ ์ ์์ต๋๋ค. default
ะธ hddroot
. ์น์
์์ devices
๋คํธ์ํฌ ์ฅ์น๊ฐ ํ๋กํ ์์ค์์ ์์ฑ๋์๊ธฐ ๋๋ฌธ์ ํ๋์ ์ฅ์น๋ง ๊ฐ์งํ ์ ์์ต๋๋ค. default
. ์ปจํ
์ด๋์์ ์ฌ์ฉํ๋ ๋ชจ๋ ์ฅ์น๋ฅผ ๋ณด๋ ค๋ฉด ํค๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค. --expanded
:
lxc config show alp --expanded
architecture: x86_64
config:
image.architecture: amd64
image.description: Alpine 3.11 amd64 (20200326_13:39)
image.os: Alpine
image.release: "3.11"
image.serial: "20200326_13:39"
image.type: squashfs
volatile.base_image: ebd565585223487526ddb3607f5156e875c15a89e21b61ef004132196da6a0a3
volatile.eth0.host_name: vethb1fe71d8
volatile.eth0.hwaddr: 00:16:3e:5f:73:3e
volatile.idmap.base: "0"
volatile.idmap.current: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
volatile.idmap.next: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
volatile.last_state.idmap: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
volatile.last_state.power: RUNNING
devices:
eth0:
name: eth0
network: lxdbr0
type: nic
root:
path: /
pool: hddpool
type: disk
ephemeral: false
profiles:
- default
- hddroot
stateful: false
description: ""
๊ณ ์ IP ์ฃผ์ ์ค์ ^
๋คํธ์ํฌ ์ฅ์น์ IP ์ฃผ์๋ฅผ ์ค์ ํ๋ ค๊ณ ํ๋ฉด eth0
ํ lxc config device set alp
์ปจํ
์ด๋ ๊ตฌ์ฑ์ ์ํ ๊ฒ์ด๋ผ๋ฉด ์ฅ์น๊ฐ ์กด์ฌํ์ง ์๋๋ค๋ ์ค๋ฅ๋ฅผ ๋ฐ๊ฒ ๋ ๊ฒ์
๋๋ค. eth0
์ปจํ
์ด๋์์ ์ฌ์ฉํ๋ ๊ฒ์ ํ๋กํ์ ์ํฉ๋๋ค. default
:
lxc config device set alp eth0 ipv4.address 10.0.5.5
Error: The device doesn't exist
๋ฌผ๋ก ๊ณ ์ IP ์ฃผ์๋ฅผ ์ค์ ํ ์๋ ์์ต๋๋ค. eth0
ํ์ง๋ง ์ด ํ๋กํ์ ์ฌ์ฉํ ๋ชจ๋ ์ปจํ
์ด๋์ ๋ํด ๋์ผํฉ๋๋ค. ๋ฐ๋ผ์ ์ปจํ
์ด๋ ์ ์ฉ ์ฅ์น๋ฅผ ์ถ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค.
lxc config device add alp eth0 nic name=eth0 nictype=bridged parent=lxdbr0 ipv4.address=10.0.5.5
๊ทธ๋ฐ ๋ค์ ์ปจํ ์ด๋๋ฅผ ๋ค์ ์์ํด์ผ ํฉ๋๋ค.
lxc restart alp
์ง๊ธ ์ปจํ
์ด๋ ๊ตฌ์ฑ์ ๋ณด๋ฉด ์ต์
์ ์ฌ์ฉํ ํ์๊ฐ ์์ต๋๋ค. --expanded
๋คํธ์ํฌ ์ฅ์น๋ฅผ ๋ณด๋ ค๋ฉด eth0
, ์ปจํ
์ด๋ ์์ค์์ ์์ฑํ๊ณ ํ๋กํ์์ ๋์ผํ ์ฅ์น๋ฅผ ํตํด ๊ณ๋จ์์ผ๋ก ์ฐ๊ฒฐ๋์๊ธฐ ๋๋ฌธ์
๋๋ค. default
:
lxc config show alp
architecture: x86_64
config:
image.architecture: amd64
image.description: Alpine 3.11 amd64 (20200326_13:39)
image.os: Alpine
image.release: "3.11"
image.serial: "20200326_13:39"
image.type: squashfs
volatile.base_image: ebd565585223487526ddb3607f5156e875c15a89e21b61ef004132196da6a0a3
volatile.eth0.host_name: veth2a1dc59d
volatile.eth0.hwaddr: 00:16:3e:0e:e2:71
volatile.idmap.base: "0"
volatile.idmap.current: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
volatile.idmap.next: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
volatile.last_state.idmap: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
volatile.last_state.power: RUNNING
devices:
eth0:
ipv4.address: 10.0.5.5
name: eth0
nictype: bridged
parent: lxdbr0
type: nic
root:
path: /
pool: hddpool
type: disk
ephemeral: false
profiles:
- default
- hddroot
stateful: false
description: ""
์ปจํ
์ด๋ ์ ๊ฑฐ ^
์ปจํ
์ด๋๋ฅผ ์ ๊ฑฐํ๋ ค๋ฉด ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ์ญ์์ค. lxc delete
ํ์ง๋ง ์ปจํ
์ด๋๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ ์ ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ์ฌ ์ปจํ
์ด๋๋ฅผ ์ค์งํด์ผ ํฉ๋๋ค. lxc stop
:
lxc stop alp
lxc list
+------+---------+-------------------+------+-----------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+---------+-------------------+------+-----------+-----------+
| alp | STOPPED | 10.0.5.10 (eth0) | | CONTAINER | 0 |
+------+---------+-------------------+------+-----------+-----------+
์ปจํ ์ด๋ ์ํ๊ฐ ์ด์ํด์ง ๊ฒ์ ํ์ธํ ํ ์ค์ง, ์์ ์ ๊ฑฐํ ์ ์์ต๋๋ค. ์คํ ๋ฆฌ์ง ํ:
lxc delete alp
์ปจํ
์ด๋ ์ ๊ทผ ^
๋คํธ์ํฌ ์ฐ๊ฒฐ์ ์ฐํํ์ฌ ์ปจํ
์ด๋์์ ์ง์ ๋ช
๋ น์ ์คํํ๋ ค๋ฉด ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ์ญ์์ค. lxc exec
์์คํ
์
ธ์ ์์ํ์ง ์๊ณ ์ปจํ
์ด๋์์ ๋ช
๋ น์ ์คํํฉ๋๋ค. ๋ณ์, ํ์ผ ๋ฆฌ๋๋ ์
(ํ์ดํ) ๋ฑ๊ณผ ๊ฐ์ ์
ธ ํจํด์ ์ฌ์ฉํ์ฌ ์
ธ์์ ๋ช
๋ น์ ์คํํด์ผ ํ๋ ๊ฒฝ์ฐ ๋ช
์์ ์ผ๋ก ์
ธ์ ์์ํ๊ณ ๋ช
๋ น์ ํค๋ก ์ ๋ฌํด์ผ ํฉ๋๋ค. ์:
lxc exec alp -- /bin/sh -c "echo $HOME"
๋ช
๋ น์ ํน์ ์ด์ค์ผ์ดํ ๋ฌธ์๊ฐ ์ฌ์ฉ๋์์ต๋๋ค. ํน์๋ฌธ์์ฉ
$
๊ทธ๋์ ๋ณ์๋ $HOME
ํธ์คํธ ์์คํ
์์๋ ํด์๋์ง ์๊ณ ์ปจํ
์ด๋ ๋ด๋ถ์์๋ง ํด์๋์์ต๋๋ค.
๋ํํ ์ ๋ชจ๋๋ฅผ ์์ํ ํ ๋จ์ถํค๋ฅผ ์คํํ์ฌ ์ธ์
์ ์ข
๋ฃํ๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค. CTRL+D
:
lxc exec alp -- /bin/sh
์ปจํ
์ด๋ ์์ ๊ด๋ฆฌ ^
LXD์์๋ ํน๋ณํ ๊ตฌ์ฑ ์ธํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ปจํ
์ด๋ ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ์ปจํ
์ด๋ ๊ตฌ์ฑ ๋งค๊ฐ๋ณ์์ ์ ์ฒด ๋ชฉ๋ก์ ์ฐพ์ ์ ์์ต๋๋ค.
RAM ๋ฆฌ์์ค ์ ํ ^
๋งค๊ฐ ๋ณ์ limits.memory
์ปจํ
์ด๋์ ์ฌ์ฉ ๊ฐ๋ฅํ RAM์ ์์ ์ ํํฉ๋๋ค. ๊ฐ์ ์ซ์์ด๋ฉฐ ๋ค์ ์ค ํ๋์
๋๋ค.
์ปจํ ์ด๋์ RAM ์ ํ์ 256MB๋ก ์ค์ ํด ๋ณด๊ฒ ์ต๋๋ค.
lxc config set alp limits.memory 256MB
๋ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ํํ๋ ๋ค๋ฅธ ๋งค๊ฐ๋ณ์๋ ์์ต๋๋ค.
limits.memory.enforce
limits.memory.hugepages
limits.memory.swap
limits.memory.swap.priority
ํ lxc config show
์ค์ ๋ ์ ์ฉ๋ ๋ฆฌ์์ค ์ ํ์ ํฌํจํ์ฌ ์ ์ฒด ์ปจํ
์ด๋ ๊ตฌ์ฑ์ ํ์ํ ์ ์์ต๋๋ค.
lxc config show alp
architecture: x86_64
config:
image.architecture: amd64
image.description: Alpine 3.11 amd64 (20200220_13:00)
image.os: Alpine
image.release: "3.11"
image.serial: "20200220_13:00"
image.type: squashfs
limits.memory: 256MB
volatile.base_image: 73a3093d4a5ce0148fd84b95369b3fbecd19a537ddfd2e2d20caa2eef0e8fd60
volatile.eth0.host_name: veth75b6df07
volatile.eth0.hwaddr: 00:16:3e:a1:e7:46
volatile.idmap.base: "0"
volatile.idmap.current: '[]'
volatile.idmap.next: '[]'
volatile.last_state.idmap: '[]'
volatile.last_state.power: RUNNING
devices: {}
ephemeral: false
profiles:
- default
stateful: false
description: ""
CPU ๋ฆฌ์์ค ์ ํ ^
CPU ๋ฆฌ์์ค๋ฅผ ์ ํํ๋ ๋ฐฉ๋ฒ์๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
limit.cpu
- ์ปจํ ์ด๋๋ฅผ ํ๋ ์ด์์ CPU ์ฝ์ด์ ๋ฐ์ธ๋ฉํฉ๋๋ค.limits.cpu.allowance
- ์๊ฐ ์ ํ์ด ๊ฒฝ๊ณผํ๋ฉด CFS ์ค์ผ์ค๋ฌ ํ ๋น๋์ ๊ด๋ฆฌํ๊ณ , ๋ฐฑ๋ถ์จ์ด ๊ฒฝ๊ณผํ๋ฉด ๋ฒ์ฉ CPU ๋ฆฌ์์ค ๊ณต์ ๋ฉ์ปค๋์ฆ์ ๊ด๋ฆฌํฉ๋๋ค.limits.cpu.priority
- ํ๋ก์ธ์ ์ธํธ๋ฅผ ๊ณต์ ํ๋ ์ฌ๋ฌ ์ธ์คํด์ค์ ๋์ผํ ๋น์จ์ ํ๋ก์ธ์๊ฐ ํ ๋น๋ ๋ ์ค์ผ์ค๋ฌ ์ฐ์ ์์
lxc config set alp limits.cpu.allowance 40%
lxc config show alp
architecture: x86_64
config:
image.architecture: amd64
image.description: Alpine 3.11 amd64 (20200220_13:00)
image.os: Alpine
image.release: "3.11"
image.serial: "20200220_13:00"
image.type: squashfs
limits.cpu.allowance: 40%
limits.memory: 256MB
volatile.base_image: 73a3093d4a5ce0148fd84b95369b3fbecd19a537ddfd2e2d20caa2eef0e8fd60
volatile.eth0.host_name: veth75b6df07
volatile.eth0.hwaddr: 00:16:3e:a1:e7:46
volatile.idmap.base: "0"
volatile.idmap.current: '[]'
volatile.idmap.next: '[]'
volatile.last_state.idmap: '[]'
volatile.last_state.power: RUNNING
devices: {}
ephemeral: false
profiles:
- default
stateful: false
description: ""
๋์คํฌ ๊ณต๊ฐ ์ ํ ^
์ด์ ๊ฐ์ ์ ํ์ฌํญ ์ธ์๋ limits.read
, limits.write
์ปจํ
์ด๋๊ฐ ์๋นํ๋ ๋์คํฌ ๊ณต๊ฐ์ ์์ ์ ํํ ์๋ ์์ต๋๋ค(ZFS ๋๋ BTRFS์์๋ง ์๋).
lxc config device set alp root size=2GB
์ค์น ํ ๋งค๊ฐ๋ณ์์์ devices.root.size
์ค์ ๋ ํ๋๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
lxc config show alp
...
devices:
root:
path: /
pool: hddpool
size: 2GB
type: disk
ephemeral: false
profiles:
- default
- hddroot
stateful: false
description: ""
์ฌ์ฉ๋ ๋์คํฌ ํ ๋น๋์ ๋ณด๋ ค๋ฉด ๋ค์ ๋ช
๋ น์ ํตํด ์ป์ ์ ์์ต๋๋ค. lxc info
:
lxc info alp
...
Resources:
Processes: 5
Disk usage:
root: 1.05GB
CPU usage:
CPU usage (in seconds): 1
Memory usage:
Memory (current): 5.46MB
Network usage:
eth0:
Bytes received: 802B
Bytes sent: 1.59kB
Packets received: 4
Packets sent: 14
lo:
Bytes received: 0B
Bytes sent: 0B
Packets received: 0
Packets sent: 0
์ปจํ
์ด๋์ ๋ฃจํธ ์ฅ์น์ ๋ํ ์ ํ์ 2GB๋ก ์ค์ ํ์์๋ ๋ถ๊ตฌํ๊ณ ๋ค์๊ณผ ๊ฐ์ ์์คํ
์ ํธ๋ฆฌํฐ๋ df
์ด ์ ํ์ฌํญ์ ํ์๋์ง ์์ต๋๋ค. ์ด๋ฅผ ์ํด ์์ ํ
์คํธ๋ฅผ ์ค์ํ๊ณ ๊ทธ๊ฒ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ์์ ๋ณด๊ฒ ์ต๋๋ค.
๋์ผํ ์ปจํ ์ด๋์ 2๊ฐ์ ์๋ก์ด ๋์ผํ ์ปจํ ์ด๋๋ฅผ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค. ์คํ ๋ฆฌ์ง ํ (HDDํ):
lxc init alpine3 alp1 --storage=hddpool --profile=default --profile=hddroot
lxc init alpine3 alp2 --storage=hddpool --profile=default --profile=hddroot
lxc list
+------+---------+------------------+------+-----------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+---------+------------------+------+-----------+-----------+
| alp1 | RUNNING | 10.0.5.46 (eth0) | | CONTAINER | 0 |
+------+---------+------------------+------+-----------+-----------+
| alp2 | RUNNING | 10.0.5.30 (eth0) | | CONTAINER | 0 |
+------+---------+------------------+------+-----------+-----------+
์ปจํ ์ด๋ ์ค ํ๋์ 1GB ํ์ผ์ ์์ฑํด ๋ณด๊ฒ ์ต๋๋ค.
lxc exec alp1 -- dd if=/dev/urandom of=file.img bs=1M count=1000
ํ์ผ์ด ์์ฑ๋์๋์ง ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค.
lxc exec alp1 -- ls -lh
total 1000M
-rw-r--r-- 1 root root 1000.0M Mar 27 10:16 file.img
๋ ๋ฒ์งธ ์ปจํ ์ด๋๋ฅผ ์ดํด๋ณด๋ฉด ๋์ผํ ์์น์ ํ์ผ์ด ์๋์ง ํ์ธํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ด ํ์ผ์ ํด๋น ์์น์ ์์ ๊ฒ์ ๋๋ค. ์ด๋ ์ปจํ ์ด๋๊ฐ ์์ฒด์ ์ผ๋ก ์์ฑ๋๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ ์ฅ ์ฉ๋ ๊ฐ์ ์คํ ๋ฆฌ์ง ํ:
lxc exec alp2 -- ls -lh
total 0
ํ์ง๋ง ๊ทธ๊ฒ์ด ์์ฐํ๋ ๊ฐ์น๋ฅผ ๋น๊ตํด ๋ณด์ df
ํ๋์ ์ปจํ
์ด๋์ ๋ค๋ฅธ ์ปจํ
์ด๋์์:
lxc exec alp1 -- df -hT
Filesystem Type Size Used Available Use% Mounted on
/dev/loop1 btrfs 9.3G 1016.4M 7.8G 11% /
...
lxc exec alp2 -- df -hT
Filesystem Type Size Used Available Use% Mounted on
/dev/loop1 btrfs 9.3G 1016.4M 7.8G 11% /
...
์ฅ์น /dev/loop1
๋ฃจํธ ํํฐ์
์ผ๋ก ๋ง์ดํธ๋จ ์คํ ๋ฆฌ์ง ํ ์ด ์ปจํ
์ด๋๋ ์ฌ์ฉํ๋ฏ๋ก ๋ ์ฌ์ด์ ๋ณผ๋ฅจ์ ๊ณต์ ํฉ๋๋ค.
์์ ์๋น ํต๊ณ ^
๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์ปจํ ์ด๋์ ๋ฆฌ์์ค ์๋น ํต๊ณ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
lxc info alp
Name: alp
Location: none
Remote: unix://
Architecture: x86_64
Created: 2020/04/08 18:05 UTC
Status: Running
Type: container
Profiles: default, hddroot
Pid: 19219
Ips:
eth0: inet 10.0.5.5 veth2a1dc59d
eth0: inet6 fe80::216:3eff:fe0e:e271 veth2a1dc59d
lo: inet 127.0.0.1
lo: inet6 ::1
Resources:
Processes: 5
Disk usage:
root: 495.62kB
CPU usage:
CPU usage (in seconds): 1
Memory usage:
Memory (current): 4.79MB
Network usage:
eth0:
Bytes received: 730B
Bytes sent: 1.59kB
Packets received: 3
Packets sent: 14
lo:
Bytes received: 0B
Bytes sent: 0B
Packets received: 0
Packets sent: 0
์ค๋
์ท ์์
^
LXD์๋ ์ค๋ ์ท์ ์์ฑํ๊ณ ์ค๋ ์ท์์ ์ปจํ ์ด๋ ์ํ๋ฅผ ๋ณต์ํ๋ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
์ค๋ ์ท์ ์์ฑํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ธ์.
lxc snapshot alp snapshot1
ํ lxc snapshot
์ฌ์ฉํ ์ ์๋ ์ด์ ๊ฐ ์์ต๋๋ค list
๋ฐ๋ผ์ ์ค๋
์ท ๋ชฉ๋ก์ ๋ณด๋ ค๋ฉด ์ปจํ
์ด๋์ ๋ํ ์ผ๋ฐ ์ ๋ณด๋ฅผ ํ์ํ๋ ๋ช
๋ น์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
lxc info alp
...
...
Snapshots:
snapshot1 (taken at 2020/04/08 18:18 UTC) (stateless)
๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ์ฌ ์ค๋
์ท์์ ์ปจํ
์ด๋๋ฅผ ๋ณต์ํ ์ ์์ต๋๋ค. lxc restore
๋ณต์์ด ์ํ๋ ์ปจํ
์ด๋์ ์ค๋
์ท ๋ณ์นญ์ ์ง์ ํฉ๋๋ค.
lxc restore alp snapshot1
์ค๋ ์ท์ ์ญ์ ํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค. ๋ช ๋ น ๊ตฌ๋ฌธ์ ๋ค๋ฅธ ๊ตฌ๋ฌธ๊ณผ ์ ์ฌํ์ง ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ์ปจํ ์ด๋ ์ด๋ฆ ๋ค์ ์ฌ๋์๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค. ์ฌ๋์๋ฅผ ์๋ตํ๋ฉด ์ค๋ ์ท ์ญ์ ๋ช ๋ น์ด ์ปจํ ์ด๋ ์ญ์ ๋ช ๋ น์ผ๋ก ํด์๋ฉ๋๋ค!
lxc delete alp/snapshot1
์์ ์์์๋ ์์ ์ํ ๋น์ ์ฅ ์ค๋ ์ท์ ์ดํด๋ณด์์ต๋๋ค. LXD์๋ ์ปจํ ์ด๋์ ์๋ ๋ชจ๋ ํ๋ก์ธ์ค์ ํ์ฌ ์ํ๋ฅผ ์ ์ฅํ๋ ๋ ๋ค๋ฅธ ์ ํ์ ์ค๋ ์ท์ธ ์ํ ์ ์ฅ์ด ์์ต๋๋ค. ์ํ ์ ์ฅ ์ค๋ ์ท๊ณผ ๊ด๋ จ๋ ํฅ๋ฏธ๋กญ๊ณ ์ ์ฉํ ๊ธฐ๋ฅ์ด ๋ง์ด ์์ต๋๋ค.
๋ ๋ญ์ผ? ^
- Python ๊ฐ๋ฐ์๋ฅผ ์ํ ๋ชจ๋์ด ์ ๊ณต๋ฉ๋๋ค.
PyLXD LXD์ API๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ ๋ฐ์ดํธ 10.04.2020๋ 15์ 00์ผ XNUMX:XNUMX: ํ์ ์ถ๊ฐ
์ถ์ฒ : habr.com