Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ возмоТности LXD β€” систСмы ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π² Linux

Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ возмоТности LXD — систСмы ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π² Linux

LXD β€” это систСмный ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ поколСния, Ρ‚Π°ΠΊ гласит источник. Он ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс, ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ вмСсто этого ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Linux.

Π―Π΄Ρ€ΠΎ LXD β€” это ΠΏΡ€ΠΈΠ²Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π΄Π΅ΠΌΠΎΠ½ (сСрвис Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ root), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт REST API Ρ‡Π΅Ρ€Π΅Π· Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ unix сокСт, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‡Π΅Ρ€Π΅Π· ΡΠ΅Ρ‚ΡŒ, Ссли установлСна ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ конфигурация. ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ инструмСнт ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки поставляСмый с LXD ΠΏΠΎΡΡ‹Π»Π°ΡŽΡ‚ запросы Ρ‡Π΅Ρ€Π΅Π· этот REST API. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅Ρ‚Π΅ΡΡŒ Π»ΠΈ Π²Ρ‹ ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ хосту ΠΈΠ»ΠΈ ΠΊ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌΡƒ, всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π° концСпциях LXD, Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ всС доступныС возмоТности ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π² Ρ‚ΠΎΠΌ числС нСдавнюю Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π² послСдних вСрсиях LXD ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин QEMU ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ с ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ. ВмСсто этого ΠΌΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ возмоТности управлСния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ β€” настроим ΠΏΡƒΠ»Ρ‹ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰, ΡΠ΅Ρ‚ΡŒ, запустим ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Π»ΠΈΠΌΠΈΡ‚Ρ‹ Π½Π° рСсурсы, Π° Ρ‚Π°ΠΊΠΆΠ΅ рассмотрим ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ½Π΅ΠΏΡˆΠΎΡ‚Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ смогли ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ прСдставлСниС ΠΎ LXD ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π² Linux.

Для получСния ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ слСдуСт ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ источнику:

Навигация

Π˜Π½ΡΡ‚Π°Π»Π»ΡΡ†ΠΈΡ LXD ^

Π˜Π½ΡΡ‚Π°Π»Π»ΡΡ†ΠΈΡ LXD Π² дистрибутивах Ubuntu ^

Π’ дистрибутивС Ubuntu 19.10 ΠΏΠ°ΠΊΠ΅Ρ‚ lxd ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Ρ€Π°Π½ΡΠ»ΡΡ†ΠΈΡŽ Π½Π° snap-ΠΏΠ°ΠΊΠ΅Ρ‚:

apt search lxd

lxd/eoan 1:0.7 all
  Transitional package - lxd -> snap (lxd)

Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ установлСны сразу Π΄Π²Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΠΎΠ΄ΠΈΠ½ систСмный, Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠ°ΠΊ snap-ΠΏΠ°ΠΊΠ΅Ρ‚. Установка Π΄Π²ΡƒΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² систСмС ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ систСмный ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ сиротой, Ссли ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ snap-ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ snap-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².

Найти ΠΏΠ°ΠΊΠ΅Ρ‚ lxd Π² snap-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

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 являСтся snap-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ, ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· систСмный ΠΏΠ°ΠΊΠ΅Ρ‚ lxd, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создаст Π² систСмС ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π³Ρ€ΡƒΠΏΠΏΡƒ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Π² /usr/bin ΠΈ Ρ‚.Π΄.

sudo apt update
sudo apt install lxd

УбСдимся, Ρ‡Ρ‚ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ установлСн ΠΊΠ°ΠΊ snap-ΠΏΠ°ΠΊΠ΅Ρ‚:

snap list

Name  Version    Rev    Tracking  Publisher   Notes
core  16-2.43.3  8689   stable    canonicalβœ“  core
lxd   3.21       13474  stable/…  canonicalβœ“  -

Π˜Π½ΡΡ‚Π°Π»Π»ΡΡ†ΠΈΡ LXD Π² дистрибутивах Arch Linux ^

Для установки ΠΏΠ°ΠΊΠ΅Ρ‚Π° 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 (Storage) ^

