Windows Virtualization Internals (भाग 3) — सेकंडों में boot होने वाली VMs: WSL2, Windows Sandbox और containers इतने हल्के क्यों हैं

· अद्यतन तिथि: · · Windows, Virtualization, WSL2, Windows Sandbox, Containers, Hyper-V

संशोधन इतिहास (पहला संस्करण, 22 Aug 2026 को प्रकाशित)
पहला प्रकाशन
इस लेख का हवाला दें(DOI: 10.5281/zenodo.22176905)

यह लेख Zenodo पर संग्रहीत है। नीचे वह DOI है जो हमेशा नवीनतम संस्करण की ओर ले जाता है, और वह DOI भी जो आपके पढ़े जा रहे संस्करण से बँधा है।

Go Komura (2026). Windows Virtualization Internals (भाग 3) — सेकंडों में boot होने वाली VMs: WSL2, Windows Sandbox और containers इतने हल्के क्यों हैं. KomuraSoft LLC. https://doi.org/10.5281/zenodo.22176905 https://comcomponent.com/hi/blog/windows-virtualization-internals-wsl2-sandbox-containers/

DOI (नवीनतम संस्करण)
10.5281/zenodo.22176905
DOI (यह संस्करण)
10.5281/zenodo.22176906

Hyper-V Manager में Windows VM बनाएँ तो start होने में दसियों सेकंड लगते हैं और कई gigabytes memory exclusive control में लेता है। पर उसी PC पर wsl टाइप करने से कुछ सेकंड में Linux shell लौटता है, और Windows Sandbox भी कुछ सेकंड में disposable desktop खोलता है।1

दोनों उसी Windows hypervisor पर टिके हैं (भाग 1, “आपका Windows वास्तव में कहाँ चल रहा है?”)। भाग 2 में हमने देखा कि यह foundation kernel से मज़बूत isolation बना सकती है। तो एक भारी और दूसरा हल्का क्यों?

Series की अंतिम किस्त जो सवाल हल करती है वह केवल एक है।

Full VM भारी हैं — तो WSL2 और Windows Sandbox इतने हल्के क्यों हैं?

Target readers वे developers और operators हैं जो development और validation के लिए WSL2, Windows Sandbox और Windows containers उपयोग करते हैं, और उनका हल्कापन तथा constraints mechanism से समझना चाहते हैं। Prerequisites हैं Windows 10/11; Windows Sandbox section चलाने के लिए Pro, Enterprise या Education edition चाहिए (Home और Windows Server में यह feature नहीं)। Background knowledge भाग 1 की partition concept है। Difficulty intermediate है।

1. पहले निष्कर्ष

Lightweight VM isolation रेखा (dedicated kernel और hypervisor boundary) रखती है और “full guest OS copy” हल्की करती है। Sandbox host के Windows स्वयं share करता है; WSL2 guest को छोटे, purpose-built Linux से बदलता है; और दोनों मामलों में memory static reservation नहीं बल्कि host के साथ dynamic memory sharing है।

Full VM के भार का स्रोत isolation स्वयं नहीं बल्कि duplication / कॉपी है। Disk पर एक और OS image, RAM में एक और OS जितने pages, और हर start पर एक और full boot। Lightweight VM वह duplication / कॉपी दो policies से काटती हैं: “जो share करना सुरक्षित हो उसे share करें” (Sandbox) और “यदि share न कर सकें, तो छोटा बनाकर rebuild करें” (WSL2)।

Lightweight VM सहारा देने वाले तीन प्रकार के sharingFull VM जो OS image duplicate करता था उसे Sandbox share कर और WSL2 shrink कर काटता है; default static allocation वाली memory(Dynamic Memory exception)host के साथ dynamic memory sharing बनती है; start हल्के kernel और minimal setup से बदलता है; केवल isolation boundary रहती हैबदलताबदलताबदलताfull VM: duplication / कॉपीdisk: OS image copymemory या start?memory: static defaultstart: full bootshare(Sandbox)या shrink(WSL2)dynamic memory sharingहल्का kernel + न्यून.

चित्र 1: “वही hypervisor, फिर भी हल्का” के उत्तर का skeleton यह है कि उन्होंने duplication / कॉपी रोकी, isolation नहीं।

नीचे हम WSL2, Windows Sandbox और containers इसी क्रम में देखते हैं, और प्रत्येक किस प्रकार की duplication / कॉपी काटता है।

2. Full VM क्या ढो रहा है

तुलना की baseline के रूप में, traditional VM क्या ढोता है।

  • Independent OS image। Guest OS की हर file virtual disk के अंदर रखता है। Host पर वही Windows हो तो भी share नहीं करता।
  • मोटा memory allocation। Traditional VM का default host memory static size पर allocate करना है। Hyper-V Dynamic Memory जैसे mechanism configured limit के भीतर allocation बढ़ा-घटा सकते हैं, पर demand बदलने के adjustment के साधन सीमित हैं।2
  • General-purpose full boot। Firmware, boot loader, और services का set physical machine जैसी ही क्रम में start होता है।
