Настройка ZFS для LXD в Ubuntu

Что такое ZFS

ZFS - это комбинация менеджера томов и файловой системы. Будучи одной из наиболее привлекательных компонент операционной системы Solaris и желанной для всех системных администраторов Linux, знакомых с Solaris, ZFS стала доступной в системе Ubuntu. Основные ее преимущества - это: * моментальные снимки файловой системы (снапшоты) * механизм копирования при записи * непрерывный контроль целостности для предотвращения повреждения данных * автоматическое исправление ошибок * эффективное сжатие данных

Эти качества делают ZFS идеальной файловой системой для контейнеров.

Cтепень поддержки ZFS в Ubuntu

ZFS больше не является модулем для DKMS. Вместо этого zfs.ko автоматически собирается и устанавливается в операционную систему.

$ locate zfs.ko
/lib/modules/4.4.0-4-generic/kernel/zfs/zfs/zfs.ko

Модуль загружается автоматически при использовании:

$ lsmod | grep zfs
zfs                  2801664  11
zunicode              331776  1 zfs
zcommon                57344  1 zfs
znvpair                90112  2 zfs,zcommon
spl                   102400  3 zfs,zcommon,znvpair
zavl                   16384  1 zfs

Применение

В Ubuntu 16.04 Xenial все достаточно просто. Всего несколько команд нужно для начала использования ZFS и LXD, и на это потребуется не более минуты.

Для начала установим lxd и zfsutils-linux:

$ sudo apt install lxd zfsutils-linux

Далее, мы используем команду lxd init для интерактивной настройки LXD и ZFS. В примере ниже для пула ZFS мы будем использовать разрежённый файл (так называемый sparse-файл), но в рабочей системе лучше всего использовать сырой раздел SSD или устройство.

$ sudo lxd init
Name of the storage backend to use (dir or zfs): zfs
Create a new ZFS pool (yes/no)? yes
Name of the new ZFS pool: lxd
Would you like to use an existing block device (yes/no)? no
Size in GB of the new loop device (1GB minimum): 2
Would you like LXD to be available over the network (yes/no)? no 
LXD has been successfully configured.

Теперь проверим пул ZFS:

$ sudo zpool list
NAME   SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
lxd   1.98G   450K  1.98G         -     0%     0%  1.00x  ONLINE  -

$ sudo zpool status
  pool: lxd
 state: ONLINE
  scan: none requested
config:

        NAME                    STATE     READ WRITE CKSUM
        lxd                     ONLINE       0     0     0
          /var/lib/lxd/zfs.img  ONLINE       0     0     0
errors: No known data errors

$ lxc config get storage.zfs_pool_name
storage.zfs_pool_name: lxd

И, наконец, можно импортировать LXD-образ Ubuntu и запустить несколько контейнеров. Обратите внимание на то, как быстро стартуют контейнеры благодаря таким функциям ZFS, как клонирование и копирование при записи:

$ newgrp lxd

$ lxd-images import ubuntu --alias ubuntu
Downloading the GPG key for http://cloud-images.ubuntu.com
Progress: 48 %
Validating the GPG signature of /tmp/tmpa71cw5wl/download.json.asc
Downloading the image.
Image manifest: http://cloud-images.ubuntu.com/server/releases/trusty/release-20160201/ubuntu-14.04-server-cloudimg-amd64.manifest
Image imported as: 54c8caac1f61901ed86c68f24af5f5d3672bdc62c71d04f06df3a59e95684473
Setup alias: ubuntu

$ for i in $(seq 1 5); do lxc launch ubuntu; done

$ lxc list
+-------------------------+---------+-------------------+------+-----------+-----------+
|          NAME           |  STATE  |       IPV4        | IPV6 | EPHEMERAL | SNAPSHOTS |
+-------------------------+---------+-------------------+------+-----------+-----------+
| discordant-loria        | RUNNING | 10.0.3.130 (eth0) |      | NO        |         0 |
+-------------------------+---------+-------------------+------+-----------+-----------+
| fictive-noble           | RUNNING | 10.0.3.91 (eth0)  |      | NO        |         0 |
+-------------------------+---------+-------------------+------+-----------+-----------+
| interprotoplasmic-essie | RUNNING | 10.0.3.242 (eth0) |      | NO        |         0 |
+-------------------------+---------+-------------------+------+-----------+-----------+
| nondamaging-cain        | RUNNING | 10.0.3.9 (eth0)   |      | NO        |         0 |
+-------------------------+---------+-------------------+------+-----------+-----------+
| untreasurable-efrain    | RUNNING | 10.0.3.89 (eth0)  |      | NO        |         0 |
+-------------------------+---------+-------------------+------+-----------+-----------+
Статьи и заметки
ЛИЧНЫЙ КАБИНЕТ
На вашу почту отправлено сообщение с кодом подтверждения. Введите его для завершения регистрации.
ВЫПОЛНИТЬ