क्या? फाइलें डिलीट करने के बावजूद डिस्क स्पेस में बदलाव नहीं

क्या? फाइलें डिलीट करने के बावजूद डिस्क स्पेस में कोई कमी नहीं – WSL में छुपा अनसुलझा रहस्य

यदि आप विकास कार्य के दौरान WSL (Windows Subsystem for Linux) का उपयोग करते हैं, तो आपने ऐसा अनुभव ज़रूर किया होगा कि विशाल फाइलों को डिलीट करने के बाद भी विंडोज़ के डिस्क स्पेस में कोई खास बदलाव नहीं दिखाई देता। पहली नजर में यह घटना उलझन पैदा कर सकती है, लेकिन इसके पीछे WSL की आंतरिक कार्यप्रणाली से जुड़ा गहरा तकनीकी कारण छुपा है।

इस लेख में, हम इस “गायब न होने वाले स्पेस” के रहस्य पर प्रकाश डालेंगे, साथ ही इसके समाधान के विभिन्न उपायों का भी विस्तृत विवरण देंगे। विशेष रूप से, हमने एक ऐसा उपयोगी स्क्रिप्ट विकसित किया है, जो इस प्रक्रिया को स्वचालित कर देता है – जिससे तकनीकी अनुभव की कमी वाले उपयोगकर्ताओं के लिए भी समस्या का समाधान सरल हो जाता है।

अतिरिक्त जानकारी:
WSL का यह व्यवहार सिर्फ सिस्टम की आंतरिक डिस्क मैनेजमेंट की वजह से होता है। कई बार यह बात न समझ पाने पर उपयोगकर्ता परेशान हो जाते हैं, जबकि वास्तव में यह एक संरचनात्मक विशेषता है। आगे के हिस्सों में हम विस्तार से बताएँगे कि कैसे WSL के VHDX (Virtual Hard Disk) फ़ाइल के व्यवहार से यह समस्या उत्पन्न होती है और इसे किस प्रकार ठीक किया जा सकता है।

विषयसूची

WSL में फाइल डिलीट करने पर भी डिस्क स्पेस क्यों नहीं बढ़ता?

WSL2 अपने Linux वातावरण को प्रबंधित करने के लिए एक वर्चुअल डिस्क फ़ाइल (VHDX) का उपयोग करता है। यह फ़ाइल एक बार बढ़ जाने पर अपने आप सिकुड़ती नहीं है। यानी, भले ही आप Linux के अंदर फाइलें डिलीट कर दें, VHDX फ़ाइल का आकार अपरिवर्तित रहता है – जिससे Windows होस्ट सिस्टम पर उपलब्ध डिस्क स्पेस में तुरंत कोई बदलाव नहीं दिखाई देता।

वर्चुअल डिस्क की विशेषताएँ

WSL2 की वर्चुअल डिस्क (VHDX) निम्नलिखित प्रमुख गुणों से युक्त है:

  • बढ़ने पर स्थिरता:
    एक बार VHDX फ़ाइल का आकार बढ़ जाने के बाद, यह स्वतः सिकुड़ नहीं पाती।
  • आंतरिक vs. बाहरी प्रबंधन:
    Linux (WSL के अंदर) में फाइल डिलीट करने पर आंतरिक स्तर पर स्पेस मुक्त होता है, लेकिन Windows होस्ट सिस्टम इस बदलाव को नहीं पहचान पाता।

दोहरी डिस्क प्रबंधन प्रणाली

प्रबंधन स्तर विशेषताएँ
WSL (Linux) के अंदर – फाइल डिलीट होने पर आंतरिक खाली स्पेस बढ़ता है।
– Linux सिस्टम के अनुसार स्पेस मुक्त हो जाता है।
Windows Host सिस्टम – VHDX फ़ाइल का आकार स्थिर रहता है।
– अंदर से फाइल हटाने पर भी डिस्क स्पेस में तुरंत कोई कमी नहीं आती।

गतिशील संकुचन की सीमाएँ

