FreeBSD / UFS: Изменение размера раздела
Отступление:
Относительно недавно, я обнаружил, что на одном из серверов под управлением FreeBSD не хватает места для картинок одной здоровой базы данных
Данный факт, казалось бы, был всего нюансом (т.к. это был VPS сервер на выделенной машине VMWare ESXi).
Увеличить "физически" жесткий диск на виртуальной машине, как все понимают не предоставило проблем...
Но я и подумать не мог, что столкнусь с трудностями переопределения разметки тома файловой системы FreeBSD (UFS).
Как оказалось, Acronis - не умеет работать с этим типом файловой системы. И его дург Gparted (который можно скачать в LiveCD) тоже отказался понимать его (хотя должен, судя по списку поддерживаемых файловых систем).
Почему Gparted не понравился мой HDD, я разбираться не стал и сразу начал крутить маны по самой FreeBSD, результат приведен ниже...
Советую сразу перезагрузить систему в однопользовательском режиме (Single user), однако некоторые комманды становятся доступными если установить флаг:
sysctl kern.geom.debugflags=16
Изменить разметку диска
И так, если был изменен 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): ?
b back up GPT data to a file
c change a partition's name
d delete a partition
i show detailed information on a partition
l list known partition types
n add a new partition
o create a new empty GUID partition table (GPT)
p print the partition table
q quit without saving changes
r recovery and transformation options (experts only)
s sort partitions
t change a partition's type code
v verify disk
w write table to disk and exit
x extra functionality (experts only)
? print this menu
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): ?
a set attributes
c change partition GUID
d display the sector alignment value
e relocate backup data structures to the end of the disk
g change disk GUID
h recompute CHS values in protective/hybrid MBR
i show detailed information on a partition
l set the sector alignment value
m return to main menu
n create a new protective MBR
o print protective MBR data
p print the partition table
q quit without saving changes
r recovery and transformation options (experts only)
s resize partition table
t transpose two partition table entries
u Replicate partition table on new device
v verify disk
w write table to disk and exit
z zap (destroy) GPT data structures and exit
? print this menu
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
Удачной Вам работы с дисками! И не забывайте главное правило - ЗАБЭКАПЬСЯ!
Источник: Google, Unix-форумы и отдельно хочется отметить "Моя дикая страничка"
Комментарии (6)
Спасибо!
Готовлюсь к похожей операции.
Только один вопрос - а удаленный радел подкачки восстанавливать не надо?
Раздел подкачки - на ваше усмотрение. Создавайте если памяти мало (я в любом случае создаю).
Но данные из раздела подкачки - восстанавливать не надо.
Олег, добрый день. А как можно уменьшит диск?
забыл swapoff -a указать еще
стоит FreeBSD на Hyper-V, расширил диск с 30 до 100, но фряха видит прежний размер
# gpart show
=> 40 209715120 da0 GPT (100G)
40 1024 1 freebsd-boot (512K)
1064 39844856 2 freebsd-ufs (19G)
39845920 2097079 3 freebsd-swap (1.0G)
41942999 167772161 - free - (80G)
# growfs -y /dev/da0p2
growfs: requested size 19GB is not larger than the current filesystem size 19GB
ни как не могу увеличить. Подскажите как пожалуйста.
Борис
а это
“
# gpart delete -i 3 da0
# gpart resize -i 2 da0
В приведенном выше листинге, я удалил раздел подкачки и растянул основной раздел на все свободное место.”