0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

学生のノートPC容量確保のための Windows+WSL環境でCドライブの容量を劇的に空ける手順(数十GB)

0
Posted at

開発環境や講義資料などでCドライブの空き容量が10%を切り(作業前:残り約16GB)、動作が危険水域に突入したため、大掃除を行いました(作業後:残り約48GB)。
何となくでやろうと思うと
❌ C:\Windows 以下を適当に削除
❌ AppData 以下を名前だけ見て削除
❌ ext4.vhdx を直接削除
❌ 不要か確認せず node_modules を削除
❌ Dockerのvolumeを確認せず削除
❌ OneDriveの「削除」と「空き領域を増やす」を混同
みたいなことになってしまいます。

ここでは、WizTreeで解析しつつ、数十GBの空き容量を確保した手順を備忘録としてまとめます。

0. 事前準備:WizTreeでディスク容量を「見える化」する

仮想環境(私の場合はWSL(Linux))を使っていると、エクスプローラなどでは見えない部分が出てきますよね。何が容量を圧迫しているのかを特定するために、まずはディスク解析ツールを導入します。ツールはWindows標準のストレージ設定よりも圧倒的に高速で、視覚的に分かりやすいWizTreeがおすすめです。

  1. WizTree公式サイト からインストーラー(またはポータブル版)をダウンロードして起動します。
  2. 対象のドライブ([C:] ローカル ディスク など)を選択して「スキャン」をクリックします。
  3. 数秒でスキャンが完了し、画面下部に「容量を食っているファイルやフォルダ」が巨大なブロック状で表示されます。

今回の手順も、このWizTreeで「巨大なブロック」となっている原因を特定するところからスタートしています。

1. 休止状態ファイルの無効化(即効クリア)

「休止状態(ハイバネーション)」とは、作業中のメモリ内容をストレージに保存してPCの電源を切り、次回起動時にその状態を復元する機能です。
Windowsでは、このためにhiberfil.sysというファイルが作られます。このファイルはOSドライブに保存され、サイズは搭載しているRAM容量とおおむね同程度になります。

私自身は普段「スリープ」か「シャットダウン」しか使わず、休止状態を使ったことがありませんでした。そこで今回は、休止状態を無効化してhiberfil.sysを削除することにしました。

管理者権限でコマンドプロンプト(またはPowerShell)を開き、以下を実行します。

powercfg.exe /hibernate off

2. OneDriveデータをクラウドへ逃がす

私は大学から1TBものOneDriveストレージが提供されているので、講義資料などはここにしまっています。ですが、クラウドに保存していると思っていたものが、ローカルにもつながれていて、このPCの容量を食っていました。

ローカルの容量を圧迫しているフォルダは、「ファイル オンデマンド」機能で領域を解放します。

  1. タスクバーにあるOneDriveの「雲マーク」をクリックし、右上の歯車アイコンから「設定」を開く。
  2. 左メニューの「同期とバックアップ」を選択する。
  3. 下部の「詳細設定」を展開し、「ディスク領域の解放」をクリックする。

※注意点
OneDriveの「削除」と「空き領域を増やす」は別の操作です。「空き領域を増やす」は、PC上のファイル本体を削除してオンライン専用にすることで、ローカルのディスク容量を解放します。OneDrive上のファイル自体は削除されません。一方、通常の「削除」を行うと、OneDrive上のファイルも削除されます。

3. WSL内のキャッシュ削除

次に、WSLの仮想ディスク(ext4.vhdx)の肥大化を解消します。
WSL2ではLinuxのファイルシステムがWindows上の仮想ハードディスク(VHD)に格納されています。WSL内でファイルを大量に作成すると、このVHDXは大きくなります。一方、Linux側でファイルを削除しても、VHDXの物理ファイルサイズは自動的には小さくならない場合があります。

まずはWSL(Ubuntuなど)のターミナルで、内部のゴミを掃除します。

# パッケージマネージャーのキャッシュ削除
sudo apt clean

# npmのキャッシュ削除
npm cache clean --force

# 汎用キャッシュの削除
rm -rf ~/.cache/*

※ディレクトリごとの容量を調べたい場合は、以下のコマンドが便利です(ホームディレクトリ以下を調査)。

du -sh ~/* ~/.[!.]* 2>/dev/null | sort -rh | head -n 10

4. WSL仮想ディスク(vhdx)の圧縮

WSL内でファイルを消しても、Windows側から圧縮コマンドを叩かないと実際の仮想ディスクのファイルサイズは縮みません。

Windows側の管理者権限コマンドプロンプトを開き、ディスク自体を圧縮します。
(※この記事では手動で diskpart を使う方法を紹介しています。WSLのバージョンによっては、より新しいディスク管理機能が利用できる場合があります。)
(※この操作はWSLの仮想ディスクを直接操作するため、必ず重要なデータをバックアップしてから実行してください。)

# WSLを完全に停止
wsl --shutdown

# diskpartを起動
diskpart

ここからは DISKPART> プロンプトでの操作です。
※パスはご自身の環境に合わせて変更してください(WizTreeなどを使うとパスの特定が簡単です)。

# 仮想ディスクを選択
select vdisk file="C:\Users\ユーザー名\AppData\Local\wsl\...\ext4.vhdx"

# 読み取り専用でアタッチ
attach vdisk readonly

# 圧縮を実行(少し時間がかかります)
compact vdisk

# 終了処理
detach vdisk
exit

【エラーが出る場合】
attach vdisk readonly の際に「プロセスはファイルにアクセスできません。別のプロセスが使用中です。」というエラーが出る場合、裏でWSLやDocker等のプロセスがファイルを掴んだままになっています。
一度PCを再起動し、何もアプリを開かずに wsl --shutdown 以降の手順をやり直すのが最も確実です。

5. 意外と盲点な「ゴミ箱」を空にする

色々難しいコマンドを叩いてきましたが、大掃除の最後に確認したいのがここです。

開発で使わなくなった巨大なフォルダや、過去の環境のバックアップなどを一生懸命「削除」したつもりでも、実はゴミ箱に移動しただけで、Cドライブの容量は1バイトも減っていないことがよくあります。
WizTreeで解析した際、謎の巨大なブロックが $Recycle.Bin という名前になっていたら、それがゴミ箱の正体です。

デスクトップのゴミ箱アイコンを右クリックして「ごみ箱を空にする」をポチッと押すだけで、あっさりと数GB〜十数GBの空き容量が戻ってくることもあるので、大掃除のシメにぜひ確認してみてください。

最後に

大学生活で4年間同じノートPCを使っていると、どうしても容量が足りなくなってくるのは「あるある」だと思います。特に情報系の場合、開発環境やライブラリがあっという間にストレージを食いつぶしていきます。

ですので、これから大学生活を送る1回生のうちから、ダウンロードフォルダに適当にファイルを溜め込むのではなく、「ローカルに置くもの」と「OneDriveなどのクラウドに保存するもの」を適切に分けて管理する癖をつけておくと良いかもしれません。

そして今は、LLMが発展していて、いつでも優秀な相談役がすぐそばにいてくれる時代です。分からないエラーが出たり、今回のように容量不足で困ったりした時も、状況を伝えれば具体的な解決策を一緒に考えてくれます。

課題の提出前や研究の追い込みなど、「ここぞ!」という肝心な時に容量不足でPCが動かなくなる前に、LLMも活用しながら定期的にディスクの整理をしておくことをおすすめします!

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?