o instantâneo zfol ZFS de montagem fornece localmente “Argumento inválido”

3

Estou tentando montar um instantâneo de um zvol do ZFS. O zvol deve ter uma partição ext2 (conforme evidenciado pela VM do CentOS, na qual o zvol é atualmente compartilhado pelo iSCSI):

[root@test-vm ~]# file - < /dev/sdb
/dev/stdin: x86 boot sector; partition 1: ID=0x83, starthead 4, startsector 256, 6291200 sectors, code offset 0xb8
[root@test-vm ~]# file - < /dev/sdb1
/dev/stdin: Linux rev 1.0 ext2 filesystem data (mounted or unclean) (large files)

No entanto, a montagem sempre retorna Invalid argument :

[root@freenas] /dev/zvol/vol01# ls
./                        zvol01                    zvol01@backups1           zvol01@manual-20140521s1  zvol01@manual-20140522s1
../                       zvol01@backup             zvol01@manual-20140521    zvol01@manual-20140522
[root@freenas] /dev/zvol/vol01# file - < zvol01
/dev/stdin: x86 boot sector; partition 1: ID=0x83, starthead 4, startsector 256, 6291200 sectors, code offset 0xb8
[root@freenas] /dev/zvol/vol01# file - < zvol01@backup
/dev/stdin: x86 boot sector; partition 1: ID=0x83, starthead 4, startsector 256, 6291200 sectors, code offset 0xb8
[root@freenas] /dev/zvol/vol01# file - < zvol01@backups1
/dev/stdin: data
[root@freenas] /dev/zvol/vol01# mkdir /tmp/zvol01
[root@freenas] /dev/zvol/vol01# mount -t ext2fs -r /dev/zvol/vol01/zvol01@backup /tmp/zvol01
mount: /dev/zvol/vol01/zvol01@backup: Invalid argument
[root@freenas] /dev/zvol/vol01# mount -t ext2fs -r /dev/zvol/vol01/zvol01@backups1 /tmp/zvol01
mount: /dev/zvol/vol01/zvol01@backups1: Invalid argument

Presumo que zvol01@backups1 seja o destino correto (ou seja, a primeira partição no dispositivo de bloco, zvol01@backup ) - ambos retornam Invalid argument , independentemente disso.

O que estou perdendo aqui?

Editar

Conforme solicitado, a saída de zfs list e zfs get all ...

[root@freenas] ~# zfs list
NAME                   USED  AVAIL  REFER  MOUNTPOINT
vol01                 25.6G   358G   232K  /mnt/vol01
vol01/.system         1.44M   358G   244K  /mnt/vol01/.system
vol01/.system/cores    209K   358G   209K  /mnt/vol01/.system/cores
vol01/.system/samba4   506K   358G   506K  /mnt/vol01/.system/samba4
vol01/.system/syslog   517K   358G   517K  /mnt/vol01/.system/syslog
vol01/ds01             784M   358G   784M  /mnt/vol01/ds01
vol01/zvol01          24.9G   382G   113M  -

[root@freenas] ~# zfs get all vol01/zvol01
NAME          PROPERTY              VALUE                  SOURCE
vol01/zvol01  type                  volume                 -
vol01/zvol01  creation              Wed May 21 20:29 2014  -
vol01/zvol01  used                  24.9G                  -
vol01/zvol01  available             382G                   -
vol01/zvol01  referenced            113M                   -
vol01/zvol01  compressratio         1.00x                  -
vol01/zvol01  reservation           none                   default
vol01/zvol01  volsize               24G                    local
vol01/zvol01  volblocksize          4K                     -
vol01/zvol01  checksum              on                     default
vol01/zvol01  compression           lz4                    inherited from vol01
vol01/zvol01  readonly              off                    default
vol01/zvol01  copies                1                      default
vol01/zvol01  refreservation        24.8G                  local
vol01/zvol01  primarycache          all                    default
vol01/zvol01  secondarycache        all                    default
vol01/zvol01  usedbysnapshots       215K                   -
vol01/zvol01  usedbydataset         113M                   -
vol01/zvol01  usedbychildren        0                      -
vol01/zvol01  usedbyrefreservation  24.8G                  -
vol01/zvol01  logbias               latency                default
vol01/zvol01  dedup                 off                    inherited from vol01
vol01/zvol01  mlslabel                                     -
vol01/zvol01  sync                  standard               default
vol01/zvol01  refcompressratio      1.00x                  -
vol01/zvol01  written               221K                   -
vol01/zvol01  logicalused           74.4M                  -
vol01/zvol01  logicalreferenced     74.3M                  -