Full VM के तीन भारFull VM independent OS image, default static memory allocation, और general-purpose full boot ढोता है, और वे disk, RAM तथा start time में cost बनते हैंfull VMindependent OS imagememory या boot?static memory defaultgeneral-purpose bootcopy के लिए extra diskunused RAM भी रखतादसियों सेकंड लगते

चित्र 2: Full VM की cost का breakdown isolation के लिए नहीं बल्कि generality और duplication / कॉपी के लिए चुकाया जाता है।

ये दोष नहीं; “guest में कुछ भी रख सकते हैं” generality की कीमत हैं। Windows Server के बगल पुराना Linux चलाने जैसे उपयोग के लिए वह generality मूल्य है। पर “development या validation के लिए host जैसा (या predefined) OS अभी चलाना चाहता हूँ” जैसे उपयोग के लिए अधिकांश व्यर्थ सामान है। Lightweight VM purpose संकीर्ण कर वह सामान उतार देती हैं।

3. WSL2 — purpose-built kernel वाला utility VM

3.1. Structure: managed VM और उसके अंदर distributions

WSL2 वह mechanism है जो lightweight utility VM के अंदर actual Linux kernel चलाता है।3 तीन बिंदु हैं।

  • Kernel actual है, पर specific product है। यह Stable शाखा से Microsoft द्वारा बनाया Linux kernel है, size और performance में पहले से WSL2 के लिए tune। Current standard, Microsoft Store–distributed WSL पर, kernel WSL package के साथ update होता है और wsl --update से apply होता है (पुराने in-box distribution पर Windows Update से आता था)।4 क्योंकि kernel actual है, system-call compatibility पूर्ण है, और Docker जैसे tools ज्यों के त्यों चलते हैं।
  • VM पर्दे के पीछे है। VM बनाना, start करना और रोकना WSL manage करता है; user बस shell खोलता है। VM-settings screen नहीं और boot की प्रतीक्षा महसूस नहीं।4
  • Distribution VM के अंदर container है। Ubuntu और Debian जैसे distributions एक managed VM के अंदर isolated container के रूप में चलते हैं। वे network namespace और kernel share करते हैं, जबकि PID, mount और user जैसे namespaces अलग हैं।3
WSL2 architectureHost Windows और lightweight utility VM hypervisor पर साथ बैठते हैं; Microsoft-built Linux kernel VM के अंदर चलता है; और हर distribution उसके अंदर isolated container के रूप में चलता हैInterop(commands, files, network)hypervisorhost Windowslightweight utility VMLinux kernel(Microsoft build; wsl --update)Ubuntu(container)Debian(container)

चित्र 3: “क्या WSL2 VM है?” का उत्तर “हाँ, पर managed, पर्दे-के-पीछे VM” है, और कई distributions install करने पर भी VM एक ही रहता है।

wsl टाइप करने के क्षण पीछे ऐसा दिखता है।

wsl command चलाने से कुछ सेकंड में shell लौटने तकwsl चलाने पर यदि utility VM नहीं चल रहा हो तो lightweight VM और Linux kernel start होते हैं; यदि पहले से चल रहा हो तो reuse; और distribution के container में shell लौटता हैनहींहाँwsl चलाएँutility VM पहले से चल रहा?lightweight VM और Linux kernel start(कुछ सेकंड)पहले से चलते VM का reusecontainer के अंदर shell लौटता

चित्र 4: प्रतीक्षा केवल minimal VM start है, और यहीं full boot का सामान उतारना दिखता है।

3.2. File I/O: किस पक्ष पर रखें इससे अलग चीज़ बन जाती है

WSL2 performance की बात में हमेशा आने वाला विषय यह है कि files कहाँ रखें।

  • Linux पक्ष की files (ext4 virtual disk) पर operations तेज़ हैं। क्योंकि Linux kernel अपने file system से सीधे बात करता है, और WSL1 की तुलना में tarball निकालने में 20 गुना तक, तथा git clone और npm install में 2–5 गुना तेजी के उदाहरण बताए गए हैं।4
  • Windows पक्ष की files (/mnt/c आदि) पर operations धीमे हो जाते हैं क्योंकि वे OS boundary पार करने वाली file sharing से जाते हैं। Cross-OS file-system performance वह एक बड़ा item है जहाँ WSL2 WSL1 से खराब है।4

इसलिए नियम है: “Project files उन tools वाले उसी OS पक्ष पर रखें जो उन पर काम करते हैं”।4 Linux build tools से सँभाला repository Linux पक्ष पर जाता है; Visual Studio में build किया solution Windows पक्ष पर।