Π”ΠΎ Π½Π°Ρ‡Π°Π»Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ логичСски устроСно Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π² LXD.

Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ (Storage) состоит ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Storage Pool ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠ΄Π½Ρƒ ΠΈΠ· ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ZFS, BTRFS, LVM ΠΈΠ»ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Storage Pool раздСляСтся Π½Π° Ρ‚ΠΎΠΌΠ° (Storage Volume) ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат ΠΎΠ±Ρ€Π°Π·Ρ‹, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΈΠ»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ для Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ.

  • ΠžΠ±Ρ€Π°Π·Ρ‹ β€” это ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ собранныС дистрибутивы Π±Π΅Π· ядра Linux ΠΈ доступныС ΠΈΠ· Π²Π½Π΅ΡˆΠ½ΠΈΡ… источников
  • ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ β€” это Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚Ρ‹Π΅ дистрибутивы ΠΈΠ· ΠΎΠ±Ρ€Π°Π·ΠΎΠ², Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ ΠΊ эксплуатации
  • Π‘Π½Π΅ΠΏΡˆΠΎΡ‚Ρ‹ β€” это снимки состояния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ

Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ возмоТности LXD — систСмы ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π² Linux

Для управлСния Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ Π² LXD слуТит ΠΊΠΎΠΌΠ°Π½Π΄Π° lxc storage справку ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π² ΠΊΠ»ΡŽΡ‡ β€” lxc storage --help

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π½Π° экран список всСх Storage Pool Π² LXD Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅:

lxc storage list

+---------+-------------+--------+--------------------------------+---------+
|  NAME   | DESCRIPTION | DRIVER |             SOURCE             | USED BY |
+---------+-------------+--------+--------------------------------+---------+
| hddpool |             | btrfs  | /dev/loop1                     | 2       |
+---------+-------------+--------+--------------------------------+---------+
| ssdpool |             | btrfs  | /var/lib/lxd/disks/ssdpool.img | 4       |
+---------+-------------+--------+--------------------------------+---------+

Для просмотра списка всСх Storage Volume Π² Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌ Storage Pool слуТит ΠΊΠΎΠΌΠ°Π½Π΄Π° 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       |
+-----------+----------------------------------+-------------+---------+

Π’Π°ΠΊΠΆΠ΅, Ссли для Storage Pool ΠΏΡ€ΠΈ создании Π±Ρ‹Π»Π° Π²Ρ‹Π±Ρ€Π°Π½Π° файловая систСма BTRFS, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список Storage Volume ΠΈΠ»ΠΈ subvolumes Π² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ 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 ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ² Π½Π° нСсколько вопросов.

Π’Ρ‹Π±ΠΎΡ€ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы для Storage Pool ^

Π’ΠΎ врСмя ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ LXD Π·Π°Π΄Π°Ρ‘Ρ‚ нСсколько вопросов, срСди ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы для Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½ΠΎΠ³ΠΎ Storage Pool. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Π½Π΅Π³ΠΎ выбираСтся файловая систСма BTRFS. ΠŸΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π€Π‘ послС создания Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Для Π²Ρ‹Π±ΠΎΡ€Π° Π€Π‘ прСдлагаСтся Ρ‚Π°Π±Π»ΠΈΡ†Π° сравнСния возмоТностСй:

Feature
Directory
Btrfs
LVM
ZFS
CEPH

Optimized image storage
no
yes
yes
yes
yes

Optimized instance creation
no
yes
yes
yes
yes

Optimized snapshot creation
no
yes
yes
yes
yes

Optimized image transfer
no
yes
no
yes
yes

Optimized instance transfer
no
yes
no
yes
yes

Copy on write
no
yes
yes
yes
yes

Block based
no
no
yes
no
yes

Instant cloning
no
yes
yes
yes
yes

Storage driver usable inside a container
yes
yes
no
no
no

Restore from older snapshots (not latest)
yes
yes
yes
no
yes

