寻求最小体积的服务器用 Linux 发行版,多个版本测试数据(Debian netins 及 Ubuntu Server 等)详见帖子内容。

2023-05-31 18:01:03 +08:00
 Apol1oBelvedere

寻求最小体积的服务器用 Linux 发行版,多个版本测试数据( Debian netins 及 Ubuntu Server 等)如下:

为什么 Hyper-V 安装 Debian 后一段时间关闭虚拟机,期间未安装任何软件,显示虚拟机合并中,之后虚拟机的 VHDX 文件增长到 36GB 是为什么?

3960 次点击
所在节点    Linux
37 条回复
ihciah
2023-05-31 21:08:38 +08:00
听起来是个 XY 问题。
如果为了降低虚拟硬盘空间占用的话,可以在虚拟机内部安装对应的辅助工具,有助于 VMM 感知真实硬盘空间占用,归还不必要的空间。
另一个做法是一开始分配较小的硬盘空间,当有需要时再挂载新的虚拟硬盘设备进去,然后 vm 内部用 btrfs 或 lvm 等做多设备空间聚合。
SaltyKitkat
2023-05-31 21:11:11 +08:00
文件系统透明压缩或许会对你有帮助
UFc8704I4Bv63gy2
2023-05-31 21:24:41 +08:00
4m linux core
haikea
2023-05-31 21:40:28 +08:00
@lovelylain 正解
choury
2023-05-31 21:43:24 +08:00
给你一个脚本,是我之前搞内核搞的打包一个自定义的 debian initramfs 的脚本,不过前提是你本地已经运行了一个 debian ,打包完之后 286M ,加上自己编译的 9M 的内核,就可以跑起来了
#!/bin/bash -e

rm -rf debian
mkdir -p cache
debootstrap --cache-dir=$PWD/cache --include=ssh stable debian http://mirrors.tencent.com/debian
chroot debian bash -c "echo root:root | chpasswd"

cat >> debian/etc/network/interfaces << EOF
# The primary network interface
auto eth0
allow-hotplug eth0
iface eth0 inet dhcp
EOF

echo "Linux-Box" > debian/etc/hostname
sed -i "/#PermitRootLogin/aPermitRootLogin yes" debian/etc/ssh/sshd_config

rm -rf initramfs
cd debian
find . | cpio -o -H newc -O ../initramfs
cwbsw
2023-05-31 21:43:50 +08:00
5G 的 Debian 大概率是安装说把桌面组件选上了。
pagxir
2023-05-31 22:35:54 +08:00
level@ThinkStation:~$ sudo du -csh --app ubuntu_18
[sudo] password for level:
817M ubuntu_18
817M total

这个是我开发用的整个编译环境大小,如果加上 kernel 也就 1.3G 左右吧。

如果是 ubuntu_22 基本安装也就 389M, 加上 kernel 不会超过 1G
level@ThinkStation:~$ zcat ubuntu_22.tar.gz |dd > /dev/null
759660+0 records in
759660+0 records out
388945920 bytes (389 MB, 371 MiB) copied, 4.29797 s, 90.5 MB/s
Andim
2023-05-31 22:46:41 +08:00
RHEL 就默认的最小安装,不特意精简,也就两三 G 大小

这里面还运行了两个 podman
jtshs256
2023-05-31 23:26:14 +08:00
如果虚拟机里跑的话可以考虑下 Photon OS ,模板也就两百多 M ,甚至已经是自带 docker 的了……不过默认安全策略比较严格,配置起来要稍微花点时间
tigren
2023-06-01 04:29:33 +08:00
求稳还是别用 Alpine , 可以搜下 Alpine DNS Issue 有前人踩过的坑
zed1018
2023-06-01 08:49:40 +08:00
debian 最小安装哪里要这么多,我才装的,还多余装了个 fail2ban 。

