Увеличение дискового пространства в ОС 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 -
Готово