Конфигурация LXC: выделение дискового пространства
Я пытаюсь создать контейнер LXC, следуя приведенным ниже контейнерам.
"Введение в контейнеры в Linux с использованием LXC"
Я могу создать контейнер и запустить его. Но когда я выполню df-h
Команда из контейнера lxc Я вижу, что он имеет то же имя файловой системы, что и хост-компьютер (как это изменить?).
Мой запрос прост: как указать дисковое пространство для созданного контейнера, чтобы у диска было ограничение, как в openvz, когда мы создаем контейнер, мы можем указать вместе с ним дисковое пространство.
Я пытался добавить
lxc-create -n test01 -t /usr/local/share/templates/lxc-centos --dir=/home/images/lxc/test01 -B lvm --fssize=2G
, но это не позволяет мне создать его..
Это позволяет мне создать изолированный контейнер с помощью следующей команды
lxc-create -n test01 -t /usr/local/share/templates/lxc-centos -dir=/home/images/lxc/test01
, но не может знать фактическое выделенное пространство для контейнера.
Я застрял с этим шагом.
Буду признателен за любую оказанную помощь.
2 ответа
Ниже приведен пример того, как можно изменить размер существующего образа контейнера LXC с 30 ГБ до 40 ГБ, а также изменить размер пула носителей с 30 ГБ до 40 ГБ.
# ls -latrh /var/lib/lxd/disks/default.img
-rw------- 1 root root 30G Sep 15 12:54 /var/lib/lxd/disks/default.img
# qemu-img info /var/lib/lxd/disks/default.img
image: /var/lib/lxd/disks/default.img
file format: raw
virtual size: 30 GiB (32212254720 bytes)
disk size: 11.7 GiB
Child node '/file':
filename: /var/lib/lxd/disks/default.img
protocol type: file
file length: 30 GiB (32212254720 bytes)
disk size: 11.7 GiB
#
# qemu-img resize /var/lib/lxd/disks/default.img 40G
WARNING: Image format was not specified for '/var/lib/lxd/disks/default.img' and probing guessed raw.
Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
Specify the 'raw' format explicitly to remove the restrictions.
# qemu-img resize -f raw /var/lib/lxd/disks/default.img 40G
Image resized.
# qemu-img info /var/lib/lxd/disks/default.img
image: /var/lib/lxd/disks/default.img
file format: raw
virtual size: 40 GiB (42949672960 bytes)
disk size: 11.7 GiB
Child node '/file':
filename: /var/lib/lxd/disks/default.img
protocol type: file
file length: 40 GiB (42949672960 bytes)
disk size: 11.7 GiB
#
# ls -latrh /var/lib/lxd/disks/default.img
-rw------- 1 root root 40G Sep 15 13:00 /var/lib/lxd/disks/default.img
#
# lxc storage list
+---------+--------+--------------------------------+-------------+---------+---------+
| NAME | DRIVER | SOURCE | DESCRIPTION | USED BY | STATE |
+---------+--------+--------------------------------+-------------+---------+---------+
| default | btrfs | /var/lib/lxd/disks/default.img | | 3 | CREATED |
+---------+--------+--------------------------------+-------------+---------+---------+
# lxc storage info default
info:
description: ""
driver: btrfs
name: default
space used: 11.95GiB
total space: 30.00GiB
used by:
images:
- 70afa800b43588184693c38eafb46c6e3484c561fe901150c29615608ecfe504
instances:
- bionic
profiles:
- default
#
$ lxc storage get default size
30GiB
$ lxc storage set default size 40GB
$ lxc storage get default size
40GB
$
$ lxc storage info default
info:
description: ""
driver: btrfs
name: default
space used: 11.95GiB
total space: 30.00GiB
used by:
images:
- 70afa800b43588184693c38eafb46c6e3484c561fe901150c29615608ecfe504
instances:
- bionic
profiles:
- default
$ lxc profile list
+---------+---------------------+---------+
| NAME | DESCRIPTION | USED BY |
+---------+---------------------+---------+
| default | Default LXD profile | 1 |
+---------+---------------------+---------+
$
$ lxc profile show default
config:
limits.cpu: "2"
limits.memory: 4GB
description: Default LXD profile
devices:
eth0:
name: eth0
network: lxdbr0
type: nic
root:
path: /
pool: default
size: 50GB
type: disk
name: default
used_by:
- /1.0/instances/bionic
$ lxc storage info default
info:
description: ""
driver: btrfs
name: default
space used: 11.95GiB
total space: 30.00GiB
used by:
images:
- 70afa800b43588184693c38eafb46c6e3484c561fe901150c29615608ecfe504
instances:
- bionic
profiles:
- default
$
$ lxc storage edit default
$ lxc start bionic
$ lxc exec bionic -- sudo -i
root@bionic:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev 1.8G 0 1.8G 0% /dev
tmpfs 367M 692K 366M 1% /run
/dev/sda2 45G 9.5G 36G 22% /
tmpfs 1.8G 0 1.8G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 1.8G 0 1.8G 0% /sys/fs/cgroup
tmpfs 50M 18M 33M 36% /run/incus_agent
/dev/sda1 99M 4.0M 95M 4% /boot/efi
tmpfs 367M 0 367M 0% /run/user/1001
root@bionic:~#
Мне удалось ограничить пространство для контейнера с помощью следующей команды
lxc-create -B loop -t debian -n mydebianvm --fssize=5G -- -r buster
Мне пришлось прочитать справочную страницу несколько раз, чтобы понять, как использовать цикл. Я считаю, что у вас создается впечатление, что вы можете использовать lvm, но у меня это тоже не сработало.
Я изо всех сил пытаюсь понять, как расширить созданный диск. Я думаю, что это больше работает с расширением дискового пула, чем с самим контейнером. Документацию lxc найти нелегко, не LXD, а LXC. Весь онлайн-поиск в основном вращается вокруг linuxcontainers , но они больше говорят о LXD, который является службой поверх LXC.
Вот инструкция , которая мне показалась полезной.