/dev/sda1 62G 1.9G 57G 4% /
LokiSharp
2023-06-01 09:45:25 +08:00
5G+ 的 Debian 是装了 GUI 和 Build Essential 吧 Emmmm ,装了这两个的发行版不可能小
a1274598858
2023-06-01 10:01:05 +08:00
试试 debian 的云镜像 https://mirror.accum.se/cdimage/cloud/
Apol1oBelvedere
2023-06-01 22:11:26 +08:00
@aru @ihciah @choury 经过测试是 Hyper-V 存在问题,网上也有人问过类似的问题,微软论坛有人说是 Hyper-V 开启了动态磁盘导致的(我测试时没开检查点),但是 Vmware 也开启了动态磁盘,没有暴涨这么多!
Hyper-V 这种暴涨问题如何解决呢?

=================
debian-11.7.0-amd64-netinst.iso VMware 断网安装:
df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 1006G 740M 955G 1% /
linux 内占用磁盘 740MB ,VMware 文件夹显示占用 4GB

---

Ubuntu Server 22 minimal VMware 最小化安装:
df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 1007G 4.3G 952G 1% /
linux 内占用磁盘 4.3G ,Vmware 文件夹显示占用 4.9GB

---

debian-11.7.0-amd64-netinst.iso Hyper-V 在线安装:
第一次安装好未关,Hyper-V 文件夹显示占用 4.5GB
关机后第二次启动显示“正在合并中”,产生一个检查点,合并好开机后体积直接涨到 22GB ,删除检查点后 19.5GB

Ubuntu Server 22 minimal Hyper-V 最小化安装:
df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 1006G 4.5G 951G 1% /
linux 内占用磁盘 4.5G ,Hyper-V 文件夹显示占用 19.5GB

OMV6 一个检查点没有建立,只安装了几个测试插件,升级了三次软件包现在
linux 内占用磁盘 6G ,Hyper-V 文件夹显示占用 16GB
Apol1oBelvedere
2023-06-02 00:14:57 +08:00
@aru @ihciah @choury 问题成功解决!由于通过图形界面创建 Hyper-V 虚拟机时 BlockSizeBytes 是 32MB ,导致虚拟机文件大小翻了约 32 倍(实际达不到 32 倍,按 I/O 数相关来暴涨的),PowerShell 执行 New-VHD 命令转换为 1MB 的块大小就行了。19.5GB 的 Debian 虚拟机转换后只有 2GB 。
Convert-VHD -Path 'D:\VirtualmSystem\Debian11.7.0net.vhdx' -DestinationPath 'D:\VirtualmSystem\Debian11.7.0netConvert.vhdx' -BlockSizeBytes 1mb

======
https://www.altaro.com/hyper-v/expansion-hyper-vs-dynamically-expanding-vhdx/
---
When the disk subsystem expands a VHDX, it does so by “blocks”. Blocks in this context are defined per VHDX. As you can see in the screenshot, this VHDX uses a block size of 33,554,432 bytes (32 megabytes). Therefore, each expansion event will grow the VHDX by a multiple of 33,554,432 bytes.


https://learn.microsoft.com/zh-cn/windows-server/virtualization/hyper-v/best-practices-for-running-linux-on-hyper-v
---
在动态 VHDX 文件上优化 Linux 文件系统
有些 Linux 文件系统可能会消耗大量的实际磁盘空间,即使文件系统大部分是空的。 要减少动态 VHDX 文件的实际磁盘空间使用量,请考虑以下建议:
创建 VHDX 时,在 PowerShell 中使用 1MB BlockSizeBytes (默认为 32MB ),例如:
PS > New-VHD -Path C:\MyVHDs\test.vhdx -SizeBytes 127GB -Dynamic -BlockSizeBytes 1MB
harrozze
2023-06-02 04:52:45 +08:00
@lovelylain #2 正解
harrozze
2023-06-02 04:59:09 +08:00
@Apol1oBelvedere #35 这是个技术贴

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/944626

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX