多台虚拟机共享文件,别只盯着虚拟化平台自带的共享文件夹,走Samba或NFS这类网络协议才是跨系统、跨宿主机最稳的解法,实际运维中相当一部分共享需求都是靠它承接的。
多台虚拟机共享文件夹哪个方法好
先想清楚你的使用场景,再决定用哪套方案,虚拟机共享文件和物理机之间拷贝文件不太一样,它牵扯到虚拟机内部的操作系统、虚拟网络、权限映射这几个层面,方案选错,后面排障会非常折腾。
| 方案 | 配置难度 | 跨系统能力 | 适用场景 |
|---|---|---|---|
| VMware/VirtualBox 自带共享 | 低 | 仅限同一宿主机 | 临时拷文件、个人测试 |
| Samba/CIFS | 中 | Windows/Linux/macOS 通吃 | 混合环境、局域网内多台虚拟机共享文件 |
| NFS | 中 | 主要为 Linux | 纯 Linux 集群、高吞吐要求 |
| NAS/WebDAV | 低 | 取决于设备 | 多宿主机、长期稳定共享 |
如果你只在同一台 Windows 电脑上开了两三台虚拟机,而且是 Windows 和 Linux 混着用,想快速交换几个文件,那直接开虚拟化平台自带的共享文件夹就够,一旦你想让多台虚拟机同时读写一份数据,或者这台虚拟机关机、迁移到别的宿主机后还要继续访问,就得用网络协议共享,这也是出现“多台虚拟机共享文件夹哪个方法好”这类疑问时最常给出的答案。
vmware虚拟机文件共享怎么设置
VMware Workstation 的共享文件夹功能是最容易上手的,打开虚拟机,在“虚拟机”菜单里选“设置”,切到“选项”标签页,找到“共享文件夹”,勾选“总是启用”,然后添加一个宿主机目录就行,建议勾选“保存为相对路径”,这样虚拟机整体迁移后目录不至于失效,据 VMware 官方文档,该功能依赖 VMware Tools 中的文件系统驱动,装好 Tools 后,共享目录默认挂载在虚拟机内的 /mnt/hgfs 下。

如果挂载不上,多半是 Tools 版本和虚拟机内核版本不匹配,手动挂载一次可以验证原因:
mount -t vmhgfs .host:/ /mnt/hgfs
VirtualBox 的配置方式类似,但需要先给虚拟机安装“增强功能”,然后在“共享文件夹”里添加目录,Linux 虚拟机里默认挂载在 /media/sf_共享名,想要写入权限,把当前用户加进 vboxsf 组:
sudo usermod -aG vboxsf $USER
这类方案的局限很明显:共享目录只存在于宿主机本地,换一台电脑就失效,多台虚拟机共享文件夹如果都在同一台宿主机上,用起来没问题,但别指望它跨宿主机工作。
windows和linux虚拟机怎么互相共享文件
这是实际运维中出现频率最高的需求,Windows 宿主机上跑了一堆 Linux 虚拟机,或者 Linux 服务器上开着 Windows 虚拟机,两边要互通文件,这时候 Samba 是最好的选择,它实现的是 Windows 通用的 SMB/CIFS 协议,Windows 虚拟机不需要装任何额外客户端就能访问。
把Linux目录共享给Windows虚拟机
以 Debian/Ubuntu 虚拟机为例,先装 Samba:
sudo apt install samba
新建一个共享目录,/srv/share,然后编辑 /etc/samba/smb.conf,在文件末尾追加:
[share] path = /srv/share browseable = yes writable = yes valid users = admin
重启服务让配置生效:
sudo systemctl restart smbd
Samba 的账号密码和系统账号是分开维护的,要用 smbpasswd 单独设置:
sudo smbpasswd -a admin
Windows 虚拟机里打开文件资源管理器,地址栏输入 \192.168.1.xxshare,按提示输入刚才设置的 Samba 账号密码,就能像访问本地磁盘一样操作了,想长期固定就用“映射网络驱动器”。
如果防火墙开着,放行 Samba 服务:
sudo firewall-cmd --permanent --add-service=samba && sudo firewall-cmd --reload

