Место на сервере имеет свойство заканчиваться. Происходит это всегда неожиданно и в самый неподходящий момент.
Шлифуем админское кунг-фу. Расширим раздел диска и файловую систему на лету без перезагрузки и без потери данных. Ранее я уже расширял разделы с помощью fdisk или growpart. Сегодня у меня ещё более интересный вариант: расширить нужно LVM раздел.
Подготовка
Посмотрим сначала, что нам нужно увеличить.
df -hT
/dev/mapper/centos_mp1-root используется на 100%, файловая система XFS. Мне уже не нравится всё что со словом mapper.
pvs
lvs
vgs
Вы только посмотрите на это, кто-то на виртуальной машине расширял LVM раздел сервера путём добавления новых виртуальных дисков. У нас имеется 7 дисков с sda по sdg (12 разделов), все собраны в группу, которая разбита на три тома: root, home и swap. Мы можем точно таким же образом добавить новый диск и подключить его в LVM, что я делать категорически не хочу.
Давайте сделаем иначе, расширим один из дисков, к примеру sdg со 100 ГБ до 250 ГБ. Увеличиваем диск на виртуальной машине VMware. Затем делаем снапшот на всякий случай. Если сначала сделать снапшот, то не получится увеличить размер диска.
Меняю размер последнего диска на 250 ГБ. OK.
Расширяем раздел
Заходим на виртуалку по SSH под рутом. Мы увеличили диск sdg но система об этом не знает, нужно заставить сделать рескан диска.
echo 1>/sys/class/block/sdg/device/rescan
А может не sdg, там было несколько дисков по 100 ГБ? Делаем так:
for D in $(ls /sys/block/sd?/device/rescan ); do echo ${D}; echo 1 > ${D}; done
Проверяем, что диск увеличился:
lsblk | grep sdg
Да, это тот диск, его размер стал 250 ГБ. Выводим список дисков в LVM.
pvdisplay
И увеличиваем нужный:
pvresize /dev/sdg
Хочется заметить, что процедура удалась, поскольку на диске было немного места. Если места нет совсем, то получится как-то так:
[root@srv60]# pvresize /dev/sdg Couldn't create temporary archive name. Volume group "centos_mp1" metadata archive failed. 0 physical volume(s) resized / 1 physical volume(s) not resized
Тогда нужно что-нибудь ненужное удалить/перенести, освободить немного места и повторить.
pvdisplay
Размер физического тома LVM увеличился до 250 ГБ.
pvs
lvs
vgs
Имеем 150 ГБ нераспределённого пространства. Добавим в root:
lvextend -l +100%FREE /dev/centos_mp1/root
lvs
Место добавилось. Расширяем файловую систему XFS:
xfs_growfs /dev/mapper/centos_mp1-root
Место появилось. Теперь можно поставить в план задачу по созданию нового нормального сервера с нормальными дисками.
Ссылки
Linux — расширяем раздел на лету
Linux — расширяем раздел на лету 2
Linux — расширяем раздел на лету 3
Linux — расширяем раздел на лету 4