Debian12 で LXD をもう少し試す
概要
デフォルトで作成される lxdbr0 ではなくて、自分で作成した Linux ブリッジ、OVS スイッチを利用してみる。
環境
https://zenn.dev/mnod/articles/fdf71c1f4ad82c の続き。
Linux ブリッジを利用する
Linuxブリッジの作成
下記ファイルを用意したうえで、 sudo netplan try --timeout 30
を実行するなどして反映する。
network:
ethernets:
enp1s0:
dhcp4: false
match:
macaddress: 52:54:00:87:c8:69
set-name: enp1s0
bridges:
br0:
interfaces:
- enp1s0
dhcp4: false
addresses:
- 192.168.11.44/24
routes:
- to: default
via: 192.168.11.254
nameservers:
addresses:
- 192.168.11.249
- 192.168.11.254
version: 2
確認する。
$ ip a show br0
12: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether ca:0a:f1:70:4a:ba brd ff:ff:ff:ff:ff:ff
inet 192.168.11.44/24 brd 192.168.11.255 scope global br0
valid_lft forever preferred_lft forever
inet6 2405:6580:d400:2900:c80a:f1ff:fe70:4aba/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 86371sec preferred_lft 14371sec
inet6 fe80::c80a:f1ff:fe70:4aba/64 scope link
valid_lft forever preferred_lft forever
$ sudo brctl show
bridge name bridge id STP enabled interfaces
br0 8000.ca0af1704aba no enp1s0
lxdbr0 8000.00163eb70784 no
$ sudo lxc network list
+--------+----------+---------+----------------+---------------------------+-------------+---------+---------+
| NAME | TYPE | MANAGED | IPV4 | IPV6 | DESCRIPTION | USED BY | STATE |
+--------+----------+---------+----------------+---------------------------+-------------+---------+---------+
| br0 | bridge | NO | | | | 0 | |
+--------+----------+---------+----------------+---------------------------+-------------+---------+---------+
| enp1s0 | physical | NO | | | | 0 | |
+--------+----------+---------+----------------+---------------------------+-------------+---------+---------+
| lxdbr0 | bridge | YES | 10.82.242.1/24 | fd42:410c:cec4:c79b::1/64 | | 1 | CREATED |
+--------+----------+---------+----------------+---------------------------+-------------+---------+---------+
プロファイルを作成する
新しくプロファイルを作成する
$ sudo lxc profile create linuxbridge
Profile linuxbridge created
$ sudo lxc profile list
+-------------+---------------------+---------+
| NAME | DESCRIPTION | USED BY |
+-------------+---------------------+---------+
| default | Default LXD profile | 0 |
+-------------+---------------------+---------+
| linuxbridge | | 0 |
+-------------+---------------------+---------+
$ sudo lxc profile show linuxbridge
config: {}
description: ""
devices: {}
name: linuxbridge
used_by: []
上で作成した br0
を利用するように設定
$ sudo lxc network attach-profile br0 linuxbridge eth0
$ sudo lxc profile show linuxbridge
config: {}
description: ""
devices:
eth0:
nictype: bridged
parent: br0
type: nic
name: linuxbridge
used_by: []
ストレージプール default を利用するように登録
$ sudo sudo lxc profile device add linuxbridge root disk path=/ pool=default
Device root added to linuxbridge
$ sudo lxc profile show linuxbridge
config: {}
description: ""
devices:
eth0:
nictype: bridged
parent: br0
type: nic
root:
path: /
pool: default
type: disk
name: linuxbridge
used_by: []
コンテナ作成
前回コンテナを削除した後、消さずにローカルに残していた debian-test1 イメージを再利用する
$ sudo lxc image list
+--------------+--------------+--------+---------------------------------------+--------------+-----------+----------+------------------------------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE | UPLOAD DATE |
+--------------+--------------+--------+---------------------------------------+--------------+-----------+----------+------------------------------+
| debian-test1 | 9ec484eba6b6 | no | Debian bookworm arm64 (20250106_0004) | aarch64 | CONTAINER | 157.23MB | Jan 10, 2025 at 8:19pm (UTC) |
+--------------+--------------+--------+---------------------------------------+--------------+-----------+----------+------------------------------+
$ sudo lxc list
+------+-------+------+------+------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+-------+------+------+------+-----------+
作成したプロファイルを指定してコンテナを作成する。
$ sudo lxc launch debian-test1 debian-test-linuxbridge --profile linuxbridge
Creating debian-test-linuxbridge
Starting debian-test-linuxbridge
$ sudo lxc list
+-------------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+-------------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
| debian-test-linuxbridge | RUNNING | 192.168.11.77 (eth0) | 2405:6580:d400:2900:216:3eff:feda:59ff (eth0) | CONTAINER | 0 |
+-------------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
もろもろ確認
外部から疎通確認
$ curl -I 192.168.11.77
HTTP/1.1 200 OK
Server: nginx/1.22.1
Date: Sat, 11 Jan 2025 01:24:21 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Fri, 10 Jan 2025 09:31:14 GMT
Connection: keep-alive
ETag: "6780e8e2-267"
Accept-Ranges: bytes
プロファイル確認
$ sudo lxc profile show linuxbridge
config: {}
description: ""
devices:
eth0:
nictype: bridged
parent: br0
type: nic
root:
path: /
pool: default
type: disk
name: linuxbridge
used_by:
- /1.0/instances/debian-test-linuxbridge
ネットワーク確認
$ sudo lxc network list
+--------+----------+---------+----------------+---------------------------+-------------+---------+---------+
| NAME | TYPE | MANAGED | IPV4 | IPV6 | DESCRIPTION | USED BY | STATE |
+--------+----------+---------+----------------+---------------------------+-------------+---------+---------+
| br0 | bridge | NO | | | | 2 | |
+--------+----------+---------+----------------+---------------------------+-------------+---------+---------+
| enp1s0 | physical | NO | | | | 0 | |
+--------+----------+---------+----------------+---------------------------+-------------+---------+---------+
| lxdbr0 | bridge | YES | 10.82.242.1/24 | fd42:410c:cec4:c79b::1/64 | | 1 | CREATED |
+--------+----------+---------+----------------+---------------------------+-------------+---------+---------+
$ sudo lxc network info br0
Name: br0
MAC address: ca:0a:f1:70:4a:ba
MTU: 1500
State: up
Type: broadcast
IP addresses:
inet 192.168.11.44/24 (global)
inet6 2405:6580:d400:2900:c80a:f1ff:fe70:4aba/64 (global)
inet6 fe80::c80a:f1ff:fe70:4aba/64 (link)
Network usage:
Bytes received: 2.68MB
Bytes sent: 233.41kB
Packets received: 23415
Packets sent: 1746
Bridge:
ID: 8000.ca0af1704aba
STP: false
Forward delay: 1500
Default VLAN ID: 1
VLAN filtering: false
Upper devices: enp1s0, vethf26b850a
$ sudo brctl show
bridge name bridge id STP enabled interfaces
br0 8000.ca0af1704aba no enp1s0
vethf26b850a
lxdbr0 8000.00163eb70784 no
Open vSwitch を利用する
OVSブリッジの作成
必要なパッケージをインストールする
$ sudo apt install --no-install-recommends openvswitch-switch
$ sudo systemctl status ovsdb-server.service
$ sudo ovs-vsctl show
38d33bcc-e2cc-4613-a7e0-fd1f3eb16551
ovs_version: "3.1.0"
下記ファイルを用意したうえで、 sudo netplan try --timeout 30
を実行するなどして反映する。
network:
version: 2
ethernets:
enp1s0:
dhcp4: false
match:
macaddress: 52:54:00:87:c8:69
set-name: enp1s0
bridges:
ovsbr0:
openvswitch: {}
interfaces:
- enp1s0
dhcp4: false
addresses:
- 192.168.11.44/24
routes:
- to: default
via: 192.168.11.254
nameservers:
addresses:
- 192.168.11.249
- 192.168.11.254
確認する。
$ sudo ovs-vsctl show
38d33bcc-e2cc-4613-a7e0-fd1f3eb16551
Bridge ovsbr0
fail_mode: standalone
Port ovsbr0
Interface ovsbr0
type: internal
Port enp1s0
Interface enp1s0
ovs_version: "3.1.0"
$ ip a show ovsbr0
16: ovsbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
link/ether de:00:14:7f:b1:4e brd ff:ff:ff:ff:ff:ff
inet 192.168.11.44/24 brd 192.168.11.255 scope global ovsbr0
valid_lft forever preferred_lft forever
inet6 2405:6580:d400:2900:dc00:14ff:fe7f:b14e/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 86373sec preferred_lft 14373sec
inet6 fe80::dc00:14ff:fe7f:b14e/64 scope link
valid_lft forever preferred_lft forever
$ sudo lxc network list
+--------+----------+---------+----------------+---------------------------+-------------+---------+---------+
| NAME | TYPE | MANAGED | IPV4 | IPV6 | DESCRIPTION | USED BY | STATE |
+--------+----------+---------+----------------+---------------------------+-------------+---------+---------+
| br0 | bridge | NO | | | | 1 | |
+--------+----------+---------+----------------+---------------------------+-------------+---------+---------+
| enp1s0 | physical | NO | | | | 0 | |
+--------+----------+---------+----------------+---------------------------+-------------+---------+---------+
| lxdbr0 | bridge | YES | 10.82.242.1/24 | fd42:410c:cec4:c79b::1/64 | | 1 | CREATED |
+--------+----------+---------+----------------+---------------------------+-------------+---------+---------+
| ovsbr0 | bridge | NO | | | | 0 | |
+--------+----------+---------+----------------+---------------------------+-------------+---------+---------+
$ sudo lxc network info ovsbr0
Name: ovsbr0
MAC address: de:00:14:7f:b1:4e
MTU: 1500
State: up
Type: broadcast
IP addresses:
inet 192.168.11.44/24 (global)
inet6 2405:6580:d400:2900:dc00:14ff:fe7f:b14e/64 (global)
inet6 fe80::dc00:14ff:fe7f:b14e/64 (link)
Network usage:
Bytes received: 109.10kB
Bytes sent: 17.90kB
Packets received: 872
Packets sent: 14
プロファイルを作成する
新しくプロファイルを作成する
$ sudo lxc profile create ovsbridge
Profile ovsbridge created
$ sudo lxc profile list
+-------------+---------------------+---------+
| NAME | DESCRIPTION | USED BY |
+-------------+---------------------+---------+
| default | Default LXD profile | 0 |
+-------------+---------------------+---------+
| linuxbridge | | 0 |
+-------------+---------------------+---------+
| ovsbridge | | 0 |
+-------------+---------------------+---------+
$ sudo lxc profile show ovsbridge
config: {}
description: ""
devices: {}
name: ovsbridge
used_by: []
上で作成した ovsbr0
を利用するように設定
$ sudo lxc network attach-profile ovsbr0 ovsbridge eth0
$ sudo lxc profile show ovsbridge
config: {}
description: ""
devices:
eth0:
nictype: bridged
parent: ovsbr0
type: nic
name: ovsbridge
used_by: []
ストレージプール default を利用するように登録
$ sudo sudo lxc profile device add ovsbridge root disk path=/ pool=default
Device root added to ovsbridge
$ sudo lxc profile show ovsbridge
config: {}
description: ""
devices:
eth0:
nictype: bridged
parent: ovsbr0
type: nic
root:
path: /
pool: default
type: disk
name: ovsbridge
used_by: []
コンテナ作成
$ sudo lxc list
+------+-------+------+------+------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+-------+------+------+------+-----------+
$ sudo lxc launch debian-test1 debian-test-linuxbridge --profile ovsbridge
Creating debian-test-linuxbridge
Starting debian-test-linuxbridge
$ sudo lxc list
+-------------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+-------------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
| debian-test-linuxbridge | RUNNING | 192.168.11.78 (eth0) | 2405:6580:d400:2900:216:3eff:fe29:297c (eth0) | CONTAINER | 0 |
+-------------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
もろもろ確認
外部から疎通確認
$ curl -I 192.168.11.78
HTTP/1.1 200 OK
Server: nginx/1.22.1
Date: Sat, 11 Jan 2025 08:12:24 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Fri, 10 Jan 2025 09:31:14 GMT
Connection: keep-alive
ETag: "6780e8e2-267"
Accept-Ranges: bytes
プロファイル確認
$ sudo lxc profile show ovsbridge
config: {}
description: ""
devices:
eth0:
nictype: bridged
parent: ovsbr0
type: nic
root:
path: /
pool: default
type: disk
name: ovsbridge
used_by:
- /1.0/instances/debian-test-linuxbridge
ネットワーク確認
$ sudo lxc network list
+--------+----------+---------+----------------+---------------------------+-------------+---------+---------+
| NAME | TYPE | MANAGED | IPV4 | IPV6 | DESCRIPTION | USED BY | STATE |
+--------+----------+---------+----------------+---------------------------+-------------+---------+---------+
| br0 | bridge | NO | | | | 1 | |
+--------+----------+---------+----------------+---------------------------+-------------+---------+---------+
| enp1s0 | physical | NO | | | | 0 | |
+--------+----------+---------+----------------+---------------------------+-------------+---------+---------+
| lxdbr0 | bridge | YES | 10.82.242.1/24 | fd42:410c:cec4:c79b::1/64 | | 1 | CREATED |
+--------+----------+---------+----------------+---------------------------+-------------+---------+---------+
| ovsbr0 | bridge | NO | | | | 2 | |
+--------+----------+---------+----------------+---------------------------+-------------+---------+---------+
$ sudo lxc network info ovsbr0
Name: ovsbr0
MAC address: de:00:14:7f:b1:4e
MTU: 1500
State: up
Type: broadcast
IP addresses:
inet 192.168.11.44/24 (global)
inet6 2405:6580:d400:2900:dc00:14ff:fe7f:b14e/64 (global)
inet6 fe80::dc00:14ff:fe7f:b14e/64 (link)
Network usage:
Bytes received: 6.60MB
Bytes sent: 502.98kB
Packets received: 51983
Packets sent: 4053
$ sudo lxc network show ovsbr0
config: {}
description: ""
name: ovsbr0
type: bridge
used_by:
- /1.0/instances/debian-test-linuxbridge
- /1.0/profiles/ovsbridge
managed: false
status: ""
locations: []
$ sudo ovs-vsctl show
38d33bcc-e2cc-4613-a7e0-fd1f3eb16551
Bridge ovsbr0
fail_mode: standalone
Port ovsbr0
Interface ovsbr0
type: internal
Port veth142b2a30
Interface veth142b2a30
Port enp1s0
Interface enp1s0
ovs_version: "3.1.0"
ストレージプール確認
$ sudo lxc storage info default
info:
description: ""
driver: dir
name: default
space used: 2.18GiB
total space: 7.71GiB
used by:
instances:
- debian-test-linuxbridge
profiles:
- default
- linuxbridge
- ovsbridge
LVM ストレージプールの利用
ストレージプールの作成
必要なパッケージのインストール
$ sudo apt install --no-install-recommends lvm2
ストレージプール作成。
利用するPV、VG等を指定しないので、ループバックファイルが利用される。
$ sudo lxc storage create lvmstroage lvm
Storage pool lvmstroage created
$ sudo lxc storage list
+------------+--------+------------------------------------+-------------+---------+---------+
| NAME | DRIVER | SOURCE | DESCRIPTION | USED BY | STATE |
+------------+--------+------------------------------------+-------------+---------+---------+
| default | dir | /var/lib/lxd/storage-pools/default | | 4 | CREATED |
+------------+--------+------------------------------------+-------------+---------+---------+
| lvmstroage | lvm | /var/lib/lxd/disks/lvmstroage.img | | 0 | CREATED |
+------------+--------+------------------------------------+-------------+---------+---------+
確認
$ sudo ls -lhs /var/lib/lxd/disks/lvmstroage.img
17M -rw------- 1 root root 5.0G Jan 11 08:27 /var/lib/lxd/disks/lvmstroage.img
$ sudo lxc storage info lvmstroage
info:
description: ""
driver: lvm
name: lvmstroage
space used: 540.60MiB
total space: 4.98GiB
used by: {}
$ sudo lxc storage show lvmstroage
config:
lvm.thinpool_name: LXDThinPool
lvm.vg_name: lvmstroage
size: 5GiB
source: /var/lib/lxd/disks/lvmstroage.img
description: ""
name: lvmstroage
driver: lvm
used_by: []
status: Created
locations:
- none
プロファイルに登録
先ほどの ovsbridge
では、ストレージプール default
を利用している。
これを、ストレージプール lvmstroage
に入れ替えたい。
$ sudo lxc profile show ovsbridge
config: {}
description: ""
devices:
eth0:
nictype: bridged
parent: ovsbr0
type: nic
root:
path: /
pool: default
type: disk
name: ovsbridge
used_by: []
ストレージプール default
の登録を解除する。
$ sudo sudo lxc profile device remove ovsbridge root
Device root removed from ovsbridge
$ sudo lxc profile show ovsbridge
config: {}
description: ""
devices:
eth0:
nictype: bridged
parent: ovsbr0
type: nic
name: ovsbridge
used_by: []
ストレージプール lvmstroage
を登録する。
$ sudo lxc profile device add ovsbridge root disk path=/ pool=lvmstroage
Device root added to ovsbridge
$ sudo lxc profile show ovsbridge
config: {}
description: ""
devices:
eth0:
nictype: bridged
parent: ovsbr0
type: nic
root:
path: /
pool: lvmstroage
type: disk
name: ovsbridge
used_by: []
コンテナ起動
修正したプロファイル ovsbridge
を指定してコンテナを起動する。
$ sudo lxc launch debian-test1 debian-test-linuxbridge --profile ovsbridge
Creating debian-test-linuxbridge
Starting debian-test-linuxbridge
$ sudo lxc list
+-------------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+-------------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
| debian-test-linuxbridge | RUNNING | 192.168.11.80 (eth0) | 2405:6580:d400:2900:216:3eff:febe:83ac (eth0) | CONTAINER | 0 |
+-------------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
プロファイルの確認
$ sudo lxc profile show ovsbridge
config: {}
description: ""
devices:
eth0:
nictype: bridged
parent: ovsbr0
type: nic
root:
path: /
pool: lvmstroage
type: disk
name: ovsbridge
used_by:
- /1.0/instances/debian-test-linuxbridge
ストレージプールを確認
$ sudo lxc storage info lvmstroage
info:
description: ""
driver: lvm
name: lvmstroage
space used: 1.52GiB
total space: 4.98GiB
used by:
images:
- 9ec484eba6b637d006364d2d2eb7c3a372f2934299c2a17837ca65619492fb4e
instances:
- debian-test-linuxbridge
profiles:
- ovsbridge
$ sudo lxc storage show lvmstroage
config:
lvm.thinpool_name: LXDThinPool
lvm.vg_name: lvmstroage
size: 5GiB
source: /var/lib/lxd/disks/lvmstroage.img
description: ""
name: lvmstroage
driver: lvm
used_by:
- /1.0/images/9ec484eba6b637d006364d2d2eb7c3a372f2934299c2a17837ca65619492fb4e
- /1.0/instances/debian-test-linuxbridge
- /1.0/profiles/ovsbridge
status: Created
locations:
- none
使われているファイルシステム、LVMを確認
$ df -h | grep lxd
tmpfs 100K 0 100K 0% /var/lib/lxd/shmounts
tmpfs 100K 0 100K 0% /var/lib/lxd/devlxd
/dev/lvmstroage/containers_debian--test--linuxbridge 9.8G 2.2G 7.1G 24% /var/lib/lxd/storage-pools/lvmstroage/containers/debian-test-linuxbridge
$ sudo pvs
PV VG Fmt Attr PSize PFree
/dev/loop0 lvmstroage lvm2 a-- <5.00g 0
$ sudo losetup
NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE DIO LOG-SEC
/dev/loop0 0 0 0 0 /var/lib/lxd/disks/lvmstroage.img 1 512
$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
lvmstroage 1 4 0 wz--n- <5.00g 0
$ sudo lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
LXDThinPool lvmstroage twi-aotz-- 4.98g 60.81 24.80
containers_debian--test--linuxbridge lvmstroage Vwi-aotz-k 10.00g LXDThinPool images_9ec484eba6b637d006364d2d2eb7c3a372f2934299c2a17837ca65619492fb4e 25.63
custom_default_testvolume lvmstroage Vwi---tz-k 10.00g LXDThinPool
images_9ec484eba6b637d006364d2d2eb7c3a372f2934299c2a17837ca65619492fb4e lvmstroage Vwi---tz-k 10.00g LXDThinPool
ボリュームの利用
ボリュームを作成、アタッチしてみる
ボリューム作成
ストレージプール lvmstroage
内にボリュームを作成する
$ sudo lxc storage volume list lvmstroage
+-----------+------------------------------------------------------------------+-------------+--------------+---------+
| TYPE | NAME | DESCRIPTION | CONTENT-TYPE | USED BY |
+-----------+------------------------------------------------------------------+-------------+--------------+---------+
| container | debian-test-linuxbridge | | filesystem | 1 |
+-----------+------------------------------------------------------------------+-------------+--------------+---------+
| image | 9ec484eba6b637d006364d2d2eb7c3a372f2934299c2a17837ca65619492fb4e | | filesystem | 1 |
+-----------+------------------------------------------------------------------+-------------+--------------+---------+
$ sudo lxc storage volume create lvmstroage testvolume
Storage volume testvolume created
$ sudo lxc storage volume list lvmstroage
+-----------+------------------------------------------------------------------+-------------+--------------+---------+
| TYPE | NAME | DESCRIPTION | CONTENT-TYPE | USED BY |
+-----------+------------------------------------------------------------------+-------------+--------------+---------+
| container | debian-test-linuxbridge | | filesystem | 1 |
+-----------+------------------------------------------------------------------+-------------+--------------+---------+
| custom | testvolume | | filesystem | 0 |
+-----------+------------------------------------------------------------------+-------------+--------------+---------+
| image | 9ec484eba6b637d006364d2d2eb7c3a372f2934299c2a17837ca65619492fb4e | | filesystem | 1 |
+-----------+------------------------------------------------------------------+-------------+--------------+---------+
$ sudo lxc storage volume show lvmstroage testvolume
config:
block.filesystem: ext4
block.mount_options: discard
description: ""
name: testvolume
type: custom
used_by: []
location: none
content_type: filesystem
project: default
created_at: 0001-01-01T00:00:00Z
アタッチ
コンテナにアタッチする。
停止しなくてもアタッチできる。
$ sudo lxc storage volume attach lvmstroage testvolume debian-test-linuxbridge /work
$ sudo lxc exec debian-test-linuxbridge -- df -h /work
Filesystem Size Used Avail Use% Mounted on
/dev/lvmstroage/custom_default_testvolume 9.8G 24K 9.3G 1% /work
$ sudo lxc exec debian-test-linuxbridge -- grep work /proc/mounts
/dev/lvmstroage/custom_default_testvolume /work ext4 rw,relatime,discard,stripe=16 0 0
デタッチ
$ sudo lxc storage volume detach lvmstroage testvolume debian-test-linuxbridge
ボリュームのコピー
ストレージプールを超えてコピーすることができる。
$ sudo lxc storage volume copy lvmstroage/testvolume default/testvolume
Storage volume copied successfully!
$ sudo lxc storage volume list default
+--------+------------+-------------+--------------+---------+
| TYPE | NAME | DESCRIPTION | CONTENT-TYPE | USED BY |
+--------+------------+-------------+--------------+---------+
| custom | testvolume | | filesystem | 0 |
+--------+------------+-------------+--------------+---------+
ボリュームの削除
$ sudo lxc storage volume delete default testvolume
Storage volume testvolume deleted
$ sudo lxc storage volume list default
+------+------+-------------+--------------+---------+
| TYPE | NAME | DESCRIPTION | CONTENT-TYPE | USED BY |
+------+------+-------------+--------------+---------+
cloud-init の利用
プロファイルに設定追加
default プロファイルにユーザデータを追加する。
$ sudo lxc profile show default
config: {}
description: Default LXD profile
devices:
eth0:
name: eth0
network: lxdbr0
type: nic
root:
path: /
pool: default
type: disk
name: default
used_by:
- /1.0/instances/debian-test-remote
- /1.0/instances/debian-test-copy
追加する。
$ sudo lxc profile set default user.user-data "#cloud-config
package_upgrade: true
packages:
- nginx
user:
- name: debian
"
$ sudo lxc profile show default
config:
user.user-data: |
#cloud-config
package_upgrade: true
packages:
- nginx
user:
- name: debian
description: Default LXD profile
devices:
eth0:
name: eth0
network: lxdbr0
type: nic
root:
path: /
pool: default
type: disk
name: default
used_by:
- /1.0/instances/debian-test-remote
- /1.0/instances/debian-test-copy
コンテナの起動
cloud
の付いたイメージを利用する。
$ sudo lxc image list canonical:debian/12
+--------------------------------+--------------+--------+---------------------------------------+--------------+-----------------+----------+-------------------------------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE | UPLOAD DATE |
+--------------------------------+--------------+--------+---------------------------------------+--------------+-----------------+----------+-------------------------------+
| debian/12 (7 more) | fe62f9b06ff8 | yes | Debian bookworm arm64 (20250113_0004) | aarch64 | CONTAINER | 93.15MB | Jan 13, 2025 at 12:00am (UTC) |
+--------------------------------+--------------+--------+---------------------------------------+--------------+-----------------+----------+-------------------------------+
| debian/12/amd64 (3 more) | 2cef5dcb4c3d | yes | Debian bookworm amd64 (20250118_0002) | x86_64 | CONTAINER | 88.95MB | Jan 18, 2025 at 12:00am (UTC) |
+--------------------------------+--------------+--------+---------------------------------------+--------------+-----------------+----------+-------------------------------+
| debian/12/amd64 (3 more) | dc335255477e | yes | Debian bookworm amd64 (20250118_0002) | x86_64 | VIRTUAL-MACHINE | 338.38MB | Jan 18, 2025 at 12:00am (UTC) |
+--------------------------------+--------------+--------+---------------------------------------+--------------+-----------------+----------+-------------------------------+
| debian/12/cloud (3 more) | 5935e01145ad | yes | Debian bookworm arm64 (20250113_0004) | aarch64 | CONTAINER | 118.65MB | Jan 13, 2025 at 12:00am (UTC) |
+--------------------------------+--------------+--------+---------------------------------------+--------------+-----------------+----------+-------------------------------+
| debian/12/cloud/amd64 (1 more) | 03e7693dbb1d | yes | Debian bookworm amd64 (20250118_0002) | x86_64 | CONTAINER | 115.27MB | Jan 18, 2025 at 12:00am (UTC) |
+--------------------------------+--------------+--------+---------------------------------------+--------------+-----------------+----------+-------------------------------+
| debian/12/cloud/amd64 (1 more) | c8adb196909b | yes | Debian bookworm amd64 (20250118_0002) | x86_64 | VIRTUAL-MACHINE | 381.83MB | Jan 18, 2025 at 12:00am (UTC) |
+--------------------------------+--------------+--------+---------------------------------------+--------------+-----------------+----------+-------------------------------+
邪魔者がいるので消しておく
$ sudo lxc delete debian-test-remote
$ sudo lxc delete debian-test-copy
$ sudo lxc image delete 9ec484eba6b6
$ sudo lxc launch canonical:debian/12/cloud debian-cloudimage-test --profile default
Creating debian-cloudimage-test
Starting debian-cloudimage-test
$ sudo lxc list
+------------------------+---------+---------------------+-----------------------------------------------+-----------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------------------------+---------+---------------------+-----------------------------------------------+-----------+-----------+
| debian-cloudimage-test | RUNNING | 10.34.31.194 (eth0) | fd42:11a1:a94e:39e9:216:3eff:fe1f:9e77 (eth0) | CONTAINER | 0 |
+------------------------+---------+---------------------+-----------------------------------------------+-----------+-----------+
確認
$ sudo lxc exec debian-cloudimage-test -- cloud-init status
status: running
$ sudo lxc exec debian-cloudimage-test -- tail -f /var/log/cloud-init-output.log
Unpacking nginx-common (1.22.1-9) ...
Selecting previously unselected package nginx.
Preparing to unpack .../nginx_1.22.1-9_arm64.deb ...
Unpacking nginx (1.22.1-9) ...
Setting up nginx-common (1.22.1-9) ...
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service _ /lib/systemd/system/nginx.service.
Setting up nginx (1.22.1-9) ...
Upgrading binary: nginx.
2025-01-18 08:09:28,318 - ug_util.py[WARNING]: Format for 'user' key must be a string or dictionary and not list
Cloud-init v. 22.4.2 finished at Sat, 18 Jan 2025 08:09:28 +0000. Datasource DataSourceNoCloud [seed=/var/lib/cloud/seed/nocloud-net][dsmode=net]. Up 32.30 seconds
$ sudo lxc exec debian-cloudimage-test -- cloud-init status
status: done
ホストOSから疎通確認
$ curl -I 10.34.31.194
HTTP/1.1 200 OK
Server: nginx/1.22.1
Date: Sat, 18 Jan 2025 08:11:29 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Sat, 18 Jan 2025 08:09:23 GMT
Connection: keep-alive
ETag: "678b61b3-267"
Accept-Ranges: bytes
プロファイルから削除
$ sudo lxc profile unset default user.user-data
$ sudo lxc profile show default
config: {}
description: Default LXD profile
devices:
eth0:
name: eth0
network: lxdbr0
type: nic
root:
path: /
pool: default
type: disk
name: default
used_by:
- /1.0/instances/debian-cloudimage-test
Discussion