Storage quotas
yes(*)
yes
yes
yes
no

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ сСти ΠΈ Storage Pool с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ мастСра ^

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π°Π΄Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ рассмотрим, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ основныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ 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]: 

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Storage Pool ^

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ шагС ΠΌΡ‹ создали Storage Pool ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π΄Π°Π»ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ssdpool ΠΈ Ρ„Π°ΠΉΠ» ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ располоТился Π² ΠΌΠΎΠ΅ΠΉ систСмС ΠΏΠΎ адрСсу /var/lib/lxd/disks/ssdpool.img. Π­Ρ‚ΠΎΡ‚ адрСс Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы соотвСтствуСт физичСскому SSD диску Π² ΠΌΠΎΡ‘ΠΌ ПК.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ дСйствиями, для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ понимания Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΡƒΡŽ Ρ€ΠΎΠ»ΡŒ ΠΈΠ³Ρ€Π°Π΅Ρ‚ Storage Pool Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, ΠΌΡ‹ создадим Π²Ρ‚ΠΎΡ€ΠΎΠΉ Storage Pool ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ физичСски Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ Ρ‚ΠΈΠΏΠ΅ дискС, Π½Π° HDD. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ LXD Π½Π΅ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Storage Pool Π²Π½Π΅ адрСса /var/lib/lxd/disks/ ΠΈ Π΄Π°ΠΆΠ΅ символичСскиС ссылки Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, смотритС ΠΎΡ‚Π²Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. ΠžΠ±ΠΎΠΉΡ‚ΠΈ это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ/Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Storage Pool ΡƒΠΊΠ°Π·Π°Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Π±Π»ΠΎΡ‡Π½ΠΎΠ΅ устройство вмСсто ΠΏΡƒΡ‚ΠΈ ΠΊ loopback-Ρ„Π°ΠΉΠ»Ρƒ ΡƒΠΊΠ°Π·Π°Π² это Π² ΠΊΠ»ΡŽΡ‡Π΅ source.

Π˜Ρ‚Π°ΠΊ, Π΄ΠΎ создания Storage Pool Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ loopback-Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·Π΄Π΅Π» Π² вашСй Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Для этого, ΠΌΡ‹ создадим ΠΈ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Π² 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

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌ loopback-Ρ„Π°ΠΉΠ» Π² свободноС loopback-устройство:

sudo losetup --find --show /mnt/work/lxd/hddpool.img

/dev/loop1

Благодаря ΠΊΠ»ΡŽΡ‡Ρƒ --show Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π° экран имя устройства Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΡΡ наш loopback-Ρ„Π°ΠΉΠ». ΠŸΡ€ΠΈ нСобходимости, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ вывСсти Π½Π° экран список всСх занятых устройств этого Ρ‚ΠΈΠΏΠ°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ убСдится Π² коррСктности Π½Π°ΡˆΠΈΡ… дСйствий:

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 ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ loopback-Ρ„Π°ΠΉΠ» /mnt/work/lxd/hddpool.img, Π° Π² устройствС /dev/loop0 ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ loopback-Ρ„Π°ΠΉΠ» /var/lib/lxd/disks/ssdpool.img ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ соотвСтствуСт Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½ΠΎΠΌΡƒ Storage Pool.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° создаСт Π½ΠΎΠ²Ρ‹ΠΉ Storage Pool Π² LXD Π½Π° основС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ loopback-Ρ„Π°ΠΉΠ»Π°. LXD ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ loopback-Ρ„Π°ΠΉΠ» /mnt/work/lxd/hddpool.img Π² устройствС /dev/loop1 ΠΏΠΎΠ΄ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму BTRFS:

lxc storage create hddpool btrfs size=10GB source=/dev/loop1

Π’Ρ‹Π²Π΅Π΄Π΅ΠΌ список всСх Storage Pool Π½Π° экран:

lxc storage list

+---------+-------------+--------+--------------------------------+---------+
|  NAME   | DESCRIPTION | DRIVER |             SOURCE             | USED BY |
+---------+-------------+--------+--------------------------------+---------+
| hddpool |             | btrfs  | /dev/loop1                     | 0       |
+---------+-------------+--------+--------------------------------+---------+
| ssdpool |             | btrfs  | /var/lib/lxd/disks/ssdpool.img | 0       |
+---------+-------------+--------+--------------------------------+---------+

Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Storage Pool ^