WSL2 की वर्चुअल डिस्क में निम्नलिखित सीमाएँ हैं, जिनके कारण स्वतः स्पेस रिकवरी संभव नहीं हो पाती:

  • स्वत: अनउपयोग क्षेत्र मुक्ति की कमी:
    VHDX फ़ाइल में बचे हुए अनउपयोगी स्पेस को अपने आप वापस सिस्टम में शामिल करने का फीचर नहीं है।
  • स्वचालित डिस्क सिकुचन का अभाव:
    कोई भी इन-बिल्ट तंत्र VHDX फ़ाइल को स्वचालित रूप से सिकुड़ने के लिए उपलब्ध नहीं है।
  • मैन्युअल ऑप्टिमाइज़ेशन की आवश्यकता:
    डिस्क स्पेस को वास्तविक रूप में मुक्त कराने के लिए उपयोगकर्ता को मैन्युअल रूप से ऑप्टिमाइज़ेशन प्रक्रिया अपनानी पड़ती है।

इन सभी कारणों के चलते, WSL के अंदर फाइल डिलीट करने पर भी Windows के डिस्क स्पेस उपयोग में तुरंत परिवर्तन नहीं आता।

टिप:
यह समझना महत्वपूर्ण है कि यह व्यवहार एक संरचनात्मक विशेषता है, न कि किसी बग या त्रुटि का परिणाम। अगर आपको डिस्क स्पेस में वास्तविक कमी दिखानी है, तो मैन्युअल ऑप्टिमाइज़ेशन या स्वचालित स्क्रिप्ट का सहारा लेना आवश्यक होता है।

पिछले अनुभव से मिली सीख

पहले हमने इस समस्या के समाधान के लिए एक विस्तृत गाइड प्रकाशित की थी। हालांकि, एक दिलचस्प घटना ने हमें एक महत्वपूर्ण सबक सिखाया। चाहे हम कितनी भी विस्तार से प्रक्रिया लिखें, केवल तकनीकी विवरण से सभी उपयोगकर्ता समझ नहीं पाते।
उदाहरण के लिए, एक परिचित ने कहा, “लेख पढ़ने के बाद भी मुझे पूरी तरह से समझ नहीं आया,” जिसके परिणामस्वरूप हमें व्यक्तिगत सहायता प्रदान करनी पड़ी। इस अनुभव ने हमें यह एहसास कराया कि तकनीकी लेखन में केवल विवरण देना ही पर्याप्त नहीं होता—उपयोगकर्ता को सरल और स्पष्ट निर्देशों की भी आवश्यकता होती है।

अधिक जानकारी के लिए:
WSL डिस्क पार्ट गाइड

इस अनुभव से प्रेरित होकर हमने एक ऐसा ऑटोमेटेड स्क्रिप्ट विकसित किया, जिससे तकनीकी ज्ञान की कमी वाले लोग भी आसानी से WSL के डिस्क स्पेस को अनुकूलित कर सकें। अब हम आपको इस स्क्रिप्ट का परिचय देते हैं।

स्क्रिप्ट का परिचय और कार्यप्रणाली

इस स्क्रिप्ट का उद्देश्य WSL की वर्चुअल डिस्क (ext4.vhdx) को स्वचालित रूप से पहचानना और अनावश्यक स्पेस को मुक्त करना है। इससे उपयोगकर्ता को जटिल मैन्युअल ऑपरेशन के बिना आसानी से डिस्क स्पेस को अनुकूलित करने में मदद मिलती है।

नोट:
स्क्रिप्ट चलाने से पहले, सुनिश्चित करें कि WSL पूरी तरह से बंद हो चुका है (उदाहरण: wsl --shutdown) और PowerShell एडमिनिस्ट्रेटर अधिकारों के साथ चल रहा हो। साथ ही, किसी भी अप्रत्याशित समस्या से बचने के लिए सिस्टम का बैकअप लेना न भूलें।

