以下VHDと略す)をマウントすることもできる。WSLの外部ドライブマウント機能は、ローカルファイルシステムとは分離されるため、ここに残しておきたいファイルを置くことで、ディストリビューションを気軽に再インストールすることが可能だ。外部ハードディスクは、WSL2ディストリビューション間で共有されている。WSL自体にはディストリビューション間のファイル転送機能はないが、これでディストリビューション間のファイル転送も可能になる。ドライブファイルシステムでも似たようなことが可能ではあるが、Win32側から操作しなければならず、かつ9PFS経由になるため、ファイル転送速度が落ちるという欠点がある。ここでは、VHDの作成やWSLへのマウント方法、VHDファイルの修正などについて解説する。本記事で利用する用語について、(表01)にまとめておく。1.0.3.0)を動作させた環境を想定し、この環境で検証を行っている。■表01「仮想ハードディスク」とは、ソフトウェアで物理的なハードディスクのエミュレーションを行う機能だ。Windowsでは、NTFS上のファイルを記憶領域として使う。v2に対応するVHDX形式を使う。VHDXには、「容量固定」(Fixed)、「容量可変」(Dynamic)、「差分」(Differencing)の3つタイプがある(表02)。WSL用に利用するには「容量可変」タイプを使う。■表02VHDXファイルの作成、変更ツールWindowsには、VHDXファイルの作成、編集などが可能な複数のツールがある。PowerShellのVHDコマンドだ(表03)。Windowsではパーティションサイズの変更なども可能だが、Linux用のパーティションやファイルシステム(ボリューム)は、Windowsのディスク関連ツールでは扱うことができないため、VHDXファイルの容量拡大以外の作業はWSL側ですべて行う。■表03GUIツールは、「ディスクの管理」を使う。10)にある「コンピュータの管理」の中にある。一部のVHD編集機能は、Hyper-Vマネージャーから「ディスクの編集」を起動して行う。Hyper-Vは、Homeエディションでは利用できない。本記事では、記事量も限られているため、GUIを使う方法については、割愛させていただくことにする。コマンドラインプログラムとしてはdiskpart.exeがある。diskpart.exeは、ハードディスクの基本設定などを行うツールだが、VHDファイルの作成や簡単な編集操作が行える。diskpart.exeを実行し、その中で「サブコマンド」を指定して対話的に処理を行う。実行には管理者権限が必要だ。PowerShellからもVHDファイル関連のコマンドが利用できる。PowerShellのVHDコマンドは、Hyper-Vに含まれているため、Homeエディションでは利用できない。Homeエディションの場合、diskpart.exeを使うしか方法がない。容量可変VHDXファイルの新規作成まずは、VHDXファイルを新規に作成しWSL2で利用可能にするまでを解説する。説明を簡易にするため、表04の仕様でVHDXファイルを作成する。コマンドなどは、この仕様を使うため、各自の環境や用途に合わせてパラメーターを変更して利用していただきたい。■表04diskpart.exeを使う場合、管理者権限でコンソールウィンドウを起動したら、diskpart.exeを起動し、以下のコマンドでVHDXファイルを作成する(写真01)。-Dynamicとする(写真02)。vdiskサブコマンドを使う。このサブコマンドではVHDの容量は、メガバイト単位で指定する。PowerShellからは、New-VHDコマンドでVHDXファイルを作ることができる作成したら、WSL側にマウントし、以後の作業はWSLで行う。以後の作業は、前回解説と同じである。外部ドライブを初期化するhttps://news.mynavi.jp/article/20230116-2564693/初期化が終わったら、WSLを抜け、以下のコマンドでマウントを解除、改めてパーティションをマウントする。vhd1」は、/mnt以下にマウントする場合のディレクトリ名になる。デフォルトではVHDXファイルのパスからディレクトリ名が作られるが、--nameオプションを使うことで分かりやすいマウント先パスにできる。VHDXファイルの容量を増加するここでは、上記で作成したVHDXファイルの容量を15ギガバイトに拡大して、パーティションやファイルシステムを拡大した容量に対応させる方法を解説する。対象のVHDXファイルは、過去にWSLにマウントされ、ファイルが書き込まれた状態であるとする。最初の作業は、VHDXファイルの最大容量の変更だ。このパラメーターは、VHDXファイルの内部に書き込まれているため、これを書き換えるだけだ。この作業だけは、Win32側で行う必要がある。diskpart.exeを使う方法を解説する。Terminalを管理者権限で開いてからdiskpart.exeを起動する。以下のコマンドを使い、VHDの容量を変更する(写真03)。vdiskコマンドを使う。vdiskコマンドで状態を表示させることもできるVHDの容量変更は3行目で行い、expandコマンドでは、最大容量をメガバイト単位で指定する。15ギガバイトに変更するのであれば、15GB=15×1024MBなので“15360”を指定する。PowerShellを使う場合には、以下のコマンドを使う(写真04)。ここでは、シェルとしてPowerShell(Ver.7.2.9)を想定している。PowerShellで仮想ハードディスクの容量を増やすには、Resize-VHDコマンドを使う。Get-VHDコマンドでVHDXファイルの状態を表示できるこれで、既存のVHDXファイルの容量を拡大することができた。パーティションとファイルシステムを適合させる万一の事故を考慮し、マウントする前にWin32側でVHDXファイルのコピーを作ることをお勧めする。以後の作業はLinux側から行う。マウントしてもいいが、先にWSLを起動しておくと、WSL2のローカルファイルシステムが先にマウントされ、仮想ハードディスクファイルが次にマウントされる。このようにすることで、ローカルファイルシステムを/dev/sdc、仮想ハードディスクファイルを/dev/sddにすることができる。ここでは、マウントしたVHDXファイルは、/dev/sddに対応すると仮定する。Linux側で“lsblk”コマンドを使うことで、ディスク(ブロックデバイス)の状態を確認できる。wsl.exeでWSL2ディストリビューションを起動したあと、bareモードでVHDXファイルをWSL側にマウントする。マウントは、前述の「容量可変VHDXファイルの新規作成」で示したものと同じである。Linux側では、gdiskコマンドを使う。作業としては、GPTパーティションテーブルを作り直し、その後、新規にフルサイズでパーティションを新規作成する。gdiskでのこれらの作業はパーティションの内部にあるセクターには手をつけない。gdiskを起動したら「o」、「n」、「w」の3つのコマンドを実行する(写真05)。コマンドを実行するとパラメーターや実行の可否を聞いてくるが、パラメーターはすべてエンターキーで先に進み、可否に関してはすべて“y”を入力すればよい。VHDXファイルの容量を増やしたら、以後の作業はLinuxのgdiskコマンドを使いパーティションを増加した容量に適合させる。oコマンドでGPTを作り直し、nコマンドを使い最大容量で新規にパーティションを作り直し、最後にwコマンドでGPTを書き込んでgdiskコマンドを抜けるこれでパーティションがVHDXファイルの容量と一致したので、最後にファイルシステムをパーティションサイズに追従させる(写真06)。それには以下のコマンドを実行する(対象パーティションは/dev/sdd1とする)。gdiskコマンドでパーティションをディスクに適合させたら、次は、resize2fsコマンドでファイルシステムをパーティションサイズに適合させる。その前にe2fsckコマンドを使い、ファイルシステムを正しい状態にしておく必要がある最初のコマンドは、ファイルシステムの整合チェックと修復を行うもの。“-f”は、チェックを強制するオプションである。次のコマンドは、ファイルシステムとパーティションサイズを一致させるものだ。これで、ファイルシステムが、パーティションサイズと一致した。実際にファイルシステムの容量を調べてみる。それには以下のコマンドを使う(写真07)。事前に“/mnt”にxというディレクトリが作られていると仮定する。--unmount”でマウントし、容量を拡大したVHDXファイルを通常通りマウントすればよい。マウント方法は「容量可変VHDXファイルの新規作成」で示したものと同じ。VHDXファイルは手軽に作成でき、簡単に容量を追加することができる。別ディスクとすることで、ディストリビューションのローカルファイルシステムと分離可能で、複数のディストリビューション間でも共有が可能だ。※本記事は掲載時点の情報であり、最新のものとは異なる場合があります。OSに関連する最新ニュース情報、使いこなしハウツーなどをお届け。情報提供お詫びと訂正メールマガジンご興味に合わせたメルマガを配信しております。PC/デジタル、ワーク&ライフ、エンタメ/ホビーの3種類を用意。Corporation。