WSL2 file I/O paths का काँटाLinux-पक्ष ext4 virtual disk तक पहुँच Linux kernel से सीधी इसलिए तेज़; Windows-पक्ष files तक पहुँच OS boundary पार sharing से इसलिए धीमीLinux पक्ष(home आदि)Windows पक्ष(/mnt/c आदि)WSL2 के अंदर file operationsfile किस पक्ष?ext4 virtual disk पर सीधा I/OOS boundary पार sharing सेतेज़(WSL1 से 20 गुना तक उदाहरण)धीमा होने लगताहल: file उपयोग करने वाले OS पर

चित्र 5: जो धीमा है वह path है, WSL2 नहीं, इसलिए files कहाँ रखें बदलने से performance समस्या अक्सर गायब हो जाती है।

3.3. Memory: बढ़ती है, सिकुड़ती है, पर सब कुछ हमेशा नहीं लौटाती

WSL2 का memory usage (Task Manager में vmmem process के रूप में दिखता है) static reservation नहीं; usage के साथ बढ़ता-सिकुड़ता है। Process ने जो memory छोड़ी वह pageReporting setting के अधीन automatically Windows को लौटाई जाती है, जो default से enable है।5 File cache के रूप में रखे pages पहले VM निकलने तक Windows को नहीं लौटते थे।4 Current WSL में, experimental .wslconfig setting autoMemoryReclaim (default dropCache) cache भी automatically reclaim करती है।5 जिन environments में यह setting disabled है, या पुराने WSL पर, लंबे session का cache VM निकलने तक रह सकता है और host memory पर दबाव डाल सकता है।

WSL2 memory कैसे बढ़ती, सिकुड़ती और लौटती हैWSL2 के अंदर demand बढ़ने से VM का memory usage बढ़ता है; process-released pages default-enable pageReporting से Windows को लौटते हैं; file cache default पर autoMemoryReclaim automatically reclaim करता है; पर disabled setting या पुराने WSL पर VM निकलने तक रहता है, और wsl --shutdown सब लौटाता हैprocess ने छोड़ा(pageReporting ऑन)file cache के रूप मेंWSL2 के अंदर memory demand बढ़तीvmmem usage बढ़तावह page छोड़ा गया?automatically Windows को लौटाautoMemoryReclaim automatically reclaim(default)disabled setting या पुराने WSL पर VM निकलने तकwsl --shutdown सब लौटाता

चित्र 6: जो “केवल बढ़ता गया” लगता है मुख्यतः cache है (और pageReporting बंद हो तो process-released pages भी), इसलिए leak तय करने से पहले लौटने का path जानें।

यदि स्पष्ट upper limit चाहिए, %UserProfile%\.wslconfig VM की समग्र memory, CPU संख्या और swap control कर सकता है।5

# %UserProfile%\.wslconfig
[wsl2]
memory=8GB
processors=4
swap=2GB

Setting बदलने के बाद प्रभावी होने के लिए wsl --shutdown से VM पुनः start करें। यह dynamic allocation — “upper limit setting है, actual usage demand का अनुसरण करता है” — अगले विषय Windows Sandbox में और आगे जाता है।

4. Windows Sandbox — host के Windows का reuse

4.1. Dynamic base image: 500 MB में पूर्ण Windows

Windows Sandbox hypervisor से isolated disposable Windows desktop है। बंद करें तो सब गायब; अगली बार clean state से कुछ सेकंड में start होता है।1

पहली पहेली disk है। पूर्ण Windows boot कर सकता है, फिर भी install के बाद Sandbox की base image केवल लगभग 500 MB है, और distribution time compressed 30 MB।2 रहस्य dynamic base image है।

  • अधिकांश OS files immutable हैं, इसलिए host की copies ज्यों की त्यों share हो सकती हैं।
  • थोड़ी संख्या में mutable files share नहीं हो सकतीं, इसलिए उनकी clean copy base image के अंदर रखी जाती है।
  • Start पर, host की immutable files और mutable files की local copies मिलाकर पूर्ण Windows image जोड़ी जाती है।2

अर्थात्, Sandbox Windows की copy न download करता है न store; वह host पर पहले से install Windows का reuse कर start होता है।

Dynamic base image कैसे जोड़ी जाती हैHost Windows से immutable OS files share होती हैं; केवल mutable files base image में clean copy के रूप में रखी जाती हैं; और दोनों मिलाकर Sandbox की पूर्ण Windows image बनती हैज्यों की त्यों shareclean copy रखेंhost का पूर्ण Windowsimmutable OS files(अधिकांश)mutable OS files(अल्पसंख्यक)Sandbox boot imageपूर्ण Windows के रूप में bootकेवल लगभग 500 MB store

चित्र 7: Disk duplication / कॉपी छोड़ने का रूप “दूसरा Windows रखना” नहीं बल्कि “host के Windows से जोड़ना” है।

