ZFS Discrepancy in 'Used' Space on ZFS Volumes Post Send/Receive on Same Server with Different Pool Topologies

Hey folks,

I've stumbled upon a strange issue on my server concerning a discrepancy in 'used' space between two ZFS volumes after a ZFS send/receive operation. I transferred data from basia-ssd/vm-118-disk-0 to basia-nvme/vm-118-disk-0. Initially, the source volume basia-ssd/vm-118-disk-0 showed 300GB used, but post-transfer, the destination volume basia-nvme/vm-118-disk-0 shows 475GB used. When I send it back to the source, it shows 300GB used again.

Here are the specifics:

  • Server: Both pools are on the same server.
  • Pool Topology:
    • basia-ssd comprises 2 mirrored vdevs.
    • basia-nvme consists of 5 disks in RAID-Z.
    • Both pools have an ashift value of 12.
  • Volume Properties: Both volumes have a volsize of 512G, volblocksize of 4K, and compression is off. Although there are snapshots created for the send/receive operations, they show 0B used, indicating they do not hold any additional data. Here are the results of zfs list -t snapshot -r basia-nvme/vm-118-disk-0 basia-ssd/vm-118-disk-0:
Code:
NAME                                USED  AVAIL     REFER  MOUNTPOINT
basia-nvme/vm-118-disk-0@snapshot     0B      -      475G  -
basia-ssd/vm-118-disk-0@snapshot      0B      -      300G  -

  • ZFS Send/Receive Command:
Code:
zfs send basia-ssd/vm-118-disk-0@snapshot | pv | zfs receive basia-nvme/vm-118-disk-0
  • Volume Usage: zfs list -o space shows different 'used' space on the two volumes, as well as zfs get all.
Here are the command outputs showing the issue:

zfs list -o space (I removed unrelated entries)
Code:
NAME                                                        AVAIL   USED  USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
basia-nvme                                                  6.66T   475G        0B    153K             0B       475G
basia-nvme/vm-118-disk-0                                    6.66T   475G        0B    475G             0B         0B
basia-ssd                                                    457G  3.07T        0B     96K             0B      3.07T
basia-ssd/vm-118-disk-0                                      457G   300G        0B    300G             0B         0B

zfs get all basia-ssd/vm-118-disk-0
Code:
NAME                     PROPERTY                VALUE                   SOURCE
basia-ssd/vm-118-disk-0  type                    volume                  -
basia-ssd/vm-118-disk-0  creation                Tue Oct 17  2:27 2023   -
basia-ssd/vm-118-disk-0  used                    300G                    -
basia-ssd/vm-118-disk-0  available               457G                    -
basia-ssd/vm-118-disk-0  referenced              300G                    -
basia-ssd/vm-118-disk-0  compressratio           1.00x                   -
basia-ssd/vm-118-disk-0  reservation             none                    default
basia-ssd/vm-118-disk-0  volsize                 512G                    local
basia-ssd/vm-118-disk-0  volblocksize            4K                      -
basia-ssd/vm-118-disk-0  checksum                fletcher4               inherited from basia-ssd
basia-ssd/vm-118-disk-0  compression             off                     inherited from basia-ssd
basia-ssd/vm-118-disk-0  readonly                off                     default
basia-ssd/vm-118-disk-0  createtxg               7438363                 -
basia-ssd/vm-118-disk-0  copies                  1                       inherited from basia-ssd
basia-ssd/vm-118-disk-0  refreservation          none                    default
basia-ssd/vm-118-disk-0  guid                    16907164831660435540    -
basia-ssd/vm-118-disk-0  primarycache            all                     default
basia-ssd/vm-118-disk-0  secondarycache          all                     default
basia-ssd/vm-118-disk-0  usedbysnapshots         0B                      -
basia-ssd/vm-118-disk-0  usedbydataset           300G                    -
basia-ssd/vm-118-disk-0  usedbychildren          0B                      -
basia-ssd/vm-118-disk-0  usedbyrefreservation    0B                      -
basia-ssd/vm-118-disk-0  logbias                 latency                 default
basia-ssd/vm-118-disk-0  objsetid                70716                   -
basia-ssd/vm-118-disk-0  dedup                   off                     default
basia-ssd/vm-118-disk-0  mlslabel                none                    default
basia-ssd/vm-118-disk-0  sync                    disabled                inherited from basia-ssd
basia-ssd/vm-118-disk-0  refcompressratio        1.00x                   -
basia-ssd/vm-118-disk-0  written                 0                       -
basia-ssd/vm-118-disk-0  logicalused             296G                    -
basia-ssd/vm-118-disk-0  logicalreferenced       296G                    -
basia-ssd/vm-118-disk-0  volmode                 default                 default
basia-ssd/vm-118-disk-0  snapshot_limit          none                    default
basia-ssd/vm-118-disk-0  snapshot_count          none                    default
basia-ssd/vm-118-disk-0  snapdev                 hidden                  default
basia-ssd/vm-118-disk-0  context                 none                    default
basia-ssd/vm-118-disk-0  fscontext               none                    default
basia-ssd/vm-118-disk-0  defcontext              none                    default
basia-ssd/vm-118-disk-0  rootcontext             none                    default
basia-ssd/vm-118-disk-0  redundant_metadata      all                     default
basia-ssd/vm-118-disk-0  encryption              off                     default
basia-ssd/vm-118-disk-0  keylocation             none                    default
basia-ssd/vm-118-disk-0  keyformat               none                    default
basia-ssd/vm-118-disk-0  pbkdf2iters             0                       default
basia-ssd/vm-118-disk-0  org.freebsd.ioc:active  yes                     inherited from basia-ssd

