Estou fazendo a transição de uma instalação antiga do Ubuntu para uma nova. Durante a transição, quero poder usar o mesmo pool do sistema operacional antigo e do novo.
O novo sistema operacional estará em um disco diferente. Eu seleciono o sistema operacional durante a inicialização. Apenas um sistema operacional usará o pool em um determinado momento.
Isso é possível em tudo? Corro o risco de corrupção de dados ou de perder todo o pool?
Responder1
Contanto que o pool seja exportado durante o desligamento e seja usado apenas em um sistema por vez,o que você discute não deve ser problemático.
ZFS realmente, realmente,realmentenão gosta que o mesmo pool seja usado em vários sistemas ao mesmo tempo, mesmo no modo somente leitura ( -o readonly=on
dado a zpool import
), mas isso não parece se aplicar à sua situação.
Para manter a compatibilidade entre as duas versões, você deve ter certezanãopara executar zpool upgrade
ou zfs upgrade
especialmente a partir da instalação mais recente. Qualquer um deles pode resultar na perda de acesso ao pool ou sistema de arquivos ao executar a instalação mais antiga, mas nenhum deles deve resultar na perda do pool ou sistema de arquivos ao executar um sistema que suporta a versão em disco do ZFS atualizada.
Depois de concluir a atualização, se desejar, você poderá atualizar o pool para o formato e recursos em disco mais recentes usando zpool upgrade
e/ou zfs upgrade
conforme necessário.
Responder2
Supondo que você esteja falando em usar o pool como armazenamento de dados, e não em executar a raiz do sistema nele, você ficará bem.
Atualmente tenho dois sistemas instalados, um em uma partição EXT4 e outro em um conjunto de dados zfs que possui sudo zfs set mountpoint=/ tank/my/dataset
.
Acessar esse pool a partir do sistema EXT4 é um problema, pois zfs mount -a
falharia na montagem na raiz. Então, aqui estão três maneiras.
Para ambas as formas, você precisará importar o pool sem montá-lo automaticamente.
sudo zpool import tank -N
A) Modificando a propriedade
sudo mkdir /mnt/mydataset
sudo zfs set mountpoint=/mnt/mydataset tank/my/dataset
sudo zfs mount tank/my/dataset
# [do stuff in /mnt/mydataset]
# ...
sudo zfs unmount tank/my/dataset
# restore mountpoint so that the other system is able to boot from it
sudo zfs set mountpoint=/ tank/my/dataset
B) Evitarzfs mount
Se você achar irritante definir o ponto de montagem para frente e para trás, descobri que o seguinte também funciona. Não há garantias sobre o quão hacky isso é.
sudo mkdir /mnt/mydataset
sudo mount -t zfs -o zfsutil tank/my/dataset /mnt/mydataset
# [do stuff in /mnt/mydataset]
# ...
sudo umount /mnt/mydataset
Observe que tive alguns problemas ao usar esta opção B) para fazer chroot /mnt/mydataset
e depois usar os comandos zfs do outro sistema. Não sei se esses problemas estão relacionados. Contanto que você não faça algo semelhante, você ficará bem.
C) alternativa
Você pode especificar a altroot
propriedade na piscina.
alternativa
Diretório raiz alternativo. Se definido, esse diretório será anexado a quaisquer pontos de montagem no pool. Isso pode ser usado ao examinar um pool desconhecido onde os pontos de montagem não são confiáveis ou em um ambiente de inicialização alternativo, onde os caminhos típicos não são válidos.
altroot
não é uma propriedade persistente. É válido apenas enquanto o sistema estiver ativo. Definir padrões alternativos para usar,cachefile = none
embora isso possa ser substituído usando uma configuração explícita.