LXD - Linux ကွန်တိန်နာစနစ်များ၏ အခြေခံအင်္ဂါရပ်များ

LXD - Linux ကွန်တိန်နာစနစ်များ၏ အခြေခံအင်္ဂါရပ်များ

LXD မျိုးဆက်သစ် စနစ် ကွန်တိန်နာ မန်နေဂျာ ဖြစ်သည် ဟု ဆိုပါသည်။ အရင်းအမြစ်. ၎င်းသည် virtual machines များနှင့်ဆင်တူသော user interface ကိုပေးသော်လည်း Linux ကွန်တိန်နာများကိုအသုံးပြုသည်။

LXD core သင့်လျော်သောဖွဲ့စည်းပုံကို ထည့်သွင်းပါက ကွန်ရက်မှတစ်ဆင့် REST API ကို ပံ့ပိုးပေးသည့် အခွင့်ထူးခံ daemon (အမြစ်အခွင့်အရေးနှင့် လုပ်ဆောင်နေသည့် ဝန်ဆောင်မှု) တစ်ခုဖြစ်သည်။ LXD ဖြင့် ပံ့ပိုးပေးထားသော အမိန့်လိုင်းကိရိယာကဲ့သို့သော ဖောက်သည်များသည် ဤ REST API မှတဆင့် တောင်းဆိုမှုများ ပြုလုပ်သည်။ ဆိုလိုသည်မှာ သင်သည် ဒေသတွင်း လက်ခံဆောင်ရွက်ပေးသူ သို့မဟုတ် အဝေးထိန်းဌာနကို အသုံးပြုနေသည်ဖြစ်စေ အရာအားလုံးသည် အတူတူပင်ဖြစ်ကြောင်း ဆိုလိုသည်။

ဤဆောင်းပါးတွင် ကျွန်ုပ်တို့သည် LXD ၏ သဘောတရားများကို အသေးစိတ်မဖော်ပြဘဲ၊ ကွန်တိန်နာများနှင့်အပြိုင် QEMU virtual machines များအတွက် မကြာသေးမီက အကောင်အထည်ဖော်ခြင်းအပါအဝင် စာရွက်စာတမ်းတွင်ဖော်ပြထားသော ရရှိနိုင်သောစွမ်းရည်အားလုံးကို ထည့်သွင်းစဉ်းစားမည်မဟုတ်ပါ။ ယင်းအစား၊ ကျွန်ုပ်တို့သည် ကွန်တိန်နာစီမံခန့်ခွဲမှု၏ အခြေခံများကိုသာ လေ့လာနိုင်သည် - သိုလှောင်မှုရေကန်များကို သတ်မှတ်ခြင်း၊ ကွန်ရက်ချိတ်ဆက်ခြင်း၊ ကွန်တိန်နာတစ်ခုလည်ပတ်ခြင်း၊ အရင်းအမြစ်ကန့်သတ်ချက်များကို အသုံးပြုခြင်းနှင့် လျှပ်တစ်ပြက်ရိုက်ချက်များကို အသုံးပြုနည်းတို့ကို သင် LXD ၏ အခြေခံနားလည်မှုနှင့် Linux ပေါ်တွင် ကွန်တိန်နာများကို အသုံးပြုခြင်းတို့ကို လေ့လာနိုင်မည်ဖြစ်သည်။

အချက်အလက်အပြည့်အစုံအတွက် တရားဝင်အရင်းအမြစ်ကို ဖတ်ရှုပါ-

အညွှန်း

LXD တပ်ဆင်ခြင်း။ ^

Ubuntu ဖြန့်ဝေမှုများတွင် LXD ကို ထည့်သွင်းခြင်း။ ^

Ubuntu 19.10 ဖြန့်ချီရေးပက်ကေ့ချ်တွင် lxd ထုတ်လွှင့်မှု ရှိသည်။ snap အထုပ်:

apt search lxd

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

ဆိုလိုသည်မှာ ပက်ကေ့ဂျ်နှစ်ခုကို တစ်ကြိမ်တည်းတွင်၊ တစ်ခုသည် စနစ်ပက်ကေ့ချ်အဖြစ်နှင့် နောက်တစ်ခုအား snap package အဖြစ် တစ်ပြိုင်နက် ထည့်သွင်းသွားမည်ဖြစ်သည်။ စနစ်တစ်ခုတွင် ပက်ကေ့ဂျ်နှစ်ခုကို ထည့်သွင်းခြင်းသည် snap ပက်ကေ့ဂျ်မန်နေဂျာမှ ဖယ်ရှားလိုက်လျှင် စနစ်အထုပ်ကို မိဘမဲ့ဖြစ်သွားနိုင်သည့် ပြဿနာအချို့ကို ဖန်တီးနိုင်သည်။

အထုပ်ကိုရှာပါ။ lxd snap repository တွင် အောက်ပါ command ကို သုံးနိုင်သည်။

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

command ကို run ခြင်းဖြင့် list အထုပ်ကို သေချာလုပ်လို့ရတယ်။ lxd မတပ်ဆင်ရသေးပါ-

snap list

Name  Version    Rev   Tracking  Publisher   Notes
core  16-2.43.3  8689  stable    canonical✓  core

LXD သည် လျှပ်တပြက် ပက်ကေ့ဂျ် ဖြစ်သောကြောင့် ၎င်းကို စနစ် ပက်ကေ့ခ်ျမှတဆင့် ထည့်သွင်းရပါမည်။ lxd, သက်ဆိုင်ရာအဖွဲ့ကိုဖန်တီးမယ့်စနစ်, လိုအပ်သော utilities အတွက် /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 ပက်ကေ့ဂျ်ကို ထည့်သွင်းရန်၊ သင်သည် အောက်ပါ command များကို လုပ်ဆောင်ရန် လိုအပ်သည်၊ ပထမသည် repository တွင် ရရှိနိုင်သော စနစ်ရှိ ပက်ကေ့ဂျ်များစာရင်းကို အပ်ဒိတ်လုပ်မည်၊ ဒုတိယသည် အထုပ်ကို တိုက်ရိုက် ထည့်သွင်းပါမည်-

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 စာရင်းထဲတွင် မမြင်နိုင်သောကြောင့် အသုံးပြုသူ စက်ရှင်ကို ထပ်မံအသက်သွင်းရန် လိုအပ်ပါသည်။ ဒီလိုလုပ်ဖို့၊ အတူတူအသုံးပြုသူအောက်မှာ log out လုပ်ပြီး log in လုပ်ဖို့လိုပါတယ်။

