[wsl2] 디스크 용량이 압박되어 최적화하고 싶지만 Optimize-VHD가 존재하지 않을 때

9262 단어 WSL2

요약 (개요)



wsl2를 사용하고 있으면, 호스트 OS 디스크 용량이 점점 압박되어 갑니다.
특히 주목할 만한 것은 큰 파일을 업로드하거나 대용량 데이터를 생성한 후 파일이나 데이터를 삭제할 때입니다.

무려 삭제했는데 디스크가 해제되지 않는다! !

거기서 이 기사에 쓰여진 방법을 시험한다.

하지만 작동하지 않습니다! ! !
그럴 때 취한 방법입니다.

※주의



실패하면 중요한 소중한 wsl2 환경이 손상되어 움직이지 않습니다.

여기에 써 있는 것을 과신하지 않고, 잘 조사하고 나서 자기 책임으로 실시 부탁합니다.
정말로 누구에게나 실패하고 싶지 않기 때문에, 어디까지나 참고로 다른 기사도 참조하면서, 경우에 따라서는 백업도 취하고 나서 실시해 주면 좋겠다고 생각합니다.
  • WSL 환경을 백업하는 방법
    예를 들어 이 기사 등에 쓰여졌습니다.
    다양한 기사가 있으므로 한 번이라도 백업할 수 있는지 확인해 두는 것이 좋습니다.


  • 실시 내용



    먼저 디스크 공간을 살펴 보겠습니다.

    powershell
    PS C:\Users\myname> wsl
    > df
    Filesystem     1K-blocks      Used Available Use% Mounted on
    /dev/sdb       263174212  90058840 159677216  37% /
    tmpfs            9516516         0   9516516   0% /mnt/wsl
    tools          498799612 305241112 193558500  62% /init
    ...
    C:\            498799612 305241112 193558500  62% /mnt/c
    

    다음으로, OS상에서 움직이고 있는 wsl를 모두 정지시킵니다.

    powershell
    > exit
    PS C:\Users\myname> wsl --shutdown
    

    위 기사에 쓰여진 대로 커맨드( Optimize-VHD -Path .\ext4.vhdx -Mode full )를 실행하면 그런 커맨드 없는 와 powershell에 화나게 됩니다.

    powershell
    PS C:\Users\myname> Optimize-VHD -Path .\ext4.vhdx -Mode full
    Optimize-VHD : 用語 'Optimize-VHD' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前とし
    て認識されません。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、
    再試行してください。
    発生場所 :1 文字:1
    + Optimize-VHD -Path .\ext4.vhdx -Mode full
    + ~~~~~~~~~~~~
        + CategoryInfo          : ObjectNotFound: (Optimize-VHD:String) [], CommandNotFoundException
        + FullyQualifiedErrorId : CommandNotFoundException
    

    그래서 다음 기사의 merkuriy 님의 코멘트에 의존했습니다.


    Windows 10 Home(alternative Optimize-VHD cmdlet):
    wsl --shutdown
    diskpart
    # open window Diskpart
    select vdisk file="C:\WSL-Distros\…\ext4.vhdx"
    attach vdisk readonly
    compact vdisk
    detach vdisk
    exit
    

    Thanks to @davidwin for the tip #4699 (comment).

    조속히 실시해 갑니다.

    powershell
    PS C:\Users\myname> diskpart
    

    diskpart 명령을 실행하면 diskpart.exe가 실행되고 다른 window가 시작되었습니다.



    나머지 명령을 그대로 실행합니다.

    ... 그리고 그 전에, ext4.vhdx 의 파일의 위치를 ​​확인할 필요가 있습니다.
    제 경우에는 C:\Users\myname\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState
    에 있었다.
    mynameCanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc 는 아마 PC에 따라 이름이 다르다고 생각하므로 각자의 환경에 맞추어 찾아보세요.

    이제 여기에서 찾은 ext4.vhdx 경로를 사용하여 명령을 실행합니다.

    diskpart
    DISKPART> select vdisk file="C:\Users\myname\AppData\…\ext4.vhdx"
    
    DiskPartにより、仮想ディスクファイルが選択されました。
    
    DISKPART> attach vdisk readonly
    
      100%完了しました
    
    DiskPartにより、仮想ディスクファイルがアタッチされました。
    
    DISKPART> compact vdisk
    
      100%完了しました <- サイズが大きいと結構時間かかる。私は20分はかからなかったくらい。
    
    DiskPartにより、仮想ディスクファイルは正常に圧縮されました。
    
    DISKPART> detach vdisk
    
    DiskPartにより、仮想ディスクファイルがデタッチされました。
    
    DISKPART> exit
    

    결과를 powershell에서 확인했습니다.

    powershell
    PS C:\Users\myname> wsl
    > df
    

    이것으로 용량이 줄어들면 대성공(^와^*)
    무서웠지만, 지금은 무사히 움직이고 있습니다.

    어느 정도 사용해 보고, 문제 없는지 어떤지도 추기하고 싶습니다.
    (그런 정보를 원해요)

    약 20일 경과 후 (2021/07/20)



    |・`ω・´) 티라리 거의 매일 wsl2 사용하고 있습니다만, 지금까지 아무 문제도 없습니다!

    좋은 웹페이지 즐겨찾기