(это началось как комментарий, но стало слишком длинным, так что теперь ответ)
К сожалению, ответ «Нет». Нет более быстрого или умного способа сделать это.
Файловые системы 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