အသက်သွင်းပါ။ systemd စနစ်စတင်ချိန်တွင် LXD ဝန်ဆောင်မှုကို တင်နေသည်-

sudo systemctl enable lxd

ဝန်ဆောင်မှုကို စလိုက်ရအောင်။

sudo systemctl start lxd

ဝန်ဆောင်မှု အခြေအနေကို စစ်ဆေးနေသည်-

sudo systemctl status lxd

သိုလှောင်မှု LXD (သိုလှောင်မှု) ^

စတင်ခြင်း မစတင်မီ၊ LXD တွင် သိုလှောင်မှုအား ယုတ္တိနည်းကျကျ စီစဉ်ပုံကို နားလည်ရန် လိုအပ်ပါသည်။

သိုလှောင်မှု (သိုလှောင်ခြင်း) ဖြစ် တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသည်။ သိုလှောင်ရေကန် ၎င်းသည် ZFS၊ BTRFS၊ LVM သို့မဟုတ် ပုံမှန်လမ်းကြောင်းများကဲ့သို့သော ပံ့ပိုးပေးထားသော ဖိုင်စနစ်များထဲမှ တစ်ခုကို အသုံးပြုသည်။ တိုင်း သိုလှောင်ရေကန် အတွဲများ ခွဲခြားထားသည် (သိုလှောင်မှုပမာဏအခြားရည်ရွယ်ချက်များအတွက် ပုံများ၊ ကွန်တိန်နာများ သို့မဟုတ် ဒေတာများပါရှိသော)။

  • ပုံရိပ် - ၎င်းတို့သည် Linux kernel မပါဘဲ အထူးစုစည်းထားသော ဖြန့်ဝေမှုများဖြစ်ပြီး ပြင်ပအရင်းအမြစ်များမှ ရရှိနိုင်ပါသည်။
  • контейнеры - ၎င်းတို့သည် အသုံးပြုရန် အသင့်ဖြစ်နေပြီဖြစ်သော ပုံများမှ ဖြန့်ကျက်ထားသော ဖြန့်ဝေမှုများဖြစ်သည်။
  • လျှပ်တစ်ပြက် - ဤအရာများသည် သင်ပြန်သွားနိုင်သည့် ကွန်တိန်နာအခြေအနေ၏ လျှပ်တစ်ပြက်ပုံများဖြစ်သည်။

LXD - Linux ကွန်တိန်နာစနစ်များ၏ အခြေခံအင်္ဂါရပ်များ

LXD တွင် သိုလှောင်မှုကို စီမံခန့်ခွဲရန်၊ အမိန့်ကို အသုံးပြုပါ။ lxc storage သော့ကိုသတ်မှတ်ခြင်းဖြင့် သင်ရရှိနိုင်သော လက်မှတ်တစ်ခု - lxc storage --help

အောက်ပါ command သည် အားလုံး၏ စာရင်းကို ပြသသည်။ သိုလှောင်ရေကန် 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 ဖိုင်စနစ်အား ရွေးချယ်ပြီး စာရင်းတစ်ခုရယူပါ။ သိုလှောင်မှုပမာဏ သို့မဟုတ် 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 အစပြုခြင်းကို လုပ်ဆောင်ရပါမည်။ ၎င်းကို command ကိုခေါ်ဆိုခြင်းဖြင့် စာရင်းတွင်ရရှိနိုင်သည့် standard client commands များကို အသုံးပြု၍ ကိုယ်တိုင်လုပ်ဆောင်နိုင်သည်။ lxc --help သို့မဟုတ် ကနဦးသတ်မှတ်မှု wizard ကိုအသုံးပြုပါ။ lxd init မေးခွန်းအချို့ကို ဖြေဆိုခြင်း။

Storage Pool အတွက် ဖိုင်စနစ်တစ်ခုကို ရွေးချယ်ခြင်း။ ^

စတင်လုပ်ဆောင်စဉ်တွင်၊ LXD သည် ပုံသေအတွက် ဖိုင်စနစ်အမျိုးအစားကို သတ်မှတ်ခြင်းအပါအဝင် မေးခွန်းများစွာမေးသည်။ သိုလှောင်ရေကန်. ပုံမှန်အားဖြင့်၊ BTRFS ဖိုင်စနစ်သည် ၎င်းအတွက် ရွေးချယ်ထားသည်။ ဖန်တီးပြီးနောက် အခြား FS သို့ ပြောင်းရန် မဖြစ်နိုင်ပါ။. FS ကို ရွေးချယ်ရန် အကြံပြုထားသည်။ အင်္ဂါရပ်နှိုင်းယှဉ်ဇယား:

လက္ခဏာ
directory ကို
Btrfs
LVM
ZFS
CEPH

ပုံသိုလှောင်မှုကို ပိုမိုကောင်းမွန်အောင် ပြုလုပ်ထားသည်။
အဘယ်သူမျှမ
ဟုတ်ကဲ့
ဟုတ်ကဲ့
ဟုတ်ကဲ့
ဟုတ်ကဲ့

အကောင်းဆုံး သာဓက ဖန်တီးမှု
အဘယ်သူမျှမ
ဟုတ်ကဲ့
ဟုတ်ကဲ့
ဟုတ်ကဲ့
ဟုတ်ကဲ့

အကောင်းဆုံး လျှပ်တစ်ပြက် ဖန်တီးမှု
အဘယ်သူမျှမ
ဟုတ်ကဲ့
ဟုတ်ကဲ့
ဟုတ်ကဲ့
ဟုတ်ကဲ့

ပိုမိုကောင်းမွန်အောင် ပြုလုပ်ထားသော ရုပ်ပုံလွှဲပြောင်းမှု
အဘယ်သူမျှမ
ဟုတ်ကဲ့
အဘယ်သူမျှမ
ဟုတ်ကဲ့
ဟုတ်ကဲ့

အကောင်းဆုံးလုပ်ဆောင်ထားသော ဥပမာလွှဲပြောင်း
အဘယ်သူမျှမ
ဟုတ်ကဲ့
အဘယ်သူမျှမ
ဟုတ်ကဲ့
ဟုတ်ကဲ့

ကူးယူရေးသားပါ။
အဘယ်သူမျှမ
ဟုတ်ကဲ့
ဟုတ်ကဲ့
ဟုတ်ကဲ့
ဟုတ်ကဲ့

ပိတ်ဆို့ခြင်းအခြေခံ
အဘယ်သူမျှမ
အဘယ်သူမျှမ
ဟုတ်ကဲ့
အဘယ်သူမျှမ
ဟုတ်ကဲ့

