Итак, если был изменен размер HDD (например в виртуальной машине или добавлен HDD в рэйд-массив), то необходимо обновить структуру конца диска, делается это утилитой gdisk
# gdisk /dev/da0
GPT fdisk (gdisk) version 0.8.5
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): v
Problem: The secondary header's self-pointer indicates that it doesn't reside
at the end of the disk. If you've added a disk to a RAID array, use the 'e'
option on the experts' menu to adjust the secondary header's and partition
table's locations.
Identified 1 problems!
Command (? for help): x
Expert command (? for help): e
Relocating backup data structures to the end of the disk
Expert command (? for help): v
No problems found. 104857600 free sectors (50.0 GiB) available in 1
segments, the largest of which is 104857600 (50.0 GiB) in size.
Expert command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/da0.
Warning: The kernel may continue to use old or deleted partitions.
You should reboot or remove the drive.
The operation has completed successfully.
В приведенном выше листинге выполняются следующие команды:
1. gdisk /dev/da0 – Запускаем утилиту с указанием диска
Утилита определяет диск как GPT
2. Command: v – проверяем диск на ошибки
Проверка говорит, что диск имеет проблемы, – а именно увеличен, но разметка старая.
3. Command: x – Открыть расширенное меню
4. Command: e – Исправить конец диска. Тут нас предупреждают, что желательно сохранить предварительно все данные. (у меня копия имелась, а вы сделайте свою!)
5. Command: w – Записать изменения на диск.
Изменить разметку разделов
После изменения разметки диска, нам нужно изменить разметку разделов, тут приходит на помощь утилита gpart.
# gpart show da0
=> 34 209715133 da0 GPT (100G)
34 128 1 freebsd-boot (64k)
162 98566016 2 freebsd-ufs (47G)
98566178 5242880 3 freebsd-swap (2.5G)
103809058 105906109 - free - (50G)
# gpart delete -i 3 da0
# gpart resize -i 2 da0
В приведенном выше листинге, я удалил раздел подкачки и растянул основной раздел на все свободное место.
Изменить размер файловой системы
После изменения разметки разделов, необходимо изменить размер файловой системы, утилита growfs.
growfs -y /dev/da0p2
И в заключение – обязательно проверьте диск на ошибки:
fsck -yf -t ufs /dev/da0p2
Посмотреть результаты:
# gpart show
=> 34 314572733 da0 GPT (150G)
34 128 1 freebsd-boot (64k)
162 314572605 2 freebsd-ufs (150G)
# df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/da0p2 145G 99G 34G 75% /
devfs 1.0k 1.0k 0B 100% /dev