作者Ducklover (Not Here Anymore)
看板Storage_Zone
标题Re: [请益] NAS 快照 "保留目的端已备份档案"
时间Sat Oct 17 02:23:09 2020
※ 引述《americ (americ)》之铭言:
: 关於快照备份 我的理解为(不知正不正确)
: 1.新增加的档案会实际产生
: 2.已存在的档案 只会建立link
: 在 不勾选"保留目的端已备份档案" 的状态下:
: 假如昨天晚上第一次备份
: 备份了abcde五个文件档
: 今天早上我操作文件时
: 把cde删除
: 今天晚上执行快照备份时(差异备份)
: 它是会去全备份那边 把cde实际的档案删掉吗?
: 因为如果是把cde实际档案删掉
: 那不就没办法复原回去第一天晚上abcde的状态了?
: 所以我在想
: 或者他是abcde实际档案仍保留
: 但在今天晚上备份时
: 是产生cde文件 "负的link" ?
: 因为这样若要复原 就可以回到第一天abcde晚上的状态
: 先谢谢回覆!
你选的快照模型比较难解释,我想这样比喻:
因为Synology的快照是以共享资料夹为单位,所以你就想像每个资料夹都是一本清单,上面有一笔笔的记录(metadata),这些记录是记载档案内容放在空间里的某处,每个档案都有自己的记录和实际存放的内容。 所以你的那些档案操作就是在更新这本清单上的记录,和更新实际档案存放处的内容。
你要理解快照的话,你就想像是有台印很快的影印机,在你拍快照时,很快速的把目前在使用的清单给印了一份(清单就像书的目录,相对少,印很快),上面的记录就是在该时间点这个目录里有的档案和它们的相关资讯(请注意,档案内容本身是没在这清单上的哦,上面只有档案内容存在哪的资讯),然後这份清单就保存下来了。
你後续如果有删除档案或新增、修改等等更新记录的操作,是在原本的清单上接着操作的,不会影响到快照那份清单。
当然,相对的,这些快照清单上登记有案的所有档案,它们”内容”的部分,就会全部不能有任何更动,如果要更动(修改档案之类)的话,只能去找个新的位置存(俗称CoW, copy on write),然後後续记录就改指到新的存放位置。
(如果是新增档案,那本来就没有的,存在一个新地方,很正常。)
如果是删除档案,那就是在目前的清单上,把档案对应的记录删除就好了。你删除目前清单上的记录,快照那份保存的清单上还是有该档案的记录及对应存放的位置,当你要从该快照还原时,还是可以依快照清单上的所有记录,按图索骥,找到档案的。
BTRFS本身有管理的机制,会去登记档案存放的内容是不是还有人(快照清单)记录到这块,如果有的话,内容就都保留且不能修改。唯有当没有任何一份清单要这个档案内容时(counter=0),才会把它清空,变回可使用空间。
大概解释这个样子,希望能解答你的问题
--
人生不过一个PUB 哭笑挤在一起孤单
未来长不过一首歌 爱恨都有唱不上去的最高音
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.160.85.202 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Storage_Zone/M.1602872593.A.34E.html
1F:推 americ : 请问, 若第一天我先从电脑把abcde五个档案拷贝进NAS 10/17 03:22
2F:→ americ : 然後第二天我拍快照, 此时abcde的个别counter=1, 10/17 03:22
3F:→ americ : 然後第三天, 我把第二天的快照删除, 10/17 03:22
4F:→ americ : 这时abcde的个别counter=0对吗, 10/17 03:22
5F:→ americ : 可是这五个档案应该都还是都还在对吗? 10/17 03:22
6F:→ americ : 那若我第三天改成, 修改e档案, 然後快照, 10/17 03:23
7F:→ americ : 此时会出现abcdee'六个档案, 10/17 03:23
8F:→ americ : 然後abcd的个别counter=2 (e的counter=多少呢?) 10/17 03:23
9F:→ americ : e'的counter=1, 然後第四天我把第三天的快照删掉, 10/17 03:23
10F:→ americ : 此时e'的counter=0且e'这个档案也会真正被删除对吗? 10/17 03:24
11F:→ americ : 「後续如果有删除...是在原本的清单上接着操作的」 10/17 03:24
12F:→ americ : "原本的清单"是指最新的快照清单对吗? 10/17 03:24
13F:→ Ducklover : 在档案存进去时,counter就是1了,照第一次快照时, 10/17 08:21
14F:→ Ducklover : counter是2,每多一次快照,counter就会+1,删快照 10/17 08:21
15F:→ Ducklover : 或是在现在使用的清单上删该档案档案,counter就会- 10/17 08:21
16F:→ Ducklover : 1 10/17 08:21
17F:→ Ducklover : “原本的清单”,指的就是从一开始就使用的那份(建 10/17 08:26
18F:→ Ducklover : 立该目录时的那份),这份会一直保持在”最新状态” 10/17 08:26
19F:→ Ducklover : (相对於快照用的清单是保持在”当时状态”),所以原 10/17 08:26
20F:→ Ducklover : 本的清单(建立时间而言)其实就是最新的(更新状态而 10/17 08:26
21F:→ Ducklover : 言) 10/17 08:26
22F:→ F04E : 你回文的内容KevinR在上一篇的推文中都解释过了 10/17 08:27
23F:→ F04E : 结果他看完你的回文後还在那边abcde 10/17 08:27
24F:→ tomsawyer : 这东西不是算档案的吧 算block的吧 10/17 11:04
25F:推 americ : 谢谢! 原来一开始存进档案时counter就会是1了! 10/17 17:13
26F:→ americ : 那counter可以说是各档案独立算, 对吗? 10/17 17:13
27F:→ americ : (在此假设每一个档案都只占一个区块的话) 10/17 17:13
28F:→ Ducklover : 给a大: 简化的来说每区块(存内容的那边)独立计算cou 10/17 20:05
29F:→ Ducklover : nter数量,当然实际上每档案可能涉及不只一个区块, 10/17 20:05
30F:→ Ducklover : 也有的是inline(很小的档不另存区块,直接在metadat 10/17 20:05
31F:→ Ducklover : a存内容),这个就更深入了不在这探讨,主要是你能简 10/17 20:05
32F:→ Ducklover : 单理解就行 10/17 20:05
33F:→ Ducklover : 给t大: 当然因为简单解释给a,没有用extent那些来解 10/17 20:07
34F:→ Ducklover : 释,以能理解为主 ;-) 10/17 20:07
35F:推 americ : 谢谢D大的回覆!!!~ 我对快照应该已大致了解! 谢谢!! 10/17 20:29