FREENAS: Por que o comando mv não é instantâneo em um volume RAIDZ1?

14

Atualmente, estou 'reorganizando' a estrutura do arquivo em um volume RAIDZ1. Movendo diretórios de um conjunto de dados para outro, ambos contidos no mesmo volume.

SSH entrou na máquina e fez um bom antiquado:

mv * destino

Isso não deveria ser instantâneo? Entendo que está espalhado por três unidades, mas, ao mesmo tempo, os arquivos em si não precisam ser movidos - eu apenas esperava que eles ajustassem os ponteiros para esses arquivos e fossem, basicamente, instantâneos. Definitivamente não é. Eu tenho cerca de 500 G de dados para mover e ele está em execução há cerca de meia hora. oO

Por que não é quase instantâneo?

Especificações: CPU: Intel G3220
MB: Gigabyte GA-B85-HD3
MEM: Kingston
DDR3-1600 DISCO de 8 GB : 3x2 TB WD verde no volume RAIDZ1

Ryan
fonte
Tem algum instantâneo?
21414 MadHatter
Sem instantâneos, esta é uma instalação totalmente nova que eu configurei ontem e depois copiei os arquivos de uma unidade NTFS existente para este volume.
26714 Ryan

Respostas:

22

Você está pensando em coisas do nível errado, é tudo.

Se você mover um arquivo dentro dos limites de um único conjunto de dados do ZFS, ele reagirá da mesma forma que o esperado. Se você mover um arquivo dentro dos limites de um pool, mas entre conjuntos de dados, é uma mudança real. Sim, tecnicamente, os dados foram do ponto A ao ponto B e os dois pontos estão nos mesmos pratos - mas, da perspectiva do ZFS, ele mudou de endereço.

Os conjuntos de dados do ZFS são sistemas de arquivos separados. Sistemas de arquivos reais. Eles podem ter diferentes tamanhos de bloco, configurações de compactação, etc. Mover um arquivo entre dois sistemas de arquivos ZFS, mesmo no mesmo pool, é um movimento real - os bits são lidos e escritos novamente, em vez de apenas atualizar um ponteiro.

Funcionalmente, é aproximadamente análogo mover um arquivo entre dois sistemas de arquivos ext4 que são tecnicamente provenientes de 2 partições do mesmo disco rígido - os dois sistemas de arquivos, apesar de compartilharem o hardware subjacente, são logicamente diferentes e, portanto, nenhuma mudança de 'ponteiro' pode acontecer. mova fisicamente o arquivo, mesmo que ele esteja apenas copiando dados de um local para outro na mesma unidade subjacente.

Nex7
fonte