TL; DR;
Я вижу некоторые расхождения между тем, что я настроил с помощью zfs
, что lxd
может делать во время процесса lxd init
, и тем, что я ожидал увидеть.
Я использую LXD около месяца, просмотрел документацию и сделал несколько поисков, но они, похоже, не затрагивают эту тему.
Пожалуйста, просмотрите раздел ниже для более подробной информации о моих вопросах:
- Может кто-нибудь объяснить почему Я наблюдаю несоответствие точек монтирования между LXD и ZFS и какие последствия это может иметь, если таковые имеются?
- Является ли LXD на самом деле , перемещая содержимое
tank/lxd
набора данных из VDEV пула ZFS из местоположения монтирования в /mnt/tank/lxd/...
в /var/lib/lxd/...
или что-то еще делается? (a) Как я могу подтвердить / подтвердить любой случай? (b) Еще лучше, как я могу заставить LXD сохранять / помещать все в набор данных, который я настроил, используя zfs
?
- Я хочу, чтобы все, что обычно хранилось в
/var/lib/lxd/
, хранилось в tank/lxd
, указанном мной во время lxd init
: Как я могу это сделать? (Хороший путь ZFS / LXD предпочтителен; я мог бы mv /var/lib/lxd
в бак и ln -s
каталог, чтобы указать на /mnt/tank/...
, но это похоже на плохой взлом и хочу его избежать . Должен быть лучший способ.)
Заранее спасибо.
Фон
Я использую LXD 3.0.0 в Ubuntu 18.04, настраивая его на использование уже существующих ZFS Pool и Dataset. Вот как это выглядит до работы lxd init
:
$ sudo zpool create -m /mnt/tank tank raidz3 <6 storage SSDs omitted>
$ sudo zfs set compression=on tank
$ sudo zfs create tank/lxd
$ sudo zfs list
NAME USED AVAIL REFER MOUNTPOINT
tank 216K 1.31T 43.7K /mnt/tank
tank/lxd 41.7K 1.31T 41.7K /mnt/tank/lxd
Это выглядит так, как я ожидал. Затем я запускаю lxd init
и выполняю следующие действия:
$ lxd init
[...]
Create a new ZFS pool? (yes/no) [default=yes]: no
Name of the existing ZFS pool or dataset: tank/lxd
[...]
Это то, что zfs list
показывает после выполнения вышеуказанного:
$ sudo zfs list
NAME USED AVAIL REFER MOUNTPOINT
tank 589K 1.31T 41.7K /mnt/tank
tank/lxd 250K 1.31T 41.7K none
tank/lxd/containers 41.7K 1.31T 41.7K none
tank/lxd/custom 41.7K 1.31T 41.7K none
tank/lxd/deleted 41.7K 1.31T 41.7K none
tank/lxd/images 41.7K 1.31T 41.7K none
tank/lxd/snapshots 41.7K 1.31T 41.7K none
LXD создал несколько наборов данных, но mountpoint
больше не являются тем, чем они были раньше (то есть tank/lxd
ушел), и не тем, чего я ожидал (в списке lxd/...
ничего нет). Короче говоря, исходная точка монтирования исчезла, а другие наборы данных не отображаются, как я ожидал.
Я, наверное, здесь не прав, но выглядит так, как будто LXD переместил данные, которые должны быть под /mnt/tank/lxd/...
, из пула ZFS vdevs и в каталог /var/lib/lxd/
на LVM, где была установлена ОС. Я не уверен, что я пропустил.
Я могу использовать zfs set
команды, чтобы изменить «исправить» это:
$ sudo zfs set mountpoint=/mnt/tank/lxd tank/lxd
$ sudo zfs set mountpoint=/mnt/tank/lxd/containers tank/lxd/containers
$ sudo zfs set mountpoint=/mnt/tank/lxd/custom tank/lxd/custom
$ sudo zfs set mountpoint=/mnt/tank/lxd/deleted tank/lxd/deleted
$ sudo zfs set mountpoint=/mnt/tank/lxd/images tank/lxd/images
$ sudo zfs set mountpoint=/mnt/tank/lxd/snapshots tank/lxd/snapshots
И убедитесь, что они снова появляются, как и ожидалось:
$ sudo zfs list
NAME USED AVAIL REFER MOUNTPOINT
tank 641K 1.31T 43.7K /mnt/tank
tank/lxd 252K 1.31T 43.7K /mnt/tank/lxd
tank/lxd/containers 41.7K 1.31T 41.7K /mnt/tank/lxd/containers
tank/lxd/custom 41.7K 1.31T 41.7K /mnt/tank/lxd/custom
tank/lxd/deleted 41.7K 1.31T 41.7K /mnt/tank/lxd/deleted
tank/lxd/images 41.7K 1.31T 41.7K /mnt/tank/lxd/images
tank/lxd/snapshots 41.7K 1.31T 41.7K /mnt/tank/lxd/snapshots
Но это похоже на частичное решение, так как все остальные файлы (например, lxd.db
, ключи и т. Д.) Остаются ниже /var/lib/lxd
. Поэтому я не уверен, что я что-то исправляю или что-то исправляю вообще.
Кроме того, мне неясно, достиг ли я чего-либо с помощью команд zfs set
. Например, touch /var/lib/lxd/containers/hi.txt
действительно не показывает файл под /mnt/tank/lxd/containers/
, что я ожидал бы , если они оба смотрели в одно и то же место.
Заранее спасибо за помощь.
EDIT0: Предлагаемый тест в комментариях и результатах
Было предложено попробовать записать некоторые файлы в качестве теста, чтобы увидеть, где фактически используется используемое пространство на основе системной информации. Шаги испытаний были следующими:
- Уничтожьте и заново создайте пул ZFS и конфигурации LXD, но без выполнения команд
zfs set mountpoint
, чтобы LXD делал свое дело и видел, что происходит. (Шаги опущены ниже для краткости.)
- В качестве элемента управления проверьте емкость и использование пула / набора данных на хосте.
- Введите контейнер и выполните еще одну контрольную проверку использования пространства.
- Запишите тестовый файл внутри контейнера.
- Повторите проверки на шагах 1 и 2 для поиска изменений.
Результаты были безрезультатными и их можно увидеть ниже.
2. Контрольная проверка на хосте
$ sudo zfs list
NAME USED AVAIL REFER MOUNTPOINT
tank 1.18G 1.31T 41.7K /mnt/tank
tank/lxd 1.18G 1.31T 41.7K none
tank/lxd/containers 270M 1.31T 41.7K none
tank/lxd/containers/base-server 251M 1.31T 588M /var/lib/lxd/storage-pools/lxd-pool/containers/base-server
tank/lxd/containers/dev-server 9.18M 1.31T 588M /var/lib/lxd/storage-pools/lxd-pool/containers/dev-server
tank/lxd/containers/qa-server 9.14M 1.31T 588M /var/lib/lxd/storage-pools/lxd-pool/containers/qa-server
tank/lxd/custom 125K 1.31T 41.7K none
tank/lxd/custom/dev-volume 41.7K 512G 41.7K /var/lib/lxd/storage-pools/lxd-pool/custom/dev-volume
tank/lxd/custom/qa-volume 41.7K 512G 41.7K /var/lib/lxd/storage-pools/lxd-pool/custom/qa-volume
tank/lxd/deleted 41.7K 1.31T 41.7K none
tank/lxd/images 937M 1.31T 41.7K none
tank/lxd/images/ab23ac2bda8cfb48c176a2d1e790181d5a1ed3522732a0cf8ff189dea848d3f1 588M 1.31T 588M none
tank/lxd/images/b36ec647e374da4816104a98807633a2cc387488083d3776557081c4d0333618 349M 1.31T 349M none
tank/lxd/snapshots 41.7K 1.31T 41.7K none
3. Внутри контейнера
root@dev-server:~$ df -h
Filesystem Size Used Avail Use% Mounted on
tank/lxd/containers/dev-server 1.4T 589M 1.4T 1% /
none 492K 0 492K 0% /dev
udev 32G 0 32G 0% /dev/tty
tmpfs 100K 0 100K 0% /dev/lxd
tank/lxd/custom/dev-volume 512G 128K 512G 1% /mnt/tank
tmpfs 100K 0 100K 0% /dev/.lxd-mounts
tmpfs 32G 0 32G 0% /dev/shm
tmpfs 32G 160K 32G 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 32G 0 32G 0% /sys/fs/cgroup
4. Запишите тестовый файл в контейнер
root@dev-server:~$ dd if=/dev/zero of=/root/test.img bs=8MB
^C3929+0 records in
3929+0 records out
31432000000 bytes (31 GB, 29 GiB) copied, 17.7005 s, 1.8 GB/s
root@dev-server:~$ ls -lh
total 512
-rw-r--r-- 1 root root 30G May 7 20:21 test.img
5,1. Результаты проверки из контейнера
root@dev-server:~$ df -h
Filesystem Size Used Avail Use% Mounted on
tank/lxd/containers/dev-server 1.4T 589M 1.4T 1% /
none 492K 0 492K 0% /dev
udev 32G 0 32G 0% /dev/tty
tmpfs 100K 0 100K 0% /dev/lxd
tank/lxd/custom/dev-volume 512G 128K 512G 1% /mnt/tank
tmpfs 100K 0 100K 0% /dev/.lxd-mounts
tmpfs 32G 0 32G 0% /dev/shm
tmpfs 32G 160K 32G 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 32G 0 32G 0% /sys/fs/cgroup
5,2. Результаты проверки с хоста
$ sudo zfs list
NAME USED AVAIL REFER MOUNTPOINT
tank 1.18G 1.31T 41.7K /mnt/tank
tank/lxd 1.18G 1.31T 41.7K none
tank/lxd/containers 270M 1.31T 41.7K none
tank/lxd/containers/base-server 251M 1.31T 588M /var/lib/lxd/storage-pools/lxd-pool/containers/base-server
tank/lxd/containers/dev-server 9.18M 1.31T 588M /var/lib/lxd/storage-pools/lxd-pool/containers/dev-server
tank/lxd/containers/qa-server 9.14M 1.31T 588M /var/lib/lxd/storage-pools/lxd-pool/containers/qa-server
tank/lxd/custom 125K 1.31T 41.7K none
tank/lxd/custom/dev-volume 41.7K 512G 41.7K /var/lib/lxd/storage-pools/lxd-pool/custom/dev-volume
tank/lxd/custom/qa-volume 41.7K 512G 41.7K /var/lib/lxd/storage-pools/lxd-pool/custom/qa-volume
tank/lxd/deleted 41.7K 1.31T 41.7K none
tank/lxd/images 937M 1.31T 41.7K none
tank/lxd/images/ab23ac2bda8cfb48c176a2d1e790181d5a1ed3522732a0cf8ff189dea848d3f1 588M 1.31T 588M none
tank/lxd/images/b36ec647e374da4816104a98807633a2cc387488083d3776557081c4d0333618 349M 1.31T 349M none
tank/lxd/snapshots 41.7K 1.31T 41.7K none
Выполнение команды df -h
на хосте до и после создания / уничтожения тестового файла также не показало никаких изменений. Я повторил это с большим (100 ГБ) тестовым файлом, но не заметил разницы.