FreeBSD / UFS: Изменение размера раздела

FreeBSD / UFS: Изменение размера раздела
просмотров: 2684025 апреля 2014 года

Отступление:

Относительно недавно, я обнаружил, что на одном из серверов под управлением FreeBSD не хватает места для картинок одной здоровой базы данных smile

Данный факт, казалось бы, был всего нюансом (т.к. это был 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)

gallosha (7 декабря 2015 года, 19:10:35)

Спасибо!
Готовлюсь к похожей операции.
Только один вопрос - а удаленный радел подкачки восстанавливать не надо?

Олег (10 декабря 2015 года, 16:10:19)

Раздел подкачки - на ваше усмотрение. Создавайте если памяти мало (я в любом случае создаю).
Но данные из раздела подкачки - восстанавливать не надо.

Axixa (8 июня 2017 года, 10:11:43)

Олег, добрый день. А как можно уменьшит диск?

Лекс (24 августа 2017 года, 10:40:49)

забыл swapoff -a указать еще

Борис (28 сентября 2017 года, 06:42:43)

стоит 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

ни как не могу увеличить. Подскажите как пожалуйста.

Александр (28 сентября 2017 года, 09:36:23)

Борис
а это

# gpart delete -i 3 da0
# gpart resize -i 2 da0
В приведенном выше листинге, я удалил раздел подкачки и растянул основной раздел на все свободное место.”

Что скажем?