Процедура измения размера раздела подкачки на ZFS подробно описана в документации, за исключением одного момента, который может в определенной ситуации стать фатальным для файловой системы.
И так порядок действий по документации:

# zfs list rpool/swap
NAME         USED  AVAIL  REFER  MOUNTPOINT
rpool/swap    2.066G   122G    16K  -
# swap -d /dev/zvol/dsk/rpool/swap
# zfs set volsize=96G rpool/swap
# swap -a /dev/zvol/dsk/rpool/swap
# zfs list rpool/swap
NAME         USED  AVAIL  REFER  MOUNTPOINT
rpool/swap    2.066G   122G    16K  -


Что такое? Размер тома не изменился? На самом деле ситуацию поясняет вывод следующей команды:

# zfs get all rpool/swap
NAME        PROPERTY              VALUE                  SOURCE
rpool/swap  type                  volume                 -
rpool/swap  creation              Thu Sep 23 16:44 2010  -
rpool/swap  used                  2.06G                  -
rpool/swap  available             122G                   -
rpool/swap  referenced            16K                    -
rpool/swap  compressratio         1.00x                  -
rpool/swap  reservation           none                   default
rpool/swap  volsize               96G                    local
rpool/swap  volblocksize          8K                     -
rpool/swap  checksum              on                     default
rpool/swap  compression           off                    default
rpool/swap  readonly              off                    default
rpool/swap  shareiscsi            off                    default
rpool/swap  copies                1                      default
rpool/swap  refreservation        2.06G                  local
rpool/swap  primarycache          all                    default
rpool/swap  secondarycache        all                    default
rpool/swap  usedbysnapshots       0                      -
rpool/swap  usedbydataset         16K                    -
rpool/swap  usedbychildren        0                      -
rpool/swap  usedbyrefreservation  2.06G                  -
rpool/swap  logbias               latency                default

Не изменился размер резервируемого пространства refreservation. Таким образом том стал разреженым, т.е. его размер будет увеличиваться по мере необходимости.
На практике это может привести к тому, что логический размер тома превысит доступное дисковое пространство. При переполнении пула это может привести к потере данных или даже краху файловой системы — не экспериментировал. Чтобы предотвратить эту ситуацию следует синхронизировать резервируемое место новому разделу тома.

# zfs set refreservation=96G rpool/swap
# zfs list rpool/swap
NAME                    USED  AVAIL  REFER  MOUNTPOINT
rpool/swap               96G   122G    16K  -

Таким образом мы жестко закрепили необходимое место за нашим блочным устройством. Странно что это не указано в оффициальной документации в разделе изменения размера файла подкачки…

Один комментарий на запись “Изменение SWAP-раздела на ZFS”

  1. Utyf пишет:

    Наконец-то поправили. Теперь refreservation меняется вместе при изменении размена volume.
    ———————
    root@server # zfs list rpool/swap
    NAME USED AVAIL REFER MOUNTPOINT
    rpool/swap 7.91G 62.5G 55.5M —
    root@server # zfs set volsize=20G rpool/swap
    root@server # zfs list rpool/swap
    NAME USED AVAIL REFER MOUNTPOINT
    rpool/swap 20G 62.5G 55.5M —
    root@server # zfs get all rpool/swap | grep refreservation
    rpool/swap refreservation 20G local
    rpool/swap usedbyrefreservation 19.9G —
    root@server #