展開 WSL 2 虛擬硬碟的大小

WSL 2 使用虛擬硬碟 (VHD) 來儲存您的 Linux 檔案。 在 WSL 2 中,VHD 會在您的 Windows 硬碟上以 .vhdx 檔案表示。

WSL 2 VHD 使用 ext4 檔案系統。 此 VHD 會自動調整規模以符合您的儲存體需求,而其初始大小上限為 256GB。 如果您的 Linux 檔案所需的儲存空間超過此大小,您可能需要予以擴充。 如果您的發行版本大小成長到大於 256GB,您將會看到錯誤,指出您已用盡磁碟空間。 您可以藉由擴充 VHD 大小來修正此問題。

若要擴充超過 256GB 的 VHD 大小上限:

  1. 使用此命令終止所有 WSL 執行個體:wsl --shutdown

  2. 若要尋找您的散發套件安裝套件名稱 ('PackageFamilyName') :

    • 使用 PowerShell (其中 'distro' 是您的發行版本名稱) 輸入下列命令:
    • Get-AppxPackage -Name "*<distro>*" | Select PackageFamilyName
    • 例如:Get-AppxPackage -Name "*Ubuntu*" | Select PackageFamilyName

    Get-AppxPackage command line screenshot

  3. 使用產生的 PackageFamilyName 來找出 WSL 2 安裝所使用的 VHD 檔案 fullpath ,這會是您的 pathToVHD 。 若要尋找完整路徑:

    • 在您的[開始] 功能表中,輸入:"%LOCALAPPDATA%",然後選取以開啟 %LOCALAPPDATA% 檔案資料夾。
    • 接下來,開啟 [套件] 資料夾,然後搜尋 PackageFamilyName 散發套件的 。 (開啟該資料夾。CanonicalGroupLimited.Ubuntu20.04onWindows_79xxxxx) 。
    • PackageFamilyName 資料夾內,開啟 "LocalState" 資料夾並尋找 <disk>.vhdx 檔案。
    • 將路徑複製到該檔案,看起來應該像這樣: %LOCALAPPDATA%\Packages\<PackageFamilyName>\LocalState\<disk>.vhdx
    • 例如, <pathToVHD> Ubuntu 20.04 的 看起來應該類似: %LOCALAPPDATA%\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79xxxx\LocalState\ext4.vhdx
  4. 完成下列命令以調整您的 WSL 2 VHD 大小:

    • 以系統管理員權限開啟 Windows 命令提示字元,並輸入:

      diskpart
      
      DISKPART> Select vdisk file="<pathToVHD>"
      
      DISKPART> detail vdisk
      
    • 檢查 detail 命令的輸出。 輸出會包含虛擬大小的值。 這是目前的最大值。 將此值轉換為 MB。 例如,如果 詳細 資料輸出顯示 虛擬大小:256 GB,請將此值轉換為 256000

    • 您輸入的新值必須大於這個原始值。 例如,若要將上述的虛擬大小加倍,您可以輸入值: 512000。 一旦您決定要為新大小設定的數位, (MB) ,請在 Windows命令提示字元diskpart提示字元提示字元中輸入下列命令:

      DISKPART> expand vdisk maximum=<sizeInMegaBytes>
      
    • 結束 diskpart

      DISKPART> exit
      
  5. (Ubuntu 啟動 WSL 散發套件,例如) ,並確定它已在 WSL 2 (WSL 1 中執行) 。 您可以使用 命令來確認此專案: wsl.exe -l -v

  6. 讓 WSL 知道它可以透過從 WSL 散發命令列執行這些命令來擴充其檔案系統的大小。

       sudo mount -t devtmpfs none /dev
       mount | grep ext4
    
    • 您可能會看到此訊息,以回應第一個 掛接 命令:「/dev:尚未掛接在 /dev 上」。您可以放心地忽略此訊息。
    • 複製此項目的名稱,如下所示:/dev/sdX (X 代表任何其他字元)。 在下列範例中,X 的值是 b
       sudo resize2fs /dev/sdb <sizeInMegabytes>M
    
    • 使用上述範例,我們已將 vhd 大小變更為 512000,因此命令會是: sudo resize2fs /dev/sdb 512000M

    注意

    您可能需要安裝 resize2fs。 如果是,您可以使用此命令進行安裝: sudo apt install resize2fs

    這些輸出看起來類似於下列文字:

       resize2fs 1.44.1 (24-Mar-2021)
       Filesystem at /dev/sdb is mounted on /; on-line resizing required
       old_desc_blocks = 32, new_desc_blocks = 38
       The filesystem on /dev/sdb is now 78643200 (4k) blocks long.
    

重要

建議您不要使用Windows工具或編輯器,修改、移動或存取位於 AppData 資料夾內的 WSL 相關檔案。 這麼做可能會導致您的 Linux 發行版本損毀。 如果您想要從 Windows 存取 Linux 檔案,可以透過路徑 \\wsl$\<distroName>\ 存取。 開啟您的 WSL 散發套件,然後輸入 explorer.exe . 以檢視該資料夾。 若要深入瞭解,請參閱部落格文章:從 Windows 存取 Linux 檔案