Как разделить пул ZFS в контейнере LXD внутри виртуальной машины? - PullRequest
0 голосов
/ 11 ноября 2018

Я ищу руководство по настройке домашнего сервера. У меня есть микросервер HP Proliant Gen 8 G1610T с 12 ГБ оперативной памяти. Я использовал его и планирую продолжать использовать его с некоторыми критически важными приложениями И как homelab для тестирования игры с новыми ОС, технологиями и решениями.

Фон

Короче говоря, мой план состоит в том, чтобы изолировать свою производственную среду от испытательной площадки, поэтому я не буду путаться со службами, которые должны быть запущены большую часть времени. Кроме того, я время от времени отдаляюсь от физического блока, поэтому, если я испорчу конфигурацию сети (что я сделал…) или мой хост не загрузится, я fubar. По этой причине я решил иметь одну ВМ для всех критические приложения и другие для тестирования, в соответствии с моими потребностями.

Что я хочу

  1. Отделение сред тестирования от сервисов, которые я не хочу ломать
  2. Иметь удаленный доступ для администрирования машины, установки / переустановки ОС
  3. Используйте снимки, чтобы иметь резервные копии на определенный момент времени, к которым я могу вернуться, если что-то пойдет не так

Вот диаграмма, которая показывает мой план:

План моей установки

проблема

Я нахожусь в процессе конструирования своей системы, и я сталкиваюсь с некоторыми фундаментальными проблемами, которые я должен пересмотреть, прежде чем двигаться дальше. Наиболее важным из них является то, как разделить хранилище между Host, VM и LXD контейнерами.

Подводя итог моей черновой настройке:

  1. ОС HOST: Ubuntu 18.04 с KVM на LVM на / dev / sda SDD с пулом ZFS RAIDZ1 из / dev / sd [b-e] 4xHDD
  2. VM: Ubuntu 18.04 как необработанное изображение на LVM в том же / dev / sda - когда я читаю, необработанные изображения имеют тенденцию быть немного быстрее, чем qcow2, и я все еще могу делать живые снимки благодаря LVM
  3. LXD контейнеры ВНУТРИ VM

Теперь я хочу наилучшим образом использовать хранилище ZFS, о котором заботится ОС HOST. Однако пул не может управляться ни VM, ни LXD из-за уровня виртуализации. Итак, мое решение:

  1. Предоставить общий доступ к блочному устройству ZVOL, установить его внутри виртуальной машины как / dev / vdb
  2. Использовать этот диск как блочное устройство для хранилища ZFS для LXD (чтобы я мог использовать функцию моментальных снимков в LXD)
  3. NFS монтирует бак / nextcloud из ОС HOST в один из контейнеров LXD, чтобы иметь больше места для хранения

Полагаю, в этот момент я понял, что слишком усложняю и иду против правила KISS. Я знаю, что могу просто хранить все контейнеры LXD непосредственно на хосте, но мои аргументы в пользу первоначального решения:

  1. Наличие всего в одной виртуальной машине делает ее более портативной, проще для резервного копирования
  2. В случае восстановления системы проще перезагрузить ВМ, чем ХОСТ
  3. Добавление дополнительного уровня виртуализации делает его более безопасным? Или это просто ложное чувство безопасности?

Вопросы

Я открыт для предложений и, конечно, хотел бы услышать мнение кого-то более опытного, чем я. В частности, у меня есть следующие вопросы:

  1. Есть ли серьезное снижение производительности ввода-вывода при создании пула ZFS для LXD из блочного устройства ZVOL? Я полагаю, что есть вопрос, это так плохо, что я вообще не должен этого делать?
  2. Является ли NFS монтирование формы HOST в контейнер LXD и / или ВМ хорошей идеей для предоставления хранилища для приложения, такого как nextcloud? Есть ли лучшие альтернативы?
...