最近由于在使用 Windows 上的 Docker 客户端的过程中,发现 Docker 的虚拟磁盘的大小不断增长,并且我也经常会强迫症地去用 Optimize-VHD
压缩虚拟磁盘,
另外一个原因是 WSL2 在 Win10 2004 中可用,但为了少点莫名其妙的bug的考虑,还是打算直接要准备一个可用、好用的 Linux 原生桌面环境或者是没有图形界面放在虚拟机中纯粹做服务器用。
顺便提一下关闭 Hyper-V 的过程,首先是将 Windows 组件中的 Hyper-V 和 Containers 功能关闭。之后需要更改一次引导选项,告诉系统禁用 Hyper-V。
|
|
重启一次,之后可以将这一项删除,原本没有开启 Hyper-V 的系统是没有这个启动选项的。
|
|
最后,打开设备管理器,到 查看
中选择 显示隐藏的设备
,找到 Hyper-V 相关的网卡,理论上是一个虚拟交换机以及一张虚拟网卡,将他们卸载就可以了。
回到正题,虚拟机中我安装的系统是 Fedora 32,内核版本是 5.6.x。
Fedora会自动在安装过程中安装虚拟机所需要的工具,主要就是 open-vm-tools
,剪贴板的监听都是它来负责的。
在刚安装完之后设置镜像源、更新软件包的时候我就发现,宿主机和客户机之间复制粘贴真的有时候会失灵,并且拖放几乎不可能成功,从客户机中将文件拖出的时候鼠标永远都拖不出虚拟机的窗口边框。另外,也出现了偶尔图形界面卡死,(这是只是图形界面卡死,客户机系统实际上还是正常的),从主机的资源管理器看 VMX 进程一直吃满着一条线程的占用率。
各种搜之后基本确定是 VMware 对 WayLand 的支持问题。
https://kb.vmware.com/s/article/74671
Note that Drag-and-Drop and Copy-and-Paste is currently not working with Wayland. Log in with an X11 session instead.
我们可以把 GNOME 切换到 X11 协议就可以解决问题了,WayLand 目前已经比较成熟,相较 Xorg 也更加安全,但是 VMware 官方的支持还在开发过程中。
临时的解决办法
在 GNOME 登录时在右下角设置小按钮处选择 GNOME on Xorg
,这样登录以后的整个会话的 XDG_SESSION_TYPE
环境变量的值就是 x11
,否则默认情况下是 wayland。这时再去尝试拖拽基本问题解决。
不过 VMware 的工具使用上还有一些我发现需要注意的
尽量避免拖拽、复制
从宿主机拖入、或者复制粘贴进客户机的文件,我实验经常会出现文件不完整的情况。另外,tools处理拖拽文件的逻辑是,将文件先放到 ~/.cache/vmware/
下,而且这些文件不会自动删除。如果遇到大型文件,虚拟磁盘很快就会满起来。
说到硬盘满起来,如何压缩
的确可以通过虚拟机设置中的压缩磁盘来实现压缩,但是经过我的实验, VMware 没办法在脱机的情况下分析文件系统,去除不需要的空白的未分配的磁盘块。要彻底压缩,可以这样做
|
|
这里不建议使用 shrink 子命令,shrink 执行时会先执行 wipe,再执行 shrinkonly,shrinkonly会不管三七二十一把该虚拟机的所有磁盘全都执行压缩。
建议在 wipe 后关机,到设置中执行压缩,你会发现 vmdk 文件小了很多。
另外一个 VMware 技巧,自动挂载共享文件夹
既然拖拽和复制会导致缓存文件,那么用共享文件夹对于大文件拷贝共享就十分方便。
VMware中,这个共享文件夹的文件系统叫做 hgfs (Host-Guest File System)。 我们手动挂载时可以这样执行
|
|
自动化一点,在 /etc/fstab
中加入
.host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other 0 0
第五列的 0 是 dump 备份设置。
当其值设置为 1 时,将允许dump备份程序备份;设置为0时,忽略备份操作;
第六列的 0 是 fsck 磁盘检查设置。
其值是检查顺序。当其值为 0时,永远不检查;根分区 /
的配置永远为 1。其它分区从 2 开始,数字越小越先检查,如果两个分区的数字相同,则不同物理盘就可以同时检查。