ချက်ခြင်းကိုယ်ပွား
အဘယ်သူမျှမ
ဟုတ်ကဲ့
ဟုတ်ကဲ့
ဟုတ်ကဲ့
ဟုတ်ကဲ့

ကွန်တိန်နာအတွင်း အသုံးပြုနိုင်သော သိုလှောင်မှုဒရိုက်ဗာ
ဟုတ်ကဲ့
ဟုတ်ကဲ့
အဘယ်သူမျှမ
အဘယ်သူမျှမ
အဘယ်သူမျှမ

ပုံဟောင်းများ (နောက်ဆုံးပေါ်မဟုတ်) မှ ပြန်လည်ရယူပါ
ဟုတ်ကဲ့
ဟုတ်ကဲ့
ဟုတ်ကဲ့
အဘယ်သူမျှမ
ဟုတ်ကဲ့

သိုလှောင်မှုခွဲတမ်း
ဟုတ်တယ်(*)
ဟုတ်ကဲ့
ဟုတ်ကဲ့
ဟုတ်ကဲ့
အဘယ်သူမျှမ

wizard ကို အသုံးပြု၍ ကွန်ရက်နှင့် Storage Pool ကို စတင်ခြင်း ^

ကျွန်ုပ်တို့ကြည့်ရှုမည့်နောက်ထပ် command သည် ကနဦးလုပ်ဆောင်မှု wizard ကိုအသုံးပြု၍ ရိုးရှင်းသောမေးခွန်းများကိုဖြေဆိုခြင်းဖြင့် LXD ၏အဓိကအစိတ်အပိုင်းများကိုတည်ဆောက်ရန်အကြံပြုသည်။

အမိန့်ကို run 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 ဖန်တီးခြင်း။ ^

ယခင်အဆင့်တွင် ကျွန်ုပ်တို့ ဖန်တီးခဲ့သည်။ သိုလှောင်ရေကန် နာမည်ပေးထားတယ်။ ssdpool နှင့်ကျွန်ုပ်၏စနစ်တွင်တည်ရှိသောဖိုင်ကို /var/lib/lxd/disks/ssdpool.img. ဤဖိုင်စနစ်လိပ်စာသည် ကျွန်ုပ်၏ PC ရှိ ရုပ်ပိုင်းဆိုင်ရာ SSD drive နှင့် သက်ဆိုင်ပါသည်။

အောက်ဖော်ပြပါ လုပ်ဆောင်ချက်များသည် အခန်းကဏ္ဍကို နားလည်မှု ချဲ့ထွင်ရန် သိုလှောင်ရေကန် repository တွင်၊ ကျွန်ုပ်တို့သည် ဒုတိယတစ်ခုကို ဖန်တီးပါမည်။ သိုလှောင်ရေကန် မတူညီသော disk အမျိုးအစား၊ HDD ပေါ်တွင် ရုပ်ပိုင်းဆိုင်ရာ တည်ရှိနေမည်ဖြစ်သည်။ ပြဿနာက LXD က မင်းကို ဖန်တီးခွင့်မပေးဘူး။ သိုလှောင်ရေကန် လိပ်စာထဲက /var/lib/lxd/disks/ ပုံဆောင်လင့်ခ်တွေတောင် အလုပ်မလုပ်ပါဘူး၊ developer ၏တုံ့ပြန်မှုကိုကြည့်ပါ။. ကနဦးသတ်မှတ်ခြင်း/ဖော်မတ်ချခြင်းတွင် ဤကန့်သတ်ချက်ကို ကျော်ဖြတ်နိုင်သည်။ သိုလှောင်ရေကန် ၎င်းကို သော့တွင် သတ်မှတ်ခြင်းဖြင့် loopback ဖိုင်သို့ လမ်းကြောင်းအစား ပိတ်ဆို့ကိရိယာအဖြစ် တန်ဖိုးသတ်မှတ်ခြင်းဖြင့် source.

ဒီတော့ မဖန်တီးခင် သိုလှောင်ရေကန် သင်အသုံးပြုမည့် သင့်ဖိုင်စနစ်တွင် loopback ဖိုင် သို့မဟုတ် ရှိပြီးသား partition တစ်ခုကို သတ်မှတ်ရန် လိုအပ်သည်။ ဒါကိုလုပ်ဖို့၊ 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နှင့် device ၌ /dev/loop0 loopback ဖိုင်ပါဝင်ပါသည်။ /var/lib/lxd/disks/ssdpool.img ၎င်းသည် default နှင့် ကိုက်ညီသည်။ သိုလှောင်ရေကန်.

အောက်ပါ command သည် အသစ်တစ်ခုကို ဖန်တီးသည်။ သိုလှောင်ရေကန် ကျွန်ုပ်တို့ပြင်ဆင်ထားသော loopback ဖိုင်ကိုအခြေခံ၍ LXD တွင်။ LXD သည် loopback ဖိုင်ကိုဖော်မတ်ပေးလိမ့်မည်။ /mnt/work/lxd/hddpool.img device ထဲမှာ /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       |
+---------+-------------+--------+--------------------------------+---------+

Storage Pool Size ကို တိုးမြှင့်ခြင်း။ ^

ဖန်တီးပြီးနောက် သိုလှောင်ရေကန်လိုအပ်ပါက တိုးချဲ့နိုင်သည်။ ဘို့ သိုလှောင်ရေကန် BTRFS ဖိုင်စနစ်အပေါ် အခြေခံ၍ အောက်ပါ command များကို လုပ်ဆောင်ပါ။

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 စက်အပေါက်ထဲသို့ အလိုအလျောက် ထည့်သွင်းခြင်း။ ^

host system ကို reboot လုပ်သောအခါတွင် ပြဿနာလေးတစ်ခုရှိသည်။ /mnt/work/lxd/hddpool.img စက်မှ "ပျံသန်း" လိမ့်မည်။ /dev/loop1 နှင့် LXD ဝန်ဆောင်မှုသည် ဤစက်တွင် ၎င်းကို မမြင်ရသောကြောင့် တင်သည့်အခါတွင် ပျက်သွားပါမည်။ ဤပြဿနာကိုဖြေရှင်းရန် သင်သည် ဤဖိုင်ကို စက်ထဲသို့ ထည့်သွင်းမည့် စနစ်ဝန်ဆောင်မှုကို ဖန်တီးရန် လိုအပ်သည်။ /dev/loop1 host system boot တက်သောအခါ။

ဖန်တီးကြရအောင် ယူနစ် ဖိုင်အမျိုးအစား ဝန်ဆောင်မှု в /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).

