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
Respostas:
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.
fonte