वह combination निम्नलिखित lifecycle संभव बनाता है। जो त्यागा जाता है वह Sandbox के अंदर local state है। यदि .wsb configuration file में host से writable folder map किया हो, वहाँ के changes host पर रहते हैं।6

Windows Sandbox lifecycleStart करना कुछ सेकंड में clean Windows तैयार करता है; app validation या प्रयोग के बाद बंद करें तो Sandbox के अंदर सारी state त्यागी जाती है इसलिए अगली बार भी clean start; पर writable mapped host folders के changes रहते हैंअगला startstart(कुछ सेकंड)clean Windowsapp validation या प्रयोगबंद करेंSandbox के अंदर सारी state त्यागेंmapped writable folders के changes host पर रहते

चित्र 8: हर बार clean लौट सकना इसलिए है कि mutable भाग disposable copy है, और उसे त्यागना design का भाग है।

4.2. Direct map: वही ntdll.dll वही physical page है

न केवल disk बल्कि RAM भी share होती है। क्योंकि Sandbox host जैसी ही OS image चलाता है, “direct map” नामक technique उपयोग होती है ताकि OS binaries के लिए host जैसी ही physical memory pages उपयोग करे। जब ntdll.dll Sandbox के अंदर memory में load होता है, वह host पर पहले से load उसी binary के उसी physical page की ओर इंगित करता है। Host के secrets खतरे में डाले बिना, traditional VM से बहुत छोटा memory footprint पाता है।2

“एक ही physical page कई users में share करें” — वही विचार है जो memory series के भाग 3 में अनुसरण किए section objects से DLL sharing का (“Section Object और Copy-on-Write”)। वह mechanism processes के बीच sharing था; Sandbox इसे VM boundary पार करता है।

Direct map से physical-page sharingHost का app और Sandbox के अंदर app ntdll जैसी OS binaries के लिए एक ही physical memory page share करते हैं, जिससे memory usage घटता हैhost का apphost-पक्ष virtual addressSandbox के अंदर appSandbox-पक्ष virtual addressवही physical page(ntdll.dll जैसी OS binaries)OS जितनी RAM duplicate नहीं

चित्र 9: Direct map processes के बीच उपयोग हुआ page-sharing विचार है, VM boundary पार apply।

4.3. Dynamic memory sharing: VM से अधिक process जैसा

Traditional VM के static memory allocation के विरुद्ध, Sandbox जिस container technique पर बैठता है resource allocation host के सहयोग से dynamically तय करता है। यदि host memory कम पड़े, वह container से memory उसी तरह reclaim कर सकता है जैसे ordinary process से।2 Hyper-V Dynamic Memory भी VM का allocation configured limit के भीतर बढ़ा-घटाता है, पर Sandbox आगे जाता है: अंतर यह है कि वह host के memory management के उसी मैदान पर dynamic memory sharing करता है।

Host और Sandbox के बीच memory सहयोगTraditional VM का default सीमित adjustment साधन वाला static-size exclusive allocation है; Sandbox host memory pressure के उत्तर में reclaim target बनता है और ordinary process जैसे उसी मैदान पर dynamic memory sharing करता हैhost memory pressure बढ़ताकहाँ से reclaim करें?ordinary process के Working SetSandbox(container)का usageखाली memory सुरक्षितtraditional VM के adjustment साधन सीमित

चित्र 10: Dynamic memory sharing में Sandbox VM पक्ष के बजाय process पक्ष पर खड़ा है, और host संकट में memory पेश करता है।

भाग 1 में हमने कहा “VM का performance host पक्ष पर भी निर्भर करता है”, पर lightweight VM से एक कदम और: memory का allocation स्वयं host के साथ संयुक्त काम है। Sandbox “भारी virtualization product” के बजाय “एक और app” जैसा अनुभव इसलिए दे सकता है कि यह सहयोग है।

Business apps validate करने के लिए Sandbox उपयोग करने की ठोस प्रक्रिया पहले के “Windows Sandbox से app validation कैसे तेज़ करें” में है। यह लेख उसके नीचे का mechanism है।

5. Containers — isolation रेखा कहाँ खींचें

5.1. Process isolation और Hyper-V isolation

Windows containers के runtime पर दो isolation modes हैं। Image shared है; start करते समय flag से चुनते हैं।7

  • Process isolation: कई containers host के साथ kernel share करते हैं और file system, registry, network ports, process-ID space, Object Manager namespace आदि के per-namespace virtualization से अलग होते हैं। मूलतः Linux containers जैसा ही दृष्टिकोण है।
  • Hyper-V isolation: हर container अत्यधिक optimized VM के अंदर चलता है और प्रभाव में dedicated kernel रखता है। VM की उपस्थिति container और host के बीच hardware-level isolation डालती है।7

Namespace से isolation को registry virtualization लेख में देखी technique (“Windows पर Registry Redirection और Virtualization”) — “उसी API के नीचे अलग वास्तविकता दिखाना” — का पूर्ण संस्करण कहा जा सकता है।