zfs get all basia-nvme/vm-118-disk-0

Code:
NAME                      PROPERTY              VALUE                  SOURCE
basia-nvme/vm-118-disk-0  type                  volume                 -
basia-nvme/vm-118-disk-0  creation              Wed Oct 18  8:38 2023  -
basia-nvme/vm-118-disk-0  used                  475G                   -
basia-nvme/vm-118-disk-0  available             6.66T                  -
basia-nvme/vm-118-disk-0  referenced            475G                   -
basia-nvme/vm-118-disk-0  compressratio         1.00x                  -
basia-nvme/vm-118-disk-0  reservation           none                   default
basia-nvme/vm-118-disk-0  volsize               512G                   local
basia-nvme/vm-118-disk-0  volblocksize          4K                     -
basia-nvme/vm-118-disk-0  checksum              fletcher4              inherited from basia-nvme
basia-nvme/vm-118-disk-0  compression           off                    inherited from basia-nvme
basia-nvme/vm-118-disk-0  readonly              off                    default
basia-nvme/vm-118-disk-0  createtxg             775                    -
basia-nvme/vm-118-disk-0  copies                1                      inherited from basia-nvme
basia-nvme/vm-118-disk-0  refreservation        none                   default
basia-nvme/vm-118-disk-0  guid                  3711294694037928121    -
basia-nvme/vm-118-disk-0  primarycache          all                    default
basia-nvme/vm-118-disk-0  secondarycache        all                    default
basia-nvme/vm-118-disk-0  usedbysnapshots       0B                     -
basia-nvme/vm-118-disk-0  usedbydataset         475G                   -
basia-nvme/vm-118-disk-0  usedbychildren        0B                     -
basia-nvme/vm-118-disk-0  usedbyrefreservation  0B                     -
basia-nvme/vm-118-disk-0  logbias               latency                default
basia-nvme/vm-118-disk-0  objsetid              661                    -
basia-nvme/vm-118-disk-0  dedup                 off                    default
basia-nvme/vm-118-disk-0  mlslabel              none                   default
basia-nvme/vm-118-disk-0  sync                  disabled               inherited from basia-nvme
basia-nvme/vm-118-disk-0  refcompressratio      1.00x                  -
basia-nvme/vm-118-disk-0  written               0                      -
basia-nvme/vm-118-disk-0  logicalused           296G                   -
basia-nvme/vm-118-disk-0  logicalreferenced     296G                   -
basia-nvme/vm-118-disk-0  volmode               default                default
basia-nvme/vm-118-disk-0  snapshot_limit        none                   default
basia-nvme/vm-118-disk-0  snapshot_count        none                   default
basia-nvme/vm-118-disk-0  snapdev               hidden                 default
basia-nvme/vm-118-disk-0  context               none                   default
basia-nvme/vm-118-disk-0  fscontext             none                   default
basia-nvme/vm-118-disk-0  defcontext            none                   default
basia-nvme/vm-118-disk-0  rootcontext           none                   default
basia-nvme/vm-118-disk-0  redundant_metadata    all                    default
basia-nvme/vm-118-disk-0  encryption            off                    default
basia-nvme/vm-118-disk-0  keylocation           none                   default
basia-nvme/vm-118-disk-0  keyformat             none                   default
basia-nvme/vm-118-disk-0  pbkdf2iters           0                      default

