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 的密码
- 安装 ncdu 工具结合 du 用来分析系统根分区占用大小情况
|
1 |
<span class="token function">apt</span> update <span class="token operator">&&</span> <span class="token function">apt</span> <span class="token function">install</span> ncdu <span class="token parameter variable">-y</span> |
2.默认安装后的系统分区占用情况,虽然在安装的过程中
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
root@ubuntu:~<span class="token comment"># df -h</span> Filesystem Size Used Avail Use% Mounted on udev <span class="token number">1</span>.9G <span class="token number">0</span> <span class="token number">1</span>.9G <span class="token number">0</span>% /dev tmpfs 393M <span class="token number">1</span>.1M 392M <span class="token number">1</span>% /run /dev/mapper/ubuntu--vg-ubuntu--lv 28G <span class="token number">5</span>.7G 21G <span class="token number">22</span>% / tmpfs <span class="token number">2</span>.0G <span class="token number">0</span> <span class="token number">2</span>.0G <span class="token number">0</span>% /dev/shm tmpfs <span class="token number">5</span>.0M <span class="token number">0</span> <span class="token number">5</span>.0M <span class="token number">0</span>% /run/lock tmpfs <span class="token number">2</span>.0G <span class="token number">0</span> <span class="token number">2</span>.0G <span class="token number">0</span>% /sys/fs/cgroup /dev/sda2 976M 76M 834M <span class="token number">9</span>% /boot /dev/loop0 91M 91M <span class="token number">0</span> <span class="token number">100</span>% /snap/core/6350 tmpfs 393M <span class="token number">0</span> 393M <span class="token number">0</span>% /run/user/1000 root@ubuntu:~<span class="token comment"># free -h</span> total used <span class="token function">free</span> shared buff/cache available Mem: <span class="token number">3</span>.8G 213M <span class="token number">2</span>.9G <span class="token number">1</span>.1M 759M <span class="token number">3</span>.3G Swap: <span class="token number">3</span>.8G 0B <span class="token number">3</span>.8G |
3.默认给分配了个 swap 文件,使用 swapoff -a 关闭 swap 就行,再修改 fstab 文件,删除 swap 那一行,或注释掉
|
1 2 3 4 |
root@ubuntu:~<span class="token comment"># swapoff -a</span> root@ubuntu:~<span class="token comment"># rm -rf /swap.img</span> root@ubuntu:~<span class="token comment"># vi /etc/fstab</span> |
4.删除 swap file 之后的分区情况,占用的 1.8GB ,如果直接导出的话,OVA 文件至少得 2GB。我们接下来精简系统不需要得包和文件,最终 OVA 大小缩小到 450MB
|
1 2 3 4 5 6 7 8 9 10 11 |
root@ubuntu:~<span class="token comment"># df -h</span> Filesystem Size Used Avail Use% Mounted on udev <span class="token number">1</span>.9G <span class="token number">0</span> <span class="token number">1</span>.9G <span class="token number">0</span>% /dev tmpfs 393M <span class="token number">1</span>.1M 392M <span class="token number">1</span>% /run /dev/mapper/ubuntu--vg-ubuntu--lv 28G <span class="token number">1</span>.8G 25G <span class="token number">7</span>% / tmpfs <span class="token number">2</span>.0G <span class="token number">0</span> <span class="token number">2</span>.0G <span class="token number">0</span>% /dev/shm tmpfs <span class="token number">5</span>.0M <span class="token number">0</span> <span class="token number">5</span>.0M <span class="token number">0</span>% /run/lock tmpfs <span class="token number">2</span>.0G <span class="token number">0</span> <span class="token number">2</span>.0G <span class="token number">0</span>% /sys/fs/cgroup /dev/sda2 976M 76M 834M <span class="token number">9</span>% /boot /dev/loop0 91M 91M <span class="token number">0</span> <span class="token number">100</span>% /snap/core/6350 tmpfs 393M <span class="token number">0</span> 393M <span class="token number">0</span>% /run/user/1000 |
2. 卸载不用的软件包
|
1 2 3 |
<span class="token comment"># 一把梭子过去就完</span> <span class="token function">rm</span> /etc/cloud <span class="token function">apt</span> purge usbutils wireless-regdb linux-modules-extra-4.15.0-58-generic vim-tiny vim-common ubuntu-advantage-tools cloud-* linux-firmware snapd lxd* linux-headers-* git-man landscape-common ubuntu-release-upgrader-core |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
snapd: snapd 从不使用果断卸载 lxd*: 历史遗留下来得容器虚拟化,我有 docker 要你何用? vim-tiny: 默认安装得 vim 死难用,卸载重新装个 vim 就行 cloud-*: 公有云用来导入私钥获取 IP 等等部署虚拟机用到得,自己用不到果断卸载 usbutils: USB 驱动,从不使用,果断卸载。如果你使用 USB 设备得话就保留它 wireless-regdb: 一个无线相关的,用不到 linux-firmware: 里面大部分是网卡蓝牙USB之类得固件,虚拟机用不到 linux-headers-*: 内核源码之类的头文件,用到的时候再安装就行 ubuntu-advantage-tools: 用不到果断卸载 linux-modules-extra-4.15.0-58-generic: 内核模块扩展驱动等,虚拟机很少能用到 git-man: git 的 man 手册,一般用不到 landscape-common: landscape 管理,用不到 ubuntu-release-upgrader-core: 用不到 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
The following packages were automatically installed and are no longer required: amd64-microcode eatmydata gdisk intel-microcode iucode-tool libdbus-glib-1-2 libeatmydata1 libuv1 python3-blinker python3-jinja2 python3-json-pointer python3-jsonpatch python3-jsonschema python3-jwt python3-markupsafe python3-oauthlib thermald Use <span class="token string">'apt autoremove'</span> to remove them. The following additional packages will be installed: python3-update-manager Suggested packages: python3-launchpadlib The following packages will be REMOVED: cloud-guest-utils* cloud-init* cloud-initramfs-copymods* cloud-initramfs-dyn-netconf* crda* git* git-man* landscape-common* linux-firmware* linux-generic* linux-headers-4.15.0-58* linux-headers-4.15.0-58-generic* linux-headers-generic* linux-image-generic* linux-modules-extra-4.15.0-58-generic* lxd* lxd-client* snapd* ubuntu-advantage-tools* ubuntu-minimal* ubuntu-release-upgrader-core* ubuntu-server* ubuntu-standard* update-manager-core* update-notifier-common* usbutils* vim* vim-common* vim-tiny* wireless-regdb* The following packages will be upgraded: python3-update-manager <span class="token number">1</span> upgraded, <span class="token number">0</span> newly installed, <span class="token number">30</span> to remove and <span class="token number">75</span> not upgraded. Need to get <span class="token number">35.1</span> kB of archives. After this operation, <span class="token number">723</span> MB disk space will be freed. Do you want to continue? <span class="token punctuation">[</span>Y/n<span class="token punctuation">]</span> y |
清理卸载后的占用大小
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
root@ubuntu:~<span class="token comment"># rm -rf /var/lib/apt/lists/*</span> root@ubuntu:~<span class="token comment"># rm -rf /var/cache/apt/*</span> root@ubuntu:~<span class="token comment"># df -h</span> Filesystem Size Used Avail Use% Mounted on udev <span class="token number">1</span>.9G <span class="token number">0</span> <span class="token number">1</span>.9G <span class="token number">0</span>% /dev tmpfs 393M <span class="token number">1</span>.1M 392M <span class="token number">1</span>% /run /dev/mapper/ubuntu--vg-ubuntu--lv 28G 685M 26G <span class="token number">3</span>% / tmpfs <span class="token number">2</span>.0G <span class="token number">0</span> <span class="token number">2</span>.0G <span class="token number">0</span>% /dev/shm tmpfs <span class="token number">5</span>.0M <span class="token number">0</span> <span class="token number">5</span>.0M <span class="token number">0</span>% /run/lock tmpfs <span class="token number">2</span>.0G <span class="token number">0</span> <span class="token number">2</span>.0G <span class="token number">0</span>% /sys/fs/cgroup /dev/sda2 976M 41M 868M <span class="token number">5</span>% /boot tmpfs 393M <span class="token number">0</span> 393M <span class="token number">0</span>% /run/user/1000 root@ubuntu:~<span class="token comment">#</span> |
3. 清理日志和缓存
|
1 2 3 |
<span class="token function">rm</span> <span class="token parameter variable">-rf</span> /var/lib/apt/lists/* <span class="token function">rm</span> <span class="token parameter variable">-rf</span> /var/cache/apt/* <span class="token function">rm</span> <span class="token parameter variable">-rf</span> /var/log/journal/* |
4. 清理不用的文件
剩下来能精简的只有 /usr/share 里面的 doc 和 locale 文件里,减小大概 40 MB
|
1 2 3 4 5 6 7 8 |
<span class="token function">rm</span> <span class="token parameter variable">-rf</span> /usr/share/doc <span class="token builtin class-name">cd</span> /usr/share/locale <span class="token comment"># 下面这条命令一定要在 /usr/share/locale 目录下执行</span> <span class="token function">ls</span> <span class="token operator">|</span> <span class="token function">grep</span> <span class="token parameter variable">-v</span> zh <span class="token operator">|</span> <span class="token function">grep</span> <span class="token parameter variable">-v</span> en <span class="token operator">|</span> <span class="token function">grep</span> <span class="token parameter variable">-v</span> us <span class="token operator">|</span> <span class="token function">grep</span> <span class="token parameter variable">-v</span> @ <span class="token operator">|</span> <span class="token function">grep</span> <span class="token parameter variable">-v</span> <span class="token builtin class-name">local</span> <span class="token operator">|</span> <span class="token function">xargs</span> <span class="token function">rm</span> <span class="token parameter variable">-rf</span> root@ubuntu:/usr/share/locale<span class="token comment"># du -sh</span> <span class="token number">1</span>.5M |
最后完毕
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
root@ubuntu:/usr/share/locale<span class="token comment"># df -h</span> Filesystem Size Used Avail Use% Mounted on udev <span class="token number">1</span>.9G <span class="token number">0</span> <span class="token number">1</span>.9G <span class="token number">0</span>% /dev tmpfs 393M <span class="token number">1</span>.1M 392M <span class="token number">1</span>% /run /dev/mapper/ubuntu--vg-ubuntu--lv 28G 660M 26G <span class="token number">3</span>% / tmpfs <span class="token number">2</span>.0G <span class="token number">0</span> <span class="token number">2</span>.0G <span class="token number">0</span>% /dev/shm tmpfs <span class="token number">5</span>.0M <span class="token number">0</span> <span class="token number">5</span>.0M <span class="token number">0</span>% /run/lock tmpfs <span class="token number">2</span>.0G <span class="token number">0</span> <span class="token number">2</span>.0G <span class="token number">0</span>% /sys/fs/cgroup /dev/sda2 976M 41M 868M <span class="token number">5</span>% /boot tmpfs 393M <span class="token number">0</span> 393M <span class="token number">0</span>% /run/user/1000 root@ubuntu:/usr/share/locale<span class="token comment"># ncdu /</span> ncdu <span class="token number">1.12</span> ~ Use the arrow keys to navigate, press ? <span class="token keyword">for</span> <span class="token builtin class-name">help</span> --- / -------------------------------------------------------------------------------------------------------------- <span class="token number">407.4</span> MiB <span class="token punctuation">[</span><span class="token comment">##########] /usr</span> <span class="token number">109.6</span> MiB <span class="token punctuation">[</span><span class="token comment">## ] /lib</span> <span class="token number">38.2</span> MiB <span class="token punctuation">[</span> <span class="token punctuation">]</span> /boot <span class="token number">27.5</span> MiB <span class="token punctuation">[</span> <span class="token punctuation">]</span> /var <span class="token number">14.9</span> MiB <span class="token punctuation">[</span> <span class="token punctuation">]</span> /bin <span class="token number">14.4</span> MiB <span class="token punctuation">[</span> <span class="token punctuation">]</span> /sbin <span class="token number">5.0</span> MiB <span class="token punctuation">[</span> <span class="token punctuation">]</span> /etc <span class="token number">1.1</span> MiB <span class="token punctuation">[</span> <span class="token punctuation">]</span> /run <span class="token number">52.0</span> KiB <span class="token punctuation">[</span> <span class="token punctuation">]</span> /tmp <span class="token number">32.0</span> KiB <span class="token punctuation">[</span> <span class="token punctuation">]</span> /home <span class="token number">20.0</span> KiB <span class="token punctuation">[</span> <span class="token punctuation">]</span> /root e <span class="token number">16.0</span> KiB <span class="token punctuation">[</span> <span class="token punctuation">]</span> /lost+found <span class="token number">4.0</span> KiB <span class="token punctuation">[</span> <span class="token punctuation">]</span> /lib64 e <span class="token number">4.0</span> KiB <span class="token punctuation">[</span> <span class="token punctuation">]</span> /srv e <span class="token number">4.0</span> KiB <span class="token punctuation">[</span> <span class="token punctuation">]</span> /opt e <span class="token number">4.0</span> KiB <span class="token punctuation">[</span> <span class="token punctuation">]</span> /mnt e <span class="token number">4.0</span> KiB <span class="token punctuation">[</span> <span class="token punctuation">]</span> /media <span class="token builtin class-name">.</span> <span class="token number">0.0</span> B <span class="token punctuation">[</span> <span class="token punctuation">]</span> /proc <span class="token number">0.0</span> B <span class="token punctuation">[</span> <span class="token punctuation">]</span> /sys <span class="token number">0.0</span> B <span class="token punctuation">[</span> <span class="token punctuation">]</span> /dev @ <span class="token number">0.0</span> B <span class="token punctuation">[</span> <span class="token punctuation">]</span> initrd.img.old @ <span class="token number">0.0</span> B <span class="token punctuation">[</span> <span class="token punctuation">]</span> initrd.img @ <span class="token number">0.0</span> B <span class="token punctuation">[</span> <span class="token punctuation">]</span> vmlinuz.old @ <span class="token number">0.0</span> B <span class="token punctuation">[</span> <span class="token punctuation">]</span> vmlinuz |
5. 置零剩余空间
|
1 2 3 4 5 6 7 8 9 10 |
root@ubuntu:/usr/share/locale<span class="token comment"># df -h</span> Filesystem Size Used Avail Use% Mounted on udev <span class="token number">1</span>.9G <span class="token number">0</span> <span class="token number">1</span>.9G <span class="token number">0</span>% /dev tmpfs 393M <span class="token number">1</span>.1M 392M <span class="token number">1</span>% /run /dev/mapper/ubuntu--vg-ubuntu--lv 28G 660M 26G <span class="token number">3</span>% / tmpfs <span class="token number">2</span>.0G <span class="token number">0</span> <span class="token number">2</span>.0G <span class="token number">0</span>% /dev/shm tmpfs <span class="token number">5</span>.0M <span class="token number">0</span> <span class="token number">5</span>.0M <span class="token number">0</span>% /run/lock tmpfs <span class="token number">2</span>.0G <span class="token number">0</span> <span class="token number">2</span>.0G <span class="token number">0</span>% /sys/fs/cgroup /dev/sda2 976M 41M 868M <span class="token number">5</span>% /boot tmpfs 393M <span class="token number">0</span> 393M <span class="token number">0</span>% /run/user/1000 |
经过上面的精简之后,根分区占用 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
这个过程比较长,时间取决于你安装虚拟机的时候给定的根分区大小,以及你的磁盘速度
|
1 2 3 4 5 6 |
root@ubuntu:~<span class="token comment"># dd if=/dev/zero of=/zero bs=4M || rm -rf /zero</span> dd: error writing <span class="token string">'/zero'</span><span class="token builtin class-name">:</span> No space left on device <span class="token number">6860</span>+0 records <span class="token keyword">in</span> <span class="token number">6859</span>+0 records out <span class="token number">28771078144</span> bytes <span class="token punctuation">(</span><span class="token number">29</span> GB, <span class="token number">27</span> GiB<span class="token punctuation">)</span> copied, <span class="token number">445.634</span> s, <span class="token number">64.6</span> MB/s |
6. 导出 OVA 虚拟机模板
经过置零后我们再导出 OVA 模板
|
1 2 |
464M Aug <span class="token number">28</span> <span class="token number">16</span>:15 Ubuntu1804-2.ova <span class="token comment"># 置零后的大小</span> <span class="token number">1</span>.3G Aug <span class="token number">28</span> <span class="token number">15</span>:48 Ubuntu1804.ova <span class="token comment"># 置零前的大小</span> |
经过置零后,导出的 ova 虚拟机模板体积 460M 左右,骤然减少了接近 2 倍的大小 😂
2. Debian 10
1. 安装镜像
安装镜像选用 Debian 的网络版安装镜像,debian-10.0.0-amd64-netinst.iso 其实选择 debian-10.0.0-amd64-netinst.iso 版的也行,在最后不要安装桌面环境就可以。
2. 卸载不用的软件包
|
1 2 3 4 5 6 7 8 9 |
<span class="token comment"># 首先修改一下 apt 源</span> <span class="token function">sed</span> <span class="token parameter variable">-i</span> <span class="token string">'s/deb.debian.org/mirrors.ustc.edu.cn/g'</span> /etc/apt/sources.list <span class="token function">sed</span> <span class="token parameter variable">-i</span> <span class="token string">'s|security.debian.org/debian-security|mirrors.ustc.edu.cn/debian-security|g'</span> /etc/apt/sources.list <span class="token function">apt</span> update <span class="token comment"># 装上一些比较实用的工具</span> <span class="token function">apt</span> <span class="token function">install</span> --no-install-recommends --no-install-suggests <span class="token parameter variable">-y</span> <span class="token function">wget</span> ncdu <span class="token comment"># 这几个包卸载掉影响不大,应该。。</span> <span class="token function">apt</span> purge emacsen-common firmware-linux-free gcc-8-base linux-image-amd64 |
3. 清理日志和缓存
|
1 2 3 |
<span class="token function">rm</span> <span class="token parameter variable">-rf</span> /var/lib/apt/lists/* <span class="token function">apt</span> autoclean <span class="token function">apt</span> autoremove |
4. 清理不用的文件
|
1 2 3 |
<span class="token builtin class-name">cd</span> /usr/share/local <span class="token function">du</span> <span class="token parameter variable">-sh</span> * <span class="token operator">|</span> <span class="token function">grep</span> <span class="token parameter variable">-v</span> en <span class="token operator">|</span> <span class="token function">grep</span> <span class="token parameter variable">-v</span> zh <span class="token operator">|</span> <span class="token function">grep</span> <span class="token parameter variable">-v</span> cn <span class="token operator">|</span> <span class="token function">grep</span> <span class="token parameter variable">-v</span> us <span class="token operator">|</span> <span class="token function">awk</span> <span class="token string">'{print $2}'</span> <span class="token operator">|</span> <span class="token function">xargs</span> <span class="token function">rm</span> <span class="token parameter variable">-rf</span> <span class="token function">rm</span> <span class="token parameter variable">-rf</span> /usr/share/doc/* |
5. 置零剩余空间
直接使用 dd 暴力清零就行啦 dd if=/dev/zero of=/zero bs=4M || rm -rf /zero
|
1 2 3 4 5 6 7 8 9 10 11 |
╭─root@debian ~ ╰─<span class="token comment"># df -h</span> Filesystem Size Used Avail Use% Mounted on udev <span class="token number">2</span>.0G <span class="token number">0</span> <span class="token number">2</span>.0G <span class="token number">0</span>% /dev tmpfs 395M 11M 385M <span class="token number">3</span>% /run /dev/mapper/debian--vg-root 26G 698M 24G <span class="token number">3</span>% / tmpfs <span class="token number">2</span>.0G <span class="token number">0</span> <span class="token number">2</span>.0G <span class="token number">0</span>% /dev/shm tmpfs <span class="token number">5</span>.0M <span class="token number">0</span> <span class="token number">5</span>.0M <span class="token number">0</span>% /run/lock tmpfs <span class="token number">2</span>.0G <span class="token number">0</span> <span class="token number">2</span>.0G <span class="token number">0</span>% /sys/fs/cgroup /dev/sda1 236M 48M 176M <span class="token number">22</span>% /boot tmpfs 395M <span class="token number">0</span> 395M <span class="token number">0</span>% /run/user/0 |
6. 导出 OVA 虚拟机模板
最终导出的 vmdk 模板为 351M ,棒棒哒 😂
|
1 |
351M Sep <span class="token number">1</span> <span class="token number">16</span>:17 disk-0.vmdk |
3. CentOS 7.6
1. 安装镜像
安装镜像就选择使用 CentOS-7-x86_64-Minimal-1810.iso 版的 iso 就行,安装过程就不再赘述啦。磁盘分区建议为 lvm ,因为这个是虚拟机模板文件,并不清楚以后的用途和所占用的空间。使用 lvm 可以很方便地扩展根分区。
2. 卸载不用的软件包
|
1 2 3 4 5 6 7 |
<span class="token comment"># 修改 yum 源为阿里云</span> <span class="token function">wget</span> <span class="token parameter variable">-O</span> /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum <span class="token function">install</span> <span class="token parameter variable">-y</span> <span class="token function">wget</span> <span class="token function">curl</span> ncdu yum remove linux-firmware NetworkManager mariadb-libs NetworkManager alsa-lib centos-logos.noarch yum list installed <span class="token operator">|</span> <span class="token function">grep</span> firmware <span class="token operator">|</span> <span class="token function">xargs</span> yum remove <span class="token parameter variable">-y</span> |
3. 清理日志和缓存
|
1 2 3 |
yum clean all <span class="token function">rm</span> <span class="token parameter variable">-rf</span> /var/cache |
4. 清理不用的文件
|
1 2 3 4 5 6 7 8 9 10 |
<span class="token comment"># 精简一下 local-archive 文件</span> localedef --list-archive <span class="token operator">|</span> <span class="token function">grep</span> <span class="token parameter variable">-v</span> zh <span class="token operator">|</span> <span class="token function">grep</span> <span class="token parameter variable">-v</span> us <span class="token operator">|</span> <span class="token function">grep</span> <span class="token parameter variable">-v</span> en <span class="token operator">|</span> <span class="token function">grep</span> <span class="token parameter variable">-v</span> cn <span class="token operator">|</span> <span class="token function">xargs</span> localedef --delete-from-archive <span class="token function">mv</span> /usr/lib/locale/locale-archive /usr/lib/locale/locale-archive.tmpl build-locale-archive <span class="token function">rm</span> <span class="token parameter variable">-rf</span> /usr/share/doc <span class="token builtin class-name">cd</span> /usr/share/locale <span class="token comment"># 下面这条命令一定要在 /usr/share/locale 目录下执行</span> <span class="token function">ls</span> <span class="token operator">|</span> <span class="token function">grep</span> <span class="token parameter variable">-v</span> zh <span class="token operator">|</span> <span class="token function">grep</span> <span class="token parameter variable">-v</span> en <span class="token operator">|</span> <span class="token function">grep</span> <span class="token parameter variable">-v</span> us <span class="token operator">|</span> <span class="token function">grep</span> <span class="token parameter variable">-v</span> @ <span class="token operator">|</span> <span class="token function">grep</span> <span class="token parameter variable">-v</span> <span class="token builtin class-name">local</span> <span class="token operator">|</span> <span class="token function">xargs</span> <span class="token function">rm</span> <span class="token parameter variable">-rf</span> <span class="token function">rm</span> <span class="token parameter variable">-rf</span> /usr/share/backgrounds |
5. 置零剩余空间
直接使用 dd 暴力清零就行啦 dd if=/dev/zero of=/zero bs=4M || rm -rf /zero
最后看一下磁盘空间,占用不到 700M ,还是可以的哈
|
1 2 3 4 5 6 7 8 9 10 11 |
╭─root@centos ~ ╰─<span class="token comment"># df -h</span> Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 29G 594M 27G <span class="token number">3</span>% / devtmpfs <span class="token number">1</span>.9G <span class="token number">0</span> <span class="token number">1</span>.9G <span class="token number">0</span>% /dev tmpfs <span class="token number">1</span>.9G <span class="token number">0</span> <span class="token number">1</span>.9G <span class="token number">0</span>% /dev/shm tmpfs <span class="token number">1</span>.9G <span class="token number">9</span>.3M <span class="token number">1</span>.9G <span class="token number">1</span>% /run tmpfs <span class="token number">1</span>.9G <span class="token number">0</span> <span class="token number">1</span>.9G <span class="token number">0</span>% /sys/fs/cgroup /dev/sda1 488M 113M 340M <span class="token number">25</span>% /boot tmpfs 378M <span class="token number">0</span> 378M <span class="token number">0</span>% /run/user/0 |
6. 导出 OVA 虚拟机模板
|
1 |
348M Sep <span class="token number">1</span> 09:00 disk-1.vmdk |
最后导出的虚拟机模板大小不到 350M
4. Alpine 3.10
Alpine 虚拟机本来就很精简啦,其实不用搓也行
