擴充 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

    Add-appxpackage 命令列螢幕擷取畫面

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

    • 在您的 [開始] 功能表中輸入: "% LOCALAPPDATA%",然後選取以開啟% LOCALAPPDATA% 檔案資料夾。
    • 接下來,開啟 [套件] 資料夾,並搜尋 PackageFamilyName 您的散發套件。 (ie 開啟該資料夾。 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. 啟動您的 WSL 發行版本 (例如 Ubuntu)。

  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,因此命令會是:

    注意

    您可能需要安裝 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 . 以查看該資料夾。 若要深入瞭解,請參閱 blog 文章:從 Windows 存取 Linux檔案。