zpool get all basia-ssd
Code:
NAME       PROPERTY                       VALUE                          SOURCE
basia-ssd  size                           3.62T                          -
basia-ssd  capacity                       84%                            -
basia-ssd  altroot                        /mnt                           local
basia-ssd  health                         ONLINE                         -
basia-ssd  guid                           14698881280998055258           -
basia-ssd  version                        -                              default
basia-ssd  bootfs                         -                              default
basia-ssd  delegation                     on                             default
basia-ssd  autoreplace                    off                            default
basia-ssd  cachefile                      /data/zfs/zpool.cache          local
basia-ssd  failmode                       continue                       local
basia-ssd  listsnapshots                  off                            default
basia-ssd  autoexpand                     on                             local
basia-ssd  dedupratio                     1.00x                          -
basia-ssd  free                           572G                           -
basia-ssd  allocated                      3.07T                          -
basia-ssd  readonly                       off                            -
basia-ssd  ashift                         12                             local
basia-ssd  comment                        -                              default
basia-ssd  expandsize                     -                              -
basia-ssd  freeing                        0                              -
basia-ssd  fragmentation                  88%                            -
basia-ssd  leaked                         0                              -
basia-ssd  multihost                      off                            default
basia-ssd  checkpoint                     -                              -
basia-ssd  load_guid                      8069873666185711073            -
basia-ssd  autotrim                       off                            default
basia-ssd  compatibility                  off                            default
basia-ssd  feature@async_destroy          enabled                        local
basia-ssd  feature@empty_bpobj            active                         local
basia-ssd  feature@lz4_compress           active                         local
basia-ssd  feature@multi_vdev_crash_dump  enabled                        local
basia-ssd  feature@spacemap_histogram     active                         local
basia-ssd  feature@enabled_txg            active                         local
basia-ssd  feature@hole_birth             active                         local
basia-ssd  feature@extensible_dataset     active                         local
basia-ssd  feature@embedded_data          active                         local
basia-ssd  feature@bookmarks              enabled                        local
basia-ssd  feature@filesystem_limits      enabled                        local
basia-ssd  feature@large_blocks           enabled                        local
basia-ssd  feature@large_dnode            enabled                        local
basia-ssd  feature@sha512                 enabled                        local
basia-ssd  feature@skein                  enabled                        local
basia-ssd  feature@userobj_accounting     active                         local
basia-ssd  feature@encryption             enabled                        local
basia-ssd  feature@project_quota          active                         local
basia-ssd  feature@device_removal         enabled                        local
basia-ssd  feature@obsolete_counts        enabled                        local
basia-ssd  feature@zpool_checkpoint       enabled                        local
basia-ssd  feature@spacemap_v2            active                         local
basia-ssd  feature@allocation_classes     enabled                        local
basia-ssd  feature@resilver_defer         enabled                        local
basia-ssd  feature@bookmark_v2            enabled                        local
basia-ssd  feature@redaction_bookmarks    enabled                        local
basia-ssd  feature@redacted_datasets      enabled                        local
basia-ssd  feature@bookmark_written       enabled                        local
basia-ssd  feature@log_spacemap           active                         local
basia-ssd  feature@livelist               enabled                        local
basia-ssd  feature@device_rebuild         enabled                        local
basia-ssd  feature@zstd_compress          enabled                        local
basia-ssd  feature@draid                  enabled                        local