स्क्रिप्ट के मुख्य चरण

  • VHD फ़ाइल की पहचान:
    सबसे पहले, स्क्रिप्ट WSL की वर्चुअल डिस्क फ़ाइल (जैसे कि ext4.vhdx) को स्वचालित रूप से ढूँढती है। आम तौर पर, Ubuntu पैकेज के लिए यह फ़ाइल लोकल एप्लिकेशन डेटा फ़ोल्डर में स्थित होती है।
  • सुरक्षा की पुष्टि:
    यदि वर्चुअल डिस्क पहले से ही किसी अन्य प्रक्रिया द्वारा उपयोग में है, तो इसे पहले डिस्कनेक्ट (detach) कर दिया जाता है। इससे आगे की प्रक्रिया में बाधा नहीं आती।
  • कॉम्पैक्टिंग प्रक्रिया:
    डिस्क को रीड-ओनली मोड में अटैच करके, diskpart कमांड के माध्यम से कॉम्पैक्टिंग की जाती है। इससे अनावश्यक रूप से आरक्षित स्पेस मुक्त हो जाता है और वास्तविक डिस्क उपयोग में कमी आती है।
  • एरर हैंडलिंग:
    प्रक्रिया के दौरान यदि कोई त्रुटि होती है, तो स्पष्ट एरर संदेश प्रदर्शित किया जाता है और प्रक्रिया को सुरक्षित रूप से बंद कर दिया जाता है। साथ ही, अस्थायी फाइलें भी हटा दी जाती हैं।

स्क्रिप्ट के प्रकार

इस समाधान के दो संस्करण उपलब्ध हैं:

  1. PowerShell स्क्रिप्ट (.ps1):
    • यह स्क्रिप्ट वर्चुअल डिस्क की पहचान से लेकर कॉम्पैक्टिंग प्रक्रिया तक को स्वचालित करती है।
    • इसे PowerShell में एडमिनिस्ट्रेटर मोड में चलाना होता है।
  2. बैच स्क्रिप्ट (.bat):
    • यदि आपके पास WSL के विभिन्न इंस्टॉलेशन्स हैं या आपने इसे कस्टम लोकेशन में इंस्टॉल किया है, तो इस स्क्रिप्ट का उपयोग करना सुविधाजनक हो सकता है।
    • इसमें VHDX फ़ाइल के पथ को सीधे निर्दिष्ट करने की सुविधा है, जिससे प्रक्रिया और भी सरल हो जाती है।

सुझाव:
अपने पर्यावरण और आवश्यकताओं के अनुसार उपयुक्त स्क्रिप्ट का चयन करें। स्क्रिप्ट को चलाने से पहले सभी आवश्यक शर्तों की जाँच अवश्य करें।

वास्तविक स्क्रिप्ट और इसका कार्यान्वयन

यह स्क्रिप्ट WSL की वर्चुअल डिस्क (ext4.vhdx) को स्वचालित रूप से पहचानकर अनावश्यक स्पेस को मुक्त करने की प्रक्रिया को सरल बनाती है। स्क्रिप्ट चलाने से पहले निम्नलिखित पूर्व-शर्तों का ध्यान रखें:

  • WSL को बंद करें:
    सुनिश्चित करें कि WSL पूरी तरह से बंद हो चुका है। (उदाहरण: wsl --shutdown)
  • एडमिनिस्ट्रेटर मोड:
    PowerShell या कमांड प्रॉम्प्ट को एडमिनिस्ट्रेटर अधिकारों के साथ चलाएं।

1. PowerShell स्क्रिप्ट (.ps1) के लिए निर्देश

स्क्रिप्ट को सेव और चलाने की प्रक्रिया:

#----------------------------------------------
# Script to automatically detect the WSL VHD file and, if it is already attached,
# detach it before executing diskpart to compact it.
#----------------------------------------------
# Please stop WSL beforehand (e.g., wsl --shutdown)
# Run PowerShell with administrative privileges

