MacOS 对于重复文件是否有存储上的优化

2021-09-08 12:32:31 +08:00
 shanghai1943

印象中从某个 os 版本开始,似乎对于重复的文件只会存一份?相当于一个文件拷贝了多份,但底层存储还是只存了一份,其他的知识逻辑关联之类的。

不知是我记错了还是确实有这样的优化?

2224 次点击
所在节点    macOS
8 条回复
shanghai1943
2021-09-08 12:38:00 +08:00
网上找到了一篇文章,看起来只有在进行 [复制] 操作的时候才有的优化?
Building
2021-09-08 13:28:24 +08:00
首先,定义什么是重复文件,Sandbox 还是会复制一份过去的。
chendy
2021-09-08 13:37:18 +08:00
不是对重复文件的优化,是实现了“写时复制”机制优化了复制操作
Damenly1
2021-09-08 13:40:09 +08:00
而且必须是 cp -c $src $dst 。macos 应该也提供了像 linux FICLONERANGE 这样 syscall,只有调用这个就行。
比如:


$df -h
/dev/disk3s5s1 221Gi 14Gi 38Gi 28% 553781 2312235219 0% /

$ls -lh 01
-rw-r--r--@ 1 damenly staff 1.5G Sep 1 18:48 01.mp4

$cp 1 2
/dev/disk3s5s1 221Gi 14Gi 37Gi 29% 553781 2312235219 0% /

$cp -c 1 3
/dev/disk3s5s1 221Gi 14Gi 37Gi(76675184) 29% 553781 2312235219 0% /

$dd if=/dev/zero of=03 bs=4k count=131072 conv=sync
131072+0 records in
131072+0 records out
536870912 bytes transferred in 0.304234 secs (1764664248 bytes/sec)

$df
/dev/disk3s5s1 462557800 29943296 75626360 29% 553781 2312235219 0% /
WuSiYu
2021-09-08 18:26:00 +08:00
是存在的,但仅限于“复制时不会立即创建副本,直到一者发生更改”,这是 cow 文件系统的一个普遍特性
secondwtq
2021-09-08 23:45:21 +08:00
CoW 是 CoW,dedup 是 dedup 。
CoW 倒是不难做,dedup 不好搞,相当于你要不断扫描文件系统中所有的文件。ZFS 开 dedup 好像要好多内存来着。
WebKit
2021-09-09 01:13:14 +08:00
有吗?我记得是 iOS 上啊
clrss
2021-09-10 13:58:45 +08:00
@secondwtq 正解.

@shanghai1943 如果要 dedup 的话, 有第三方软件.

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

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

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

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

© 2021 V2EX