Как переместить файлы из одной файловой системы zfs в другую файловую систему zfs в том же пуле?

17

У меня есть две файловые системы в одном пуле zfs, /mnt/fs_aи /mnt/fs_b. Я хочу переместить около 1 ТБ данных из fs_aв fs_b. Но когда я:

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

к моему удивлению он начинает копировать файлы блок за блоком. Учитывая время, затрачиваемое на перемещение файла 2 ГБ, похоже, что для завершения этой операции потребуются дни массивного перебора.

Должен быть более умный и быстрый способ сделать это, верно?

Фред Гамильтон
источник

Ответы:

22

(это началось как комментарий, но стало слишком длинным, так что теперь ответ)

К сожалению, ответ «Нет». Нет более быстрого или умного способа сделать это.

Файловые системы ZFS (даже если они находятся в одном пуле) являются отдельными файловыми системами. Ни тот, mvни другой инструмент не могут просто перемещать указатели блоков или что-либо еще, чтобы включенные файлы были fs_aвключены fs_b.

(Кстати, несколько отформатированных разделов или томов LVM на одном диске или массиве raid также являются отдельными файловыми системами и предназначены mvдля их копирования и удаления)

Эта проблема поднималась несколько раз в течение многих лет (с некоторыми разговорами о создании инструмента, который делает то, что вы хотите), и, насколько я понимаю, главная трудность, которая помещает его в слишком сложную корзину, заключается в том, как обрабатывать снимки - если есть моментальные снимки fs_a, блоки будут в обеих файловых системах одновременно. То же самое относится и к файлам, которые имеют жесткие ссылки.

Я сам сталкивался с этим много раз (например, когда перемещал файлы между наборами данных, как вы, или когда мне нужно было преобразовать подкаталог в fs), и только что научился мириться с неудобствами. Это может быть основным пита.

если fs_bпусто или еще не существует , и вы хотите , чтобы переместить все содержимое fs_aдо fs_b(а не только некоторые или даже большинства файлов и каталогов) , которые можно использовать zfs renameдля переименования fs_aв fs_b. Я подозреваю, что это не имеет отношения к вашей ситуации, хотя.

По этому вопросу существует открытая проблема для ZFSOnLinux по адресу https://github.com/zfsonlinux/zfs/issues/2991.

Я не искал, но я ожидал, что исходный OpenZFS и даже Sun / Oracle ZFS, вероятно, имеют похожие отчеты об ошибках / запросы функций.

Кстати, см. Также /server/584693/freenas-why-isnt-mv-command-instant-within-a-raidz1-volume

саз
источник
3
Спасибо за тщательный ответ. Я ценю предложение переименовать, но, как вы подозреваете, у меня есть еще больше данных, которые я не хочу на b. По крайней мере, теперь я могу двигаться дальше и копировать файлы через буферный диск, чтобы, по крайней мере, устранить побои.
Фред Гамильтон