Process isolation बनाम Hyper-V isolationProcess isolation में containers host के साथ kernel share करते और namespaces से अलग होते हैं; Hyper-V isolation में हर container optimized VM के अंदर dedicated kernel रखता हैHyper-V isolationprocess isolationdedicated kernel(optimized VM में)container Cdedicated kernel(optimized VM में)container Dhost से shared kernelcontainer Acontainer B

चित्र 11: एक ही container image पर भी, isolation रेखा kernel के ऊपर खींचें या kernel स्वयं बाँटें यह start करते समय चुनाव है।

5.2. किसे “security boundary” कह सकते हैं

इन दो modes का अंतर केवल performance कहानी नहीं। Microsoft process-isolated containers को मज़बूत security boundary नहीं मानता। Security boundary के रूप में (vulnerability response सहित) बनाए रखे containers hypervisor-isolated containers हैं, और adversarial multi-tenant scenario में Hyper-V isolation चुनना चाहिए।8

भाग 2 में देखा VBS भी “kernel टूट सकता है” मानकर hypervisor boundary पर पीछे हटने वाला design था। वही कसौटी containers की दुनिया में लागू होती है। Untrusted code सीमित करने वाली रेखा hypervisor boundary पर खींची जाती है, shared kernel के अंदर नहीं।

Code पर कितना भरोसा उससे isolation कैसे चुनेंयदि workload trusted हो तो process isolation से density और performance लें; यदि code untrusted या किसी और का हो तो Hyper-V isolated containers, networking बंद कठोर Windows Sandbox, या isolated VM जैसी hypervisor boundary चुनेंहाँनहीं / किसी और का codeउस code पर भरोसा कर सकते?process isolation(density और गति पहले)hypervisor boundary चुनेंHyper-V isolated containerकठोर Sandbox या isolated VM

चित्र 12: Isolation mode performance कहानी से पहले security कहानी है, और भरोसा तय करता है रेखा कहाँ खींचें।

प्रसंगवश, Hyper-V VM के अंदर Hyper-V isolated containers चलाना hypervisor दो परत गहरा कर देता है — nested virtualization। Conditions पूरी करने वाले environments पर एक level का nesting production में supported है (Windows 10 / Windows Server 2016 या बाद के host वाला Intel processor, या Windows 11 / Windows Server 2022 या बाद के host वाला AMD processor, और प्रत्येक मामले में compatible VM configuration version), और आगे की prerequisite बाहरी VM को virtualization extensions दिखाने वाली setting है (Hyper-V में Set-VMProcessor पर ExposeVirtualizationExtensions)। VM के अंदर WSL2 चलाना उसी तरह supported है।9 Cloud में development VM में WSL2 या Docker उपयोग कर सकते हैं या नहीं यह भी तय होता है कि वह VM size और configuration nested virtualization दिखाता है या नहीं।

Nested virtualization की structureCloud VM physical host के hypervisor पर बैठता है, और उसके अंदर दूसरा hypervisor(supported nesting एक level)WSL2 और Hyper-V isolated containers सहारा देने चलता हैphysical host का hypervisorcloud VM(dev machine)VM के अंदर hypervisor(nesting level 1)WSL2Hyper-V isolated containersupported nesting एक level

चित्र 13: Cloud VM के अंदर wsl चलने का कारण यह है कि nested virtualization आधिकारिक रूप से केवल एक level supported है।

5.3. Isolation और हल्केपन का spectrum

अब तक के पात्रों को एक axis पर लगाने पर ऐसा दिखता है।

Isolation मज़बूती और हल्केपन का spectrumProcess-isolated containers सबसे हल्के पर kernel share करते हैं; WSL2, Sandbox और Hyper-V isolated containers dedicated kernel वाली lightweight VM हैं(Sandbox share कर हल्का, WSL2 purpose-built kernel से); full VM सबसे भारी पर general-purposeहल्का ← → भारीprocess-isolated containers(shared kernel)WSL2, Sandbox, Hyper-V isolation(dedicated kernel वाली lightweight VM)full VM(कुछ भी चलाए; full copy रखे)boundary: namespacesboundary: hypervisorboundary: hypervisor + पूर्ण स्वतंत्रता

चित्र 14: Lightweight-VM समूह वह मध्य समाधान है जिसने hypervisor boundary रखी और duplication / कॉपी काटी; काटने का तरीका Sandbox के लिए sharing और WSL2 के लिए purpose-built kernel में बँटता है।

6. स्वयं देखें

हल्कापन और sharing सामने की machine पर देखे जा सकते हैं।

Start time और memory का उठना-गिरना (WSL2)। Task Manager खुला रखकर निम्नलिखित आज़माएँ।

# Felt startup time (the first run starts the VM; the second and later are faster still)
Measure-Command { wsl -e true }