ПослС создания Storage Pool, ΠΏΡ€ΠΈ нСобходимости, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ. Для Storage Pool основанном Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС 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

Автовставка loopback-Ρ„Π°ΠΉΠ»Π° Π² слот loopback-устройства ^

Π£ нас Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½Π° нСбольшая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΊΠ΅ систСмы хоста, Ρ„Π°ΠΉΠ» /mnt/work/lxd/hddpool.img "Π²Ρ‹Π»Π΅Ρ‚ΠΈΡ‚" ΠΈΠ· устройства /dev/loop1 ΠΈ сСрвис LXD ΡƒΠΏΠ°Π΄Π΅Ρ‚ ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚ Π΅Π³ΠΎ Π² этом устройствС. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ систСмный сСрвис ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ этот Ρ„Π°ΠΉΠ» Π² устройство /dev/loop1 ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ систСмы хоста.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ unit Ρ„Π°ΠΉΠ» Ρ‚ΠΈΠΏΠ° service Π² /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).

Из Π²Ρ‹Π²ΠΎΠ΄ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ состояниС сСрвиса Ρ€Π°Π²Π½ΠΎ active, нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ нашСго скрипта ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΠΎΡΡŒ, это ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»Π° Π½Π°ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ опция RemainAfterExit=true.

Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ. ΠŸΡ€ΠΈΠ²Π΅Π»Π΅Π³ΠΈΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ^

Π’Π°ΠΊ ΠΊΠ°ΠΊ всС процСссы ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° фактичСски ΠΈΡΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² изоляции Π½Π° хостовой систСмС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΅Π³ΠΎ ядро, Ρ‚ΠΎ для Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ доступа процСссов ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΊ систСмС хоста LXD ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ²Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ процСссов, Π³Π΄Π΅:

  • ΠŸΡ€ΠΈΠ²Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ β€” это ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… процСссы с UID ΠΈ GID ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Ρƒ, Ρ‡Ρ‚ΠΎ ΠΈ Π½Π° хостовой систСмС. НапримСр, процСсс Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ с UID Ρ€Π°Π²Π½Ρ‹ΠΌ 0 ΠΈΠΌΠ΅Π΅Ρ‚ всС Ρ‚Π΅ ΠΆΠ΅ ΠΏΡ€Π°Π²Π° доступа, Ρ‡Ρ‚ΠΎ ΠΈ процСсс хостовой систСмы с UID Ρ€Π°Π²Π½Ρ‹ΠΌ 0. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, root ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ всСми ΠΏΡ€Π°Π²Π°ΠΌΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅, Π½ΠΎ ΠΈ Π½Π° хостовой систСмС Ссли ΠΎΠ½ смоТСт Π²Ρ‹ΠΉΡ‚ΠΈ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ пространства ΠΈΠΌΠ΅Π½ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

  • НСпривСлСгированныС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ β€” это ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… процСссы ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Ρƒ UID ΠΈ GID с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ ΠΎΡ‚ 0 Π΄ΠΎ 65535, Π½ΠΎ для хостовой систСмы Π²Π»Π°Π΄Π΅Π»Π΅Ρ† маскируСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ добавляСмого Π±ΠΈΡ‚Π° 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 ΠΈ с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΎΡ€ (сСтСвой мост, bridge) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ схСма дСмонстрируСт ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΎΡ€ (сСтСвой мост, bridge) ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ хост ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π² ΡΠ΅Ρ‚ΡŒ:

Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ возмоТности LXD — систСмы ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π² Linux

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ срСдством сСти с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ ΠΈΠ»ΠΈ хостом Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ эти ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ. Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ»ΠΈΠ½ΠΊΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ сСтСвыС ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² с Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ. Π’ Π½Π°Ρ‡Π°Π»Π΅ создадим ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΎΡ€, Π° сСтСвыС интСрфСйсы ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π±ΡƒΠ΄ΡƒΡ‚ слинкованы Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π³Π»Π°Π²Π°Ρ…, послС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ создан сам ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° создаёт ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΎΡ€ с ΠΏΠΎΠ΄ΡΠ΅Ρ‚ΡŒΡŽ 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 — систСмы ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π² Linux

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π² систСмС 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: []

