zfs no puede crear una instantánea por falta de espacio

zfs no puede crear una instantánea por falta de espacio

Tengo un disco con estas capas: disco sata, luks, zpool, ext4

El ext4 fs fue creado con estos comandos:

cryptsetup -v luksFormat /dev/sdb
cryptsetup luksOpen /dev/sda store02
zpool create zstore02 /dev/mapper/store02
zfs create -V 1600G zstore02/dsk02
mkfs.ext4 -L dsk02 /dev/zstore02/dsk02

El sistema es Ubuntu 20.04.1 LTS. Este grupo se importó posteriormente a otro sistema 20.04.1.

Quiero crear una instantánea de lectura/escritura y montarla. Pero me dice "sin espacio":

root@computer:~# zpool list
NAME       SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
zstore02  1,81T  1,50T   320G        -         -     7%    82%  1.00x    ONLINE  -
root@computer:~# zfs list
NAME             USED  AVAIL     REFER  MOUNTPOINT
zstore02        1,61T   148G       24K  /zstore02
zstore02/dsk02  1,61T   262G     1,50T  -
root@computer:~# zfs snapshot zstore02/dsk02@test
cannot create snapshot 'zstore02/dsk02@test': out of space
root@computer:~# zfs get reservation zstore02/dsk02
NAME            PROPERTY     VALUE   SOURCE
zstore02/dsk02  reservation  none    local
root@computer:~# zfs set reservation=10G zstore02
root@computer:~# zfs set reservation=10G zstore02/dsk02
root@computer:~# zfs snapshot zstore02/dsk02@test
cannot create snapshot 'zstore02/dsk02@test': out of space
root@computer:~#

No funciona con reservado=ninguno ni reservado=10G.

Aparentemente, "zpool list" informa 300G de espacio libre y "zfs list" informa 262G de espacio libre. Pero de alguna manera no puedo crear una instantánea. ¿Por qué?

ACTUALIZAR

Si intento crear un nuevo volumen, funciona (perdón por la configuración regional húngara):

root@computer:~# zfs create -V 1G zstore02/test
root@computer:~# mkfs.ext4 -L test /dev/zstore02/test
mke2fs 1.45.5 (07-Jan-2020)
Eszközblokkok eldobása: kész
Fájlrendszer létrehozása 262144 4 blokkal és 65536 inode-dal
Fájlrendszer UUID: 14e07b33-5d25-465a-aeb8-7fbfe2499dfd
Tartalék szuperblokkok tárolva a blokkokon:
        32768, 98304, 163840, 229376

Csoporttáblák foglalása: kész
Inode táblák írásakor: kész
Napló létrehozása (8192 blokk): kész
Szuperblokkok és fájlrendszer-könyvelési információk írása: kész

root@computer:~# zfs snapshot zstore02/test@snap1

root@computer:~# zfs list -t snapshot
NAME                  USED  AVAIL     REFER  MOUNTPOINT
zstore02/test@snap1     0B      -     32,7M  -
root@computer:~#

Funciona para cualquier volumen que creo, excepto zstore02/dsk02.

¿Pero por qué?

Respuesta1

Tiene un refreservationconjunto en su zvol, que reserva espacio en disco para ese conjunto de datos o zvol sin tener en cuenta instantáneas o clones. Para poder tomar una instantánea debe haber suficienteno reservadoespacio que queda en el conjunto de datos para acomodar su espacio de referencia, en este caso 1,50T. Dado que su refreservation(muy probablemente) 1.61T, básicamente no puede hacer mucho ya que todo el espacio libre se reserva para ese zvol (que nunca lo usará).

Para solucionar el problema, elimine la refreserva.

zfs set refreservation=none zstore02/dsk02

Para evitar el problema en el futuro, cree zvols con el -sindicador (escaso), que también los aprovisionará:

zfs create -s -V 1600G zstore02/dsk02

Si en su lugar desea un volumen aprovisionado grueso, cree el volumen y luego configúrelo refreservation=auto.

zfs set refreservation=auto zstore02/dsk02

información relacionada