ထွက်ပေါက်မှ ကျွန်ုပ်တို့သည် ဝန်ဆောင်မှုအခြေအနေဖြစ်ကြောင်း အတည်ပြုနိုင်သည်။ တက်ကြွ၊ ကျွန်ုပ်တို့၏ script ကို command တစ်ခုတည်းမှ လုပ်ဆောင်ခြင်း ပြီးမြောက်ခဲ့သော်လည်း၊ option သည် ကျွန်ုပ်တို့အား ဤအရာကို လုပ်ဆောင်နိုင်စေပါသည်။ RemainAfterExit=true.

ဘေးကင်းရေး။ ကွန်တိန်နာ အထူးအခွင့်အရေးများ ^

ကွန်တိန်နာ လုပ်ငန်းစဉ်များအားလုံးသည် ၎င်း၏ kernel ကိုအသုံးပြု၍ လက်ခံဆောင်ရွက်ပေးသည့်စနစ်တွင် အထီးကျန်ဖြစ်နေသောကြောင့်၊ လက်ခံသူစနစ်သို့ ကွန်တိန်နာလုပ်ငန်းစဉ်များဝင်ရောက်ခြင်းကို ပိုမိုကာကွယ်ရန် LXD သည် လုပ်ငန်းစဉ်ဆိုင်ရာအခွင့်ထူးကို ပေးဆောင်သည်-

  • အခွင့်ထူးခံ ကွန်တိန်နာများ - ၎င်းတို့သည် UID နှင့် GID ပါရှိသော လုပ်ငန်းစဉ်များတွင် လက်ခံဆောင်ရွက်ပေးသည့်စနစ်ရှိ ပိုင်ရှင်နှင့် တူညီသော ပိုင်ရှင်နှင့် သက်ဆိုင်သည့် ကွန်တိန်နာများဖြစ်သည်။ ဥပမာအားဖြင့်၊ UID အပါအ၀င် ကွန်တိန်နာတစ်ခုတွင် လုပ်ဆောင်နေသည့် လုပ်ငန်းစဉ်တစ်ခုတွင် UID ၏ 0 ရှိသော host စနစ်ရှိ လုပ်ငန်းစဉ်တစ်ခုကဲ့သို့ တူညီသောဝင်ရောက်ခွင့်အခွင့်အရေးများ ရှိသည်။ တစ်နည်းဆိုရသော်၊ ကွန်တိန်နာရှိ root အသုံးပြုသူတွင် အခွင့်အရေးအားလုံးတွင်သာမက၊ Container တွင်သာမက host system တွင်လည်း container ၏ သီးခြား namespace ပြင်ပသို့သွားနိုင်လျှင်။

  • အခွင့်ထူးမခံသော ကွန်တိန်နာများ - ၎င်းတို့သည် 0 မှ 65535 မှ နံပါတ်တစ်ခုပါရှိသော UID နှင့် GID ၏ပိုင်ရှင်ပိုင်ဆိုင်သည့် လုပ်ငန်းစဉ်များတွင် ကွန်တိန်နာများဖြစ်သည်၊ သို့သော် host စနစ်အတွက် ပိုင်ရှင်သည် ထပ်လောင်းထည့်ထားသော SubUID နှင့် SubGID bits အသီးသီးကို အသုံးပြု၍ ဖုံးကွယ်ထားသည်။ ဥပမာအားဖြင့်၊ ကွန်တိန်နာတစ်ခုအတွင်းရှိ UID=0 ရှိသော အသုံးပြုသူတစ်ဦးအား လက်ခံစနစ်တွင် မြင်တွေ့ရမည်ဖြစ်သည်။ SubUID + UID. ၎င်းသည် ကွန်တိန်နာအတွင်းရှိ မည်သည့်လုပ်ငန်းစဉ်မဆို ၎င်း၏ သီးခြားအမည်နေရာလွတ်မှ လွတ်ကင်းနိုင်ပါက ၎င်းသည် အမည်မသိ၊ အလွန်မြင့်မားသော UID/GID လုပ်ငန်းစဉ်အဖြစ် လက်ခံဆောင်ရွက်ပေးသည့်စနစ်နှင့်သာ ဆက်သွယ်နိုင်သောကြောင့် ၎င်းသည် လက်ခံဆောင်ရွက်ပေးသည့်စနစ်ကို ကာကွယ်ပေးပါသည်။

ပုံမှန်အားဖြင့်၊ အသစ်ဖန်တီးထားသော ကွန်တိန်နာများတွင် အခွင့်ထူးမခံရသေးသော အခြေအနေတစ်ခုရှိသည်၊ ထို့ကြောင့် ကျွန်ုပ်တို့သည် SubUID နှင့် SubGID တစ်ခုကို သတ်မှတ်ရပါမည်။

SubUID နှင့် SubGID အတွက် မျက်နှာဖုံးကို သတ်မှတ်ပေးမည့် configuration ဖိုင်နှစ်ခုကို ဖန်တီးကြပါစို့။

sudo touch /etc{/subuid,/subgid}
sudo usermod --add-subuids 1000000-1065535 root 
sudo usermod --add-subgids 1000000-1065535 root

အပြောင်းအလဲများကို ကျင့်သုံးရန်အတွက် LXD ဝန်ဆောင်မှုကို ပြန်လည်စတင်ရပါမည်-

sudo systemctl restart lxd

virtual network switch ကိုဖန်တီးခြင်း။ ^

ကျွန်ုပ်တို့သည် ကွန်ရက်ကို အစပြုခြင်း wizard ကို အသုံးပြု၍ ယခင်က စတင်လုပ်ဆောင်ခဲ့ခြင်း ဖြစ်သည်။ lxd init ကွန်ရက်ကိရိယာတစ်ခုကို ဖန်တီးခဲ့သည်။ lxdbr0ထို့နောက် ဤကဏ္ဍတွင် LXD တွင် ကွန်ရက်ချိတ်ဆက်ခြင်းနှင့် client command ကို အသုံးပြု၍ virtual switch (bridge) ကို ဖန်တီးနည်းကို ကျွန်ုပ်တို့ သိလာပါမည်။

အောက်ဖော်ပြပါ ပုံကြမ်းသည် ခလုတ်တစ်ခု (တံတား) သည် host နှင့် containers များကို network တစ်ခုသို့ ချိတ်ဆက်ပုံကို သရုပ်ပြသည်-

LXD - Linux ကွန်တိန်နာစနစ်များ၏ အခြေခံအင်္ဂါရပ်များ

