PTT推薦

Re: [請益] NAS 快照 "保留目的端已備份檔案"

看板Storage_Zone標題Re: [請益] NAS 快照 "保留目的端已備份檔案"作者
Ducklover
(Not Here Anymore)
時間推噓 3 推:3 噓:0 →:32

※ 引述《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留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.160.85.202 (臺灣)
PTT 網址

americ 10/17 03:22請問, 若第一天我先從電腦把abcde五個檔案拷貝進NAS

americ 10/17 03:22然後第二天我拍快照, 此時abcde的個別counter=1,

americ 10/17 03:22然後第三天, 我把第二天的快照刪除,

americ 10/17 03:22這時abcde的個別counter=0對嗎,

americ 10/17 03:22可是這五個檔案應該都還是都還在對嗎?

americ 10/17 03:23那若我第三天改成, 修改e檔案, 然後快照,

americ 10/17 03:23此時會出現abcdee'六個檔案,

americ 10/17 03:23然後abcd的個別counter=2 (e的counter=多少呢?)

americ 10/17 03:23e'的counter=1, 然後第四天我把第三天的快照刪掉,

americ 10/17 03:24此時e'的counter=0且e'這個檔案也會真正被刪除對嗎?

americ 10/17 03:24「後續如果有删除...是在原本的清單上接著操作的」

americ 10/17 03:24"原本的清單"是指最新的快照清單對嗎?

Ducklover 10/17 08:21在檔案存進去時,counter就是1了,照第一次快照時,

Ducklover 10/17 08:21counter是2,每多一次快照,counter就會+1,删快照

Ducklover 10/17 08:21或是在現在使用的清單上删該檔案檔案,counter就會-

Ducklover 10/17 08:211

Ducklover 10/17 08:26“原本的清單”,指的就是從一開始就使用的那份(建

Ducklover 10/17 08:26立該目錄時的那份),這份會一直保持在”最新狀態”

Ducklover 10/17 08:26(相對於快照用的清單是保持在”當時狀態”),所以原

Ducklover 10/17 08:26本的清單(建立時間而言)其實就是最新的(更新狀態而

Ducklover 10/17 08:26言)

F04E 10/17 08:27你回文的內容KevinR在上一篇的推文中都解釋過了

F04E 10/17 08:27結果他看完你的回文後還在那邊abcde

tomsawyer 10/17 11:04這東西不是算檔案的吧 算block的吧

americ 10/17 17:13謝謝! 原來一開始存進檔案時counter就會是1了!

americ 10/17 17:13那counter可以說是各檔案獨立算, 對嗎?

americ 10/17 17:13(在此假設每一個檔案都只佔一個區塊的話)

Ducklover 10/17 20:05給a大: 簡化的來說每區塊(存內容的那邊)獨立計算cou

Ducklover 10/17 20:05nter數量,當然實際上每檔案可能涉及不只一個區塊,

Ducklover 10/17 20:05也有的是inline(很小的檔不另存區塊,直接在metadat

Ducklover 10/17 20:05a存內容),這個就更深入了不在這探討,主要是你能簡

Ducklover 10/17 20:05單理解就行

Ducklover 10/17 20:07給t大: 當然因為簡單解釋給a,沒有用extent那些來解

Ducklover 10/17 20:07釋,以能理解為主 ;-)

americ 10/17 20:29謝謝D大的回覆!!!~ 我對快照應該已大致了解! 謝謝!!