Имеем FreeBSD 9.0 RELEASE установленную в качестве гостевой ОС в VMWare vSphere 5.0. Корневой раздел в ZFS (swap тоже на ZFS). Ситуация — пожалели место — места стало нехватать.
# gpart show
=> 34 209715133 da0 GPT (100G)
34 94 1 freebsd-boot (47k)
128 209715039 2 freebsd-zfs (100G)
Увеличиваем размер корневого радела. Для этого в свойствах виртуальной машины просто вводим новый размер диска. Не мелочимся — добавим еще 100 Гб. Смотрим.
# camcontrol readcap da0 -h
Device Size: 200 G, Block Length: 512 bytes
# gpart show
=> 34 209715133 da0 GPT (100G)
34 94 1 freebsd-boot (47k)
128 209715039 2 freebsd-zfs (100G)
Не нашел способа заставить на горячую gpart увидеть измененный размер диска.
Перезагружаемся. Смотрим.
# gpart show
=> 34 209715133 da0 GPT (200G) [CORRUPT]
34 94 1 freebsd-boot (47k)
128 209715039 2 freebsd-zfs (100G)
Наш диск по мнению gpart поврежден. Исправляем. Смотрим что получилось.
# gpart recover da0
da0 recovered
# gpart show
=> 34 419430333 da0 GPT (200G)
34 94 1 freebsd-boot (47k)
128 209715039 2 freebsd-zfs (100G)
209715167 209715200 - free - (100G)
Все отлично — система добавленные 100 Гб видит. Смотрим статус ZFS.
freebsd# zpool status -v
pool: zroot
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
da0p2 ONLINE 0 0 0
errors: No known data errors
# zfs list zroot
NAME USED AVAIL REFER MOUNTPOINT
zroot 7.26G 90.7G 350M /
Делаем resize раздела с помощью gpart.
# gpart show
=> 34 419430333 da0 GPT (200G)
34 94 1 freebsd-boot (47k)
128 209715039 2 freebsd-zfs (100G)
209715167 209715200 - free - (100G)
# gpart resize -i 2 da0
gpart: Device busy
freebsd# sysctl kern.geom.debugflags=16
kern.geom.debugflags: 0 -> 16
freebsd# gpart resize -i 2 da0
da0p2 resized
# gpart show
=> 34 419430333 da0 GPT (200G)
34 94 1 freebsd-boot (47k)
128 419430239 2 freebsd-zfs (200G)
# sysctl kern.geom.debugflags=0
kern.geom.debugflags: 16 -> 0
Разрешаем авторасширение ZFS, по умолчанию выключено.
# zpool set autoexpand=on zroot
Смотрим состояние ZFS.
# zfs list zroot
NAME USED AVAIL REFER MOUNTPOINT
zroot 7.26G 93G 350M /
# zpool status -v
pool: zroot
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
da0p2 ONLINE 0 0 0
errors: No known data errors
Отдаем команду ZFS использовать все доступное пространство — ключик -e.
# zpool online -e zroot da0p2
Смотрим что получилось.
# zfs list zroot
NAME USED AVAIL REFER MOUNTPOINT
zroot 7.26G 189G 350M /
# zpool status -v
pool: zroot
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
da0p2 ONLINE 0 0 0
errors: No known data errors