O conjunto ZFS não está montado corretamente; não consegue encontrar todos os arquivos

4

Eu tenho um pool ZFS (RAID espelhado) em dois discos que eu transferi de um servidor FreeBSD 11.0 para um servidor LTS Ubuntu 16.04.2.

Depois de importar o pool, vejo:

NAME                 USED  AVAIL  REFER  MOUNTPOINT
zroot                993G   790G   104K  /mnt/zfs
zroot/ROOT           989G   790G    96K  none
zroot/ROOT/default   989G   790G   989G  none
zroot/tmp            140K   790G   140K  none
zroot/usr           3.37G   790G    96K  none
zroot/usr/home      2.15G   790G  2.15G  none
zroot/usr/ports      640M   790G   640M  none
zroot/usr/src        608M   790G   608M  none
zroot/var           1.66M   790G    96K  none
zroot/var/audit       96K   790G    96K  none
zroot/var/crash       96K   790G    96K  none
zroot/var/log        476K   790G   476K  none
zroot/var/mail       840K   790G   840K  none
zroot/var/tmp         96K   790G    96K  none

O que eu espero ver é uma árvore de diretórios totalmente preenchida em /mnt/zfs no sistema Ubuntu, contendo 993GiB de arquivos. O que vejo em vez disso é uma árvore de diretórios parcialmente preenchida, sem arquivos dentro deles:

$ tree /mnt/zfs
/mnt/zfs
├── tmp
├── usr
│   ├── home
│   ├── ports
│   └── src
└── var
    ├── audit
    ├── crash
    ├── log
    ├── mail
    └── tmp

Tenho certeza que estou sentindo falta de algo fundamental aqui.

Tentativa # 1: Definir um ponto de montagem para ROOT, conforme a sugestão do @ Zoredache, apenas resulta em um diretório ROOT vazio:

$ sudo zfs set mountpoint=/mnt/zfs/ROOT zroot/ROOT
$ tree /mnt/zfs
/mnt/zfs
└── ROOT

Tentativa # 2: Definir um ponto de montagem para ROOT / default, conforme sugestão do @ user121391, também produz um diretório vazio:

$ sudo zfs set mountpoint=/mnt/zfs/ROOT zroot/ROOT/default
$ tree /mnt/zfs
/mnt/zfs

0 directories, 0 files

Tentativa nº 3: A montagem de um diretório individual parece funcionar, conforme a outra sugestão do @ user131391:

$ sudo zfs set mountpoint=/mnt/zfs/usr/home zroot/usr/home
$ tree /mnt/zfs
/mnt/zfs
└── usr
    └── home
        └── duncan
            ├── tmp
            │   ├── code
...
            └── usb

17978 directories, 67539 files

O que é ótimo, mas infelizmente isso não ajuda. Os arquivos que estou procurando estão em /usr/local/ , o que não aparece no resultado de zfs list . O espaço está claramente sendo usado, se você olhar os tamanhos:

zroot/ROOT/default   989G   790G   989G  none
zroot/usr           3.37G   790G    96K  none

Tentativa nº 4:

Mais informações sobre Michael Kjörling:

$ sudo zfs set mountpoint=/mnt/zfs/ROOT zroot/ROOT/default
$ sudo zfs get mountpoint,mounted zroot -t filesystem -r
NAME                PROPERTY    VALUE          SOURCE
zroot               mountpoint  none           local
zroot               mounted     no             -
zroot/ROOT          mountpoint  none           local
zroot/ROOT          mounted     no             -
zroot/ROOT/default  mountpoint  /mnt/zfs/ROOT  local
zroot/ROOT/default  mounted     no             -
zroot/tmp           mountpoint  none           local
zroot/tmp           mounted     no             -
zroot/usr           mountpoint  none           local
zroot/usr           mounted     no             -
zroot/usr/home      mountpoint  none           local
zroot/usr/home      mounted     no             -
zroot/usr/ports     mountpoint  none           local
zroot/usr/ports     mounted     no             -
zroot/usr/src       mountpoint  none           local
zroot/usr/src       mounted     no             -
zroot/var           mountpoint  none           local
zroot/var           mounted     no             -
zroot/var/audit     mountpoint  none           local
zroot/var/audit     mounted     no             -
zroot/var/crash     mountpoint  none           local
zroot/var/crash     mounted     no             -
zroot/var/log       mountpoint  none           local
zroot/var/log       mounted     no             -
zroot/var/mail      mountpoint  none           local
zroot/var/mail      mounted     no             -
zroot/var/tmp       mountpoint  none           local
zroot/var/tmp       mounted     no             -
$ tree /mnt/zfs
/mnt/zfs

0 directories, 0 files
    
por Duncan Bayne 25.04.2017 / 03:18

2 respostas

3

zroot e zroot / ROOT não contêm arquivos, eles são apenas contêineres para os outros dados.

A maior parte dos seus dados está no zroot / ROOT / default.

Os outros sistemas de arquivos zfs devem herdar seu ponto de montagem do zroot (não sei como essa informação foi perdida na transição do FreeBSD para o Ubuntu):

zfs inherit mountpoint zroot/tmp
zfs inherit mountpoint zroot/usr
zfs inherit mountpoint zroot/usr/home
zfs inherit mountpoint zroot/usr/ports

... e assim por diante (pode ser possível fazer um -r sobre isso, mas eu não verifiquei).

O único sistema de arquivos zfs que deve ter um ponto de montagem de none é zroot / ROOT:

zfs set mountpoint=none zroot/ROOT

Depois de fazer tudo isso, você precisará exportar e reimportar o pool e montar os sistemas de arquivos na ordem correta:

zpool export zroot

Importe o pool para o novo ponto de montagem, mas na verdade não monte nada:

zpool import -a -N -r /mnt/zfs

Monte o pool raiz:

zfs mount zroot/ROOT/default

Monte tudo o mais:

zfs mount -a
    
por 27.04.2017 / 10:25
2

Verifique a coluna MOUNTPOINT . Parece que não há pontos de montagem para nada. Você pode querer tentar configurar pontos de montagem para seus conjuntos de dados.

Por exemplo, acredito que isso montaria zroot/ROOT a /mnt/zfs/ROOT .

zfs set mountpoint=/mnt/zfs/ROOT zroot/ROOT

Eu não sei o suficiente sobre o ZFS para dizer por que isso não aconteceria automaticamente, ou se deveria ao importar para um sistema Linux.

    
por 25.04.2017 / 03:32

Tags