2016-09-23 20 views
1

在啓用ZFS系統我有這些數據集和運行:下到/ mnt/mydataset, 設置1 mydataset下的/ mnt/mydataset /設置1和下 設置2到/ mnt/mydataset/SET2 。 /mnt/mydataset/existing下的常規目錄中也有現有數據。創建的ZFS數據集在現有數據

我很想將'現有'目錄改成數據集,以享受快照等zfs功能。當我創建數據集/ mnt/mydataset/existing時,它會隱藏現有數據。當我刪除新創建的數據集時,舊數據會重新出現(顯然,在其他數據上嘗試過)。

是否有添加數據集的方法,以便現有數據馬上包含?

顯而易見的解決方案似乎是先添加數據集,然後將現有數據複製到其中。然而,這些數據涉及一些監獄生產服務,我不願意阻止他們和監獄的運作。

+0

'/ mnt/mydataset/existing'的文件系統是什麼?如果它是[LVM商店(在Linux上)](http://tldp.org/HOWTO/LVM-HOWTO/snapshots_backup.html)或[UFS文件系統(在FreeBSD上)](https://www.freebsd.org /doc/handbook/snapshots.html),可以創建快照,在服務器的其他位置創建數據集,將文件從快照複製到新數據集,最後,將數據集裝入點重置爲舊裝入點。 –

回答

1

在ZFS文件系統(即您稱爲數據集)之間移動文件始終是完整副本,即使兩個文件系統都在同一個池中。這同樣適用於從文件系統複製到外部或從外部複製到文件系統。即時的唯一移動操作(如重命名)在同一個文件系統中。

雖然不幸總體來說,對於那些想要傳輸整個文件系統(而不僅僅是單個文件)的案例,這似乎適用於您的案例。它使用ZFS快照和增量發送/接收將文件系統的所有內容傳輸到新的文件系統,然後在完成(幾小時後)後傳輸自更改以來的數據(需要幾分鐘),然後數據因爲改變了(現在可能需要幾秒鐘),除非有一個非常小的延遲,否則直到你是最新的。然後,您關閉雙方的應用程序,以便不再發生任何變化,重新傳輸最後的差異(非常快),然後再次在目標端啓動應用程序。

這樣你仍然有停機時間,但它很短。缺點是你必須有額外的存儲空間。