É possível alterar o tamanho do setor de uma partição para o zfs raidz pool no linux?

9

Eu tenho migrado um pool zfs raidz no linux para novos discos através de dispositivos virtuais que eram arquivos esparsos. Eu usei partições nos discos, pois os discos têm tamanhos diferentes de 1,9T cada. O último disco a adicionar é um disco de 4 TB e eu o particionei como os outros com uma partição de 1,9 TB para adicionar ao pool. Está usando uma tabela de partição GPT. Quando tento substituir o último arquivo pela partição 1.9T no disco 4T, recebo o seguinte

zpool replace -f zfs_raid /zfs_jbod/zfs_raid/zfs.2 /dev/sdd1 
cannot replace /zfs_jbod/zfs_raid/zfs.2 with /dev/sdd1: devices have different sector alignment

Como posso alterar o tamanho do setor de partição para 512 como os outros, ou, se não for possível alterar os outros dispositivos de pool para 4024? Aparentemente, os tamanhos do setor lógico são todos 512

cat /sys/block/sdd/queue/hw_sector_size
Disk /dev/sdd: 4000.8 GB, 4000787030016 bytes, 7814037168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Como reparticionei o disco que continha o 4º dispositivo original com base em arquivo que estou tentando substituir, mas não funcionou, recriei o arquivo do dispositivo, de modo que ele está atualmente reestruturando isso.

saída de status do zpool:

NAME                            STATE     READ WRITE CKSUM
zfs_raid                        DEGRADED     0     0     0
  raidz1-0                      DEGRADED     0     0     0
    sda3                        ONLINE       0     0     0
    sdc2                        ONLINE       0     0     0
    sdb1                        ONLINE       0     0     0
    replacing-3                 OFFLINE      0     0     0
      /zfs_jbod/zfs_raid/zfs.2  OFFLINE      0     0     0
      /mnt/butter2/zfs.4        ONLINE       0     0     0  (resilvering)
barrymac
fonte
Em vez disso, você não pode fazer o zfs anexar o zfs_raid <file> <device> e depois da sincronização, o zfs desanexar o zfs_raid <file>
BitsOfNix
conectar um quinto dispositivo não expandiria irreversivelmente a matriz? ou talvez você queira dizer algo como adicionar um sobressalente?
barrymac
Não adicionando um disco sobressalente ou adicionando novo disco, fazendo o zpool anexar o pool old_device new_device, isso espelhará o old_device para o new_device e, em seguida, você desanexará o old_device do seu espelho após o resilver: docs.oracle.com/cd/E26502_01/html/E29007/ gayrd.html # scrolltoc <- informações sobre anexar / desanexar e as diferenças entre adicionar e anexar.
BitsOfNix 12/09
Isso parecia promissor pela infelizmente devolveu um "não é possível anexar / dev / sdd1 para /zfs_jbod/zfs_raid/zfs.2: só pode anexar a espelhos e discos de nível superior"
barrymac
Você poderia colocar o status atual do zpool como zfs_raid, para ver o layout da invasão?
BitsOfNix 12/09/2013

Respostas:

4

Encontrei a opção necessária! no momento, o pool está reestruturando novamente a nova partição após emitir o seguinte comando:

 zpool replace  -o ashift=9 zfs_raid <virtual device> /dev/sdd1

Embora isso seja possível, não é aconselhável porque você obtém um desempenho terrível forçando uma unidade do tipo 4k a ser gravada como uma 512b. Eu aprendi da maneira mais difícil que se deve adicionar

-o ashift=12 

ao criar o pool para evitar a necessidade de recriá-lo mais tarde, pois atualmente não é possível 'migrar' para o tamanho do setor de 4k.

barrymac
fonte