Назад | Перейти на главную страницу

Сжатие ZFS на sparce zvol - разница в пространстве

Я сжимаю dd img диска 3 ТБ на zvol в ZFS для Linux. Я включил сжатие (lz4) и позволил ему передать. Пул состоит только из одного диска емкостью 3 ТБ (пока). Я ожидаю, что у меня будет на 86 гигабайт больше zfs list чем я кажусь. Вот некоторые цифры:

$ zfs --version
zfs-0.8.3-1ubuntu12
zfs-kmod-0.8.3-1ubuntu12
$ zfs list
NAME                          USED  AVAIL     REFER  MOUNTPOINT
tank                         2.46T   176G       96K  /tank
tank/justin                   100K   176G      100K  /tank/justin
tank/seagate_3tb_01_20_2020  2.46T   176G     2.46T  -
$ zpool list
NAME   SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
tank  2.72T  2.46T   263G        -         -     0%    90%  1.00x    ONLINE  -
$ zfs get all tank/seagate_3tb_01_20_2020 
NAME                         PROPERTY              VALUE                  SOURCE
tank/seagate_3tb_01_20_2020  type                  volume                 -
tank/seagate_3tb_01_20_2020  creation              Mon Apr 27  0:26 2020  -
tank/seagate_3tb_01_20_2020  used                  2.46T                  -
tank/seagate_3tb_01_20_2020  available             176G                   -
tank/seagate_3tb_01_20_2020  referenced            2.46T                  -
tank/seagate_3tb_01_20_2020  compressratio         1.08x                  -
tank/seagate_3tb_01_20_2020  reservation           none                   default
tank/seagate_3tb_01_20_2020  volsize               3T                     local
tank/seagate_3tb_01_20_2020  volblocksize          8K                     default
tank/seagate_3tb_01_20_2020  checksum              on                     default
tank/seagate_3tb_01_20_2020  compression           lz4                    local
tank/seagate_3tb_01_20_2020  readonly              off                    default
tank/seagate_3tb_01_20_2020  createtxg             10771                  -
tank/seagate_3tb_01_20_2020  copies                1                      default
tank/seagate_3tb_01_20_2020  refreservation        none                   local
tank/seagate_3tb_01_20_2020  guid                  17633099490469485439   -
tank/seagate_3tb_01_20_2020  primarycache          all                    default
tank/seagate_3tb_01_20_2020  secondarycache        all                    default
tank/seagate_3tb_01_20_2020  usedbysnapshots       0B                     -
tank/seagate_3tb_01_20_2020  usedbydataset         2.46T                  -
tank/seagate_3tb_01_20_2020  usedbychildren        0B                     -
tank/seagate_3tb_01_20_2020  usedbyrefreservation  0B                     -
tank/seagate_3tb_01_20_2020  logbias               latency                default
tank/seagate_3tb_01_20_2020  objsetid              906                    -
tank/seagate_3tb_01_20_2020  dedup                 off                    default
tank/seagate_3tb_01_20_2020  mlslabel              none                   default
tank/seagate_3tb_01_20_2020  sync                  standard               default
tank/seagate_3tb_01_20_2020  refcompressratio      1.08x                  -
tank/seagate_3tb_01_20_2020  written               2.46T                  -
tank/seagate_3tb_01_20_2020  logicalused           2.65T                  -
tank/seagate_3tb_01_20_2020  logicalreferenced     2.65T                  -
tank/seagate_3tb_01_20_2020  volmode               default                default
tank/seagate_3tb_01_20_2020  snapshot_limit        none                   default
tank/seagate_3tb_01_20_2020  snapshot_count        none                   default
tank/seagate_3tb_01_20_2020  snapdev               hidden                 default
tank/seagate_3tb_01_20_2020  context               none                   default
tank/seagate_3tb_01_20_2020  fscontext             none                   default
tank/seagate_3tb_01_20_2020  defcontext            none                   default
tank/seagate_3tb_01_20_2020  rootcontext           none                   default
tank/seagate_3tb_01_20_2020  redundant_metadata    all                    default
tank/seagate_3tb_01_20_2020  encryption            off                    default
tank/seagate_3tb_01_20_2020  keylocation           none                   default
tank/seagate_3tb_01_20_2020  keyformat             none                   default
tank/seagate_3tb_01_20_2020  pbkdf2iters           0                      default

У меня нет снимков, я отключил резервирование и повторное резервирование, но все еще есть какое-то несоответствие места между zpool и list. (Да, я читал статьи, я знаю, что они не будут такими же, но это один диск в пуле, конечно ~ 86 ГБ слишком много). Кажется, я не восстанавливаю свои сбережения на сжатие для повторного использования в другом месте (я могу использовать только 176 ГБ вместо 263 ГБ)

Я надеюсь, что мне не хватает изменения конфигурации.

РЕДАКТИРОВАТЬ (zpool get all tank, созданный с помощью zpool create tank /dev/sda)

$ zpool get all tank
NAME  PROPERTY                       VALUE                          SOURCE
tank  size                           2.72T                          -
tank  capacity                       90%                            -
tank  altroot                        -                              default
tank  health                         ONLINE                         -
tank  guid                           901113366047988914             -
tank  version                        -                              default
tank  bootfs                         -                              default
tank  delegation                     on                             default
tank  autoreplace                    off                            default
tank  cachefile                      -                              default
tank  failmode                       wait                           default
tank  listsnapshots                  on                             local
tank  autoexpand                     off                            default
tank  dedupditto                     0                              default
tank  dedupratio                     1.00x                          -
tank  free                           263G                           -
tank  allocated                      2.46T                          -
tank  readonly                       off                            -
tank  ashift                         0                              default
tank  comment                        -                              default
tank  expandsize                     -                              -
tank  freeing                        0                              -
tank  fragmentation                  0%                             -
tank  leaked                         0                              -
tank  multihost                      off                            default
tank  checkpoint                     -                              -
tank  load_guid                      9196014585464561985            -
tank  autotrim                       off                            default
tank  feature@async_destroy          enabled                        local
tank  feature@empty_bpobj            active                         local
tank  feature@lz4_compress           active                         local
tank  feature@multi_vdev_crash_dump  enabled                        local
tank  feature@spacemap_histogram     active                         local
tank  feature@enabled_txg            active                         local
tank  feature@hole_birth             active                         local
tank  feature@extensible_dataset     active                         local
tank  feature@embedded_data          active                         local
tank  feature@bookmarks              enabled                        local
tank  feature@filesystem_limits      enabled                        local
tank  feature@large_blocks           enabled                        local
tank  feature@large_dnode            enabled                        local
tank  feature@sha512                 enabled                        local
tank  feature@skein                  enabled                        local
tank  feature@edonr                  enabled                        local
tank  feature@userobj_accounting     active                         local
tank  feature@encryption             enabled                        local
tank  feature@project_quota          active                         local
tank  feature@device_removal         enabled                        local
tank  feature@obsolete_counts        enabled                        local
tank  feature@zpool_checkpoint       enabled                        local
tank  feature@spacemap_v2            active                         local
tank  feature@allocation_classes     enabled                        local
tank  feature@resilver_defer         enabled                        local
tank  feature@bookmark_v2            enabled                        local

Я задал этот точный вопрос на github openzfs и получил ответ:

https://github.com/openzfs/zfs/issues/10260#issuecomment-620332829

TL; DR: посмотрите на настройку spa_slop_shift.