Изменение SWAP-раздела на ZFS
28.09.2010
Процедура измения размера раздела подкачки на 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 -
Таким образом мы жестко закрепили необходимое место за нашим блочным устройством. Странно что это не указано в оффициальной документации в разделе изменения размера файла подкачки…
21.09.2011 в 15:41
Наконец-то поправили. Теперь 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 #