このページの本文へ

Windows Info 第301回

WSL2で用いるルートファイルシステムの容量を拡大する方法は?

2021年11月14日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

 WSL2(Windows Subsystem for Linux 2)では、仮想マシンを使ってLinux環境を実現している。そのネイティブファイルシステムは、仮想ハードディスクファイル上にある。「ext4.vhdx」と呼ばれるこのファイルは、容量可変形式で作られ、最大容量は256GBに指定されている。この値は固定値なので、場合によっては足りなくなることがある。今回はこの容量を拡大する方法を解説しよう

WSL2ではディストリビューションのインストール時に容量可変の仮想ハードディスクファイルにext4ファイルシステムを作る。このときの容量は256GB固定だ

仮想ハードディスクファイルの最大容量を拡大する

 仮想ハードディスクファイルには一般に「容量可変」と「容量固定」の2タイプがあるが、通常は利用した分だけ記憶容量を消費する、容量可変を用いるケースが多い。容量可変の仮想ハードディスクファイルでは最大容量が指定してあり、ソフトウェア側からはその容量を持つドライブであるように見える。

 容量可変の仮想ハードディスクファイルはDISKPARTコマンドを使うことで最大容量を増やすことが可能だ。ただし、対象がext4形式の場合は、DISKPARTコマンドの機能には制限がある。

 たとえば、最大容量を小さくすることはNTFS形式のみ可能で、ext4形式でフォーマットされた仮想ハードディスクファイルには対応していない。もっとも最大容量は名目上の容量であり、これを大きくしたからといって、ただちにファイルサイズが拡大するわけではない。その意味では気軽に拡大してしまいがちだが、小さくはできないとなると注意が必要だ。

 どうしても小さくしたい場合には、wsl.exeでディストリビューションをファイルにエクスポート(--exportオプションを使う)して、新規に作成した同一ディストリビューションにインポート(--importオプション)するしかなさそうだ。また、最大容量を変更したあと、WSLディストリビューション側で容量を再認識させる必要がある。

WSLディストリビューションのext4.vhdxを探す

 最初に処理対象となるWSLディストリビューションのext4.vhdxファイルを探す必要がある。DISKPARTコマンドで仮想ハードディスクファイルをあつかうには、そのフルパスが必要になるからだ。

 ext4.vhdxは、ユーザーフォルダー以下の「Appdata\packages」にあるWSLディストリビューションのパッケージフォルダーのLocalStateフォルダーに含まれている。インストールしているWSLディストリビューションが1つしかなければ、探すのはそれほど難しくない。しかし、複数のWSLディストリビューションがある場合には、以下の方法を使う。なお、コマンドの機能などからWindows PowerShellを用いる。また、DISKPARTコマンドには管理者権限が必要となる。

 まずは処理するWSLディストリビューションが停止していることを確認する。開いているコンソールがあれば、exitで抜け、念のため「wsl.exe --shutdown」を実行しておく。次に以下のコマンドを使って、ディストリビューションのパッケージ名を探す。また、表は入手可能な主なWSLディストリビューションの名称とパッケージ名である。

Get-AppxPackage "*WSLディストリビューション名の一部*" | select packagefullname

 Get-AppxPackageの引数は、たとえばUbuntu-18.04を見つけたい場合には、「Get-AppxPackage "*Ubuntu*"」などと指定する。パッケージ名がわかったら、次はユーザーフォルダーのAppData\local\packageの下でパッケージ名を探す。PowerShellなら、

Get-ChildItem $env:LOCALAPPDATA\packages\

と入力して、パッケージ名先頭の文字(たとえば、Ubuntu系ならCanonicalなど)を続けて入力してタブキーで補完してパッケージのパスを作り、さらに「\localstate\ext4.vhdx」を続けてフルパスを得る。これをクリップボードにコピーしておく。

続いて実際にDISKPARTを起動する

 DISKPARTコマンドを起動する。

仮想ハードディスクファイル(.vhdx)の最大容量を大きくするには、DISKPARTコマンドを使う。パスが長く補完機能も使えないため事前に仮想ハードディスクファイルのフルパスをクリップボードにコピーしておく必要がある

 もし、起動したコンソールが管理者権限でなければ、別ウィンドウが開く。DISKPARTコマンドのプロンプトでVDISK(仮想ディスク)を選択するために以下のサブコマンドを入れる。

select vdisk file="ext4.vhdxのフルパス"

 その後、確認のために「detail vdisk」コマンドで情報を表示させる。デフォルトのままであれば、「仮想サイズ」に256GBと表示されているはずである。

 では、最大サイズを300GBに拡大する。それには、

expand vdisk maximum=307200

とする。

DISKPARTのEXPANDコマンドで仮想ハードディスク(VDISK)の最大容量を拡大できる

 307200は、300×1024である。maximumではMB単位でサイズを指定するため、GBにするには1024を掛ける必要がある。コマンドが終了したらexitコマンドでDISKPARTを終了させる。

 次に仮想ハードディスクファイルの最大容量を変更したWSLディストリビューションを起動する。対象ディストリビューションを間違えないように注意する。起動はwsl.exeからで、以下のようにきちんとディストリビューション名をつけたほうがよい。

