Всем привет!
Несколько месяцев назад получил алерт от Zabbix, что на почтовом сервере осталось менее 20% места на основном разделе.
Т.к. сервер виртуализирован с помощью VmWare ESXi, то добавить объем жесткому диску не проблема.
Но надо правильно приготовить:)
Решил повторить опыт и поделиться что и как я делал.
Исходные данные:
- FreeBSD 12.1
- Исходный размер жесткого диска — 25GB
- Swap раздел — 1GB
- Новый размер диска — 50GB
Смотрим помощью gpart что у нас есть:
# gpart show => 40 52428720 ada0 GPT (25G) 40 1024 1 freebsd-boot (512K) 1064 50330624 2 freebsd-ufs (24G) 50331688 2097072 3 freebsd-swap (1.0G)
Так же посмотрим информацию о SWAP:
# swapinfo -h Device 1K-blocks Used Avail Capacity /dev/ada0p3 1048536 0B 1.0G 0%
Записываем все, выключаем сервер и накидываем объем диска.
Загружаемся.
Если у вас реальный сервер на котором крутится процессы использующие запись в своп, то лучше все делать в однопользовательском (Single Mode) режиме.
Проверим что у нас добавилось:
# gpart show ada0 => 40 52428720 ada0 GPT (50G) [CORRUPT] 40 1024 1 freebsd-boot (512K) 1064 50330624 2 freebsd-ufs (24G) 50331688 2097072 3 freebsd-swap (1.0G)
Получаем сообщение, что GPT таблица имеет статус CORRUPT, чиним:
# gpart recover ada0
# gpart show ada0 => 40 104857520 ada0 GPT (50G) 40 1024 1 freebsd-boot (512K) 1064 50330624 2 freebsd-ufs (24G) 50331688 2097072 3 freebsd-swap (1.0G) 52428760 52428800 - free - (25G)
Видим, что в конце нам стало доступно 25GB свободного места, чтобы добавить их ко второму разделу, нужно удалить swap.
Отключаем swap:
# swapoff /dev/ada0p3
Удалим SWAP раздел, в моем случае это 3 раздел ada0
# gpart delete -i 3 ada0
Проверяем, что у нас осталось:)
# gpart show ada0 => 40 104857520 ada0 GPT (50G) 40 1024 1 freebsd-boot (512K) 1064 50330624 2 freebsd-ufs (24G) 50331688 54525872 - free - (26G)
Видим, что у нас остался один раздел (слайс), swap уничтожен.
HandBook советует следующие операции по изменению размера разделов производить при размонтированных файловых системах, на боевых серверах крайне рекомендую к этому прислушаться!
Отключаем безопасность GEOM:
# sysctl kern.geom.debugflags=16
Решаем, что для swap-раздела оставляем 2GB, а основной раздел увеличиваем до 48GB (25GB+25GB-2GB)
# gpart resize -i 2 -s 48G -a 4k ada0
-i 2 — указывает на раздел
Еще раз проверяем:
# gpart show ada0 => 40 104857520 ada0 GPT (50G) 40 1024 1 freebsd-boot (512K) 1064 100663296 2 freebsd-ufs (48G) 100664360 4193200 - free - (2.0G)
Создадим на оставшемся свободном месте раздел для подкачки:
# gpart add -t freebsd-swap -a 4k ada0 ada0p3 added
# gpart show ada0 => 40 104857520 ada0 GPT (50G) 40 1024 1 freebsd-boot (512K) 1064 100663296 2 freebsd-ufs (48G) 100664360 4193200 3 freebsd-swap (2.0G)
Все на месте, как мы и планировали, осталось расширить файловую систему,
при этом еще раз получаем предупреждение, что мы планируем делать изменения на примонтированной файловой системе и рекомендуют сделать резервную копию данных перед этой операцией:
# growfs /dev/ada0p2 Device is mounted read-write; resizing will result in temporary write suspension for /. It's strongly recommended to make a backup before growing the file system. OK to grow filesystem on /dev/ada0p2, mounted on /, from 24GB to 48GB? [yes/no]
Подключаем файл подкачки:
# swapon /dev/ada0p3
Проверяем размер файловой системы:
# df -h Filesystem Size Used Avail Capacity Mounted on /dev/ada0p2 46G 1,3G 42G 3% / devfs 1,0K 1,0K 0B 100% /dev
Наличие свопа:
# swapinfo -h Device 1K-blocks Used Avail Capacity /dev/ada0p3 2096600 0B 2.0G 0%
Возвращаем на место настройки GEOM
# sysctl kern.geom.debugflags=0
Собственно все.