ကွန်တိန်နာများသည် အခြားကွန်တိန်နာများ သို့မဟုတ် ဤကွန်တိန်နာများကို ဝန်ဆောင်မှုပေးသည့် အိမ်ရှင်နှင့် ကွန်ရက်မှတစ်ဆင့် ဆက်သွယ်နိုင်သည်။ ဒါကိုလုပ်ဖို့၊ ကွန်တိန်နာတွေရဲ့ virtual network cards တွေကို virtual switch နဲ့ ချိတ်ဆက်ဖို့ လိုပါတယ်။ ကျွန်ုပ်တို့သည် ပထမဦးစွာ ခလုတ်တစ်ခုကို ဖန်တီးမည်ဖြစ်ပြီး၊ ကွန်တိန်နာကိုယ်တိုင် ဖန်တီးပြီးပါက ကွန်တိန်နာ၏ ကွန်ရက်ချိတ်ဆက်မှုများကို နောက်အခန်းများတွင် လင့်ခ်လုပ်ပါမည်။

အောက်ပါ command သည် subnet တစ်ခုဖြင့် switch တစ်ခုကို ဖန်တီးသည်။ 10.0.5.0/24 နှင့် IPv4 လိပ်စာ 10.0.5.1/24၊ တို့လည်း ပါဝင်သည်။ ipv4.nat သို့မှသာ ကွန်တိန်နာများသည် NAT ဝန်ဆောင်မှုကို အသုံးပြု၍ host မှတဆင့် အင်တာနက်ကို ဝင်ရောက်ကြည့်ရှုနိုင်စေရန်-

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 ရှိ ကွန်တိန်နာတစ်ခုစီတွင် ၎င်း၏ကိုယ်ပိုင်ဖွဲ့စည်းပုံများ ပါရှိပြီး ၎င်းကို ကမ္ဘာလုံးဆိုင်ရာ ကြေညာထားသော ဖွဲ့စည်းမှုပုံစံများဖြင့် တိုးချဲ့နိုင်သည် ဖွဲ့စည်းမှုပရိုဖိုင်များ. ကွန်တိန်နာတစ်ခုတွင် configuration ပရိုဖိုင်များကို အသုံးချခြင်းတွင် ကာစကိတ်ပုံစံတစ်ခုပါရှိသည်၊ အောက်ပါဥပမာက ၎င်းကို သရုပ်ပြသည်-

LXD - Linux ကွန်တိန်နာစနစ်များ၏ အခြေခံအင်္ဂါရပ်များ

ဤဥပမာတွင်၊ LXD စနစ်တွင် ပရိုဖိုင်သုံးခုကို ဖန်တီးထားသည်။ default, hddpool и hostfs. ပရိုဖိုင်သုံးခုလုံးကို စက်တွင်းဖွဲ့စည်းမှုပုံစံ (မီးခိုးရောင်ဧရိယာ) ပါသည့် ကွန်တိန်နာတစ်ခုသို့ သက်ရောက်သည်။ ကိုယ်ရေးအကျဉ်း default စက်တစ်ခုရှိသည်။ root ကန့်သတ်ချက်တစ်ခုပါရှိသည်။ pool ညီမျှသည် ssdpoolဒါပေမယ့် cascade configuration application model ကြောင့်၊ container မှာ profile တစ်ခုကို သုံးနိုင်ပါတယ်။ hddpool ကန့်သတ်ချက်တစ်ခုပါရှိသည်။ pool ပရိုဖိုင်မှ တူညီသော parameter ကို အစားထိုးပါမည်။ default နှင့် container သည် device configuration ကိုလက်ခံရရှိလိမ့်မည်။ root ကန့်သတ်ချက်များနှင့်အတူ pool တန်းတူ hddpoolနှင့် ပရိုဖိုင် hostfs ကွန်တိန်နာထဲသို့ စက်ပစ္စည်းအသစ်တစ်ခုကို ရိုးရှင်းစွာထည့်ပါ။

ရရှိနိုင်သောဖွဲ့စည်းမှုပရိုဖိုင်များစာရင်းကိုကြည့်ရှုရန်၊ အောက်ပါ command ကိုအသုံးပြုပါ-

lxc profile list

+---------+---------+
|  NAME   | USED BY |
+---------+---------+
| default | 1       |
+---------+---------+
| hddroot | 0       |
+---------+---------+
| ssdroot | 1       |
+---------+---------+

သော့ထည့်ခြင်းဖြင့် ပရိုဖိုင်တစ်ခုနှင့်အလုပ်လုပ်ရန်အတွက် ရရှိနိုင်သော command များစာရင်းအပြည့်အစုံကို ရယူနိုင်ပါသည်။ --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 ကွန်တိန်နာအတွက် ကွန်ရက်ကတ်ဖွဲ့စည်းပုံ မပါရှိဘဲ အသစ်ဖန်တီးထားသော ကွန်တိန်နာအားလုံးတွင် ကွန်ရက်တစ်ခုမရှိပါ၊ ၎င်းတို့အတွက် သီးခြားအမိန့်ပေးချက်တစ်ခုဖြင့် ဒေသတွင်း (သီးသန့်) ကွန်ရက်စက်ပစ္စည်းများကို ဖန်တီးရန် လိုအပ်သော်လည်း ဖွဲ့စည်းမှုစနစ်တွင် ကမ္ဘာလုံးဆိုင်ရာ ကွန်ရက်စက်ပစ္စည်းကို ကျွန်ုပ်တို့ ဖန်တီးနိုင်သည်။ ဤပရိုဖိုင်ကို အသုံးပြု၍ ကွန်တိန်နာအားလုံးကြားတွင် မျှဝေမည့် ပရိုဖိုင်။ ဤနည်းအားဖြင့်၊ ကွန်တိန်နာအသစ်တစ်ခုဖန်တီးရန် အမိန့်ပေးပြီးနောက် ချက်ခြင်းတွင် ၎င်းတို့သည် ကွန်ရက်ဝင်ရောက်ခွင့်ရှိသော ကွန်ရက်တစ်ခု ရရှိမည်ဖြစ်သည်။ တစ်ချိန်တည်းမှာပင်၊ ကန့်သတ်ချက်များမရှိပါ၊ လိုအပ်ပါက နောက်ပိုင်းတွင် ဒေသတွင်း ကွန်ရက်စက်ပစ္စည်းကို အမြဲတမ်း ဖန်တီးနိုင်ပါသည်။

အောက်ပါ command သည် စက်ကို configuration profile သို့ ပေါင်းထည့်ပါမည်။ eth0 ပုံစံ nic ကွန်ရက်သို့ ချိတ်ဆက်ထားသည်။ lxdbr0:

lxc profile device add default eth0 nic network=lxdbr0 name=eth0