[root@freenas] ~# zfs get all vol01/zvol01@backup
NAME                 PROPERTY              VALUE                  SOURCE
vol01/zvol01@backup  type                  snapshot               -
vol01/zvol01@backup  creation              Thu May 22  1:48 2014  -
vol01/zvol01@backup  used                  215K                   -
vol01/zvol01@backup  referenced            113M                   -
vol01/zvol01@backup  compressratio         1.00x                  -
vol01/zvol01@backup  devices               on                     default
vol01/zvol01@backup  exec                  on                     default
vol01/zvol01@backup  setuid                on                     default
vol01/zvol01@backup  xattr                 on                     default
vol01/zvol01@backup  nbmand                off                    default
vol01/zvol01@backup  primarycache          all                    default
vol01/zvol01@backup  secondarycache        all                    default
vol01/zvol01@backup  defer_destroy         off                    -
vol01/zvol01@backup  userrefs              0                      -
vol01/zvol01@backup  mlslabel                                     -
vol01/zvol01@backup  refcompressratio      1.00x                  -
vol01/zvol01@backup  written               113M                   -
vol01/zvol01@backup  clones                                       -
vol01/zvol01@backup  logicalused           0                      -
vol01/zvol01@backup  logicalreferenced     74.3M                  -

[root@freenas] /dev/zvol/vol01# gpart show
=>      63  16777153  da0  MBR  (8.0G)
        63   1930257    1  freebsd  [active]  (942M)
   1930320        63       - free -  (31k)
   1930383   1930257    2  freebsd  (942M)
   3860640      3024    3  freebsd  (1.5M)
   3863664     41328    4  freebsd  (20M)
   3904992  12872224       - free -  (6.1G)

=>      0  1930257  da0s1  BSD  (942M)
        0       16         - free -  (8.0k)
       16  1930241      1  !0  (942M)

=>       34  286749421  da1  GPT  (136G)
         34         94       - free -  (47k)
        128    4194304    1  freebsd-swap  (2.0G)
    4194432  282555023    2  freebsd-zfs  (134G)

=>       34  286749421  da2  GPT  (136G)
         34         94       - free -  (47k)
        128    4194304    1  freebsd-swap  (2.0G)
    4194432  282555023    2  freebsd-zfs  (134G)

=>       34  286749421  da3  GPT  (136G)
         34         94       - free -  (47k)
        128    4194304    1  freebsd-swap  (2.0G)
    4194432  282555023    2  freebsd-zfs  (134G)

=>       34  286749421  da4  GPT  (136G)
         34         94       - free -  (47k)
        128    4194304    1  freebsd-swap  (2.0G)
    4194432  282555023    2  freebsd-zfs  (134G)

=>      63  50331585  zvol/vol01/zvol01@backup  MBR  (24G)
        63       193                            - free -  (96k)
       256   6291200                         1  linux-data  (3G)
   6291456  44040192                            - free -  (21G)

=>      63  50331585  zvol/vol01/zvol01-clone-backup  MBR  (24G)
        63       193                                  - free -  (96k)
       256   6291200                               1  linux-data  (3G)
   6291456  44040192                                  - free -  (21G)

Editar # 2

Encontrei estes no dmesg:

