环境说明:

macOS 10.14 下VMWare Fusion Pro 11和客户机CentOS7

—2019年更新,virtualbox发布6.x版性能及界面都令我很满意,wmware没太大优势,没必要用wmware了(mech当初用了一周就不用了)

个人觉得mac下的virtualbox性能没有wmware好. 但是又想使用vagrant控制虚拟机. 于是就有了这篇文章.
vagrant结合virtualbox使用是免费的, 但是vagrant结合wmware要收费, 并且要使用插件, 这个插件要收费$79美元.
可以使用mech替代, mech是用python写的, 直接用pip就能安装, mech可以用在linux, windows, macos上.
mech使用的命令类似vagrant, 可以直接使用vagrant格式的wmware box镜像

参考文章: Mech: Vagrant with VMWare Integration for free

mech官方源码地址

安装mech

pip3 install mech

mech版本下载box:

mech init centos/7
mech up
mech ssh

镜像可以用vagrant的, 各种linux发行版镜像列表可以找这里box list, 把关键字vagrant 换为mech即可使用该镜像

上述初始化可以改为以下, 但我尝试加了--name参数报错

mech init centos/7 --name=虚拟机名

BUG1–不能共享

启动后报错不能共享文件夹(默认已安装vmware tools)

ERROR: Error: There was an error mounting the Shared Folders file system inside the guest operating system

此处参考文章:
解决vmware 里centos7与windows共享目录报 mount: unknown filesystem type ‘vmhgfs’

在客户机里查看当前设置的共享目录:

vmware-hgfsclient

先创建要共享的目录并修改归属用户(这句看当前用户名 echo ${USER})

sudo mkdir /mnt/hgfs
sudo chown vagrant.vagrant /mnt/hgfs

在vmware客户机(centos)里执行挂载文件夹命令:

/usr/bin/vmhgfs-fuse .host:/ /mnt/hgfs -o subtype=vmhgfs-fuse,allow_other

报错:

fusermount: option allow_other only allowed if 'user_allow_other' is set in /etc/fuse.conf

修改/etc/fuse.conf文件取消注释再试, sudo vi /etc/fuse.conf取消或者新增一行user_allow_other

在vmware客户机里挂载文件夹命令设置开机执行

sudo vi /etc/rc.d/rc.local
/usr/bin/vmhgfs-fuse .host:/ /mnt/hgfs -o subtype=vmhgfs-fuse,allow_other

保存, 增加执行权限

sudo chmod +x /etc/rc.d/rc.local

再开mech, 启动后还是报错, 说不能共享文件夹, 但是这时已经可以在客户机看到共享的文件了, 修改文件会实时双向同步
我这里是把上面的/mnt/hgfs目录设置为/www, 默认会把虚拟机项目所在的文件夹共享到共享目录下的mech文件夹, 例如我这里客户机里的共享文件夹是/www/mech

共享文件夹结果
共享文件夹结果

提示: mech启动后, 可以通过mech ssh-config查看私钥文件的位置, 然后就可以用其他工具远程连接了

BUG2–启动mech报错

如果启动mech时报错, 尝试关闭vmware的窗口再试

 long@longdeMacBook-Pro  ~/vbox_projects/vm  mech up
Bringing machine up...
ERROR: Error: A file access error occurred on the host or guest operating system
VM not started

注: mech相对vagrant多bug, 目前发现不能mech box remove box名命令移除已添加的box镜像, 但是我通过find命令找到了对应文件的目录,
删除~/.mech/boxes目录下的对应文件夹即可移除box镜像, mech box list命令可以看到目前存在的box

其它的共享方案

使用sshfs挂载远程服务器的文件, 映射到本地磁盘

windows下sshfs解决方案:
Dokan+SSHFS 文件系统共享心得,代替 Samba 的理想之选
如果在windows下用vagrant配合virtualbox虚拟linux, 共享的目录不能修改权限, 都是777. 建议使用sshfs方法替代默认的共享文件夹方法

linux下sshfs解决方案:
linux版SSHFS安装使用方法

mac下sshfs解决方案:
Mac 安装 sshfs