ကျွန်ုပ်တို့သည် စက်ကို configuration ပရိုဖိုင်တွင် အမှန်တကယ်ထည့်သွင်းထားသောကြောင့်၊ စက်တွင် static IP လိပ်စာကို သတ်မှတ်ပါက၊ ဤပရိုဖိုင်ကို အသုံးပြုမည့် ကွန်တိန်နာများအားလုံးသည် တူညီသော IP လိပ်စာကို မျှဝေကြလိမ့်မည်ဖြစ်ကြောင်း သတိပြုရန် အရေးကြီးပါသည်။ ကွန်တိန်နာအတွက် ချထားပေးသည့် static 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 ၎င်းသည် storage pool ကိုအသုံးပြုသည်။ ssdpool

ပရိုဖိုင်အသစ်များ ဖန်တီးခြင်း။ ^

အသုံးပြုရန် ယခင်ဖန်တီးထားသည်။ သိုလှောင်ရေကန် containers၊ configuration profile တစ်ခုဖန်တီးပါ။ ssdroot အဲဒီထဲမှာ ကြိုက်တဲ့ စက်ကို ထည့်မယ်။ disk mount point နဲ့ / (root) ကိုအသုံးပြု၍ ယခင်ဖန်တီးထားသည်။ သိုလှောင်ရေကန် - 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 kernel မပါသော အထူးစုဝေးဖြန့်ဝေမှုများမှ ဖန်တီးထားသည်။ ထို့ကြောင့်၊ ကွန်တိန်နာကို မလည်ပတ်မီ၊ ၎င်းကို ဤပုံမှနေ၍ အသုံးပြုရပါမည်။ ပုံများ၏ရင်းမြစ်သည် ပြင်ပ သိုလှောင်နေရာများမှ ပုံများကို ဒေါင်းလုဒ်လုပ်ထားသည့် ဒေသဆိုင်ရာ သိုလှောင်ရုံတစ်ခုဖြစ်သည်။

အဝေးထိန်းရုပ်ပုံသိမ်းဆည်းမှုများ ^

