如何在使用 wsl2 時調查 ext4.vhdx 檔案並查看裡面的內容

如何在使用 wsl2 時調查 ext4.vhdx 檔案並查看裡面的內容

目前我正在使用wsl2,我注意到ext4.vhdx需要大量的磁碟空間,就像我知道它是Ubuntu的檔案管理系統一樣,但我不太了解裡面的內容,這就是為什麼我想查看裡面並刪除所有不需要的文件,我該怎麼辦?就像我知道 wsl2 不會將使用的磁碟空間釋放回主機系統(我使用的是 Windows 10),所以這就是為什麼我想看看 ubuntu 擁有哪些磁碟儲存。

答案1

@thomas-ward 的答案是正確的,但在我看來,還有一個「問題中的問題」仍然需要回答。

首先,重新表達另一個答案,您ext4.vhdx只需執行 WSL 並查看文件即可輕鬆查看完整內容。例如:

sudo find / -xdev | less

這將找到ext4以 root ( /) 身分安裝的檔案系統上的所有文件,但不會找到安裝的 NTFS/Windows 磁碟機上的任何檔案(-xdev不包括其他檔案系統)。

您也可以透過以下方式查看這些相同檔案正在使用的儲存空間:

sudo du -hdx

如果該數量與文件的大小不同ext4.vhdx,那麼是的,正如您已經懷疑的那樣,您可能有未回收的空間。正如您在問題中提到的,WSL 將生長根據需要該文件,但不會自動收縮當文件被刪除時。

要手動縮小文件,您可以按照我在以下位置提到的任何步驟進行操作這位超級用戶的回答。這是其中之一,複製自引用的 Github 評論:

wsl --shutdown
# At this point, it is recommended that you back up your ext.vhdx and delete the backup once you have confirmed the other commands are successful.
diskpart
# open window Diskpart
select vdisk file="C:\WSL-Distros\…\ext4.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk
exit

注意:vhdx直接存取的另一種方法是在 Hyper-V 上啟動一個新的基於 Linux 的 VM,並將該虛擬磁碟機(或其副本)新增至執行個體。由於 Windows 不理解 ext4 檔案系統,因此無法直接在 Windows 中檢查它。

答案2

不建議在 Windows 上直接檢查 VHDX,因為它包含ext4檔案系統。

本質上,VHDX 保存的是其上的整個 Ubuntu 作業系統,以及任何其他檔案/程式/庫/等。您已經在 WSL 中安裝了它。 WSL2 使用虛擬化來運行 Ubuntu WSL 環境,它是系統的整個「硬碟」。基本上,您可以在 WSL 中導航到並查看(/usr/lib/...例如)的任何檔案都是 VHDX 中的檔案。

相關內容