问题

comfyui大模型需要占用大量的磁盘空间,而ubuntu扩容后,资源还是不足,所以扩展一部分资源在windows主机上。

条件

  • windows server2022主机
  • 启用hyper-v
  • ubuntu虚拟机运行在hyper-v中
  • 显卡直通到ubuntu,comfyui运行在ubuntu上

windows server2022添加内部虚拟交换机

  1. 创建内部虚拟交换机
    如果还没有创建,请先建立一个:
    在 Windows Server 2022 中打开 Hyper-V 管理器。
    在右侧操作栏点击 虚拟交换机管理器。
    1004.png
    选择 新建虚拟网络交换机 -> 选择 内部 (Internal) -> 点击 创建虚拟交换机。
    命名为 ComfyUI-Internal(或任何你喜欢的名字)。
    点击 确定。
    1005.png

  2. 将虚拟机连接到该交换机

在 Hyper-V 管理器中,右键点击你的 Ubuntu 虚拟机 -> 设置。
选择添加硬件 ->网络适配器
1006.png
在左侧硬件列表中找到 网络适配器。
在右侧的“虚拟交换机”下拉菜单中,选择你刚刚创建的 ComfyUI-Internal。
1007.png
点击 确定。

配置IP地址

先配置windows 的IP地址,因为是在内网的,所以只需要配置一个IP/Mask,能和ubuntu通信即可,不需要配置网关。
1008.png
配置ubuntu的IP地址

sudo nano /etc/netplan/00-installer-config.yaml
network:
  version: 2
  ethernets:
    # 外网网卡:通过 DHCP 获取地址和默认网关
    eth0:
      dhcp4: true
    # 内网网卡:手动设置静态 IP,不设网关
    eth1:
      addresses:
        - 192.168.100.2/24
      # 注意:千万不要在这里写 gateway4,否则会导致 Ubuntu 上网冲突

执行 sudo netplan apply 生效。
测试网络通信

ping 192.168.100.1

配置windows共享

创建专用用户:

  • 右键点击“开始” -> 计算机管理。
  • 在左侧导航栏:本地用户和组 -> 用户。
  • 右键空白处 -> 新用户。
  • 用户名:comfy_user,设置一个强密码(例如 Comfy123456)。
  • 勾选:密码永不过期,取消勾选:下次登录须更改密码。

设置共享文件夹:

  • 找到你的模型文件夹(如 D:\AI_Models)。
  • 右键点击文件夹 -> 属性 -> 共享 -> 高级共享。勾选 共享此文件夹,共享名保持为 AI_Models。
  • 点击 权限:删除 Everyone。点击 添加,输入 comfy_user 并确定。 赋予 comfy_user 读取/更改 权限。 点击 确定 保存。
  • 获取主机 IP:按下 Win + R,输入 cmd。输入 ipconfig,记录下 IPv4 地址

如果 Ubuntu 连不上,最常见的原因是 Windows 防火墙拦住了 SMB。
在 PowerShell (管理员) 运行一行命令即可彻底解决:

Enable-NetFirewallRule -DisplayGroup "文件和打印机共享"

配置ubuntu

安装工具

sudo apt update
sudo apt install cifs-utils -y

创建挂载点

sudo mkdir -p /mnt/win_models

**配置自动挂载 (fstab)**: 为了避免每次重启都要重新挂载,我们修改系统文件:

sudo nano /etc/fstab
//192.168.1.10/AI_Models /mnt/win_models cifs username=comfy_user,password=Comfy123456,iocharset=utf8,uid=1000,gid=1000,file_mode=0777,dir_mode=0777 0 0

注:uidgid 设置为 1000 通常是 Ubuntu 第一个普通用户的 ID,这样 ComfyUI 才有权读写文件
执行挂载

sudo mount -a

在confyUI中指定文件路径

confyUI中保留了原来的ubuntu文件,指定新的models的路径。
这种方法需要在windows的共享文件夹中创建各个models的文件名称,然后编辑extra_model_paths.yaml 文件,在modesl下指定目录即可。
比如我的windows上创建了win_unet, 挂载好后,文件就在/mnt/win_models/win_unet
我只需要编辑添加即可。

unet: |
    models/unet/
    /mnt/win_models/win_unet/