Zfs

如何將文件從一個 zfs 文件系統移動到同一池中的不同 zfs 文件系統?

  • April 15, 2016

我在同一個 zfs 池中有兩個文件系統,/mnt/fs_a並且/mnt/fs_b. 我想將大約 1TB 的數據fs_afs_b. 但是當我:

mv /mnt/fs_a/mythtv_recordings /mnt/fs_b/

令我驚訝的是,它開始逐塊複製文件。考慮到移動一個 2GB 文件所花費的時間,看起來這個操作需要幾天的大規模顛簸才能完成。

必須有一種更智能、更快捷的方法來做到這一點,對吧?

(這開始是一個評論,但變得太長,所以現在是一個答案)

不幸的是,答案是“不”。沒有更快或更智能的方法來做到這一點。

ZFS 文件系統(即使它們在同一個池中)是獨立的文件系統。任何mv其他工具都不能移動塊指針或其他任何東西,以便fs_a現在打開的文件fs_b

(順便說一句,同一磁碟或 RAID 陣列上的多個格式化分區或 LVM 卷也是單獨的文件系統,並且也可以mv為它們進行複制和刪除)

多年來,這個問題已經出現了好幾次(有人談論創建一個工具來做你想做的事),據我所知,將它放在太難的籃子裡的主要困難是如何處理快照的問題- 如果有 的快照fs_a,則塊將同時位於兩個文件系統中。具有硬連結的文件也是如此。

我自己也遇到過很多次(例如,當你在數據集之間移動文件時,或者當我需要將子目錄轉換為 fs 時),並且剛剛學會忍受不便。它可以是一個主要的 PITA。

iffs_b為空或尚不存在,並且您想將 to 的全部內容移動fs_afs_b(而不僅僅是某些甚至大多數文件和目錄),您可以使用它zfs rename來重命名fs_afs_b. 不過,我懷疑這與您的情況無關。

在https://github.com/zfsonlinux/zfs/issues/2991上有一個關於 ZFSOnLinux 的未解決問題

我沒有搜尋過,但我希望上游OpenZFS 甚至 Sun/Oracle ZFS 可能有類似的錯誤報告/功能請求。

順便說一句,另請參閱https://serverfault.com/questions/584693/freenas-why-isnt-mv-command-instant-within-a-raidz1-volume

引用自:https://unix.stackexchange.com/questions/276600