Назад | Перейти на главную страницу

ФРИНАС: Почему команда mv не выполняется мгновенно в томе RAIDZ1?

В настоящее время я «реорганизую» файловую структуру в томе RAIDZ1. Перемещение каталогов из одного набора данных в другой, которые находятся на одном томе.

SSH'ed в машину и сделал старомодное доброе:

mv * пункт назначения

Разве это не должно происходить мгновенно? Я понимаю, что он распределен по трем дискам, но в то же время сами файлы действительно не нужно перемещать - я просто ожидал, что он настроит указатели для этих файлов и будет, ну, в основном, мгновенно. Это определенно не так. Мне нужно переместить около 500 ГБ данных, и они уже работают около получаса. o.O

Почему это не моментально?

Технические характеристики: Процессор: Intel G3220
МБ: Gigabyte GA-B85-HD3
MEM: Kingston DDR3-1600 8 ГБ
ДИСК: 3x2 ТБ WD Green в томе RAIDZ1

Вы думаете о вещах с неправильного уровня, вот и все.

Если вы переместите файл в пределах одного набора данных ZFS, он отреагирует аналогично тому, что вы ожидаете. Если вы перемещаете файл в пределах пула, но между наборами данных, это настоящий переход. Да, технически данные просто перешли из точки A в точку B, и обе точки находятся на одних и тех же пластинах, но с точки зрения ZFS, это сдвинуло дома.

Наборы данных ZFS - это отдельные файловые системы. Реальные файловые системы. Они могут иметь разные размеры блоков, настройки сжатия и т. Д. Перемещение файла между двумя файловыми системами ZFS, даже в одном и том же пуле, - это настоящий ход: биты читаются, а затем записываются снова, в отличие от простого обновления указателя.

Функционально это примерно аналогично перемещению файла между двумя файловыми системами ext4, которые технически поступают из двух разделов одного и того же жесткого диска - две файловые системы, несмотря на совместное использование базового оборудования, логически несопоставимы, и поэтому никакое изменение `` указателя '' не может произойти, оно должно физически переместить файл, даже если на самом деле он только копирует данные из одного места в другое на том же базовом диске.