Inicializando o FreeBSD do pool ZFS de todo o disco?

3

Eu tenho um servidor de arquivos FreeBSD configurado com um pool ZFS criado a partir de dispositivos de disco inteiro. Ou seja, o pool foi criado assim:

zpool create pool0 raidz ada0 ada1 ada2

Isso significa que os discos têm disklabels ZFS, em vez de rótulos de disco do FreeBSD. Essa é a maneira recomendada de usar discos com o ZFS:

ZFS can use individual slices or partitions, though the recommended mode of operation is to use whole disks. [ from zpool(1M)]

Formatar os discos como este maximiza a portabilidade do sistema de arquivos entre várias implementações do ZFS. Infelizmente, isso significa que não há lugar para colocar uma partição freebsd-boot contendo o carregador do FreeBSD ... ou pelo menos, acho que isso significa, mas estou procurando confirmação.

O sistema inicializa a partir de um cartão CF contendo o carregador embutido (bem como o diretório /boot , embora isso possa funcionar perfeitamente no ZFS). Isso funciona muito bem, mas estou curioso - existe alguma maneira de instalar o carregador incorporado nos discos rotulados pelo ZFS?

EDITAR : Eu mesmo tentei responder a isso. Pensei que poderia aplicar um rótulo GPT de forma não destrutiva aos discos ZFS e tentar incorporar o código de inicialização - mas, embora o rótulo GPT não tenha causado problemas com o ZFS, o ZFS parece interferir na etiqueta de alguma forma. Então, aqui está uma questão diferente : o OpenSolaris suporta rótulos de disco GPT? O objetivo final aqui é ter um conjunto de discos que funcionará tanto no FreeBSD quanto no OpenSolaris, sendo capaz de inicializar a partir dele no FreeBSD.

    
por larsks 28.01.2011 / 15:15

2 respostas

4

Bem, parece que a resposta é "você não pode fazer isso".

O resto desta resposta é para qualquer pessoa que se depara com este entrada e está curioso sobre como isso é configurado:

Eu tenho meu código de inicialização em um cartão CF e tudo mais (também conhecido como diretório /boot ) no ZFS. O cartão CF é particionado assim:

# gpart show ad0
=>     34  7847213  ad0  GPT  (3.7G)
       34      128    1  freebsd-boot  (64K)
      162  7847085       - free -  (3.7G)

Eu instalei o código de inicialização assim:

gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ad0

E defina a propriedade bootfs apropriada no meu pool do ZFS:

zpool set bootfs=pool0/sys/freebsd pool0

Onde pool0/sys/freebsd é o meu sistema de arquivos raiz do FreeBSD (e contém, entre outras coisas, o diretório /boot ).

    
por 01.02.2011 / 17:11
1

Parece que é possível inicializar a partir do pool do ZFS criado a partir de dispositivos de disco inteiro.

Basta instalar o zfsboot de acordo com a página man do zfsboot:

zfsboot is typically installed using dd(1). To install zfsboot on the ada0 drive:

 dd if=/boot/zfsboot of=/dev/ada0 count=1
 dd if=/boot/zfsboot of=/dev/ada0 iseek=1 oseek=1024

A Seção 1.4: Bloco de inicialização da especificação do ZFS diz que 3,5 MB de espaço reservado estão nessa posição. Isso explica porque o 64k do zfsboot se encaixa lá sem incomodar o sistema de arquivos.

Ainda não experimentei pessoalmente.

Fontes:

por 29.09.2015 / 12:39