zpool get all basia-nvme
Code:
NAME        PROPERTY                       VALUE                          SOURCE
basia-nvme  size                           9.08T                          -
basia-nvme  capacity                       6%                             -
basia-nvme  altroot                        /mnt                           local
basia-nvme  health                         ONLINE                         -
basia-nvme  guid                           6895560553673080764            -
basia-nvme  version                        -                              default
basia-nvme  bootfs                         -                              default
basia-nvme  delegation                     on                             default
basia-nvme  autoreplace                    off                            default
basia-nvme  cachefile                      /data/zfs/zpool.cache          local
basia-nvme  failmode                       continue                       local
basia-nvme  listsnapshots                  off                            default
basia-nvme  autoexpand                     on                             local
basia-nvme  dedupratio                     1.00x                          -
basia-nvme  free                           8.50T                          -
basia-nvme  allocated                      595G                           -
basia-nvme  readonly                       off                            -
basia-nvme  ashift                         12                             local
basia-nvme  comment                        -                              default
basia-nvme  expandsize                     -                              -
basia-nvme  freeing                        0                              -
basia-nvme  fragmentation                  0%                             -
basia-nvme  leaked                         0                              -
basia-nvme  multihost                      off                            default
basia-nvme  checkpoint                     -                              -
basia-nvme  load_guid                      18047062458252002911           -
basia-nvme  autotrim                       off                            default
basia-nvme  compatibility                  off                            default
basia-nvme  feature@async_destroy          enabled                        local
basia-nvme  feature@empty_bpobj            active                         local
basia-nvme  feature@lz4_compress           active                         local
basia-nvme  feature@multi_vdev_crash_dump  enabled                        local
basia-nvme  feature@spacemap_histogram     active                         local
basia-nvme  feature@enabled_txg            active                         local
basia-nvme  feature@hole_birth             active                         local
basia-nvme  feature@extensible_dataset     active                         local
basia-nvme  feature@embedded_data          active                         local
basia-nvme  feature@bookmarks              enabled                        local
basia-nvme  feature@filesystem_limits      enabled                        local
basia-nvme  feature@large_blocks           enabled                        local
basia-nvme  feature@large_dnode            enabled                        local
basia-nvme  feature@sha512                 enabled                        local
basia-nvme  feature@skein                  enabled                        local
basia-nvme  feature@userobj_accounting     active                         local
basia-nvme  feature@encryption             enabled                        local
basia-nvme  feature@project_quota          active                         local
basia-nvme  feature@device_removal         enabled                        local
basia-nvme  feature@obsolete_counts        enabled                        local
basia-nvme  feature@zpool_checkpoint       enabled                        local
basia-nvme  feature@spacemap_v2            active                         local
basia-nvme  feature@allocation_classes     enabled                        local
basia-nvme  feature@resilver_defer         enabled                        local
basia-nvme  feature@bookmark_v2            enabled                        local
basia-nvme  feature@redaction_bookmarks    enabled                        local
basia-nvme  feature@redacted_datasets      enabled                        local
basia-nvme  feature@bookmark_written       enabled                        local
basia-nvme  feature@log_spacemap           active                         local
basia-nvme  feature@livelist               enabled                        local
basia-nvme  feature@device_rebuild         enabled                        local
basia-nvme  feature@zstd_compress          enabled                        local
basia-nvme  feature@draid                  enabled                        local

I'm puzzled by the discrepancy in the 'used' space following a send/receive operation. Has anyone faced a similar issue or have any insights on what's happening here?

Thanks for any help,
feri
 
Back
Top