From:  https://blog.k8s.li/esxi-vmbase.html#2-Debian-10

由于工作环境是 ESXi 虚拟化,需要经常用一些模板开部署一些虚拟机,由于我的机器没有连接上 vCenter,只能靠上传 OVA 等虚拟机模板来部署,因此需要搓一些虚拟机模板出来。宿主机系统有 Debian 10、Debian 9、Ubuntu1804、Ubuntu 1604、CentOS7.6、Alpine 3.10、OpenWrt/LEDE ,还有 Windows 😂。一般最小化安装之后还是有可以精简的余地,删除掉一些不用的软件包,系统一般情况下都能精简到 700MB 左右,再使用 dd 暴力清零剩余空间,最后导出的 OVA 虚拟机模板在 450MB 左右。这样部署和上传的速度大大加快了。

1. Ubuntu 1804

1. 安装镜像

ubuntu-18.04.3-server-amd64.iso

安装过程就不赘述了,主要是懒,安装过程图还要截图什么的,麻烦 😂。建议使用 lvm 分区,安装上 openssh-server 就行,其他的组件一概不用安装,这样能减少系统占用空间的而大小。以后需要安装的话再安装就行。

安装进入系统后使用 sudo passwd 来重置 root 的密码

  1. 安装 ncdu 工具结合 du 用来分析系统根分区占用大小情况

2.默认安装后的系统分区占用情况,虽然在安装的过程中

3.默认给分配了个 swap 文件,使用 swapoff -a 关闭 swap 就行,再修改 fstab 文件,删除 swap 那一行,或注释掉

4.删除 swap file 之后的分区情况,占用的 1.8GB ,如果直接导出的话,OVA 文件至少得 2GB。我们接下来精简系统不需要得包和文件,最终 OVA 大小缩小到 450MB

2. 卸载不用的软件包

清理卸载后的占用大小

3. 清理日志和缓存

4. 清理不用的文件

剩下来能精简的只有 /usr/share 里面的 doc 和 locale 文件里,减小大概 40 MB

最后完毕

5. 置零剩余空间

经过上面的精简之后,根分区占用 660MB 加上 boot 分区刚好 700 MB 左右。如果现在直接导出 ova 模板的话,vmdk 的体积是很大的,至少 1GB( 1.3G Aug 28 15:48 Ubuntu1804.ova) ,因此在导出 ova 模板之前需要把磁盘的剩余空间置零,这样导出的 vmdk 文件大小更小,450MB 左右哈。

直接使用 dd 暴力清零就行啦 dd if=/dev/zero of=/zero bs=4M || rm -rf /zero

这个过程比较长,时间取决于你安装虚拟机的时候给定的根分区大小,以及你的磁盘速度

6. 导出 OVA 虚拟机模板

经过置零后我们再导出 OVA 模板

经过置零后,导出的 ova 虚拟机模板体积 460M 左右,骤然减少了接近 2 倍的大小 😂

2. Debian 10

1. 安装镜像

安装镜像选用 Debian 的网络版安装镜像,debian-10.0.0-amd64-netinst.iso 其实选择 debian-10.0.0-amd64-netinst.iso 版的也行,在最后不要安装桌面环境就可以。

2. 卸载不用的软件包

3. 清理日志和缓存

4. 清理不用的文件

5. 置零剩余空间

直接使用 dd 暴力清零就行啦 dd if=/dev/zero of=/zero bs=4M || rm -rf /zero

6. 导出 OVA 虚拟机模板

最终导出的 vmdk 模板为 351M ,棒棒哒 😂

3. CentOS 7.6

1. 安装镜像

安装镜像就选择使用 CentOS-7-x86_64-Minimal-1810.iso 版的 iso 就行,安装过程就不再赘述啦。磁盘分区建议为 lvm ,因为这个是虚拟机模板文件,并不清楚以后的用途和所占用的空间。使用 lvm 可以很方便地扩展根分区。

2. 卸载不用的软件包

3. 清理日志和缓存

4. 清理不用的文件

5. 置零剩余空间

直接使用 dd 暴力清零就行啦 dd if=/dev/zero of=/zero bs=4M || rm -rf /zero

最后看一下磁盘空间,占用不到 700M ,还是可以的哈

6. 导出 OVA 虚拟机模板

最后导出的虚拟机模板大小不到 350M

4. Alpine 3.10

Alpine 虚拟机本来就很精简啦,其实不用搓也行