# Memory usage of the WSL2 VM (vmmem / Virtual Machine Memory)
Get-Process -Name vmmem* | Select-Object Name, WorkingSet64

# End the whole VM and watch the memory come back
wsl --shutdown

यदि WSL2 के अंदर बड़ा build या file operation करें, vmmem बढ़ता है, और wsl --shutdown से एक साथ लौटते देखा जा सकता है।

Files कहाँ रखें से गति अंतर (WSL2)। वही repository Linux पक्ष (~/repo) और Windows पक्ष (/mnt/c/repo) पर रखकर git status या निकालने का समय तुलना करें, तो section 3.2 का अंतर संख्याओं में दिखता है।

Direct map की पृष्ठभूमि (Sandbox)। Sandbox start करें और host पर Task Manager में memory की वृद्धि देखें। वृद्धि “दूसरे Windows” की कल्पना से बहुत छोटी रहना sharing का प्रभाव अपनी कहानी कहता है। Host-पक्ष memory breakdown और गहराई से देखने के लिए, RAMMap और VMMap उपयोग cover करने वाला Sysinternals tools वाला लेख (“Process Explorer / Handle / VMMap व्यवहार में”) उपयोगी है। पर ये host-पक्ष processes और physical memory के classification देखने के tools हैं; guest के साथ sharing स्वयं सीधे नहीं देखते।

Container isolation mode (Docker / Windows containers)। यदि Windows containers environment हो, वही image docker run --isolation=process और --isolation=hyperv से start कर start time और Task Manager में दिखना तुलना करें (process isolation में container के अंदर processes host की process list में आते हैं), तो isolation रेखा कहाँ बैठती है महसूस कर सकते हैं।7 पर process isolation यह prerequisite रखता है कि host और image versions मेल खाएँ, और client OS पर development तथा testing उपयोग तक सीमित है। Hyper-V isolation व्यापक combination अनुमति देता है, इसलिए तुलना compatible जोड़ी पर करें।10

7. व्यवहार में बचने वाली तीन गलत पढ़तें

7.1. “WSL2 धीमा है”

जो धीमा है वह WSL2 नहीं बल्कि OS boundary पार करने वाला file-I/O path है। कई मामले हैं जहाँ project Linux पक्ष पर ले जाना अनुभव अलग चीज़ बना देता है।4 इसके विपरीत, Windows tools छूएँगे files Linux पक्ष पर रखना उसी कारण समान रूप से प्रतिकूल है। “उपयोग करने वाले पक्ष वाले उसी OS पर रखें” से आँकें।

7.2. “vmmem बड़ा होना memory leak है”

WSL2 memory demand के साथ बढ़ती-सिकुड़ती है, और छोड़े भाग लौटते हैं। Current WSL पर file cache भी autoMemoryReclaim (default dropCache) से automatically reclaim होता है, इसलिए “बड़ा रह गया” अक्सर समय के साथ हल होता है।5 यदि फिर भी रहे, confirm करें कि autoMemoryReclaim disabled सेट नहीं, और छोड़े भाग लौटाने वाला pageReporting बंद नहीं (या पुराने WSL पर नहीं), फिर या तो .wslconfig में memory से upper limit स्पष्ट करें या session सीमा पर wsl --shutdown से सब लौटाएँ। Leak और non-leak अलग करने का सोचने का तरीका memory series की introductory किस्त, “Windows का "memory usage" वास्तव में क्या है?” जैसा ही है।

7.3. “Container में है, इसलिए सुरक्षित है”

Process-isolated container kernel share करता है, और Microsoft की कसौटी पर security boundary नहीं।8 Untrusted code या sample चलाने के लिए Hyper-V isolated containers, Windows Sandbox, या dedicated VM जैसी hypervisor boundary वाला isolation चुनें। पर hypervisor boundary कंबल छूट नहीं। Windows Sandbox की default setting में network connectivity enable है, और untrusted app को internal network दिखा सकती है।1 यदि sample चलाने उपयोग करें, .wsb configuration file में network और clipboard redirection disable कर isolation मज़बूत करें, या isolated network पर dedicated VM उपयोग करें।

8. सारांश — series बंद करना

भाग 3 के बिंदु।

  • Lightweight VM का हल्कापन “duplication / कॉपी रोकने” का परिणाम है, “isolation कमज़ोर करने” का नहीं।
  • WSL2 managed lightweight utility VM में actual Linux kernel चलाता है, और distributions उस VM के अंदर containers के रूप में अलग होते हैं।3 Performance नियम files उपयोग करने वाले OS पर रखना है, और memory dynamically बढ़ती-सिकुड़ती है, upper limit .wslconfig में control योग्य।45
  • Windows Sandbox dynamic base image से host की immutable OS files share करता है और direct map से targeted OS binaries के physical pages भी share करता है, इसलिए पूर्ण Windows की copy नहीं रखता।2 Mutable files के लिए अभी भी लगभग 500 MB चाहिए, साथ उसके अंदर चलाए app की memory।
  • Container isolation mode start करते समय चुना जाता है, और security boundary कह सकने वाला पक्ष Hyper-V isolation है।78

