WSL2のディストリビューションをexport/importすることで別ドライブに移動することができるんだけど、 普通にぐぐって出てくる方法(デフォルトのtar形式)だとわりと時間かかってた。
wsl.exe
のヘルプを見ると、
Linux 用 Windows サブシステムでディストリビューションを管理するための引数:
--export <Distro> <FileName> [Options]
ディストリビューションを tar ファイルにエクスポートします。
ファイル名を - にすると標準出力になります。
オプション:
--vhd
ディストリビューションを .vhdx ファイルとしてエクスポートする必要があることを指定します。
--import <Distro> <InstallLocation> <FileName> [Options]
指定された tar ファイルを新しいディストリビューションとしてインポートします。
ファイル名を - にすると標準入力になります。
オプション:
--version <Version>
新しいディストリビューションに使用するバージョンを指定します。
--vhd
指定されたファイルが tar ファイルではなく .vhdx ファイルであることを指定します。
この操作により、指定されたインストール場所に .vhdx ファイルのコピーが作成されます。
--import-in-place <Distro> <FileName>
指定された .vhdx ファイルを新しいディストリビューションとしてインポートします。
この仮想ハード ディスクは ext4 ファイル システムの種類でフォーマットする必要があります
とあるので、vhdx形式だと実はそのままなので高速化できるんじゃないかと思って実験してみた。
処理時間はPowerShellのMeasure-Command
を使って計測した。
(バッチファイルにして起動したのでたぶんcmd.exe
の起動時間も含まれていそう)
Measure-Command { Start-Process test.bat -Wait -NoNewWindow }
参考: https://devlights.hatenablog.com/entry/2018/04/20/114112
処理時間
TotalSeconds : 20.0230566
export後のファイルサイズ
-a--- 2023/02/03 22:39 1214351360 Ubuntu-22.04.tar
処理時間
TotalSeconds : 5.0145458
export後のファイルサイズ
-a--- 2023/02/03 22:46 1788870656 Ubuntu-22.04.vhdx
処理時間
TotalSeconds : 8.0263856
import後のvhdxファイルサイズ
-a--- 2023/02/03 23:52 1386217472 ext4.vhdx
処理時間
TotalSeconds : 5.0203429
import後のvhdxファイルサイズ
-a--- 2023/02/03 23:53 1788870656 ext4.vhdx
処理時間
TotalSeconds : 1.0137321
import後のvhdxファイルサイズ
-a--- 2023/02/03 23:52 1788870656 ext4.vhdx
- vhdx形式だと単純にファイルコピーにかかる時間に見える
- in-placeだと処理時間は一瞬
- tar形式だと純粋に存在するファイル分だけになるので、結果的にvhdxファイルが最適化できる
- 実際にはvhdx形式を最適化する方法は別に存在するけど