Π’ этом ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ для всСх вновь создаваСмых ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ созданы Π΄Π²Π° устройства (devices):

  • eth0 β€” Устройство Ρ‚ΠΈΠΏΠ° nic соСдинСнноС с ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ (сСтСвым мостом) lxdbr0
  • root β€” Устройство Ρ‚ΠΈΠΏΠ° disk ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΡƒΠ» Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ssdpool

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΉ ^

Для использования Ρ€Π°Π½Π΅Π΅ созданных Storage Pool ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ, создадим ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ssdroot Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ устройство Ρ‚ΠΈΠΏΠ° disk с Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ монтирования / (root) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π΅ Ρ€Π°Π½Π΅Π΅ созданноС Storage Pool β€” ssdpool:

lxc profile create ssdroot
lxc profile device add ssdroot root disk path=/ pool=ssdpool

Аналогично, создаСм устройство Ρ‚ΠΈΠΏΠ° disk, Π½ΠΎ Π² этом случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π΅ Storage Pool β€” 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: (for stable Ubuntu images)
  • ubuntu-daily: (for daily Ubuntu images)
  • images: (for a bunch of other distros)

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.

Для Π²Ρ‹Π²ΠΎΠ΄Π° списка ΠΎΠ±Ρ€Π°Π·ΠΎΠ² доступна Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ список всСх доступных Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ дистрибутива AlpineLinux:

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 image alias
Manage image aliases

lxc image copy
Copy images between servers

lxc image delete
Delete images

lxc image edit
Edit image properties

lxc image export
Export and download images

lxc image import
Import images into the image store

lxc image info
Show useful information about images

lxc image list
List images

lxc image refresh
Refresh images

lxc image show
Show image properties

ΠšΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ ΠΎΠ±Ρ€Π°Π· Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈΠ· глобального 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 ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ значСния Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ:ΠΎΠ±Ρ€Π°Π· ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ ΠΊΠ°ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ local: Ρ‚Π°ΠΊ ΠΈ любой Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ. Если Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½, Ρ‚ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, для поиска ΠΎΠ±Ρ€Π°Π·Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. Если ΠΎΠ±Ρ€Π°Π· ΡƒΠΊΠ°Π·Π°Π½ ΠΈΠ· глобального рСпозитория, Ρ‚ΠΎ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΎΠ±Ρ€Π°Π· Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Π° Π·Π°Ρ‚Π΅ΠΌ использован для создания ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ наш ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€:

lxc init alpine3 alp --storage=hddpool --profile=default --profile=hddroot

Π Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΏΠΎ порядку ΠΊΠ»ΡŽΡ‡ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ здСсь ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ:

  • alpine3 β€” УказываСтся альяс (псСвдоним) для ΠΎΠ±Ρ€Π°Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π½Π΅Π΅ Π±Ρ‹Π» Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. Если Π±Ρ‹ альяс Π±Ρ‹Π» Π½Π΅ создан для этого ΠΎΠ±Ρ€Π°Π·Π°, Ρ‚ΠΎ всСгда ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡΠ»Π°Ρ‚ΡŒΡΡ Π½Π° ΠΎΠ±Ρ€Π°Π· ΠΏΠΎ Π΅Π³ΠΎ Fingerprint ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выводится Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅.
  • alp β€” Задаётся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°
  • --storage β€” Π­Ρ‚ΠΎΡ‚ ΠΊΠ»ΡŽΡ‡ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π² ΠΊΠ°ΠΊΠΎΠΌ Storage Pool Π±ΡƒΠ΄Π΅Ρ‚ создан ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€
  • --profile β€” Π­Ρ‚ΠΈ ΠΊΠ»ΡŽΡ‡ΠΈ каскадно ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ ΠΊ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρƒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΈΠ· Ρ€Π°Π½Π΅Π΅ созданных ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ

