Não é possível obter o pool do ZFS criado no OSX para importar no sistema Linux [closed]

2

Estou experimentando diferentes sistemas de arquivos para uso entre um laptop Linux / OSX de inicialização dupla que funcionará como uma plataforma de teste. Apesar de ser uma variante do BSD, tive muita dificuldade em encontrar um sistema de arquivos compatível, mas decidi sobre a implementação pelo OpenZFS.

O mais recente OpenZFS 0.6.3-1 está instalado em ambos os sistemas. Eu criei inicialmente um pool de dentro do OSX usando / dev / disk0s6. Tudo funciona bem no OSX com a montagem da unidade e sendo gravável:

$ zpool status
  pool: Data
 state: ONLINE
  scan: none requested
config:

    NAME        STATE     READ WRITE CKSUM
    Data        ONLINE       0     0     0
      disk0s6   ONLINE       0     0     0

errors: No known data errors

$ zpool import
   pool: Data
     id: 16636970642933363897
  state: ONLINE
 action: The pool can be imported using its name or numeric identifier.
 config:

    Data        ONLINE
      disk0s6   ONLINE

Mas quando eu exporto o zpool e reinicio no Linux, não consigo importar o pool, mesmo com -f:

$ zpool import -f Data
cannot import 'Data': one or more devices are already in use

$ zpool import
   pool: Data
     id: 16636970642933363897
  state: UNAVAIL
 status: One or more devices contains corrupted data.
 action: The pool cannot be imported due to damaged devices or data.
   see: http://zfsonlinux.org/msg/ZFS-8000-5E
 config:

    Data                                         UNAVAIL  insufficient replicas
      ata-Corsair_Force_GT_135004090FF015790001  UNAVAIL

A reinicialização no OSX mostra que o pool não está corrompido e carrega muito bem.

O que estou fazendo de errado?

    
por Zhro 25.09.2014 / 10:27

2 respostas

2

Depois de muita solução de problemas com algumas pessoas legais no OpenZFS GitHub, posso confirmar que isso é um bug.

O problema real é que eu criei o pool usando a última partição do disco que, no Linux, pode ser confundida como corrupção se a partição se alinhar de perto o suficiente com o final do disco.

O ZFS cria quatro rótulos no dispositivo de destino para redundância, com dois no início e dois no final. Quando o ZFS avaliar o disco após a inicialização no Linux, ele encontrará primeiro o / dev / sda, que fornecerá uma correspondência parcial com os dois últimos rótulos no final do disco (da última partição). Em seguida, ele acredita erroneamente que o dispositivo está corrompido, pois não há rótulos no início do disco.

A solução foi adicionar um buffer de pelo menos 10 MB de espaço livre no final do disco.

Detalhes completos podem ser encontrados aqui: link

    
por 27.09.2014 / 05:01
1

Ok, isso é definitivamente devido à minha inexperiência com o ZFS. Ao contrário de um sistema de arquivos tradicional, no qual é possível referenciar uma partição específica de qualquer contexto, o ZFS parece reter as informações exatas usadas para referenciar o local dos dados, independentemente de onde ele esteja carregado.

Por exemplo, eu criei o zpool e referenciei o dispositivo pelo OSX por "/ dev / disk0s6" que não está presente no Linux. Eu criei um symlink de / dev / disk0s6 para / dev / sda6 e tudo funciona bem agora.

Referenciando estas perguntas:

pool ZFS RAID0 sem redundância

Por que a reinicialização fazer com que um lado do meu espelho ZFS se torne UNAVAIL?

Parece que preciso levar a portabilidade em consideração ao fazer referência ao dispositivo. Por exemplo, usando o UUID da partição que permaneceria inalterado entre os dois SOs.

Acho que essa informação é útil para outras pessoas que são novas no ZFS.

EDITAR: Esta resposta é ERRADA! Por favor, veja a resposta correta abaixo.

    
por 25.09.2014 / 23:28