<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Linux on kenji.blog</title><link>http://kenji.blog/ru/tags/linux/</link><description>Recent content in Linux on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>ru</language><copyright>kenjinote</copyright><lastBuildDate>Sun, 13 Sep 2026 07:00:00 +0900</lastBuildDate><atom:link href="http://kenji.blog/ru/tags/linux/index.xml" rel="self" type="application/rss+xml"/><item><title>Hyper-V против WSL2: сравнение технологий виртуализации на Windows</title><link>http://kenji.blog/ru/p/hyper-v-vs-wsl2-windows-virtualization/</link><pubDate>Sun, 13 Sep 2026 07:00:00 +0900</pubDate><guid>http://kenji.blog/ru/p/hyper-v-vs-wsl2-windows-virtualization/</guid><description>&lt;img src="http://kenji.blog/p/hyper-v-vs-wsl2-windows-virtualization/img/eyecatch.jpg" alt="Featured image of post Hyper-V против WSL2: сравнение технологий виртуализации на Windows" />&lt;h2 id="1-введение-эволюция-виртуализации-в-windows">1. Введение: Эволюция виртуализации в Windows
&lt;/h2>&lt;p>Технологии виртуализации на платформе Windows претерпели кардинальные изменения за последние несколько десятилетий. Ранее доминировали гипервизоры 2-го типа от сторонних разработчиков (такие как VMware Workstation и VirtualBox), но с момента внедрения Microsoft «Hyper-V» в Windows Server 2008 гипервизоры 1-го типа стали встраиваться и в настольные ОС Windows 10/11.&lt;/p>
&lt;p>В последние годы наибольшее внимание разработчиков привлекает «WSL2 (Windows Subsystem for Linux 2)». В то время как WSL1 полагалась на трансляцию системных вызовов, WSL2 использует технологию Hyper-V для создания «легковесной служебной ВМ» (Lightweight Utility VM), обеспечивая полную совместимость с Linux и значительный прирост производительности.&lt;/p>
&lt;p>В этой статье мы подробно сравним и объясним с глубокими техническими деталями две мощные технологии виртуализации: полнофункциональную «Hyper-V» и ориентированную на разработчиков «WSL2», рассматривая их архитектуру, производительность (CPU, память, дисковый ввод-вывод), сетевую конфигурацию и оптимальные сценарии использования.&lt;/p>
&lt;hr>
&lt;h2 id="2-базовая-теория-гипервизоров-и-сравнение-архитектур">2. Базовая теория гипервизоров и сравнение архитектур
&lt;/h2>&lt;p>Для понимания технологий виртуализации необходимо разобраться в классификации типов гипервизоров (мониторов виртуальных машин, VMM).&lt;/p>
&lt;h3 id="21-различия-между-гипервизорами-1-го-и-2-го-типа">2.1. Различия между гипервизорами 1-го и 2-го типа
&lt;/h3>&lt;p>Гипервизор — это программный слой, который абстрагирует доступ к оборудованию и позволяет нескольким операционным системам (гостевым ОС) выполняться одновременно на одной физической машине.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Тип 1 (Bare-metal, автономный)&lt;/strong>: Выполняется непосредственно на оборудовании. Концепции хост-ОС не существует (строго говоря, может существовать управляющая ОС с привилегиями), имеет крайне низкие накладные расходы и обеспечивает высокую производительность и безопасность. Примеры: Hyper-V, VMware ESXi, Xen.&lt;/li>
&lt;li>&lt;strong>Тип 2 (Хостовый)&lt;/strong>: Выполняется как приложение в хост-ОС (например, Windows или macOS). Все обращения к оборудованию проходят через хост-ОС, что увеличивает накладные расходы. Примеры: VMware Workstation, Oracle VirtualBox.&lt;/li>
&lt;/ul>
&lt;p>Hyper-V в Windows является чистым &lt;strong>гипервизором 1-го типа&lt;/strong>. При включении Hyper-V фактически сама операционная система Windows, с которой взаимодействует пользователь, начинает работать внутри специальной виртуальной машины, называемой «корневым разделом» (Root Partition).&lt;/p>
&lt;h3 id="22-детали-архитектуры-hyper-v">2.2. Детали архитектуры Hyper-V
&lt;/h3>&lt;p>Архитектура Hyper-V использует дизайн микроядра и основана на логических единицах изоляции, называемых разделами (Partitions).&lt;/p>
&lt;pre class="mermaid">
graph TD
A[&amp;#34;Оборудование (CPU, RAM, Диск, NIC)&amp;#34;] --&amp;gt; B[&amp;#34;Windows Hypervisor (Кольцо -1)&amp;#34;]
B --&amp;gt; C[&amp;#34;Корневой раздел (Windows OS)&amp;#34;]
B --&amp;gt; D[&amp;#34;Дочерний раздел 1 (Windows VM)&amp;#34;]
B --&amp;gt; E[&amp;#34;Дочерний раздел 2 (Linux VM)&amp;#34;]
C --&amp;gt; F[&amp;#34;VMBus (Шина виртуальных машин)&amp;#34;]
D --&amp;gt; F
E --&amp;gt; F
C --&amp;gt; G[&amp;#34;VID (Драйвер инфраструктуры виртуализации)&amp;#34;]
C --&amp;gt; H[&amp;#34;VMWP.exe (Рабочий процесс)&amp;#34;]
&lt;/pre>
&lt;ul>
&lt;li>&lt;strong>Windows Hypervisor&lt;/strong>: Работает в состоянии процессора с наивысшим уровнем привилегий (Кольцо -1 или VMX Root Mode) и отвечает только за выделение памяти и планирование CPU. Он не содержит драйверов устройств.&lt;/li>
&lt;li>&lt;strong>Корневой раздел (Root Partition)&lt;/strong>: Раздел, в котором работает хост-ОС Windows. Содержит все драйверы устройств и напрямую управляет оборудованием. Также предоставляет функции управления дочерними разделами (WMI-провайдеры, VMWP.exe и др.).&lt;/li>
&lt;li>&lt;strong>Дочерний раздел (Child Partition)&lt;/strong>: Раздел, в котором работает гостевая ОС. Прямой доступ к оборудованию не разрешен, запросы на ввод-вывод (Synthetic I/O) отправляются в корневой раздел через логическую шину совместного использования памяти, называемую «VMBus».&lt;/li>
&lt;/ul>
&lt;h3 id="23-wsl2-и-устройство-lightweight-utility-vm">2.3. WSL2 и устройство Lightweight Utility VM
&lt;/h3>&lt;p>WSL2 использует ту же базовую технологию гипервизора 1-го типа, что и Hyper-V, но задействует подмножество функций, называемое «Платформа виртуальных машин» (Virtual Machine Platform, VMP), которое отличается от полнофункциональных виртуальных машин Hyper-V.&lt;/p>
&lt;p>«Легковесная служебная ВМ» (Lightweight Utility VM), применяемая в WSL2, полностью исключает эмуляцию устаревшего оборудования (такого как виртуальный BIOS или виртуальная материнская плата), присутствующую в традиционных ВМ.&lt;/p>
&lt;pre class="mermaid">
graph TD
A[&amp;#34;Хост-ОС Windows (Пользовательское пространство)&amp;#34;]
B[&amp;#34;Файловая система NTFS&amp;#34;]
C[&amp;#34;Сервер протокола 9P (Plan 9)&amp;#34;]
D[&amp;#34;Легковесная служебная ВМ (Ядро Linux)&amp;#34;]
E[&amp;#34;ext4.vhdx (Виртуальный диск)&amp;#34;]
F[&amp;#34;Пользовательское пространство Linux (Дистрибутивы WSL2)&amp;#34;]
A --&amp;gt; C
C --&amp;gt;| &amp;#34;Кросс-ОС обмен файлами&amp;#34; | D
D --&amp;gt; E
D --&amp;gt; F
&lt;/pre>
&lt;p>Главная особенность WSL2 — это &lt;strong>скорость запуска&lt;/strong> и &lt;strong>бесшовная интеграция с хост-ОС&lt;/strong>. Ядро Linux загружается менее чем за секунду, а доступ к файловой системе Windows (NTFS) осуществляется через протокол сетевой файловой системы &lt;code>9P&lt;/code> из Plan 9.&lt;/p>
&lt;hr>
&lt;h2 id="3-подробный-анализ-производительности-вычислительные-ресурсы-и-ввод-вывод">3. Подробный анализ производительности: Вычислительные ресурсы и ввод-вывод
&lt;/h2>&lt;p>Производительность виртуальной машины выражается как сумма накладных расходов в компонентах CPU, памяти и дискового ввода-вывода.&lt;/p>
&lt;h3 id="31-cpu-и-накладные-расходы-на-переключение-контекста">3.1. CPU и накладные расходы на переключение контекста
&lt;/h3>&lt;p>Hyper-V и WSL2 используют аппаратную виртуализацию (Intel VT-x / AMD-V). Инструкции процессора в основном выполняются с нативной скоростью, но при выполнении привилегированных инструкций или обработке ввода-вывода возникает прерывание «VM Exit», приводящее к переключению контекста на гипервизор.&lt;/p>
&lt;p>Накладные расходы CPU $T_{overhead}$ в этот момент можно описать следующей математической моделью:&lt;/p>
$$ T_{overhead} = \sum_{i=1}^{N} (t_{vm\_exit} + t_{hypercall\_process} + t_{vm\_entry}) $$&lt;p>Где:&lt;/p>
&lt;ul>
&lt;li>$N$: Количество возникновений VM Exit за единицу времени&lt;/li>
&lt;li>$t_{vm\_exit}$: Время перехода от гостя к гипервизору&lt;/li>
&lt;li>$t_{hypercall\_process}$: Время обработки ввода-вывода или прерываний через VMBus&lt;/li>
&lt;li>$t_{vm\_entry}$: Время возврата от гипервизора к гостю&lt;/li>
&lt;/ul>
&lt;p>Поскольку в WSL2 отсутствует эмуляция устаревшего оборудования, параметр $t_{hypercall\_process}$ крайне мал и оптимизирован. Поэтому при чистых вычислениях на CPU (например, компиляция ядра или вывод моделей машинного обучения) снижение производительности по сравнению с bare-metal средой составляет в пределах нескольких процентов.&lt;/p>
&lt;h3 id="32-механизм-выделения-памяти">3.2. Механизм выделения памяти
&lt;/h3>&lt;p>В методах управления памятью у двух систем есть четкие различия в философии проектирования.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Hyper-V (Динамическая память)&lt;/strong>: В зависимости от потребностей гостевой ВМ в памяти корневой раздел динамически выделяет и возвращает память. Однако память, зарезервированная как страничный кэш (page cache) внутри гостевой ОС, обычно не освобождается, пока система не столкнется с нехваткой ресурсов.&lt;/li>
&lt;li>&lt;strong>WSL2 (Динамическое освобождение памяти)&lt;/strong>: WSL2 имеет собственный механизм, который регулярно возвращает (Reclaim) ненужную память (включая кэш) из ВМ Linux хосту Windows. В ранних версиях WSL2 существовала проблема, когда страничный кэш Linux съедал память Windows (разрастание процесса Vmmem), но сейчас это исправлено патчами ядра.&lt;/li>
&lt;/ul>
&lt;h3 id="33-характеристики-дискового-ввода-вывода-vhdx-против-ext4vhdx">3.3. Характеристики дискового ввода-вывода (VHDX против ext4.vhdx)
&lt;/h3>&lt;p>Дисковый ввод-вывод чаще всего становится узким местом в производительности виртуальных машин.&lt;/p>
&lt;p>Задержка ввода-вывода (Latency) $L_{total}$ рассчитывается следующим образом:&lt;/p>
$$ L_{total} = L_{guest\_fs} + L_{vmbus} + L_{host\_fs} + L_{physical\_disk} $$&lt;p>&lt;strong>В случае Hyper-V&lt;/strong>:
Типичный гость Hyper-V использует виртуальный диск в формате &lt;code>VHDX&lt;/code>. Запросы на ввод-вывод от файловой системы внутри гостевой ОС (ext4 или NTFS) проходят через драйвер блочного устройства хранилища VMBus (storvsc) и обрабатываются как доступ к файлу VHDX на NTFS на стороне Windows.&lt;/p>
&lt;p>&lt;strong>В случае WSL2&lt;/strong>:
Дистрибутивы Linux в WSL2 работают на нативной файловой системе ext4, созданной внутри выделенного файла &lt;code>ext4.vhdx&lt;/code>. Файловые операции внутри Linux (например, в директории &lt;code>~&lt;/code>) демонстрируют нативную производительность, эквивалентную Hyper-V, описанному выше.
Однако &lt;strong>когда осуществляется доступ из Linux в WSL2 к файлам на стороне Windows (например, &lt;code>/mnt/c/&lt;/code>)&lt;/strong>, или наоборот, процесс значительно отличается. Для этого кросс-ОС доступа используется &lt;code>9P (Plan 9 File System Protocol)&lt;/code>.&lt;/p>
$$ L_{cross\_os} = L_{9p\_client} + L_{socket\_transfer} + L_{9p\_server} + L_{ntfs} $$&lt;p>Доступ через этот протокол 9P имеет высокие накладные расходы на сериализацию, поэтому производительность значительно падает (иногда в 10 и более раз) в сценариях, требующих массового чтения и записи небольших файлов (например, &lt;code>npm install&lt;/code> или операции Git в проекте Node.js, расположенном в каталоге Windows).
Поэтому &lt;strong>при использовании WSL2 железное правило — всегда размещать файлы проекта в нативной файловой системе Linux (внутри &lt;code>~/&lt;/code>)&lt;/strong>.&lt;/p>
&lt;hr>
&lt;h2 id="4-сетевая-структура-nat-default-switch-bridged">4. Сетевая структура: NAT, Default Switch, Bridged
&lt;/h2>&lt;p>Гибкость сетевых функций — одно из главных отличий между Hyper-V и WSL2.&lt;/p>
&lt;h3 id="41-сеть-wsl2-на-базе-nat">4.1. Сеть WSL2 (На базе NAT)
&lt;/h3>&lt;p>Сеть WSL2 по умолчанию настроена как «NAT (Network Address Translation)», используя технологию виртуальных коммутаторов Hyper-V.
ВМ Linux автоматически получает приватный IP-адрес (например, &lt;code>172.20.x.x&lt;/code>), отличный от адреса хоста Windows. Предусмотрен встроенный механизм переадресации, благодаря которому сервисы (порты), запущенные в WSL2, доступны с хоста Windows через &lt;code>localhost&lt;/code>, что позволяет разработчикам тестировать веб-серверы, не задумываясь о сети.&lt;/p>
&lt;p>Недавно в предварительных версиях WSL2 был представлен новый сетевой режим «Mirrored» (Зеркальный). Он улучшает поддержку IPv6 и совместимость с VPN-соединениями (настраивается в &lt;code>.wslconfig&lt;/code>).&lt;/p>
&lt;h3 id="42-виртуальный-коммутатор-hyper-v-virtual-switch">4.2. Виртуальный коммутатор Hyper-V (Virtual Switch)
&lt;/h3>&lt;p>Hyper-V позволяет создавать сложные сети корпоративного уровня. Через «Диспетчер виртуальных коммутаторов» доступны три основных режима:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Внешняя (External)&lt;/strong>: Привязывает физическую сетевую карту (NIC) хост-машины к виртуальному коммутатору, подключая гостевую ВМ напрямую к физической сети (мостовое соединение). ВМ получает IP-адрес от DHCP-сервера в той же подсети, что и физическая сеть.&lt;/li>
&lt;li>&lt;strong>Внутренняя (Internal)&lt;/strong>: Разрешает связь только между хост-ОС и ВМ, а также между самими ВМ. Прямой выход во внешнюю сеть невозможен.&lt;/li>
&lt;li>&lt;strong>Частная (Private)&lt;/strong>: Разрешает связь только между ВМ и блокирует связь с хост-ОС. Используется для создания изолированных тестовых сред.&lt;/li>
&lt;/ol>
&lt;h3 id="43-продвинутая-настройка-сети-hyper-v-с-помощью-powershell">4.3. Продвинутая настройка сети Hyper-V с помощью PowerShell
&lt;/h3>&lt;p>Если вам нужно создать кастомизированную NAT-сеть для ВМ в среде разработки или тестирования, PowerShell предоставляет детальный контроль. Ниже приведен пример скрипта для создания внутреннего виртуального коммутатора, настройки на нем NAT и предоставления ВМ доступа в Интернет.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="c"># 1. Создание внутреннего виртуального коммутатора&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$SwitchName&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;HyperV-NatSwitch&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">New-VMSwitch&lt;/span> &lt;span class="n">-SwitchName&lt;/span> &lt;span class="nv">$SwitchName&lt;/span> &lt;span class="n">-SwitchType&lt;/span> &lt;span class="n">Internal&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># 2. Настройка IP-адреса для виртуальной NIC хоста (IP, который станет шлюзом)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$GatewayIP&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;192.168.100.1&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$NetPrefix&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="mf">24&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$InterfaceAlias&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;vEthernet (&lt;/span>&lt;span class="nv">$SwitchName&lt;/span>&lt;span class="s2">)&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">New-NetIPAddress&lt;/span> &lt;span class="n">-IPAddress&lt;/span> &lt;span class="nv">$GatewayIP&lt;/span> &lt;span class="n">-PrefixLength&lt;/span> &lt;span class="nv">$NetPrefix&lt;/span> &lt;span class="n">-InterfaceAlias&lt;/span> &lt;span class="nv">$InterfaceAlias&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># 3. Настройка сети NAT&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$NatName&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;HyperV-NatNetwork&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$NatSubnet&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;192.168.100.0/24&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">New-NetNat&lt;/span> &lt;span class="n">-Name&lt;/span> &lt;span class="nv">$NatName&lt;/span> &lt;span class="n">-InternalIPInterfaceAddressPrefix&lt;/span> &lt;span class="nv">$NatSubnet&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Команда для проверки&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">Get-NetNat&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>С помощью этой конфигурации вы можете создать собственный сегмент NAT, который может взаимодействовать с внешним миром через хост, вручную назначив указанному гостю Hyper-V IP-адрес &lt;code>192.168.100.x&lt;/code> и шлюз &lt;code>192.168.100.1&lt;/code>.&lt;/p>
&lt;hr>
&lt;h2 id="5-варианты-использования-и-практическое-руководство-по-выбору">5. Варианты использования и практическое руководство по выбору
&lt;/h2>&lt;p>Учитывая различия в архитектуре и производительности, описанные выше, определим, в каких ситуациях следует применять каждую из технологий.&lt;/p>
&lt;h3 id="51-сценарии-когда-следует-выбрать-wsl2">5.1. Сценарии, когда следует выбрать WSL2
&lt;/h3>&lt;p>WSL2 специально разработан для «повышения продуктивности разработчиков». Он идеально подходит для следующих целей:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Веб-разработка и облачная (cloud-native) разработка&lt;/strong>: Разработка контейнеров с использованием Docker Desktop (бэкенд WSL2) или Podman.&lt;/li>
&lt;li>&lt;strong>Использование инструментов только для Linux&lt;/strong>: Если вы повседневно используете bash, grep, awk, sed или компиляторы GCC / Clang для Linux.&lt;/li>
&lt;li>&lt;strong>GUI-приложения (WSLg)&lt;/strong>: Если вы хотите бесшовно запускать приложения X11/Wayland для Linux на рабочем столе Windows.&lt;/li>
&lt;li>&lt;strong>Машинное обучение и разработка ИИ&lt;/strong>: Быстрое обучение в TensorFlow или PyTorch с использованием функции проброса GPU (NVIDIA CUDA на WSL).&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Примечание&lt;/strong>: Вы можете столкнуться с ограничениями, если вам нужно глубоко настроить ядро или если вы развертываете сложные сервисы, сильно зависящие от systemd (в настоящее время systemd поддерживается, но по умолчанию может быть отключен или иметь ограничения).&lt;/p>
&lt;h3 id="52-сценарии-когда-следует-выбрать-hyper-v">5.2. Сценарии, когда следует выбрать Hyper-V
&lt;/h3>&lt;p>Hyper-V предназначен для «виртуализации инфраструктуры и полной изоляции». Он обязателен для следующих задач:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Запуск ВМ Windows&lt;/strong>: При запуске различных версий Windows (например, Windows Server или старой Windows 10) в качестве среды тестирования.&lt;/li>
&lt;li>&lt;strong>Вложенная виртуализация (Nested Virtualization)&lt;/strong>: Если вам нужно запустить виртуальную машину (Hyper-V или KVM) внутри другой виртуальной машины. Это незаменимо для сред тестирования инженеров инфраструктуры.&lt;/li>
&lt;li>&lt;strong>Сложные сетевые требования&lt;/strong>: Если вам нужен строгий контроль над конфигурацией сети, например, подключение внешнего моста (подключение к той же локальной сети), тегирование VLAN или назначение нескольких NIC.&lt;/li>
&lt;li>&lt;strong>Снапшоты (Контрольные точки)&lt;/strong>: Функция сохранения состояния ВМ в определенный момент времени и возможности мгновенного отката в любой момент. Чрезвычайно полезно для разрушительного тестирования программного обеспечения или анализа вредоносных программ.&lt;/li>
&lt;li>&lt;strong>Фиксированное распределение ресурсов&lt;/strong>: Если вам нужно строго зафиксировать количество ядер CPU и объем памяти для минимизации влияния на хост-ОС.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="6-рассмотрение-пропускной-способности-ввода-вывода-с-использованием-математических-моделей-приложение">6. Рассмотрение пропускной способности ввода-вывода с использованием математических моделей (Приложение)
&lt;/h2>&lt;p>Для системного инженера при оценке пределов производительности ввода-вывода обеих систем важно теоретически понимать взаимосвязь между пропускной способностью $S$ и размером блока $B$.&lt;/p>
&lt;p>Пропускная способность передачи данных $S$ — это объем данных, переданных за единицу времени, которая моделируется следующим образом:&lt;/p>
$$ S(B) = \frac{B}{L_{setup} + \frac{B}{R_{max}}} $$&lt;ul>
&lt;li>$B$: Размер блока (Байты)&lt;/li>
&lt;li>$L_{setup}$: Фиксированная задержка, связанная с настройкой запроса ввода-вывода и переключением контекста&lt;/li>
&lt;li>$R_{max}$: Максимальная пропускная способность оборудования при копировании или передаче на устройство&lt;/li>
&lt;/ul>
&lt;p>При доступе к файлам через протокол 9P в WSL2 этот параметр $L_{setup}$ становится очень большим (из-за сокет-коммуникаций и сериализации/десериализации протокола). Таким образом, когда размер блока $B$ мал (массовое чтение/запись мелких файлов размером в несколько килобайт), влияние $L_{setup}$ в знаменателе становится доминирующим, и пропускная способность $S$ резко падает.
И наоборот, при доступе к VHDX через VMBus в Hyper-V, параметр $L_{setup}$ оптимизирован почти до уровня аппаратных прерываний, что позволяет поддерживать высокие значения IOPS даже для небольших блоков.&lt;/p>
&lt;p>Эта математическая реальность является логическим обоснованием лучшей практики, которая гласит: «В WSL2 нельзя размещать файлы проекта на стороне Windows».&lt;/p>
&lt;hr>
&lt;h2 id="7-заключение-две-сосуществующие-технологии-виртуализации">7. Заключение: Две сосуществующие технологии виртуализации
&lt;/h2>&lt;p>Hyper-V и WSL2 — это не ситуация, когда одна технология превосходит другую; это &lt;strong>«два решения с разными целями»&lt;/strong>.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>WSL2&lt;/strong> — это «лучший инструмент интеграции», позволяющий пробить оболочку ОС Windows и бесшовно и быстро предоставить экосистему Linux пользователям Windows. Не будет преувеличением сказать, что это идеальная CLI-среда для разработчиков.&lt;/li>
&lt;li>&lt;strong>Hyper-V&lt;/strong> — это «полноценный гипервизор», который привносит на рабочий стол надежную изоляцию и возможности управления, отточенные в корпоративных центрах обработки данных. Ему нет равных в построении сетей, тестировании ОС Windows и симуляции инфраструктурных сред.&lt;/li>
&lt;/ul>
&lt;p>В современных средах Windows эти две технологии не конкурируют друг с другом, а прекрасно сосуществуют на одной платформе ВМ. Используя их по назначению в зависимости от задачи, вы сделаете Windows самой мощной и гибкой инженерной рабочей станцией в мире.&lt;/p></description></item></channel></rss>