ပုံမှန်အားဖြင့်၊ LXD သည် အဝေးမှ အရင်းအမြစ် သုံးခုမှ ပုံများကို လက်ခံရရှိရန် စီစဉ်သတ်မှတ်ထားသည်-

  • Ubuntu- (တည်ငြိမ်သော Ubuntu ပုံများအတွက်)
  • ubuntu-နေ့စဉ်- (နေ့စဉ် Ubuntu ပုံများအတွက်)
  • ပုံများ (အခြား 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    |
+-----------------+------------------------------------------+--------+--------+

ဥပမာအားဖြင့် repository 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.

ပုံများ၏စာရင်းကိုပြသရန် Filtering ကိုရနိုင်သည်။ အောက်ပါ command သည် ရရှိနိုင်သော ဖြန့်ချီရေး ဗိသုကာ အားလုံးကို စာရင်းပြုစုပါမည်။ 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 repository ကို မသတ်မှတ်ထားပါက၊ ထို့နောက် local repository ကို မူရင်းအတိုင်း အသုံးပြုပါမည် - local:

lxc image list local:

+-------+-------------+--------+-------------+--------------+------+------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE |
+-------+-------------+--------+-------------+--------------+------+------+

သိုလှောင်ခန်းရှိ ပုံများကို အောက်ပါနည်းလမ်းများဖြင့် စီမံခန့်ခွဲသည်-

အဖွဲ့
ဖေါ်ပြချက်

lxc ပုံ အမည်ဝှက်
ရုပ်ပုံအမည်တူများကို စီမံပါ။

lxc ပုံ မိတ္တူ
ဆာဗာများအကြား ပုံများကို ကူးယူပါ။

lxc ပုံ delete
ပုံများကိုဖျက်ပါ

lxc ပုံ ပြင်ဆင်ရန်
ပုံဂုဏ်သတ္တိများကို တည်းဖြတ်ပါ။

lxc ပုံ ထုတ်ကုန်
ပုံများကို ထုတ်ယူပြီး ဒေါင်းလုဒ်လုပ်ပါ။

lxc ပုံ တင်သွင်း
ပုံများကို image store သို့တင်သွင်းပါ။

lxc ပုံ အချက်အလက်
ပုံများအကြောင်း အသုံးဝင်သော အချက်အလက်များကို ပြသပါ။

lxc ပုံ စာရင်း
ပုံများစာရင်း

lxc ပုံ အားဖြည့်
ပုံများကို ပြန်လည်စတင်ပါ။

lxc ပုံ ပြသ
ပုံဂုဏ်သတ္တိများကိုပြသပါ။

ပုံအား global repository မှ local repository သို့ ကူးယူပါ။ 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 ဖိုင်ပုံစံဖြင့် သတ်မှတ်ထားသည့်အချိန်ဖြစ်ပြီး၊ စီမံဖွဲ့စည်းမှုတစ်ခုလုံးကို ဖြတ်ကျော်ကာ အကောင်အထည်ဖော်မှုကို ကျော်လွှားနိုင်စေမည့် အထူးဖော်မတ်တစ်ခုဖြစ်သည်။ ဤဆောင်းပါးတွင် အထက်တွင် ဆွေးနွေးခဲ့သည့် အပြန်အလှန်အကျိုးပြုသည့် command အများအပြား၏ network configuration၊ configuration profiles ဖန်တီးခြင်း စသည်တို့အပါအဝင်၊ ဤနေရာတွင် ကျွန်ုပ်တို့သည် ဤနေရာတွင် အကျုံးဝင်မည်မဟုတ်ပါ၊ သင်ကိုယ်တိုင် စစ်ဆေးနိုင်ပါသည်။ စာရွက်စာတမ်း၌.

နောက်တစ်ခု အပြန်အလှန်တုံ့ပြန်တဲ့ command ပါ။ lxc config ကျွန်ုပ်တို့ကြည့်ရှုမည့်အရာသည် သင့်အား configuration သတ်မှတ်ရန်ခွင့်ပြုသည်။ ဥပမာအားဖြင့်၊ ဒေသဆိုင်ရာ သိုလှောင်မှုသို့ ဒေါင်းလုဒ်လုပ်ထားသော ပုံများကို ကမ္ဘာလုံးဆိုင်ရာ သိုလှောင်နေရာများမှ အလိုအလျောက် အပ်ဒိတ်မလုပ်ကြောင်း သေချာစေရန်၊ ကျွန်ုပ်တို့သည် ဤအပြုအမူကို အောက်ပါ command ဖြင့် ဖွင့်နိုင်သည်-

lxc config set images.auto_update_cached=false

ကွန်တိန်နာကို ဖန်တီးခြင်းနှင့် စီမံခန့်ခွဲခြင်း။ ^

ကွန်တိန်နာတစ်ခုဖန်တီးရန် command ကိုအသုံးပြုပါ။ lxc init ဘယ်တန်ဖိုးတွေကို ကျော်သွားလဲ။ репозиторий:образ ထို့နောက် ကွန်တိန်နာအတွက် လိုချင်သော ID။ repository ကို local အဖြစ်သတ်မှတ်နိုင်သည်။ local: တစ်ကမ္ဘာလုံးမှာလည်း ဒီလိုပါပဲ။ အကယ်၍ repository ကို မသတ်မှတ်ထားပါက၊ ပုံသေရှာဖွေရန်အတွက် local repository ကို အသုံးပြုပါသည်။ ပုံအား global repository မှ သတ်မှတ်ထားပါက၊ ပုံအား local repository သို့ ဦးစွာဒေါင်းလုဒ်လုပ်ပြီး ကွန်တိန်နာကို ဖန်တီးရန်အတွက် အသုံးပြုပါမည်။

ကျွန်ုပ်တို့၏ပထမဆုံး container ကိုဖန်တီးရန် အောက်ပါ command ကို run ကြပါစို့။

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

ဤနေရာတွင် ကျွန်ုပ်တို့အသုံးပြုသော command keys များကို အစဉ်လိုက်ကြည့်ကြပါစို့။

  • alpine3 - ဒေသဆိုင်ရာသိုလှောင်မှုသို့ယခင်ကအပ်လုဒ်လုပ်ထားသောပုံအတွက်အမည်များ (alias) ကိုသတ်မှတ်ထားသည်။ ဤပုံအတွက် alias ကို ဖန်တီးထားခြင်းမဟုတ်ပါက၊ ၎င်းမှ ပုံအား သင်အမြဲကိုးကားနိုင်ပါသည်။ လက်ဗွေ ဇယားတွင်ဖော်ပြထားသည်။
  • alp - ကွန်တိန်နာအတွက် အထောက်အထားကို သတ်မှတ်ပေးသည်။
  • --storage - ဤသော့သည် မည်သည့်အရာကို ညွှန်ပြသနည်း။ သိုလှောင်ရေကန် ကွန်တိန်နာတစ်ခုဖန်တီးလိမ့်မည်။
  • --profile — ဤသော့တွဲများသည် ယခင်ဖန်တီးထားသော ဖွဲ့စည်းမှုပုံစံပရိုဖိုင်များမှ ကွန်တိန်နာသို့ ဖွဲ့စည်းမှုပုံစံကို အသုံးပြုသည်။

ဖြန့်ဖြူးမှု၏ init system ကို စတင်သည့် ကွန်တိန်နာကို ကျွန်ုပ်တို့ စတင်လိုက်သည်-

lxc start alp

သင်လည်း command ကိုသုံးနိုင်သည်။ 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

ကျွန်ုပ်တို့သည် static 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 ၎င်းသည် system shell ကိုမဖွင့်ဘဲ container အတွင်းရှိ command များကိုလုပ်ဆောင်သည်။ အကယ်၍ သင်သည် ဆဲလ်ပုံစံများဖြစ်သည့် variables၊ file redirections (pipe) စသည်တို့ကို အသုံးပြု၍ shell တွင် command တစ်ခုကို execute လုပ်ရန် လိုအပ်ပါက၊ သင်သည် shell ကို ပြတ်သားစွာဖွင့်ပြီး command ကို key တစ်ခုအနေဖြင့် pass လုပ်ရန် လိုအပ်ပါသည်၊ ဥပမာ၊

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

command သည် အထူးအလွတ်စာလုံးကို အသုံးပြုထားသည်။ အထူးဇာတ်ကောင်အတွက် $ ဒါမှ variable ပါ။ $HOME host machine တွင် အဓိပ္ပါယ်မဖော်သော်လည်း ကွန်တိန်နာအတွင်း၌သာ ဘာသာပြန်ပါသည်။

အပြန်အလှန်အကျိုးသက်ရောက်မှု shell မုဒ်ကို စတင်နိုင်ပြီး hotkey ကိုလုပ်ဆောင်ခြင်းဖြင့် session ကိုအဆုံးသတ်နိုင်သည်။ CTRL+D:

lxc exec alp -- /bin/sh

ကွန်တိန်နာအရင်းအမြစ်စီမံခန့်ခွဲမှု ^

LXD တွင်၊ သင်သည် အထူးဖွဲ့စည်းမှုပုံစံကို အသုံးပြု၍ ကွန်တိန်နာရင်းမြစ်များကို စီမံခန့်ခွဲနိုင်သည်။ container configuration parameters အပြည့်အစုံကို တွေ့နိုင်ပါတယ်။ စာရွက်စာတမ်း၌.

RAM အရင်းအမြစ်ကန့်သတ်ချက် ^

parameter သည် limits.memory ကွန်တိန်နာအတွက် ရနိုင်သော RAM ပမာဏကို ကန့်သတ်ထားသည်။ တန်ဖိုးသည် နံပါတ်တစ်ခုနှင့် တစ်ခုဖြစ်သည်။ ရရှိနိုင်သော နောက်ဆက်တွဲများ.

ကွန်တိန်နာ၏ RAM ကန့်သတ်ချက်ကို 256 MB သို့ သတ်မှတ်ကြပါစို့။

lxc config set alp limits.memory 256MB

ထို့အပြင်၊ မှတ်ဉာဏ်ကိုကန့်သတ်ရန်အခြား parameters များရှိသည်။

  • 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 cores နှင့် ချည်နှောင်ပါ။
  • limits.cpu.allowance - အချိန်ကန့်သတ်ချက်လွန်သွားသောအခါ၊ သို့မဟုတ် ရာခိုင်နှုန်းကျော်လွန်သွားသောအခါတွင် universal CPU အရင်းအမြစ်ခွဲဝေမှုယန္တရားကို CFS အစီအစဉ်ဆွဲသည့်ခွဲတမ်းကို စီမံခန့်ခွဲသည်
  • 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: ""

Disk နေရာလွတ် ကန့်သတ်ချက် ^

ကန့်သတ်ချက်များအပြင် ယင်းသို့ဖြစ်သည်။ limits.read, limits.write ကွန်တိန်နာမှစားသုံးသော disk space ပမာဏကိုလည်း ကန့်သတ်နိုင်သည် (ZFS သို့မဟုတ် BTRFS နှင့်သာအလုပ်လုပ်သည်)။

lxc config device set alp root size=2GB

တပ်ဆင်ပြီးနောက်၊ parameter တွင် devices.root.size သတ်မှတ်ကန့်သတ်ချက်ကို ကျွန်ုပ်တို့ အတည်ပြုနိုင်သည်-

lxc config show alp
...
devices:
  root:
    path: /
    pool: hddpool
    size: 2GB
    type: disk
ephemeral: false
profiles:
- default
- hddroot
stateful: false
description: ""

အသုံးပြုထားသော disk quotas ကိုကြည့်ရှုရန် command မှကျွန်ုပ်တို့ရရှိနိုင်သည်။ 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

ကွန်တိန်နာ၏ root device ကို 2GB အထိ ကန့်သတ်ထားသော်လည်း၊ စနစ် utilities များဖြစ်သော၊ df ဒီကန့်သတ်ချက်ကို တွေ့ရမှာ မဟုတ်ပါဘူး။ ဒါကိုလုပ်ဖို့၊ ကျွန်ုပ်တို့ဟာ စမ်းသပ်မှုအသေးစားတစ်ခုကို ပြုလုပ်ပြီး ဘယ်လိုအလုပ်လုပ်တယ်ဆိုတာကို ရှာဖွေပါလိမ့်မယ်။

တူညီသော တူညီသော ကွန်တိန်နာအသစ် ၂ ခု ဖန်တီးကြပါစို့ သိုလှောင်ရေကန် (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

ကျွန်ုပ်တို့သည် ဒုတိယကွန်တိန်နာတွင် ကြည့်ပါက၊ တည်နေရာတစ်ခုတည်းတွင် ဖိုင်တစ်ခုရှိကြောင်း စစ်ဆေးပါ၊ ထို့နောက် ကွန်တိန်နာများကို ၎င်းတို့ကိုယ်တိုင် ဖန်တီးထားသောကြောင့် ဤဖိုင်တွင် ရှိလိမ့်မည်မဟုတ်ပါ၊ မျှော်လင့်ထားသည့်အရာ၊ သိုလှောင်မှုပမာဏ အတူတူပဲ။ သိုလှောင်ရေကန်:

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 root partition အတိုင်း တပ်ဆင်ထားသည်။ သိုလှောင်ရေကန် ဤကွန်တိန်နာများအသုံးပြုသည့် ပမာဏကို နှစ်ခုကြားတွင် မျှဝေပါသည်။

အရင်းအမြစ်သုံးစွဲမှုစာရင်းဇယား ^

command ကိုသုံးပြီး ကွန်တိန်နာအတွက် အရင်းအမြစ်သုံးစွဲမှုစာရင်းအင်းများကို သင်ကြည့်ရှုနိုင်သည်-

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 တွင် လျှပ်တစ်ပြက်ရိုက်ချက်များ ဖန်တီးနိုင်ပြီး ၎င်းတို့ထံမှ ကွန်တိန်နာအခြေအနေကို ပြန်လည်ရယူနိုင်စွမ်းရှိသည်။

လျှပ်တစ်ပြက်ရိုက်ချက်တစ်ခုဖန်တီးရန်၊ အောက်ပါ command ကို run ပါ။

lxc snapshot alp snapshot1

အဖွဲ lxc snapshot သော့မရရှိနိုင်ပါ။ listထို့ကြောင့်၊ လျှပ်တစ်ပြက်များစာရင်းကိုကြည့်ရှုရန် ကွန်တိန်နာနှင့်ပတ်သက်သည့် အထွေထွေအချက်အလက်များကိုပြသသည့် command ကိုအသုံးပြုရန်လိုအပ်သည်-

lxc info alp
...
...
Snapshots:
  snapshot1 (taken at 2020/04/08 18:18 UTC) (stateless)

အမိန့်ကို အသုံးပြု၍ လျှပ်တစ်ပြက်ရိုက်ချက်မှ ကွန်တိန်နာတစ်ခုကို သင်ပြန်လည်ရယူနိုင်သည်။ lxc restore ပြန်လည်ထူထောင်ရေးလုပ်ဆောင်မည့် ကွန်တိန်နာနှင့် လျှပ်တစ်ပြက်ရိုက်ချက်အမည်များကို သတ်မှတ်ခြင်း-

lxc restore alp snapshot1

လျှပ်တစ်ပြက်ရိုက်ချက်တစ်ခုကို ဖျက်ရန် အောက်ပါ command ကို အသုံးပြုသည်။ command syntax သည် အခြားသူများအားလုံးနှင့် ဆင်တူခြင်းမရှိကြောင်း ကျေးဇူးပြု၍ မှတ်သားထားပါ၊ ဤနေရာတွင် ကွန်တိန်နာအမည်ပြီးနောက် ရှေ့ဆက်မျဉ်းစောင်းတစ်ခု သတ်မှတ်ရန် လိုအပ်ပါသည်။ မျဥ်းစောင်းကို ချန်လှပ်ထားပါက၊ လျှပ်တစ်ပြက်ရိုက်ချက်တစ်ခုကို ဖျက်ရန် အမိန့်ကို ကွန်တိန်နာကို ဖျက်ရန် အမိန့်တစ်ခုအဖြစ် အဓိပ္ပာယ်ဖွင့်ဆိုသည်။

lxc delete alp/snapshot1

အထက်ဖော်ပြပါ ဥပမာတွင်၊ နိုင်ငံမဲ့ဟု ခေါ်သော လျှပ်တစ်ပြက်ဓာတ်ပုံများကို ကြည့်ရှုခဲ့သည်။ LXD တွင် ကွန်တိန်နာအတွင်းရှိ လုပ်ငန်းစဉ်အားလုံး၏ လက်ရှိအခြေအနေကို သိမ်းဆည်းပေးသည့် လျှပ်တစ်ပြက်ရိုက်ချက်နောက်တစ်မျိုး ရှိသည်။ လျှပ်တစ်ပြက်ရိုက်ချက်များနှင့်ဆက်စပ်နေသော စိတ်ဝင်စားစရာကောင်းပြီး အသုံးဝင်သောအင်္ဂါရပ်များစွာရှိသည်။

တစ်ခြားဘာများ? ^

  • Python developer များအတွက် module တစ်ခုရနိုင်သည်။ PyLXD ၎င်းသည် LXD အား API ကိုပေးသည်။

အပ်ဒိတ် 10.04.2020/15/00 XNUMX:XNUMX- လမ်းကြောင်းပြမှုကို ထည့်ထားသည်။

source: www.habr.com

မှတ်ချက် Add