1
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?

WSL上ComfyUI環境におけるディスク速度改善に関するメモ

Last updated at Posted at 2025-03-24

WSL上ComfyUI環境におけるディスク速度改善に関するメモ

ComfyUIをWSL上で使用している際、モデルファイルの増加によってシステムディスクの容量が不足する問題に直面することがあります。この記事では、ext4フォーマットのディスクをUbuntu専用として活用し、アクセス速度を5-10倍に向上させる方法のメモです。

背景

WSL上のComfyUI環境では、様々なモデルによってディスクスペースが肥大化し、UbuntuとWindowsが存在するシステムディスクの容量が足りなくなることがあります。その対策として、modelsフォルダを他のディスクにコピーし、シンボリックリンクからアクセスする方法がありますが、アクセス速度が極端に低下し、Fluxなどの巨大なモデルではロードに数十分かかるという問題が発生します。
Windowsからの直接アクセスはできなくなりますが、ディスクをext4でフォーマットしてUbuntu専用にすることで、アクセス速度を大幅に改善できます。

手順

1. ディスクをext4でフォーマット

まず、「ディスクの管理」で対象ディスクの番号を確認します。
スクリーンショット 2025-03-24 085500.png

powershell内で管理者権限で、フィジカルドライブにマウント

wsl --mount \\.\PHYSICALDRIVE3 --partition 1 --type ext4

wsl(ubuntu内で)ディスクをext4でフォーマット

lsblk を実行し、ターゲットのディスクのデバイス名を確認

 MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda   8:0    0 389.8M  1 disk
sdb   8:16   0    12G  0 disk [SWAP]
sdc   8:32   0     1T  0 disk /mnt/wslg/distro
                          /
sdd   8:48   0 931.5G  0 disk

この場合はsddなので、このデバイスをext4でフォーマット

sudo mkfs.ext4 /dev/sdd

※ sdc の部分は実際のデバイス名に置き換えてください!sddとは限りません。

※ この操作は毎回ではなく、最初の一回だけです。
※ コマンドの実行前に、対象ディスクのデータをバックアップしてください。フォーマットするとデータは消去されます。
2. フィジカルドライブをマウント

このディスクはPowerShellから以下のコマンドでマウントできます:
このコマンドは上でも出ましたが、WSLを終了したら、設定したマウントは外れますので、Windowsを起動し直したり、ログオンする毎にマウントし直します。

wsl --mount \\.\PHYSICALDRIVE3 --bare

ただし、毎回手動ではめんどうなので、以下のようにWindowsログオン時に自動的にマウントするよう設定します。
タスクスケジューラの設定方法

Windowsのタスクスケジューラを開く

「基本タスクの作成」を選択
タスク名と説明を入力(例: "WSL-Disk-Mount")
トリガーを「ログオン時」に設定
操作を「プログラムの開始」に設定
プログラム/スクリプトに wsl を入力
引数に --mount \.\PHYSICALDRIVE3 --bare" を入力
「完了」をクリック

3. WSL側での確認と設定

WSL(Ubuntu)で lsblk コマンドを実行すると、マウントされたディスクを確認できます:
lsblk
実行結果の例:

 MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda   8:0    0 389.8M  1 disk
sdb   8:16   0    12G  0 disk [SWAP]
sdc   8:32   0     1T  0 disk /mnt/wslg/distro
                          /
sdd   8:48   0 931.5G  0 disk

最後の行の sdd が、先ほどマウントしたディスクです。

4. 手動マウント

以下のコマンドでマウントポイントを作成し、ディスクをマウントします:

sudo mkdir -p /mnt/mydisk
sudo mount /dev/sdd /mnt/mydisk

これで /mnt/mydisk を高速なディスクとして利用できるようになります。

5. 自動マウント設定

起動時に自動的にマウントするため、以下のスクリプトを .bashrc に追加します:

# デバイスが見つかったかチェック
# lsblkの出力からヘッダーを除外し、NAMEとSIZEだけを対象にする
DEVICE_NAME=$(lsblk -o NAME,SIZE --noheadings | awk -v size="931.5G" '$2 == size {print $1; exit}')
if [ -n "$DEVICE_NAME" ]; then
  echo "Found device: /dev/$DEVICE_NAME"
  if [ ! -d "/mnt/mydisk/models" ]; then
    echo "Mounting /dev/$DEVICE_NAME to /mnt/mydisk..."
    sudo mount /dev/"$DEVICE_NAME" /mnt/mydisk
  else
    echo "Skip mounting: /mnt/mydisk/models does exist."
  fi
else
  echo "Error: No device found with size 931.5G"
  exit 1
fi

まとめ

この方法を使用することで、WSL上のComfyUI環境におけるモデルロード速度が5-10倍に向上し、特に大規模モデルを扱う際のロード速度が大幅に改善されます。
 この設定は他のWSL上のAIモデルを使った開発環境にも応用可能です。

注意点

もっとスマートなやり方はあると思いますが、とりあえず問題なく動いているので、紹介しました。

ディスクをフォーマットすると既存のデータはすべて消去されます
ext4フォーマットのディスクはWindows側から直接アクセスできません

ディスクサイズは環境によって異なるため、スクリプト内の 931.5G は実際のディスクサイズに合わせて調整してください

Happy ComfyUI-ing!

1
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
1
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?