और यदि पूरी series एक पन्ने पर रखें, तो ऐसा दिखता है।

  • भाग 1: Windows के नीचे hypervisor layer है, और host OS स्वयं root partition के रूप में चलता है। CPU और memory (SLAT) की मध्यस्थता यह layer सीधे करती है, और synthetic devices का I/O VMBus के पार root partition (VSP) मध्यस्थता करता है।
  • भाग 2: वह layer न केवल VMs एक-दूसरे से अलग करने, बल्कि उसी OS के अंदर kernel से मज़बूत boundary (VTL) खींचने के लिए भी उपयोग होती है। Windows 11 की default security इसी पर बनी है।
  • भाग 3: उसी layer पर, duplication / कॉपी काटना “सेकंडों में start होने वाली virtual machine” संभव बनाता है। Isolation रेखा रखी गई, और यह रोज़ का tool बन गया है।
पूरी series का एक चित्रHardware पर सीधा hypervisor भाग 1 है; host Windows के अंदर VTL0 और VTL1 का विभाजन भाग 2 है; उसी layer पर WSL2, Sandbox और Hyper-V isolation का हल्कापन भाग 3 है; process-isolated containers host kernel share करते हैं; Sandbox share कर हल्का, WSL2 purpose-built kernel सेhardwarehypervisor(भाग 1)host Windows(VTL isolation भाग 2)WSL2, Sandbox, Hyper-V isolation(भाग 3)process-isolated containers(shared kernel)Sandbox share करता; WSL2 purpose-built kernel से हल्का

चित्र 15: तीन किस्तें रखें तो current Windows के नीचे की ज़मीन का समग्र चित्र मिलता है।

Virtualization अब server-room technique नहीं, न केवल VM खड़े करने वालों की technique। आपके Windows के नीचे की ज़मीन पर, यह चुपचाप security और development experience दोनों सहारा देती है — हम अभी वहीं हैं।

संबंधित लेख

संबंधित परामर्श क्षेत्र

KomuraSoft LLC WSL2 और containers उपयोग करने वाले development environments स्थापित करना, Windows app validation environments design करना, और virtualized environments में performance तथा compatibility check सँभालता है।

संदर्भ लिंक

  1. Microsoft Learn, Windows Sandbox. Windows Sandbox के disposable VM के रूप में कुछ सेकंड में start होकर बंद करने पर सब त्यागने पर; Microsoft hypervisor से अलग kernel चलाकर host से अलग करने पर; और network connectivity के default से enable तथा configuration file में disable किए जा सकने पर। ↩ ↩2 ↩3

  2. Microsoft Learn, Windows Sandbox architecture. Dynamic base image के host की immutable OS files के share और mutable files की clean copy से पूर्ण Windows image जोड़ने पर (install के बाद लगभग 500 MB); traditional VM के static memory allocation के विरुद्ध container के host सहयोग से dynamic allocation पर, जिससे host memory reclaim कर सकता है; और direct map के ntdll.dll जैसी OS binaries को host जैसे ही physical pages उपयोग कराने पर। ↩ ↩2 ↩3 ↩4 ↩5 ↩6

  3. Microsoft Learn, What is the Windows Subsystem for Linux?. WSL2 के lightweight utility VM के अंदर Linux kernel चलाने पर; हर distribution के isolated container के रूप में चलने, network namespace और kernel share करते हुए PID, mount और user जैसे namespaces अलग करने पर। ↩ ↩2 ↩3

  4. Microsoft Learn, Comparing WSL Versions. WSL2 kernel के Microsoft द्वारा Stable शाखा से बनाए जाने पर; Store-distributed WSL के OS image से अलग package के रूप में update पाकर wsl --update से apply करने पर (पुराने in-box distribution पर Windows Update से); tarball निकालने में 20 गुना तक जैसे performance उदाहरणों पर; cross-OS file-system performance में WSL1 तेज़ होने पर, इसलिए files उपयोग करने वाले OS पर रखने पर; और memory के छोड़े भाग लौटाते बढ़ने-सिकुड़ने, जबकि cache VM निकलने तक न लौट सकने पर। ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8

  5. Microsoft Learn, Advanced settings configuration in WSL. .wslconfig के [wsl2] खंड में WSL2 VM की समग्र memory ceiling, processor संख्या, swap और pageReporting (default से enable; unused memory पता कर लौटाने का ज़िम्मेदार) सेट कर सकने पर; और experimental setting autoMemoryReclaim के default dropCache होने पर, जिससे cache memory automatically reclaim होती है। ↩ ↩2 ↩3 ↩4 ↩5

  6. Microsoft Learn, Use and configure Windows Sandbox. .wsb configuration file में MappedFolders के host folders read-only या writable share कर सकने पर। ↩

  7. Microsoft Learn, Isolation Modes. Windows containers के process isolation के host के साथ kernel share कर namespaces से अलग होने पर; Hyper-V isolation के optimized VM के अंदर प्रभाव में dedicated kernel रखने पर; और start करते समय flag से एक ही image किसी भी mode में चला सकने पर। ↩ ↩2 ↩3 ↩4

  8. Microsoft Learn, Secure Windows containers. केवल hypervisor-isolated containers के security boundary माने जाने पर; process-isolated containers के मज़बूत security boundary न माने जाने पर; और adversarial multi-tenant scenario में hypervisor isolation चुनने पर। ↩ ↩2 ↩3

  9. Microsoft Learn, What is Nested Virtualization?. Hyper-V VM के अंदर Hyper-V isolated containers चलाने (एक level nesting) के production में supported होने पर; requirements Intel processor के साथ Windows Server 2016 / Windows 10 या बाद, या AMD processor के साथ Windows Server 2022 / Windows 11 या बाद, तथा प्रत्येक मामले में compatible VM configuration version होने पर; बाहरी VM को virtualization extensions दिखाने (ExposeVirtualizationExtensions) prerequisite होने पर; और Hyper-V VM के अंदर WSL2 चलाने के supported होने पर। ↩

  10. Microsoft Learn, Windows container version compatibility. Process isolation के host और container image versions मेल मानने पर; Hyper-V isolation के host से अलग OS version की image चला सकने पर; और client OS पर process isolation के development तथा testing उपयोग तक सीमित होने पर। ↩

