Содержание

Увеличение дискового пространства в ОС FreeBSD

Параметры диска

Для того, чтобы сделать новое дисковое пространство доступным для операционной системы, следуйте инструкции.

Откройте терминал под пользователем root:

su -

Спросит пароль - введите его:

password:

В качестве примера приведено расширение дискового пространства с 10GB до 20GB.

С помощью утилит camcontrol и part посмотрим полный размер диска и разделы на нём:

root@freebsd_9:~ # camcontrol readcap da0 -h
Device Size: 20 G, Block Length: 512 bytes

Теперь выведем информацию службой Gpart:

root@freebsd_9:~ # gpart show -p
=> 34 20971453 da0 GPT (10G)
   34 1024 da0p1 freebsd-boot (512k)
   1058 4194304 da0p2 freebsd-swap (2.0G)
   4195362 16776125 da0p3 freebsd-zfs (8G)

 

К сожалению, утилита gpart не увидит новый размер диска без перезагрузки.

Перезагружаемся:

reboot

После перезагрузки проверяем состояние разделов на диске:

root@freebsd_9:~ # gpart show -p
=> 34 20971453 da0 GPT (20G) [CORRUPT]
   34 1024 da0p1 freebsd-boot (512k)
   1058 4194304 da0p2 freebsd-swap (2.0G)
   4195362 16776125 da0p3 freebsd-zfs (8G)

Gpart сообщает, что диск поврежден. Исправляем командой:

root@freebsd_9:~ # gpart recover da0
da0 recovered

Проверяем статус файловой системы:

root@freebsd_9:~ # zpool status -v
  pool: zroot
 state: ONLINE
  scan: none requested
config:

NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
   gptid/d324a6ec-00a3-11e6-8c4d-005056b634ff ONLINE 0 0 0

errors: No known data errors

Если ошибок не найдено, готовим систему для работы с дисковыми разделами

Разделы диска

Отлаживаем флаги:

root@freebsd_9:~ # sysctl kern.geom.debugflags=16
kern.geom.debugflags: 0 -> 16

Разширяем раздел 3 (freebsd-zfs) на котором у нас корневая ZFS.

root@freebsd_9:~ # gpart resize -i 3 da0
da0p3 resized

Проверяем:

root@freebsd_9:~ # gpart show -p
=> 34 41942973 da0 GPT (20G)
   34 1024 da0p1 freebsd-boot (512k)
   1058 4194304 da0p2 freebsd-swap (2.0G)
   4195362 37747645 da0p3 freebsd-zfs (18G)

Видим что freebsd-zfs расширин.

Возвращяем значение параметра kern.geom.debugflag в ноль:

root@freebsd_9:~ # sysctl kern.geom.debugflags=0
kern.geom.debugflags: 16 -> 0

Разрешаем авторасширение ZFS

root@freebsd_9:~ # zpool set autoexpand=on zroot

Находим значение guid для партиции, на которой zroot:

root@freebsd_9:~ # zdb
zroot:
   version: 5000
   name: 'zroot'
   state: 0
   txg: 39
   pool_guid: 3841104802294009910
   hostname: 'freebsd_9.3'
   vdev_children: 1
   vdev_tree:
      type: 'root'
      id: 0
      guid: 3841104802294009910
      children[0]:
         type: 'disk'
         id: 0
         guid: 3061978126472363673
         path: '/dev/gptid/d324a6ec-00a3-11e6-8c4d-005056b634ff'
         phys_path: '/dev/gptid/d324a6ec-00a3-11e6-8c4d-005056b634ff'
         whole_disk: 1
         metaslab_array: 34
         metaslab_shift: 26
         ashift: 12
         asize: 8584429568
         is_log: 0
         create_txg: 4
   features_for_read:
      com.delphix:hole_birth

У нас guid: 3061978126472363673

Отдаем команду ZFS использовать все доступное пространство — ключик -e указывая выше найденный guid:

root@freebsd_9:~ # zpool online -e zroot 3061978126472363673

Проверяем, что получилось:

root@freebsd_9:~ # zpool list zroot
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
zroot 17.9G 1.81G 16.1G 10% 1.00x ONLINE -

Готово