25
17

More than 3 years have passed since last update.

WSL2を使っているパソコンのディスク容量が枯渇したときにやってみるべきこと

Posted at

そもそも、WSL2を使っている環境でなぜディスク容量が枯渇するのか

WSL2では、仮想HDDを使用して環境を立てています。この仮想HDDはHyper-Vに使われているものと同じ仕組みのもので、(使ったことある方は知っているかもしれませんが)ディスクの圧縮を手動で行わないとディスクを使った分だけ容量取られます。実際、自分のWSL環境の仮想HDDの容量は130GBにも膨らんでいました...

では、どのように圧縮するのか

まず、WSL2環境を終了

めんどくさい方はwsl --shutdown (WSL環境をすべて終了)、きちんとやりたい方はwsl -l -vで起動しているインスタンスを確認後、wsl -t Ubuntu-18.04のような形でインスタンス名を指定して個別に終了させます。

この際、Explorerやターミナルが裏で働いて勝手にWSLインスタンスが再起動しちゃう、ということがあり得るので、注意しましょう。 (確実に終了されてないと次のステップで怒られます)

仮想ディスクの場所を探る

まず、Explorer等でC:\Users\hoge\AppData\Local\Packages\ (hogeを自分のユーザー名に変更してください)にアクセスします。その後、そのフォルダの中にWSLのLinux環境っぽいフォルダが入っているので (Ubuntuの場合、CanonicalGroupLimitedから始まるフォルダ、Debianの場合、TheDebianProjectから始まるフォルダ、Pengwinの場合、WhitewaterFoundryLtd.Coから始まるフォルダ)、そのフォルダを開け、その中のLocalStateというフォルダに行くと.vhdxという拡張子のファイルがあると思います。それが仮想HDDです。パスをメモしておきましょう。

スクリーンショット 2020-11-21 090956.png

DISKPARTを使って仮想ディスクを圧縮する

コマンドプロンプトを開き、DISKPARTと入力します。その後、select vdisk file="C:\Users\hoge\AppData\Local\Packages\hogehoge\LocalState\hoge.vhdx"のような形式で仮想HDDのパスを登録します (file=のあとは各自変更してください)。

そしたら、compact vdiskと入力して、圧縮作業を行います。この際、DiskPart has encountered an error: The process cannot access the file because it is being used by another process.のような形で別のプロセスに使用されているというエラーが出たら、WSL2インスタンスが正常に終了しているか再度確認してください。

スクリーンショット 2020-11-21 091033.png

25
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
17