निकटवर्ती विषयों में गहराई से जाने के लिए समान टैग वाले नवीनतम लेख।

ये पृष्ठ विषय को सेवाओं और निर्णयों के व्यापक संदर्भ में रखते हैं।

यह लेख निम्नलिखित सेवाओं से सीधे जुड़ा है।

अक्सर पूछे जाने वाले प्रश्न

इस लेख के विषय पर परामर्श में अक्सर पूछे जाने वाले प्रश्न।

क्या WSL2 एक VM है?
हाँ। WSL2 Microsoft द्वारा बनाए गए actual Linux kernel को lightweight utility VM के अंदर चलाता है। VM को WSL पर्दे के पीछे manage करता है, इसलिए design user को VM settings या boot की प्रतीक्षा सोचने नहीं देता। हर Linux distribution इस managed VM के अंदर isolated container के रूप में चलता है।
WSL2 में /mnt/c के अंतर्गत file operations धीमे क्यों हैं?
क्योंकि WSL2 Linux kernel से Windows-पक्ष file system तक पहुँच OS boundary पार करने वाली file sharing से जाती है। Linux file system (ext4 virtual disk) पर operations तेज़ हैं, इसलिए नियम है project files उन tools वाले उसी OS पक्ष पर रखें जो उन पर काम करते हैं।
क्या vmmem process का बड़ा memory usage leak है?
अधिकांश मामलों में leak नहीं। WSL2 memory usage के साथ बढ़ती-सिकुड़ती है, और process ने जो memory छोड़ी वह pageReporting setting के अधीन Windows को लौटाई जाती है, जो default से enable है। File-cache pages भी current WSL .wslconfig में autoMemoryReclaim से automatically reclaim करता है (default dropCache है)। जिन environments में ये settings disable हैं, या पुराने WSL पर, memory VM निकलने तक रह सकती है; उस स्थिति में memory setting से upper limit सेट करें, या wsl --shutdown से लौटाएँ।
Windows Sandbox कुछ सौ megabytes disk से पूर्ण Windows कैसे boot कर सकता है?
Dynamic base image नामक mechanism से। यह host पर पहले से install Windows से immutable OS files share करता है, और केवल थोड़ी संख्या में mutable files की clean copy रखता है। इससे Windows की full copy store किए बिना पूर्ण, bootable image जोड़ी जा सकती है।
क्या containers VM से अधिक सुरक्षित हैं?
यह isolation mode पर निर्भर करता है। Process-isolated containers host के साथ kernel share करते हैं, और Microsoft इसे मज़बूत security boundary नहीं मानता। Adversarial code सँभालते समय Hyper-V isolation चाहिए, जो हर container को अपना dedicated kernel देता है।

लेखक की प्रोफ़ाइल

लेख के लेखक का परिचय पृष्ठ।

Go Komura

KomuraSoft LLC के प्रतिनिधि

Windows सॉफ़्टवेयर विकास, तकनीकी परामर्श और बग जाँच में विशेषज्ञ, विशेष रूप से मौजूदा सिस्टम वाली परियोजनाओं और पुनरुत्पादन में कठिन बग में।

सार्वजनिक लिंक

ब्लॉग पर लौटें