Перейти к содержанию

Изменение директории с данными для LXC, Vagrant

Системы контейнеризации Docker и LXC являются основой для работы Optimacros.

Для более безопасного использования Optimacros, советуем их директории выносить из раздела root (/).

LXC

По умолчанию директория для LXC /var/lib/lxc

В данной директории хранятся все контейнеры.

Для изменения этой директории есть разные варианты, больше информации можно получить в интернете, мы взяли по нашему мнению наиболее правильное решение.

Наш вариант проверен на Ubuntu 18.04 и ALT Server 9

⚠ Останавливаем все запущенные контейнеры.

Info

Если у вас работают WS контейнеры, то останавливать их нужно командой ./install workspace --path /путь/к/манифесту/воркспейса/manifest.json shutdown из директории с вашим инсталлятором воркспейса.

Останавливаем сервис.

systemctl stop lxc

Переносим директорию.

cp -rp /var/lib/lxc /om/lxc

Временно архивируем оригинальную директорию.

mv /var/lib/lxc /var/lib/lxc.old

Редактируем файл с конфигурацией, он может отсутствовать, тогда создаем его.

nano /etc/lxc/lxc.conf

Добавляем параметр с новой директорией.

lxc.lxcpath = /om/lxc

Запускаем сервис.

systemctl start lxc

Проверяем корневую директорию lxc.

sudo lxc-config lxc.lxcpath

Info

Для Ubuntu возможно необходима дополнительная настройка (см. ниже).

Запускаем нужные существующие контейнеры. Если все нормально, можно удалить архивную папку.

Warning

⚠ Внимание, неправильное использование команды rm -rf может привести к повреждению Операционной Системы.

rm -rf /var/lib/lxc.old

Ubuntu

При изменении директории LXC возможна ошибка из-за приложения AppArmor.

AppArmor - это реализация Модуля безопасности линукс по управлению доступом на основе имен.

AppArmor ограничивает отдельные программы набором перечисленных файлов и возможностями в соответствии с правилами Posix 1003.1e.

AppArmor сервис может быть не установлен, но LXC будет продолжать ругаться и есть 2 варианта:

1. Установить сервис AppArmor при его отсутствии и отредактировать профиль безопасности (Рекомендуем этот способ)

Отредактируем профиль LXC.

nano /etc/apparmor.d/abstractions/lxc/start-container

Находим строчку mount -> /var/lib/lxc/{**,}, и меняем ее на нужную нам mount -> /om/lxc/{**,},

Проверим наличие apparmor утилит.

which apparmor_parser
which apparmor_status

Если результат пустой, то нужно установить пакет apparmor.

apt-get install apparmor

После установки, можно проверить текущий статус apparmor.

apparmor_status

Скорее всего все показатели будут нулями, так как после установки сервис apparmor не запущен.

Запускаем сервис.

systemctl start apparmor

Добавляем его в автозагрузку.

systemctl enable apparmor

Проверяем статус.

apparmor_status

Должна появится информация о загруженных профилях, среди которых есть профили LXC.

Если AppArmor был ранее установлен и работал, то после изменений профиля, нужно просто его перезагрузить.

systemctl restart apparmor

2. Добавить в настройки LXC отключение AppArmor

Мы не рекомендуем этот способ, так как он приводит к отключению штатных механизмов безопасности.

Данный способ может не сработать при наличии сервиса apparmor.

Редактируем файл с конфигурацией LXC.

nano /etc/lxc/lxc.conf

Добавляем в конец файла строчку.

lxc.apparmor.profile = unconfined

Сохраняем файл и проверяем работу LXC.

Vagrant

В домашнем каталоге пользователя root, Vagrant создает директорию /root/.vagrant.d

В данной директории Vagrant хранит образы LXC контейнеров воркспейса. Образ LXC контейнера воркспейса имеет размер ~2.5 ГБ. Чтобы избежать переполнения /root/ рекомендуем делать перенос директории .vagrant.d из root раздела на диске в раздел для Optimacros.

Для переноса выполните команду:

mv /root/.vagrant.d /om/.vagrant.d

После этого необходимо выполнить команду по изменению переменной окружения.

export VAGRANT_HOME=/om/.vagrant.d

После выполнения данной команды, инсталлятор Optimacros воркспейса будет взаимодействовать с каталогом по новому пути, но данная настройка при входе в новую сессию терминала linux будет сброшена.


Для сохранения настройки переменной окружения на постоянной основе, добавьте ее без изменений в специальный файл /etc/profile в конец с новой строки, сделав дополнительную пустую строку. Сохранив изменения создайте новую сессию работу с linux терминалом и проверьте командой.

echo $VAGRANT_HOME

Команда должна показывать в качестве результата значение вашего пути, например /om/.vagrant.d