印象中从某个 os 版本开始,似乎对于重复的文件只会存一份?相当于一个文件拷贝了多份,但底层存储还是只存了一份,其他的知识逻辑关联之类的。
不知是我记错了还是确实有这样的优化?
1
shanghai1943 OP |
2
Building 2021-09-08 13:28:24 +08:00 via iPhone 2
首先,定义什么是重复文件,Sandbox 还是会复制一份过去的。
|
3
chendy 2021-09-08 13:37:18 +08:00 1
不是对重复文件的优化,是实现了“写时复制”机制优化了复制操作
|
4
Damenly1 2021-09-08 13:40:09 +08:00 2
而且必须是 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% / |
5
WuSiYu 2021-09-08 18:26:00 +08:00
是存在的,但仅限于“复制时不会立即创建副本,直到一者发生更改”,这是 cow 文件系统的一个普遍特性
|
6
secondwtq 2021-09-08 23:45:21 +08:00
CoW 是 CoW,dedup 是 dedup 。
CoW 倒是不难做,dedup 不好搞,相当于你要不断扫描文件系统中所有的文件。ZFS 开 dedup 好像要好多内存来着。 |
7
WebKit 2021-09-09 01:13:14 +08:00 via Android
有吗?我记得是 iOS 上啊
|
8
clrss 2021-09-10 13:58:45 +08:00
|