ext2fs: zvol/vol01/zvol01@backup: wrong magic number 0 (expected 0xef53)
ext2fs: zvol/vol01/zvol01@backups1: wrong magic number 0 (expected 0xef53)
ext2fs: zvol/vol01/zvol01-clone-backup: wrong magic number 0 (expected 0xef53)
ext2fs: zvol/vol01/zvol01-clone-backups1: wrong magic number 0 (expected 0xef53)

Há mais alguma coisa que eu preciso fazer no dispositivo de bloco antes que ele seja montado?

    
por jimbobmcgee 22.05.2014 / 03:18

4 respostas

2

Você está tentando montar um zvol que foi exportado para uma VM Linux para seu FreeNAS baseado no FreeBSD?!?

Nesse caso, você precisa verificar algumas coisas. Por favor, poste a saída de zfs list e zfs get all poolname/filesystem .

Por um lado, a visibilidade do instantâneo do zvol pode não ser definida corretamente. Isso é feito por meio da propriedade snapdev ZFS. Mas isso é uma solução de tudo ou nada. Se você tiver muitos snapshots de zvols, é melhor deixar isso desativado.

A outra abordagem para usar um instantâneo zvol é clonar o sistema de arquivos. Algo como:

zfs clone vol01/zvol01@backups1 vol01/temporaryname 

Isto fará um novo zvol baseado no instantâneo. Será criado um dispositivo de bloco correspondente que você poderá montar usando o comando mount ext2fs. Algo como fdisk -l mostrará os nomes dos dispositivos reais.

Editar:

Eu faço isso no Linux com o ZFS com frequência.

zfs clone vol0/pprovol@april vol0/april # clone the zvol snapshot to new filesystem
# fdisk -l shows a new block device at /dev/zd16p1
mount -t xfs -o nouuid /dev/zd16p1 /restore # Mount filesystem using new block device
    
por 22.05.2014 / 08:07
0

Você deve ouvir o erro.

Você está tentando montar um disco com uma tabela de partições como um volume ext2. Isso não vai funcionar.

Você precisa criar um dispositivo geométrico que consuma zvol01 com um deslocamento de 256 setores no dispositivo e monte isso.

Exatamente como você faz isso ... é deixado como um exercício para o leitor:)

    
por 23.05.2014 / 17:10
0

Além disso, neste contexto, não esqueça de procurar pelo zfs promova.

Pode também adicionar algum benefício no contexto aqui.

por exemplo. link

Isso não faz um clone completo no sentido tradicional, mas alterna a direção do instantâneo que se poderia dizer.

Então A = > Um @ snapshot = > instantâneo @ clone

xfs delete A @ snapshot .. error (tem um clone dependente).

zfs promovem instantâneo @ clone ...

zfs delete Um erro @ snapshot .. (tem um clone dependente, NOW A em vez de snapshot @ clone).

É útil no sentido de poder alternar entre estados mais facilmente. Ter um clone completo e independente requer ainda alguma forma de cópia, tanto quanto eu possa pensar.

(Eu estava basicamente expandindo um pouco no post do ewwhite acima).

Ah, e para referência, acho que um exemplo de como fazer tal cópia seria, por exemplo.

zfs enviar -R pool / A {, snapshot} | zfs recebem pool / B  (ou apenas A se você não quiser duplicar ambos volume e snapshot),

Eu testei isso no linux.

    
por 25.02.2015 / 08:21
0

Como MikeyB disse, você não pode montar um disco contendo uma partição como uma partição. Você precisa usar um programa que permita acesso direto às partições dentro do disco.

Eu não estou muito familiarizado com o FreeBSD, mas Linux, eu usaria

# kpartx -a /dev/zvol/vol01/zvol01-clone-backup para dividir o vol em suas partições, que seria mostrado como /dev/zvol/vol01/zvol01-clone-backup1

então você pode usar esse dispositivo para montar como você estava tentando antes.

Quando terminar, faça:

# kpartx -d /dev/zvol/vol01/zvol01-clone-backup e você está de volta ao seu padrão zvol reto.

Espero que ajude!

    
por 06.08.2017 / 15:24