ЗапускаСм ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ init-систСму дистрибутива:

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         |
+------+---------+-------------------+------+-----------+-----------+

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΌΡ‹ ΡƒΠ±Π΅Π΄ΠΈΠ»ΠΈΡΡŒ, Ρ‡Ρ‚ΠΎ состояниС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° стало STOPPED, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ· Storage Pool:

lxc delete alp

Доступ ΠΊ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρƒ ^

Для выполнСния ΠΊΠΎΠΌΠ°Π½Π΄ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅, Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, минуя сСтСвыС соСдинСния, слуТит ΠΊΠΎΠΌΠ°Π½Π΄Π° lxc exec которая выполняСт ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ Π±Π΅Π· запуска систСмной ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ shell ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ пСрСнаправлСния (pipe) ΠΈ Ρ‚.Π΄., Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ явно Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² качСствС ΠΊΠ»ΡŽΡ‡Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

lxc exec alp -- /bin/sh -c "echo $HOME"

Π’ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π±Ρ‹Π» задСйствован спСцсимвол экранирования для спСцсимвола $ Ρ‡Ρ‚ΠΎΠ±Ρ‹ пСрСмСнная $HOME Π½Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ Π½Π° хостовой машинС, Π° Π±Ρ‹Π»Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

Π’Π°ΠΊΠΆΠ΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, Π° послС Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ сСанс Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² hotkey CTRL+D:

lxc exec alp -- /bin/sh

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ рСсурсами ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ^

Π’ LXD ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ рСсурсами ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. ΠŸΠΎΠ»Π½Ρ‹ΠΉ список ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ рСсурсов RAM (ΠžΠ—Π£) ^

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ limits.memory ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±ΡŠΡ‘ΠΌ RAM доступный для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Π’ качСствС значСния указываСтся число ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· доступных суффиксов.

Π—Π°Π΄Π°Π΄ΠΈΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρƒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±ΡŠΡ‘ΠΌ RAM Ρ€Π°Π²Π½Ρ‹ΠΉ 256 MB:

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 (ЦП) ^

Для ограничСния рСсурсов ЦП сущСствуСт нСсколько Ρ‚ΠΈΠΏΠΎΠ² ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ:

  • limit.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 Π½ΠΎΠ²Ρ‹Ρ… ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ Storage Pool (hddpool):

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

Если ΠΌΡ‹ посмотрим Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ сущСствованиС Ρ„Π°ΠΉΠ»Π° Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ самом мСстС, Ρ‚ΠΎ этого Ρ„Π°ΠΉΠ»Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π² своих собствСнных Storage Volume Π² этом ΠΆΠ΅ Storage Pool:

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 смонтированноС ΠΊΠ°ΠΊ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ Ρ€Π°Π·Π΄Π΅Π» являСтся Storage Pool ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ эти ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚, поэтому ΠΎΠ½ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ Π΅Π³ΠΎ ΠΎΠ±ΡŠΡ‘ΠΌ Π½Π° Π΄Π²ΠΎΠΈΡ….

Бтатистика потрСблСния рСсурсов ^

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ статистику потрСблСния рСсурсов для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

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

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ рассмотрСли Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ stateless-ΡΠ½Π°ΠΏΡˆΠΎΡ‚Ρ‹. Π’ LXD Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ ΡΠ½Π°ΠΏΡˆΠΎΡ‚ΠΎΠ² β€” stateful, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сохраняСтся Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС всСх процСссов Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅. Π‘ΠΎ stateful-ΡΠ½Π°ΠΏΡˆΠΎΡ‚Π°ΠΌΠΈ связаны ряд интСрСсных ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Π§Ρ‚ΠΎ Π΅Ρ‰Ρ‘? ^

  • Для Python Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² доступСн ΠΌΠΎΠ΄ΡƒΠ»ΡŒ PyLXD ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт API ΠΊ LXD

UPDATE 10.04.2020 15:00: Π”ΠΎΠ±Π°Π²ΠΈΠ» Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΡŽ

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com