Окружение
Сервер на CentOS 7, всего 2Гб ОЗУ и 300 Гб свободного места на диске. Диск побит на три раздела:/dev/sda1 - ext2 - /boot
/dev/sda2 - LVM
/dev/sda3 - empty 300Gb
В LVM всего одна группа centos и один раздел root на 50ГБ.
Задача
Нужно уменьшить раздел root до 42Гб и добавить раздел swap в освободившееся место.Решение
Т.к. у меня полно свободного места на sda3, я решил расширить LVM на этот раздел, добавить на него логический раздел на 50Гб и скопировать в него root. После этого можно будет загрузиться с копии root, проделать всё необходимое с основным разделом, после чего удалить копию.За дело!
Первое что пришлось сделать - отключить на время SELinux, т.к. он не ожидает, что разделы начнут меняться.# vim /etc/selinux/config
SELINUX=enforcing нужно заменить на SELINUX=disabled
Затем нужно перезагрузить сервер. Но можно попробовтаь переключить SELinux в разрешающий режим
# setenforce Permissive
Также нужно отключить все активно работиющие с диском процессы.
Затем нужно увеличить размер Volume Group
# vgextend centos /dev/sda3
Создать раздел
# lvcreate -L 50G -n newroot centos
Теперь можно скопировать содержимое раздела
# dd if=/dev/centos/root of=/dev/centos/newroot bs=1M
Т.к. раздел копировался с работающей системы, то он наверняка будет с ошибками. Исправим их.
# e2fsck -f /dev/centod/newroot
Если всё прошло нормально, то можно заменить разделы местами:
# lvrename centos root oldroot
# lvrename centos newroot root
Теперь очень важно скрестить пальцы, прочитать несколько молитв и т.д. Ребут.
После загрузки можно изменять размер основного раздела. Но для начала имеет смысл убедиться в отсутствии ошибок
# e2fsck -f /dev/centos/oldroot
Теперь нужно уменьшить размер ФС, при этом её размер должен быть не больше, чем размер будущего раздела LVM. Я же сделал чуть меньше
# resize2fs /dev/centos/oldroot 40G
После этого нужно уменьшить размер раздела в LVM
# lvresize -L 42G /dev/centos/oldroot
И расширить размер ФС до LVM
# resize2fs /dev/centos/oldroot
Проверяю что получилось
# lvs
# lvdisplay
# fdisk -l
Пол дела сделано, можно снова загружаться с основного раздела
# lvrename centos root newroot
# lvrename centos oldroot root
# lvs
# reboot
После загрузки нужно удалить лишнее
# lvremove /dev/centos/newroot
# vgreduce centos /dev/sda3
# pvremove /dev/sda3
Теперь можно создать раздел для swap
# lvcreate -n swap -l 100%FREE centos
И добавить swap в систему
# mkswap /dev/centos/swap
# echo "/dev/centos/swap swap swap defaults 0 0" >> /etc/fstab
# swapon -a
Проверяю
# cat /proc/swaps
# free
Отлично! Теперь можно обратно включить SELinux и перезагрузиться.
Однако... У меня SELinux решил заново расставить метки при загрузке (о чём выдал предупреждение в консоле), потому сервер грузился довольно долго.
Комментариев нет:
Отправить комментарий