Usando o pool ZFS com dois sistemas operacionais se revezando

Usando o pool ZFS com dois sistemas operacionais se revezando

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=ondado 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 upgradeou zfs upgradeespecialmente 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 upgradee/ou zfs upgradeconforme 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 -afalharia 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/mydatasete 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 altrootpropriedade 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.
altrootnão é uma propriedade persistente. É válido apenas enquanto o sistema estiver ativo. Definir padrões alternativos para usar, cachefile = noneembora isso possa ser substituído usando uma configuração explícita.

informação relacionada