Jak przenieść pliki z jednego systemu plików ZFS do innego systemu plików ZFS w tej samej puli?

17

Mam dwa systemy plików w tej samej puli ZFS /mnt/fs_ai /mnt/fs_b. Chcę przenieść około 1 TB danych od fs_ado fs_b. Ale kiedy:

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

ku mojemu zaskoczeniu zaczyna się kopiowanie plików blok po bloku. Biorąc pod uwagę czas potrzebny na przeniesienie pliku 2 GB, wygląda na to, że ta operacja zajęłaby dni masowego thrashingu.

Musi istnieć znacznie mądrzejszy i szybszy sposób, aby to zrobić, prawda?

Fred Hamilton
źródło

Odpowiedzi:

22

(zaczęło się jako komentarz, ale stało się zbyt długie, więc teraz jest odpowiedzią)

Niestety odpowiedź brzmi „nie”. Nie ma na to szybszego ani mądrzejszego sposobu.

Systemy plików ZFS (nawet jeśli znajdują się w tej samej puli) są oddzielnymi systemami plików. Ani mv, ani jakiekolwiek inne narzędzie może po prostu przesunąć wskazówki blokowe lub cokolwiek tak, że pliki, które były na fs_ato teraz fs_b.

(BTW, wiele sformatowanych partycji lub woluminów LVM na tym samym dysku lub macierzy RAID to także osobne systemy plików i mvdla nich również kopiowanie i usuwanie)

Ten problem pojawiał się kilka razy na przestrzeni lat (z pewnym omówieniem tworzenia narzędzia do robienia tego, co chcesz) i, jak rozumiem, główną trudnością, która stawia go w zbyt trudnym koszyku, jest kwestia obsługi migawek - jeśli są migawki fs_a, bloki byłyby w obu systemach plików jednocześnie. To samo dotyczy plików z twardymi linkami.

Natknąłem się na to wiele razy (np. Podczas przenoszenia plików między zestawami danych, jak to robiłeś, lub gdy muszę przekonwertować podkatalog na fs) i właśnie nauczyłem się znosić niedogodności. Może to być poważna PITA.

jeśli fs_bjest pusta lub jeszcze nie istnieje i chcesz przenieść całą zawartość od fs_acelu fs_b(i nie tylko kilku lub nawet większość plików i katalogów), można użyć zfs renamedo zmiany nazwy fs_ana fs_b. Podejrzewam jednak, że nie ma to wpływu na twoją sytuację.

Problem dotyczy ZFSOnLinux pod adresem https://github.com/zfsonlinux/zfs/issues/2991

Nie szukałem, ale spodziewałbym się, że upstream OpenZFS, a nawet Sun / Oracle ZFS prawdopodobnie mają podobne zgłoszenia błędów / żądania funkcji.

BTW, patrz także /server/584693/freenas-why-isnt-mv-command-instant-within-a-raidz1-volume

cas
źródło
3
Dzięki za dokładną odpowiedź. Doceniam sugestię zmiany nazwy, ale jak podejrzewasz, mam jeszcze więcej danych, że nie chcę na b. Przynajmniej mogę teraz przejść dalej i skopiować pliki za pomocą dysku buforowego, aby przynajmniej wyeliminować przeładowanie.
Fred Hamilton