FREENAS: ¿Por qué el comando mv no es instantáneo dentro de un volumen RAIDZ1?

14

Actualmente estoy 'reorganizando' la estructura de archivos dentro de un volumen RAIDZ1. Mover directorios de un conjunto de datos a otro, que están contenidos en el mismo volumen.

SSH'ed en la máquina e hizo un buen anticuado:

mv * destino

¿No debería ser esto instantáneo? Entiendo que está distribuido en tres unidades, pero al mismo tiempo, los archivos en sí mismos no necesitan moverse, solo esperaba que modificara los punteros de estos archivos y que fuera, básicamente, instantáneo. Definitivamente no lo es. Tengo alrededor de 500G de datos para mover y se ha estado ejecutando durante aproximadamente media hora ahora. oO

¿Por qué no es casi instantáneo?

Especificaciones: CPU: Intel G3220
MB: Gigabyte GA-B85-HD3
MEM: Kingston DDR3-1600 8GB
DISK: 3x2TB WD Green en volumen RAIDZ1

Ryan
fuente
¿Tienes alguna instantánea?
MadHatter
Sin instantáneas, esta es una instalación completamente nueva que configuré ayer y luego copié los archivos de una unidad NTFS existente a este volumen.
Ryan

Respuestas:

22

Estás pensando en cosas desde el nivel equivocado, eso es todo.

Si mueve un archivo dentro de los límites de un único conjunto de datos ZFS, reaccionará de manera similar a lo que espera. Si mueve un archivo dentro de los límites de un grupo, pero entre conjuntos de datos, es un movimiento real. Sí, técnicamente los datos pasaron del punto A al punto B y ambos puntos están en los mismos platos, pero desde la perspectiva de ZFS, movió casas.

Los conjuntos de datos ZFS son sistemas de archivos separados. Sistemas de archivos reales. Pueden tener diferentes tamaños de bloque, configuraciones de compresión, etc. Mover un archivo entre dos sistemas de archivos ZFS, incluso en el mismo grupo, es un movimiento real: los bits se leen y luego se vuelven a escribir, en lugar de simplemente actualizar un puntero.

Funcionalmente es más o menos análogo a mover un archivo entre dos sistemas de archivos ext4 que técnicamente provienen de 2 particiones del mismo disco duro: los dos sistemas de archivos, a pesar de compartir hardware subyacente, son lógicamente dispares y, por lo tanto, no puede ocurrir un cambio de 'puntero', debe mover físicamente el archivo, a pesar de que en realidad solo está copiando datos de una ubicación a otra en la misma unidad subyacente.

Nex7
fuente