# Function to create and execute a temporary script for diskpart
function Invoke-DiskPartScript {
    param (
        [Parameter(Mandatory)]
        [string]$ScriptContent
    )
    # Create a random temporary filename
    $tempFile = Join-Path $env:TEMP ("dp_" + [System.IO.Path]::GetRandomFileName() + ".txt")
    try {
        # Write the temporary file using ASCII encoding
        $ScriptContent | Out-File -FilePath $tempFile -Encoding ascii
        Write-Host "Executing diskpart: $tempFile" -ForegroundColor Yellow
        # Capture and display the output from diskpart
        Start-Process -FilePath "diskpart.exe" -ArgumentList "/s `"$tempFile`"" -NoNewWindow -Wait
        Write-Host $result
    }
    finally {
        if (Test-Path $tempFile) {
            Remove-Item $tempFile -Force
        }
    }
}

try {
    # Recursively search for the ext4.vhdx path (for the Ubuntu package)
    $wslVhd = Get-ChildItem "$env:LOCALAPPDATA\Packages\*Ubuntu*\LocalState\ext4.vhdx" -Recurse -ErrorAction Stop | Select-Object -First 1

    if (-not $wslVhd) {
        throw "WSL VHD file not found. Please ensure the Ubuntu package is installed."
    }

    Write-Host "Found VHD file: $($wslVhd.FullName)" -ForegroundColor Green

    # ★ Since the VHD might already be attached, first attempt to detach it ★
    $detachScript = @"
select vdisk file="$($wslVhd.FullName)"
detach vdisk
"@

    Write-Host "Detaching the possibly attached VHD..." -ForegroundColor Yellow
    Invoke-DiskPartScript -ScriptContent $detachScript

    # Main process: attach (read-only) → compact → detach
    $compactScript = @"
select vdisk file="$($wslVhd.FullName)"
attach vdisk readonly
compact vdisk
detach vdisk
"@

    Write-Host "Executing compact operation with diskpart..." -ForegroundColor Yellow
    Invoke-DiskPartScript -ScriptContent $compactScript

    Write-Host "Operation completed successfully." -ForegroundColor Green

} catch {
    Write-Error "An error occurred: $_"
    exit 1
}

    WSL VHD Compact Utility – उपयोग निर्देश

    आवश्यक शर्तें

    1. WSL को बंद करें: स्क्रिप्ट चलाने से पहले, WSL को बंद करें: wsl --shutdown
    2. एडमिनिस्ट्रेटर अधिकार: सुनिश्चित करें कि आप PowerShell को एडमिनिस्ट्रेटर के रूप में चलाएं।

    उपयोग निर्देश

    विधि 1: अनुशंसित तरीका (Windows अपडेट के साथ संगत)

    एडमिनिस्ट्रेटर मोड में PowerShell खोलें: Windows PowerShell आइकन पर राइट-क्लिक करें और “Run as administrator” चुनें।

    स्क्रिप्ट के फ़ोल्डर में जाएँ:

    cd "C:\Path\To\Your\Script\Directory"

    एक्जीक्यूशन पॉलिसी सेट करें (हाल के Windows अपडेट के बाद आवश्यक):

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

    💡 यह कमांड स्थानीय रूप से बनाई गई स्क्रिप्ट को चलाने की अनुमति देता है और सुनिश्चित करता है कि रिमोट स्क्रिप्ट साइन हों। यह सेटिंग PowerShell सेशन में बनी रहती है और नियमित उपयोग के लिए अनुशंसित है।

    स्क्रिप्ट को रन करें:

    .\CompactWSLVHD.ps1

    विधि 2: केवल सेशन के लिए बाईपास (वैकल्पिक)

    यदि आप स्थायी रूप से एक्जीक्यूशन पॉलिसी बदलना नहीं चाहते:

    एडमिनिस्ट्रेटर मोड में PowerShell खोलें: Windows PowerShell आइकन पर राइट-क्लिक करें और “Run as administrator” चुनें।

    स्क्रिप्ट के फ़ोल्डर में जाएँ:

    cd "C:\Path\To\Your\Script\Directory"

    पॉवरशेल में स्क्रिप्ट चलाने की अनुमति अस्थायी रूप से दें (PowerShell 7 के अनुकूल):

    Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

    💡 यह कमांड केवल वर्तमान पॉवरशेल सेशन के लिए बिना हस्ताक्षर वाली स्क्रिप्ट की अनुमति देता है। RemoteSigned की बजाय Bypass का उपयोग करने से PowerShell 7 और उससे ऊपर के संस्करणों में होने वाली समस्याएं नहीं होती हैं।

    स्क्रिप्ट को रन करें:

    .\CompactWSLVHD.ps1

    समस्या निवारण

    समस्या: Windows अपडेट के बाद स्क्रिप्ट फेल हो रही है (जनवरी 2025)

    लक्षण:

    • “UnexpectedToken” पार्सिंग एरर
    • “Expression or statement token cannot be used” एरर
    • “Missing terminator” एरर

    मूल कारण: हाल के Windows अपडेट (देर से 2024/शुरुआती 2025) ने PowerShell के कैरेक्टर एन्कोडिंग हैंडलिंग और एक्जीक्यूशन पॉलिसी एन्फोर्समेंट को संशोधित किया है, जिससे पहले काम करने वाली स्क्रिप्ट फेल हो रही हैं।

    समाधान:

    समाधान 1: एक्जीक्यूशन पॉलिसी ठीक करें

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
    .\CompactWSLVHD.ps1

    समाधान 2: स्क्रिप्ट फ़ाइल को दोबारा सेव करें

    1. CompactWSLVHD.ps1 को टेक्स्ट एडिटर (Notepad, VS Code, आदि) में खोलें
    2. फ़ाइल को UTF-8 with BOM एन्कोडिंग के साथ सेव करें
    3. स्क्रिप्ट को दोबारा चलाएं

    समाधान 3: डायरेक्ट कंटेंट एक्जीक्यूशन

    Get-Content ".\CompactWSLVHD.ps1" -Encoding UTF8 | Invoke-Expression

    समस्या: “Execution of scripts is disabled on this system”

    यह एरर इंडिकेट करता है कि PowerShell एक्जीक्यूशन पॉलिसी स्क्रिप्ट एक्जीक्यूशन को रोक रही है।

    वर्तमान पॉलिसी चेक करें:

    Get-ExecutionPolicy

    उपयुक्त समाधान लागू करें:

    • स्थायी फिक्स के लिए: विधि 1 का उपयोग करें
    • अस्थायी फिक्स के लिए: विधि 2 का उपयोग करें

    समस्या: PowerShell संस्करण संगतता

    कुछ नए PowerShell संस्करणों (PowerShell 7+) में अलग डिफ़ॉल्ट व्यवहार हो सकता है:

    • PowerShell 5.1 (Windows PowerShell): ऊपर की दोनों विधियों का उपयोग करें
    • PowerShell 7+: Bypass विधि (विधि 2) अक्सर अधिक विश्वसनीय है

    महत्वपूर्ण नोट्स

    ⚠️ हाल के Windows अपडेट का प्रभाव: यदि आपने पहले इस स्क्रिप्ट का बिना किसी समस्या के उपयोग किया था लेकिन Windows अपडेट के बाद अचानक काम करना बंद हो गया, तो यह संभावित रूप से PowerShell की एक्जीक्यूशन पॉलिसी एन्फोर्समेंट और कैरेक्टर एन्कोडिंग हैंडलिंग में बदलाव के कारण है।

    🔒 सुरक्षा: एक्जीक्यूशन पॉलिसी एक सुरक्षा सीमा नहीं है बल्कि दुर्भावनापूर्ण स्क्रिप्ट के आकस्मिक एक्जीक्यूशन को रोकने के लिए एक सुरक्षा सुविधा है। ऊपर की दोनों विधियां विश्वसनीय स्क्रिप्ट के साथ उपयोग करने पर सुरक्षित हैं।

    📝 फ़ाइल एन्कोडिंग: यदि आप स्क्रिप्ट को संशोधित कर रहे हैं, तो इसे हमेशा UTF-8 BOM एन्कोडिंग के साथ सेव करें ताकि सभी Windows संस्करणों के साथ संगतता सुनिश्चित हो।

    ये बदलाव क्यों आवश्यक थे

    Microsoft ने चल रहे सुरक्षा सुधार के हिस्से के रूप में हाल के Windows अपडेट में PowerShell की एक्जीक्यूशन पॉलिसी एन्फोर्समेंट और कैरेक्टर एन्कोडिंग पार्सिंग को कड़ा किया है। ये बदलाव विशेष रूप से प्रभावित करते हैं:

    1. एक्जीक्यूशन पॉलिसी: स्क्रिप्ट एक्जीक्यूशन प्रतिबंधों का अधिक सख्त एन्फोर्समेंट
    2. कैरेक्टर एन्कोडिंग: स्क्रिप्ट फ़ाइल एन्कोडिंग की बेहतर जांच
    3. PowerShell 7 इंटीग्रेशन: विभिन्न PowerShell संस्करणों के बीच बेहतर संगतता

    अपडेटेड निर्देश सुनिश्चित करते हैं कि आपकी स्क्रिप्ट सभी वर्तमान Windows कॉन्फ़िगरेशन में विश्वसनीय रूप से काम करे।

    2. बैच स्क्रिप्ट (.bat) के लिए निर्देश

    स्क्रिप्ट को सेव और चलाने की प्रक्रिया:

    @echo off
    setlocal enabledelayedexpansion
    
    REM ================================================
    REM Please specify the path to the WSL VHD(X) file.
    REM Example: set "VHD_FILE=%LOCALAPPDATA%\Packages\...\LocalState\ext4.vhdx"
    REM ================================================
    set "VHD_FILE=C:\wsl\ubuntu24.04lts\ext4.vhdx"
    
    REM Check if the VHD file exists
    if not exist "%VHD_FILE%" (
        echo ERROR: The specified VHD file was not found: "%VHD_FILE%"
        pause
        exit /b 1
    )
    
    REM Set the path for the temporary diskpart script file
    set "DP_SCRIPT=%TEMP%\dp_script.txt"
    
    REM Create the diskpart script
    (
        echo select vdisk file="%VHD_FILE%"
        echo attach vdisk readonly
        echo compact vdisk
        echo detach vdisk
    ) > "%DP_SCRIPT%"
    
    if errorlevel 1 (
        echo ERROR: Failed to create the temporary script file.
        pause
        exit /b 1
    )
    
    REM Execute diskpart
    echo -------------------------------
    echo Executing diskpart...
    diskpart /s "%DP_SCRIPT%"
    if errorlevel 1 (
        echo ERROR: An issue occurred while running diskpart.
        del "%DP_SCRIPT%" >nul 2>&1
        pause
        exit /b 1
    )
    
    REM Delete the temporary script file
    del "%DP_SCRIPT%" >nul 2>&1
    if exist "%DP_SCRIPT%" (
        echo WARNING: Failed to delete the temporary script file: "%DP_SCRIPT%"
    ) else (
        echo The temporary script file was deleted.
    )
    
    echo -------------------------------
    echo Operation completed successfully. Well done!
    pause
    endlocal
    1. स्क्रिप्ट की प्रतिलिपि बनाएँ:
      • नीचे दिए गए बैच स्क्रिप्ट को कॉपी करें।
      • इसे किसी भी टेक्स्ट एडिटर में पेस्ट करें।
      • फ़ाइल को WSL_Compact.bat नाम से सेव करें।
        (सुनिश्चित करें कि एक्सटेंशन .bat हो)
    2. स्क्रिप्ट को चलाएँ:
      • एडमिनिस्ट्रेटर मोड में चलाएँ:
        फ़ाइल पर राइट-क्लिक करें और “Run as administrator” चुनें।
        या, एडमिनिस्ट्रेटर मोड में कमांड प्रॉम्प्ट खोलकर स्क्रिप्ट के डायरेक्टरी में जाकर WSL_Compact.bat कमांड चलाएँ।

    ⚠️ महत्वपूर्ण चेतावनियाँ और सुझाव

    सावधानी:

    • WSL बंद करना अनिवार्य:
      स्क्रिप्ट चलाने से पहले wsl --shutdown का उपयोग करके WSL को पूरी तरह से बंद कर लें।
    • एडमिनिस्ट्रेटर अधिकार आवश्यक:
      दोनों प्रकार की स्क्रिप्ट (PowerShell और बैच) को एडमिनिस्ट्रेटर मोड में चलाना आवश्यक है।
    • एरर हैंडलिंग:
      स्क्रिप्ट के दौरान यदि कोई त्रुटि उत्पन्न होती है, तो प्रदर्शित एरर संदेशों को ध्यान से पढ़ें और आवश्यक कार्रवाई करें।

    अंतिम चेतावनी

    • बैकअप अनिवार्य:
      यह स्क्रिप्ट सीधे WSL की वर्चुअल डिस्क को प्रभावित करती है। स्क्रिप्ट चलाने से पहले अपने महत्वपूर्ण फाइलों या पूरे सिस्टम का बैकअप लेना न भूलें।
    • पर्यावरण के अनुसार परीक्षण:
      स्क्रिप्ट विभिन्न WSL सेटअप पर अलग-अलग व्यवहार कर सकती है। कृपया अपने सिस्टम में इसे चलाने से पहले सावधानीपूर्वक परीक्षण करें।
    • स्वयं जिम्मेदारी:
      इस लेख में दी गई जानकारी केवल संदर्भ हेतु है। स्क्रिप्ट चलाने से उत्पन्न किसी भी समस्या के लिए आप स्वयं जिम्मेदार होंगे।

    फीडबैक का स्वागत है:
    यदि आपको कोई समस्या, सुझाव या सुधार के बिंदु नजर आएं, तो कृपया टिप्पणी या संपर्क फॉर्म के माध्यम से हमें बताएं।

    निष्कर्ष (सारांश)

    इस लेख में हमने विस्तार से समझा कि क्यों WSL में फाइलें डिलीट करने पर विंडोज़ के डिस्क स्पेस में तत्काल बदलाव नहीं दिखाई देता है। इसके पीछे VHDX वर्चुअल डिस्क की विशेषताएँ और Linux तथा Windows के बीच के स्पेस प्रबंधन में अंतर जिम्मेदार हैं। हमने PowerShell और बैच स्क्रिप्ट के माध्यम से इस समस्या के समाधान के लिए उपयोगी और स्वचालित तरीकों का भी परिचय दिया।

    मुख्य बिंदु:

    • VHDX का व्यवहार:
      • एक बार बढ़ जाने के बाद VHDX फ़ाइल अपने आप सिकुड़ती नहीं है।
      • Linux में स्पेस मुक्त होने के बावजूद, Windows होस्ट पर डिस्क उपयोग में तत्काल परिवर्तन नहीं होता।
    • दो-स्तरीय स्पेस प्रबंधन:
      • Linux (WSL के अंदर) में फाइल डिलीट करने से आंतरिक रूप से स्पेस मुक्त होता है।
      • Windows होस्ट पर VHDX फ़ाइल के आकार में कोई परिवर्तन नहीं आता।
    • स्क्रिप्ट आधारित समाधान:
      • PowerShell और बैच स्क्रिप्ट के उपयोग से इस समस्या का सरल समाधान संभव है।
      • स्क्रिप्ट चलाने से पहले WSL को बंद करना और सिस्टम का बैकअप लेना अनिवार्य है।

    महत्वपूर्ण सलाह:
    हमेशा सुनिश्चित करें कि आपके पास अपने सिस्टम और महत्वपूर्ण फाइलों का बैकअप उपलब्ध हो। स्क्रिप्ट चलाने से पहले अपने WSL इंस्टॉलेशन का सावधानीपूर्वक परीक्षण करें। किसी भी समस्या या सुधार के सुझाव के लिए, कृपया हमें अपनी प्रतिक्रिया अवश्य भेजें।

    धन्यवाद!
    आपके समय के लिए धन्यवाद। हमें उम्मीद है कि यह जानकारी आपके लिए उपयोगी सिद्ध होगी। यदि आपके कोई प्रश्न, सुझाव या प्रतिक्रिया है, तो कृपया नीचे कमेंट करें या हमारे संपर्क फ़ॉर्म का उपयोग करें।

    If you like this article, please
    Follow !

    आइये इस पोस्ट को साझा करें!
    विषयसूची