1
pupboss 2022-08-29 14:51:04 +08:00 2
我要是没记错的话。。创建虚拟机,可以选择一次性分配所有磁盘空间,和按照实际使用空间分配,好像跟 NTFS 没啥关系
|
2
ytll21 2022-08-29 14:51:52 +08:00 102
这个。。。槽点太多了,无从说起啊。。。
|
3
youshangdemajia 2022-08-29 14:51:56 +08:00 2
这个会不会是 .img 的功能?
|
4
ho121 2022-08-29 14:52:01 +08:00 2
这应该是 sparse file 吧,很多文件系统都有类似的。
|
5
tool2d OP |
6
killeder 2022-08-29 14:53:40 +08:00 via Android
你创建个 1T 的压缩率更高
|
7
kkocdko 2022-08-29 14:57:44 +08:00 1
NTFS 特有么。。。你是拿什么来对比的呢,是拿着 FAT 来对比的吧。
|
8
microxiaoxiao 2022-08-29 14:59:57 +08:00
这也不是它独有的吧 ext 系列是不是有个空洞文件的概念
|
9
debuggerx 2022-08-29 15:00:16 +08:00 4
"大多数现代的文件系统支持稀疏文件,包括大多数 Unix 变种和 NTFS 。"
|
10
tool2d OP |
11
weak 2022-08-29 15:00:39 +08:00 via iPhone
虚拟的 120G 是虚假的 120G 动态磁盘 用多少占多少,虚拟机里面看的是 120G 而已
|
12
zcybupt2016 2022-08-29 15:05:54 +08:00 7
虚拟机的磁盘是动态分配的...😓
|
13
DefoliationM 2022-08-29 15:07:09 +08:00
qemu qcow2 也有😅
|
14
liaohongxing 2022-08-29 15:09:12 +08:00
没听过哪种压缩算法能把 12G 压成 140M ,最好的 zstd 7z 都不行。
|
15
wxf666 2022-08-29 15:17:04 +08:00
@tool2d 不算啥新特性吧。。
Linux 命令 fallocate 说,ext4 、xfs 等文件系统,不光支持稀疏文件,还支持任意位置直接插入 /删除数据(--collapse-range ,--insert-range ) 我没用过,看这介绍也挺神奇的 |
16
qsnow6 2022-08-29 15:27:34 +08:00
|
17
lifansama 2022-08-29 15:29:30 +08:00 via Android
@liaohongxing 被压缩的位置全是 0😂
|
18
mxT52CRuqR6o5 2022-08-29 15:31:27 +08:00
电驴客户端里就有稀疏文件相关的选项
|
19
YSMAN 2022-08-29 15:33:30 +08:00
动态的吧, 空间还没有占用 ps:xfs
|
20
mxT52CRuqR6o5 2022-08-29 15:36:02 +08:00 8
讲动态分配的,我 vmware 实践了一下,vmware 的动态分配可不会把还未分配的空间展示在宿主机磁盘文件的 size 上
前几楼都说了稀疏文件 sparse file 了,害搁这动态分配呢 |
21
ipwx 2022-08-29 15:36:07 +08:00
只是声称这个文件有 120G 但是没有分配存储块而已。
|
22
lululau 2022-08-29 15:37:19 +08:00 2
user in host in ~/tmp/hole-files via Rb v3.0.0
❯ dd if=/dev/zero bs=1 seek=9000000000000 count=1 of=hole.txt 输入了 1+0 块记录 输出了 1+0 块记录 1 字节已复制,0.00207946 s ,0.5 kB/s user in host in ~/tmp/hole-files via Rb v3.0.0 ❯ l 总计 4.0K -rw-r--r-- 1 user user 8.2T 8 月 29 日 15:35 hole.txt user in host in ~/tmp/hole-files via Rb v3.0.0 ❯ du -sh 8.0K . |
23
moult 2022-08-29 15:45:48 +08:00
@liaohongxing
12G 压成 140M 还是很好做到的 比如: dd if=/dev/zero of=test bs=1M count=10240 生成的 10G 的文件,普通的 ZIP 压缩压出来也就几十 M 但没有任何实际意义 |
24
aloxaf 2022-08-29 15:51:23 +08:00
|
25
GrayXu 2022-08-29 15:53:01 +08:00 3
@tool2d 谢谢 LZ 让我知道原来 exFAT 是不支持稀疏文件的。
就想知道除了跨平台场景,exFAT 到底是谁在用 |
26
nothingistrue 2022-08-29 15:56:51 +08:00
@pupboss #1
@weak #11 @zcybupt2016 #12 @YSMAN #19 @ipwx #21 Size 11.7 GB ,Size on disk 138MB 。12G 资源已经分配了,后面是磁盘系统实际占用 138MB ,这个跟虚拟磁盘无关。 |
27
mystrylw 2022-08-29 16:24:26 +08:00 1
exFAT 不但不支持稀松文件,文件簇默认还是 128kb ,记得有一次往移动硬盘里拷贝了一堆小文件,瞬间满了。。
|
28
yanqiyu 2022-08-29 17:18:35 +08:00
太正常的 trick 了,linux 上
truncate -s 100T test 直接就可以创建一个声称大小是 100 T 的文件(哪怕你的盘没那么大) 你要去 du 就会发现这个文件不占空间 @moult 这种很好压缩的文件配合透明压缩存储会很舒适,但这个和稀疏文件是两个领域了 |
29
libook 2022-08-29 17:39:29 +08:00
exFAT 是一个除了兼容性其他方面都比较拉的文件系统,其可靠性完全不被建议用在任何重要场景(基本也就 U 盘比较适合用了)。
现代主流的文件系统(包括 NTFS )都挺牛批的,要不然也不会流行到现在。 其实一些其他主流文件系统也都支持类似的透明压缩机制,当文件有连续空白空间存在的时候都可以实现题主在 NTFS 上的这种效果,当然他们更多价值在于一些非空白数据的压缩上面,用 Unix/Linux 的话可以了解一下 Btrfs 、ZFS 等。 |
30
ButcherHu 2022-08-29 18:48:42 +08:00
这个只是能看到稀疏文件的宣称大小吧
|
31
butanediol2d 2022-08-29 19:10:18 +08:00 via iPhone
@mystrylw 簇大小这个是格式化的时候定的吧,Windows 的格式化工具会根据分区大小决定簇大小,大硬盘 Windows 甚至会把簇大小加到 512kb 。
|
32
1423 2022-08-29 19:18:37 +08:00 via iPhone
支持 op ,楼上的大多应该根本没用过 ntfs 压缩
|
33
baleeny 2022-08-29 20:06:23 +08:00
我记得之前我在 mac 上装的 docker 也是这个样子。。有个显示 64GB 的 docker 文件,实际磁盘占用很少。
|
34
germain 2022-08-29 20:20:29 +08:00
在 SSD 上务必关掉 NTFS Compression ,任何对压缩的文件的写操作都是一个完全解压缩的过程,特别你这种 11G 到 100 多 M 的“压缩”, 会极度加速你 SSD 报废的过程。
|
35
proxychains 2022-08-29 20:21:23 +08:00
qemu-img info xx.qcow2.
你看到的只是他虚拟机的实际大小. 里面填点东西再看大小 |
36
zlowly 2022-08-29 20:23:47 +08:00 1
我也是最近才发现 Mysql/MariaDB 的 innodb 开启的 Page Compression ,也是用到了文件系统的这种 sparse file 特性,而象 ext3 和 ntfs 这样都老文件系统也一早有这种特性了。
|
37
akira 2022-08-29 21:03:55 +08:00
这个和 ntfs 没啥关系吧。。
你随便填点东西进这个虚拟机就知道了 |
38
Yangz 2022-08-29 21:12:33 +08:00
啊,我第一次知道,学到了 ww
|
39
beijiaoff 2022-08-29 21:24:34 +08:00
@germain 改写 NTFS 压缩文件不会傻到先把未压缩文件写磁盘上,然后再压缩完写入替换之前的。这个可以设计试验验证,简单搜了一下也是有的。
|
40
mmdsun 2022-08-29 21:32:39 +08:00
试了下手动开启:随便找个文件夹,右键属性,常规,高级,勾选压缩内容已节约磁盘空间。
不过压缩率没楼主这么高,应该是两个东西吧 ? 《 The NTFS File System File Compression 》 https://docs.microsoft.com/en-us/windows/win32/fileio/file-compression-and-decompression |
41
mmdsun 2022-08-29 21:36:30 +08:00
|
42
Huelse 2022-08-29 22:39:46 +08:00
@akira #37 这个就是 NTFS 的技术之一 https://docs.microsoft.com/en-us/windows/win32/fileio/sparse-files
|
43
nanmu42 2022-08-29 22:40:26 +08:00 via iPhone
学到了,谢谢。
|
44
deorth 2022-08-29 23:08:29 +08:00 via Android
建议换 ZFS
|
45
vanton 2022-08-30 01:50:03 +08:00
不想多说什么了,简直无话可说😓😓
|
46
mayli 2022-08-30 03:19:55 +08:00
V2ex 应该添加标签过滤器功能
添加个 菜鸡 标签,现在贴吧化严重… |
47
yuzo555 2022-08-30 03:32:23 +08:00 3
2 楼的回复收到那么多感谢,有点无话可说...
楼上但凡说虚拟机动态分配的,你们有没有认真看楼主发的图片呢? Size 和 Size on disk 区别这么明显没看到吗? |
48
efaun 2022-08-30 06:33:27 +08:00
槽点太多 +1
|
49
huangmingyou 2022-08-30 07:12:17 +08:00
dd if=/dev/zero of=10T bs=1 count=1 seek=1024000000 也可以弄一个声称 10T 的文件,然后不占用空间。
|
50
HeyWeGo 2022-08-30 08:53:49 +08:00
老哥最近出镜率有点高啊,都是硬件相关的帖子
|
51
AirTag 2022-08-30 09:03:30 +08:00 1
这么多人说是虚拟机的扩展分配功能.
没看到截图里的 Size 和 Size on disk 么 |
52
shakoon 2022-08-30 09:14:58 +08:00
我前几年有台 WinSvr 的服务器,上面跑的 DB2 数据库,也是用了 NTFS 的压缩,2T 的磁盘实际存储了进 6T 的数据。
还有一个经验就是,对于文件超过 10GB 的非压缩文件,如果更改为压缩后,有较大概率在压缩过程中报错,然后文件处于“部分压缩”状态,虽然也能用,但是没有节约到预期的空间。另外压缩时尽量关闭所有可能读写到要压缩文件的程序。 |
53
sampeng 2022-08-30 09:54:51 +08:00
这么大压缩比例,如果能做到任意文件大小都能这么高的压缩比例。。。。。。商业价值比比尔盖茨还要大。想想任意真 4k 电影 2-30 个 G ,只要 100M 就能传输完,我的天。视听领域翻天覆地的变化。
再想想游戏领域,10Mb 的画面只需要 90k 的带宽就能完成。虚拟现实指日可待 所以,他这个算法是<硅谷>里面主角那个用撸 x 的灵感制造出来的吗? |
54
tpxcer 2022-08-30 10:22:25 +08:00
只能说你里面没多少东西
|
55
levywang 2022-08-30 10:24:50 +08:00
槽点太多,手动狗头
|
56
Motionall 2022-08-30 11:28:36 +08:00 1
|
57
nutting 2022-08-30 13:03:13 +08:00 via iPhone
违反信息论
|
58
tool2d OP @Motionall
@sampeng @nutting https://docs.microsoft.com/zh-cn/windows/win32/fileio/sparse-files-and-disk-quota 这是微软官方的功能,别搞得我好像无中生有。大概只有 0.001%的软件会用到的专用文件 WinAPI ,你们没听过也正常。 |
59
Zepp 2022-08-30 13:22:53 +08:00 via Android
我有一计,可授予楼主:把 NTFS 换成 APFS ,保准回复褒贬反转。
正经回答版:认真看看楼主贴出来的图,是文件管理器的文件属性显示大小 12G ,而不是在虚拟机软件里看到 12G ,你们再仔细想想? |
60
debuggerx 2022-08-30 13:58:10 +08:00
https://developer.apple.com/documentation/foundation/file_system/about_apple_file_system#2990507
https://wiki.archlinux.org/title/sparse_file NTFS 支持稀疏文件 √ 这是 NTFS 特有技能 × NTFS 那么强 ??? |
62
dog82 2022-08-30 14:34:07 +08:00
感觉按需扩容,跟 ntfs 没关系
|
64
ipwx 2022-08-30 15:07:30 +08:00
@nothingistrue "Size 11.7 GB ,Size on disk 138MB 。12G 资源已经分配了,后面是磁盘系统实际占用 138MB ,这个跟虚拟磁盘无关。"
---- 对不起真的和虚拟磁盘有关。 香农老爷子已经明确告诉你了,信息的压缩比是有极限的。12G=>138MB ,显然大部分数据位都是 0 ,所以才能把那部分 0 的位置给压缩出来。这恰恰是虚拟磁盘才会有的特性。 @tool2d 这部分评论也适用于楼主。不信楼主你在虚拟系统里面随便放个 10GB 的视频文件再删掉,然后你再看看 NTFS 能给你压缩到多大。 ---- 从这个意义上,“它只是声称 12G” 一点毛病都没有。不论是 NTFS 层面声称 12G (但不占用),或者预留出 12G (占用)。反正真正原因是没有写入非 0 数据所以才看上去有这么牛逼的压缩比。 |
65
debuggerx 2022-08-30 15:12:34 +08:00
|
66
tool2d OP @ipwx “你在虚拟系统里面随便放个 10GB 的视频文件再删掉,然后你再看看 NTFS 能给你压缩到多大。”
肯定就是 10G ,这点还是清楚的。以前虚拟机的方法都是按需分配,用多少容量分配多少。现在是先分配,然后磁盘上全是洞洞,就感觉很有意思。 |
67
nothingistrue 2022-08-30 15:20:29 +08:00 1
@ipwx #64 你为何对 Size 这么大误解,文件的 Size 就是在文件系统上的已经申请出来的大小。预定义但没申请的磁盘,这个是只能程序自己保留的,这也不是虚拟磁盘的特性,任何一个程序都能这么干。
|
68
tool2d OP @debuggerx NTFS 是有专用稀疏文件 api ,而 linux 在 EXT2 之前也就只有一个 inode ,都要手工 hack 。严格意义上 EXT3 开始正式导入 API 。
我去 github 搜了一下,SEEK_HOLE 是很后面才正式加入的。 |
69
nothingistrue 2022-08-30 15:32:59 +08:00
@ipwx #64 扇自己一巴掌,Size on disk 才是磁盘占用空间。但是这个 12 G ,仍然是 NTFS 文件系统的事。
|
70
qsnow6 2022-08-30 15:40:12 +08:00
所谓的动态分配和用 0 填充不就是一个意思吗?不然能维持这么高的压缩比?没必要杠
|
71
nothingistrue 2022-08-30 15:42:26 +08:00
@tool2d Hyper-V 的 VHDX 动态磁盘,应该有助于区分虚拟磁盘的动态分配,跟 NTFS 文件系统的稀疏文件。如果你有 Hyper-V 的话,创建一个 VHDX 动态虚拟磁盘,然后把虚拟机内磁盘大小、宿主机上文件的 Size 、宿主机上文件的 Size on disk 都列出来,应该就能终结此贴的争论了。
|
72
mxT52CRuqR6o5 2022-08-30 15:54:12 +08:00 via Android
@nothingistrue 一个需要文件系统提供能力,另一个完全不需要文件系统提供什么能力,完全靠自己的业务代码就能实现
|
73
ipwx 2022-08-30 15:54:22 +08:00
?好怪,我不知道 @nothingistrue 一本正经地想要纠正我啥。
按照这个形式,这个案例确实是声称了文件有 12G ,确实没有分配物理的存储块啊?不管是 NTFS 层面的“压缩”手段,还是 NTFS 的稀疏文件,还是 Linux 啥神奇 Hack ,不都是实现这个效果的某种手段嘛。 我也没有深入各个文件系统不同的实现方式, |
74
mxT52CRuqR6o5 2022-08-30 15:57:22 +08:00
OP 的重点明显在于稀疏文件上
『哦,原来文件系统还会提供这种能力』 别搁那儿动态分配了 |
75
lengyuqu 2022-08-30 16:04:02 +08:00
ntfs 都要 30 年的古董文件系统了,互联网真是太神奇了
|
76
nothingistrue 2022-08-30 16:12:02 +08:00
@ipwx #73 文件系统跟虚拟磁盘动态分配,是两码事。Size 12G ,Size on disk 137M ,这是文件系统干的事,不是虚拟磁盘动态分配干的事。我只是说出这些事实而已。
|
77
ipwx 2022-08-30 16:29:18 +08:00
@nothingistrue ?我一开始就没说是虚拟磁盘干的事情啊。。。
“只是声称这个文件有 120G 但是没有分配存储块而已。”——虽然笔误写成了 120G 。我这里说的是操作系统没分配(物理)存储块,这有问题吗? |
78
lhhtyid1 2022-08-30 18:13:12 +08:00 via Android
@youshangdemajia 不可能,绝不可能🐶
|
79
chxf 2022-08-30 20:52:20 +08:00
问题不会答,只会看热闹了。。。。
|
80
beyondex 2022-08-30 21:09:43 +08:00
NTFS 还有一个 MFT / USN 特性,这也是 Everything 能对 NTFS 磁盘实现全屏秒搜的原因。
|
82
nothingistrue 2022-08-31 00:07:52 +08:00
家里的 VHDX 虚拟磁盘,动态扩充类型,最大大小即虚拟机中看到的大小 127GB ,当前文件大小 77.29GB 。而在宿主机的文件属性上,大小和占用空间均为 77.2GB 。
终结吧 |
84
tuimaochang 2022-08-31 01:17:56 +08:00
你说南山上的猴子,他说勾子上的瘤子
|
85
windyboy 2022-08-31 08:42:51 +08:00
借宝地问个题外话
MS 更新文件系统的可能性还有多少?感觉 windows 世界不太可能推出类似 ZFS 的文件系统了吧 |
86
litguy 2022-08-31 08:57:37 +08:00
@windyboy ZFS for windows 今年就要 release 了啊,openZFS 3.0 今年重大更新的 feature
|
89
qrobot 2022-08-31 10:34:43 +08:00
@sampeng 我也说的是真的,4k 的电影本身传输的时候就经过算法压缩了, 例如 MPEG-4 编码等等。 压缩后才只要 2-30G
|
90
zhanggang807 2022-08-31 10:35:47 +08:00
说个事儿,相反的 docker 有个文件占的特别大,但实际并没有那么大
|
91
sampeng 2022-08-31 10:40:15 +08:00
@qrobot 2-30G 是的。。我刚看成 2-3G 了。。。。
2-30G 。如果真有 100 倍压缩算法存在。想想就刺激 |
92
ytmsdy 2022-08-31 11:20:38 +08:00
当年 xcha 用矿池挖的时候,就有人利用这个特性。就写入一个文件头,文件的其他内容都是 0 ,然后一块 500G 的硬盘能搞出几十 T 的 xcha 盘,活生生从矿池里面薅了好多羊毛,最多的一个人伪装了 5P 还是 50P 的文件。
|
94
Yinghuo 2022-08-31 15:41:06 +08:00
精简模式。。。。。。
|