TODO: Составить план виртуализации, контейнеризации, изоляции.
- Исторически так сложилось, что я не хочу выбирать операционную систему. Любая из них мне может предоставаить что-то уникальое. Так, что ради него не хочется отказываться, но и отказываться от других операционных систем ради него тоже нет желания и резона.
- Представим себе, что хочется запустить некоторое приложение, но нет к нему доверия. Или запустить приложение Windows на Linux или Android на MacOS и т.п.
TODO:Подготовить тестовую платформу, сконфигурировать (WHPX), подобрать пакеты для бенчмаркинга и запустить. Можно два отдельных варианта с Intel и AMD.
TODO: А Docker+VNC заработает? https://stackoverflow.com/questions/16296753/can-you-run-gui-applications-in-a-docker-container. Может даже WSL. Возможно, стоит отдельно вынести обсуждение виртуализации и прицепиться к этой идее.
- https://itnext.io/using-windows-10-as-a-desktop-environment-for-linux-7b2d8239f2f1
- Идея абстракции в том, что для нас ОС может быть абстракцией. Нет желания разбираться с тонкостями тех или иных просто хочется запускать приложения и извлекать максимум из каждой из них.
- В случае с WSL2 надо будет только разобраться со скоростью диска. И тогда можно разделить на серию статей, WSL -> Docker -> QEMU.
TODO: Скорее всего, надо искать способы отладки и профайлинга QEMU. В этом может быть его основное преимущество над остальными средствами виртуализации. Также посмотреть логи.
TODO: Попробовать QEMU 4?
TODO:Инсталляция виснет в самых разных моментах. И такое ощущение, что странно зависит от мыши.
TODO: Попробовать включить VNC, отключить мышь и прочие устройства. Пока мне этот способ нравится чуть больше с точки зрения SRP (пусть VNC-клиент делает то, что он умеет, а QEMU — своё) и с точки зрения глюков на удалённом десктопе (не теряется мышь, нет ненужного grab).
- Хотя нет, глюки с мышью не ушли
TODO: Можно сделать образ установленной и подготовленной ОС (скажем, Windows) один раз, а потом клонировать qcow2.
TODO: Посмотреть исходники
TODO: Преимущества
Например, создание отдельных «рискованных» станций, защищённых. Шифрование, живая миграция и т.п. Отсутствие ограничения на операционный системы и платформы (Android, MacOS). Отсылка как размышлениями об абстракциях? Виртуализация, изоляция различных устройств и т.п.
- Возможность отключать у виртуальных машин интернет, подключать диски из ISO и другим образом экспериментировать с оборудованием, что проблематично на физической машине.
- Существенная экономия ресурсов (память, процессор) если целые группы приложений и сервисов запускать отдельно (запуская виртуалку).
- Для разработчика. Например, используя QEMU-виртуализации можно тестировать самые разные эпик-фейлы, вроде тестов http://jepsen.io. В QEMU вроде куча всяких отладочных историй, трейсингов и прочих радостей.
- QEMU поддерживает огромное количество архитектур и устройств. Можно создавать приложение, даже не имея устройства в наличии. Да и имея, разрабатывать и отлаживать всё равно проще.
TODO: QEMU и эксперименты на Windows
TODO:Почему QEMU. Хотя бы потому, что он — свободный и надо дать ему шанс. Плюс Windows/Linux, Android (как пример сложной эмуляции для разработчика) и т.п. И в целом для разработчика он может быть удобен, например https://javiermunhoz.com/blog/2016/01/24/windows-10-kernel-debugging-on-qemu.html (и наверняка есть более интересные устройства).
TODO: https://habr.com/ru/company/virtuozzo/blog/538680/ и https://libvirt.org/windows.html
TODO: Подопытный #1. Скачать ванильную инсталляцию Windows10 https://www.microsoft.com/en-gb/software-download/windows10
TODO: https://readthedocs.org/projects/qemu/downloads/pdf/latest/
TODO:Первая же загрузка Windows проходит медленно. Надо сравнить с Hyper-V.
TODO: Есть режим отладки?
TODO:Попробовать Linux ради любопытства.
TODO:Попробовать на Wintel. В том числе HAXM.
TODO: Посмотреть исходники QEMU
TODO: Посмотреть код
TODO:Основной диск
- Первый же запуск выводит много интересной информации, например то, что используется zlib
- По умолчанию кластер создался 64К… Надо больше или наоборот — меньше? Запланировать тесты производительности? С extended_l2=on может и не нужно менять.
- https://blogs.igalia.com/berto/2015/12/17/improving-disk-io-performance-in-qemu-2-5-with-the-qcow2-l2-cache/
- https://events.static.linuxfound.org/sites/events/files/slides/kvm-forum-2017-slides.pdf — почему qcow и какой есть выбор.
TODO:Решить вопрос либо с сетью, либо с прикреплением хостовых дисков, чтобы загрузить инструменты бенчмаркинга.
- https://en.wikibooks.org/wiki/QEMU/Networking#cite_note-1 Можно попробовать простой RDP прокинуть на примере tcp. Так можно и файлы передавать.
TODO: Провести бенчмаркинг и сравнить с хостовой системой, где проседает.
- Хорошо бы отдельно подобрать программы для тестов и бенчмаркинга.
- Кажется VHDX быстрее qcow2. Можно попробовать qemu-img bench.
- Попробовать VHDX прикрепить как диск и QEMU пусть использует диск (-hda \\.\PhysicalDriveN, Get-PhysicalDisk).
TODO: Что использовать для анализа производительности? В целом скорость удручающая. Хотя нагрузки на процессор или другие подсистемы нет. Есть предположение, что проблемы с qcow2, поскольку менеджер задач визуализирует нагрузку 50% при достаточно скромных показателях чтения и записи.
TODO: Решить вопрос с сетью, попробовать другие варианты вместо qcow2 или изменить его настройки. Или сделать преаллокацию (fallocate?). https://qemu-project.gitlab.io/qemu/
TODO: Архитектура, HAXM/WHPX/KVM
TODO:QEMU может быть хорошим и простым интерфейсом (абстракцией) для Hyper-V, позволяя переносить навыки с одной платформы на другую.
TODO: В Windows диск виден как HDD, может его цеплять другим образом? Как блочное устройство?
TODO: Может ли QEMU работать со «слоёными» фаловыми системами. Скорее всего вряд ли, всё-таки она больше с блочными устройствами.
TODO: Процессор
TODO:Попробовать https://www.digitalfoundations.com.au/blog/qemu-5-on-windows-host-with-whpx/. С smp WHPX постоянно подвисает.
TODO: QEMU и эксперименты с Android
TODO: QEMU и эксперименты с MacOS
https://github.com/foxlet/macOS-Simple-KVM
TODO: QEMU может эмулировать интересные устройства?
https://blog.frankenmichl.de/2018/02/13/add-nvme-device-to-vm/
TODO: Другие виды виртуализации
https://stackoverflow.com/questions/40658095/how-to-open-ubuntu-gui-inside-a-docker-image