CentOS/RHEL 系还要注意 SELinux,否则会看到权限正常却写不进去:
sudo setsebool -P samba_export_all_rw on sudo chcon -t samba_share_t /srv/share
反过来让Linux虚拟机访问Windows共享
方向反过来的场景同样常见,在 Windows 上把某个目录右键属性→共享,给指定用户或 Everyone 开放读写权限,Linux 虚拟机里安装 CIFS 工具后直接挂载:
sudo apt install cifs-utils sudo mount -t cifs //192.168.1.10/share /mnt/win -o username=你的Windows账号,password=你的密码
如果报 mount error(13) Permission denied,先确认 Windows 的网络发现是否开启,防火墙是否放行了 445 端口,以及 SMB1 是否被禁用,微软从 Windows 10 1709 版开始默认禁用了 SMB1,Samba 只要版本在 4.11 以上,默认走 SMB2/3,不受影响,但如果你在 smb.conf 里手动指定了 server min protocol = NT1,就会被卡住。
NFS与NAS方案,兼顾性能和稳定性
纯Linux环境用NFS更轻
如果所有虚拟机都是 Linux,NFS 比 Samba 更合适,协议开销小,大文件读写更稳。
服务端装 NFS 内核服务,修改 /etc/exports:
sudo apt install nfs-kernel-server echo "/srv/nfs 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)" | sudo tee -a /etc/exports sudo exportfs -ra
客户端挂载:
sudo mount -t nfs 192.168.1.50:/srv/nfs /mnt/nfs
行业共识认为,NFSv4 相比 NFSv3 在文件锁和权限管理上可靠得多,数据库文件这类高频写入场景应优先使用 NFSv4 并开启租约锁。
有NAS就把共享目录移到NAS上
如果你手头有群晖或其他品牌的 NAS,那是最省心的方案,NAS 同时支持 SMB 和 NFS 协议,虚拟机和宿主机都能挂载同一个 NAS 目录,这样即使宿主机重启,数据也不受任何影响,虚拟机关机换位置后照样访问原来那份文件,对多宿主机环境来说,共享目录放在 NAS 上比放在某个宿主机本地磁盘上更合理,操作路径也直观得多。

虚拟机共享文件速度慢的排查方向
局域网内多台虚拟机共享文件出现卡顿,先按下面几个点排查:
- 虚拟机网卡类型,VMware 里默认的 e1000 性能不如 virtio,换成 virtio 后吞吐量提升非常明显。
- SMB 协议版本,在 smb.conf 里加上
server min protocol = SMB2_10,避免老设备拖慢协商速度。 - Windows 虚拟机里的实时防护,把映射的网络驱动器加入排除列表,不然每次读写都会被扫描一遍。
- 宿主机磁盘负载,共享目录所在磁盘建议用 SSD,机械盘被多台虚拟机同时读写时,IO 等待时间会明显上升。
虚拟机文件共享常见问题
为什么多台虚拟机共享文件时,文件属主显示成 nobody 或数字?
NFS 和 Samba 在做权限映射时,依赖 UID/GID 的对应关系,服务端的用户 ID 是 1000,客户机上如果不存在这个 ID,系统就会把文件属主显示为 nobody 或直接显示数字,Samba 场景下优先用 valid users 限定可访问用户,而不是靠系统 UID 做判断,NFS 挂载时可以通过 uid=1000,gid=1000 参数强制指定客户端的文件属主。
虚拟机里挂载的共享目录重启后又失效,怎么恢复?
手动 mount 的挂载关系在重启后会丢失,把挂载命令写进 /etc/fstab 时要注意,Samba 挂载建议用 _netdev 参数,避免系统在网络就绪前就去挂载导致失败,NFS 挂载则不需要加 _netdev,因为网络文件系统本身就依赖网络栈,系统会等网络启动后再尝试挂载。
vmware虚拟机文件共享怎么设置成功却无法自动挂载?
检查 VMware Tools 是否与虚拟机当前内核版本匹配,不匹配时,mount -t vmhgfs 会直接失败,较新版本的 VMware 会改用 vmhgfs-fuse,可以尝试手动执行 vmhgfs-fuse .host:/ /mnt/hgfs 来挂载,挂载后没有写入权限,则要确认宿主机共享目录本身的 NTFS/权限设置,以及 Tools 挂载时是否带了 allow_other 参数。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/915913.html


评论列表(3条)
这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是虚拟机部分,给了我很多新的思路。感谢分享这么好的内容!
@kind653er:这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于虚拟机的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!
读了这篇文章,我深有感触。作者对虚拟机的理解非常深刻,论述也很有逻辑性。内容既有理论深度,又有实践指导意义,确实是一篇值得细细品味的好文章。希望作者能继续创作更多优秀的作品!