Debian12 net install 最小化安装的体积是多大,为什么我的到了 6GB? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Apol1oBelvedere
V2EX    Linux

Debian12 net install 最小化安装的体积是多大,为什么我的到了 6GB?

  •  
  •   Apol1oBelvedere 2023-08-28 15:54:46 +08:00 2840 次点击
    这是一个创建于 850 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Debian12 net install 最小化安装的体积是多大,仅安装 basic module 和 ssh server ,不安装任何 UI 组件和 web server 。在 Hyper-V 下测试虚拟机文件夹总大小,我的是 6GB ,但是同样之前测试 Debian 11 是 2GB ,差别在哪如何消除?

    9 条回复    2023-09-08 09:10:44 +08:00
    Jirajine
        1
    Jirajine  
       2023-08-28 16:09:26 +08:00 via Android
    盲猜是不是自动创建了 swap 分区。
    追求小体积可以用 alpine ,更极端的可以用 openwrt ,整个系统裁剪压缩后可以做到十几 M 。
    yinmin
        2
    yinmin  
       2023-08-28 16:12:00 +08:00
    在 linux 下使用 df -h 看一下实际占用量,如果与 vhdx 文件差别很大,可以参考以下文章优化 vhdx 的参数

    https://learn.microsoft.com/zh-cn/windows-server/virtualization/hyper-v/best-practices-for-running-linux-on-hyper-v
    libook
        3
    libook  
       2023-08-28 16:28:02 +08:00
    在虚拟机里用 df 看一下实际占用空间多大,如果是 6G 就说明可能安装过程中产生了很多缓存文件,可以用 apt clean 等指令清除一下,或者使用 du 看一下具体是哪个目录大,再看看里面究竟是啥、有没有用。
    如果实际占用是 2G ,但虚拟磁盘文件占用 6G ,就可能是如下原因。

    虚拟机的虚拟磁盘有两种分配空间的方式,一种是直接足量分配空间,另一种是随着写入数据增多动态扩大到设定的存储空间。题主说虚拟磁盘文件的大小会变化,那么就假设你用的是后者。

    动态分配的方案里,看你文件系统是什么行为。
    首先很多文件系统上,删除数据不是真的删除了数据,而是将数据空间标记为空闲,未来可以直接覆盖写入这个空间,所以你在虚拟磁盘里写入 1GB ,再删除这 1GB 的数据,你的虚拟磁盘的大小就会维持 1GB 不变,不会因为你在里面删除了数据就自动缩小到 0 。
    其次你的文件系统是怎么覆盖数据的,比如你向虚拟硬盘里写入 1GB 的数据,删除这 1GB 的数据,再写入 1GB 数据的时候是在原来的存储块上覆盖写入,还是会另外开辟一块空间写入。如果是前者的话,写 1G 、删 1G 、再写 1G ,你的虚拟磁盘文件就还是 1G 大小;如果是后者的话,写 1G 、删 1G 、再写 1G ,你的虚拟磁盘文件就会变成 2G 大小。为了优化 SSD 的使用寿命,一些文件系统是必须启动 Trim 等维护任务才会实际释放空闲空间,或者会基于一些算法尽可能均匀使用所有存储单元,最终反映到虚拟磁盘文件上就是文件大小越来越大,直到到达你一开始设定的最大大小。

    大多虚拟机都提供了压缩虚拟磁盘文件大小的工具,但这些工具通常都要求你的虚拟磁盘内的数据尽可能聚集在文件头部,后面的空间都用 0 填充,理想状态下可以压缩到你虚拟磁盘内实际占用空间的大小。这个不同文件系统的预处理方式不一样,比如有的文件系统你就需要手动进行碎片整理,将所有数据都集中在磁盘头部,然后再使用 dd 或者 zerofree 将剩余空间用 0 填充。
    irrigate2554
        4
    irrigate2554  
       2023-08-28 19:20:31 +08:00
    刚才看了一下前面装的 KVM 虚拟机,主机磁盘 qcow2 文件 3G ,里面 df 磁盘占用 2.6G
    jqtmviyu
        5
    jqtmviyu  
       2023-08-29 06:53:51 +08:00
    看了下 macos 下 pd 虚拟机, 装了 git vim docker zsh, 大小是 4G.
    msg7086
        6
    msg7086  
       2023-08-29 06:54:59 +08:00
    你测的是虚拟机磁盘大小,不是安装体积,这两个没有直接关系。

    Thin Provisioned 的虚拟机磁盘大小和非 0 块数量有关,如果你要压缩磁盘,需要先在磁盘内部 fstrim 或者 zerofree 向虚拟机报告不再使用的块,然后再在宿主机上取消对这些块的磁盘空间分配。
    Apol1oBelvedere
        7
    Apol1oBelvedere  
    OP
       2023-08-29 16:29:25 +08:00
    @xausky #4 @jqtmviyu #5
    @msg7086 #6 感谢极具方向性的指导。网络总结信息如下:
    1. https://viml.nchc.org.tw/compact-ubuntu-hyper-v-vm-vhd-file/ 小 Ubuntu 的 Hyper-V VM VHD 案(介绍了四大工具和实测结果)
    2. Microsoft 文章:Hyper-V thin provisioning at virtual and physical layers

    由于 Thin Provisioned 和 Optimize-VHD 不支持直接识别 Linux 文件系统,要手动操作。四大工具最方便的就是 fstrim 可以设备在线填充 0 。Debian 12 在 fstrim 后从 6.7GB 下降到 4.8G ,有效果。

    只要 df -h 空间与 vhdx 磁盘文件占用空间差距不大(小于 3GB ),就能接受了。
    busier
        8
    busier  
       2023-08-29 18:35:43 +08:00
    还想更小,就直接用 debootstrap 来搞!就像 arch 那样!
    tony1016
        9
    tony1016  
       2023-09-08 09:10:44 +08:00
    要小,自然是美妙的 alpine 了
    /div>
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4708 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 05:39 PVG 13:39 LAX 21:39 JFK 00:39
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86