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

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

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

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

LXC

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

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

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

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

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

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

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

systemctl stop lxc

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

cp -rp /var/lib/lxc /opt1/lxc

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

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

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

nano /etc/lxc/lxc.conf

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

lxc.lxcpath = /opt1/lxc

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

systemctl start lxc

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

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

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 -> /opt1/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

Установка Optimacros производится под привилегиями пользователя root

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

В данной директории Vagrant хранит образы LXC контейнеров воркспейса

Образ LXC контейнера воркспейса имеет размер ~2.5 ГБ

Рекомендуем делать перенос директории .vagrant.d из root раздела на диске в раздел для Optimacros

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

mv /root/.vagrant.d /another/disk/partition/.vagrant.d

Далее нужно выполнить команду по изменению переменной окружения

export VAGRANT_HOME=/another/disk/partition/.vagrant.d

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

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

echo $VAGRANT_HOME

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