wsl.exe -d Ubuntu-18.04

 起動したら、先に現在のファイルシステムのサイズを確認しておく。それには、dfコマンドを使う。

事前にdfコマンドやlsblkコマンドでルートファイルシステムに対応するデバイス名と容量を確認しておく

df -h

 ここで、ルートファイルシステムを確認しておく。dfコマンドの出力で「Mounted on」が「/」になっているデバイスがルートファイルシステムである。前記の例では「/dev/sdc」だった。ただし、実行環境により、他のデバイス名になることがある。デバイス名が判定できたら、以下のコマンドを使う。

sudo resize2fs /dev/sdc 300G

 このコマンドは、パーティション内のファイルシステムのサイズを変更するもの。これで/dev/sdcの容量が大きくなったはずだ。最後にexitコマンドでWSLを抜け、一回シャットダウンしておく。

1つ前の画面と比較すると、/dev/sdcの容量が増えている。dfは容量値の計算方法が違うため、resize2fsやDISKPARTの表示とは一致しない。lsblkコマンドでは300GBとなっている

 仮想ハードディスクの最大容量の変更は、NTFSならマウントしてGUI(「コンピュータの管理」→「ディスクの管理」)からでも可能なのだが、Windowsのツールはext4に対応していないため、ファイルシステムの変更(前記のresize2fsに相当する機能)をすることができない。

 一方でDISKPARTコマンドは、今の感覚からすれば相当古いものであり、パスの補完機能がないため、事前にフルパスを調べておく必要がある。しかしWSLディストリビューションは、Microsoftストアのパッケージとして配布されているため、その位置を探すのが面倒。できればPowerShellに管理ツールぐらい用意してほしいところだ。

カテゴリートップへ

この連載の記事

ASCII倶楽部

注目ニュース

  • 角川アスキー総合研究所

プレミアム実機レビュー

ピックアップ
1
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
¥1,390
2
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
¥660
3
Amazon Kindle Paperwhite (16GB) 7インチディスプレイ、色調調節ライト、12週間持続バッテリー、広告なし、ブラック
Amazon Kindle Paperwhite (16GB) 7インチディスプレイ、色調調節ライト、12週間持続バッテリー、広告なし、ブラック
¥18,980
4
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
¥980
5
【Amazon.co.jp限定】 ロジクール 静音 ワイヤレス トラックボール マウス M575SPd Bluetooth Logibolt 無線 windows mac iPad OS Chrome トラックボールマウス ブラック M575 M575SP 国内正規品 ※Amazon.co.jp限定 壁紙ダウンロード付き
【Amazon.co.jp限定】 ロジクール 静音 ワイヤレス トラックボール マウス M575SPd Bluetooth Logibolt 無線 windows mac iPad OS Chrome トラックボールマウス ブラック M575 M575SP 国内正規品 ※Amazon.co.jp限定 壁紙ダウンロード付き
¥5,280
6
CIO フラットスパイラルケーブル CtoC 1m (Type-C/USB-C) PD 急速充電 平型 磁石 マグネット吸着 まとまる 充電ケーブル PD 240W データ転送 480Mbps (ライトブラック, 1m)
CIO フラットスパイラルケーブル CtoC 1m (Type-C/USB-C) PD 急速充電 平型 磁石 マグネット吸着 まとまる 充電ケーブル PD 240W データ転送 480Mbps (ライトブラック, 1m)
¥1,780
7
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
¥990
8
【Amazon.co.jp限定】バッファロー microSD 32GB 100MB/s UHS-1 U1 microSDHC【 Nintendo Switch 対応 】V10 A1 IPX7 Full HD RMSD-032U11HA/N
【Amazon.co.jp限定】バッファロー microSD 32GB 100MB/s UHS-1 U1 microSDHC【 Nintendo Switch 対応 】V10 A1 IPX7 Full HD RMSD-032U11HA/N
¥1,880
9
エレコム 電源タップ 6個口 3m 雷ガード 個別スイッチ ほこりシャッター付 耐熱 PSE技術基準適合 ブラック T-K6A-2630BK
エレコム 電源タップ 6個口 3m 雷ガード 個別スイッチ ほこりシャッター付 耐熱 PSE技術基準適合 ブラック T-K6A-2630BK
¥1,590
10
Kindle Paperwhite シグニチャーエディション (32GB) 7インチディスプレイ、明るさ自動調整、色調調節ライト、12週間持続バッテリー、広告なし、メタリックブラック
Kindle Paperwhite シグニチャーエディション (32GB) 7インチディスプレイ、明るさ自動調整、色調調節ライト、12週間持続バッテリー、広告なし、メタリックブラック
¥23,980

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

デジタル用語辞典

ASCII.jpメール デジタルMac/iPodマガジン