- Расширение (увеличение) xfs корневого раздела / без остановки
- Онлайн курс по Linux
- Помогла статья? Подписывайся на telegram канал автора
- Автор Zerox
- 34 комментария
- Расширение диска или раздела Linux
- Шаг 1. Расширение раздела
- Обычные тома (part)
- 1. С помощью утилиты growpart (без отмонтирования раздела)
- 2. С помощью утилиты fdisk/parted (требуется отмонтировать раздел)
- LVM
- Шаг 2. Изменение размера для файловой системы
- Увеличение разделов с Gparted
Расширение (увеличение) xfs корневого раздела / без остановки
Обычно при создании разделов на серверах и виртуальных машинах я использую lvm, но не в этот раз. Мне нужно было увеличить корневой раздел / с файловой системой xfs и желательно без остановки сервера. Изначально была идея делать маленькие корневые разделы для виртуальных машины, чтобы быстро делать бэкап системы без данных. Но на деле у такого подхода есть свои минусы и неудобства.
Если у вас есть желание научиться администрировать системы на базе Linux, рекомендую познакомиться с онлайн-курсом «Linux для начинающих» в OTUS. Курс для новичков, для тех, кто с Linux не знаком. Подробная информация.
В итоге, настал момент, когда мне надоело чистить системный раздел и разгружать символьными ссылками. Я решил его увеличить. Если вы используете lvm, то никаких проблем нет. Просто добавляете еще один диск к виртуальной машине или увеличиваете текущий. Потом новый диск или раздел увеличенного диска добавляете к группе томов и расширяете нужный lvm раздел. Примерно вот так:
# vgextend vg00 /dev/sdb # lvextend -r -l +100%FREE /dev/vg00/root
Работает наживую даже с корневым разделом. Я часто это делал, способ рабочий, но пару раз я ловил проблемы с загрузкой виртуалки после этого. Так что не рекомендую экспериментировать с такими вещами. Если есть возможность, лучше обойтись без изменения разделов. А если не обойтись, то перед этим обязательно сделать бэкап всей информации и продумать варианты быстрого восстановления.
Сегодня я хотел рассказать о другой ситуации. Корневой раздел не на lvm, а на обычном разделе диска с xfs. Изначально диск виртуалки был 10G, через гипервизор я его расширил до 20G. Получилась такая картина:
Сам диск 20G, а его разделы занимают только 10. Мне надо расширить раздел sda2, на котором точка монтирования /.
На сайте redhat нашел казалось бы рабочий вариант с xfs_growfs. Попробовал запустить:
Получил в конце сообщение — data size unchanged, skipping. Стал разбираться, почему не работает команда, хотя вроде должна. Потом сообразил, что я не правильно понял ее назначение. Она расширит файловую систему xfs, если на разделе есть свободное место. Но у меня то раздел /dev/sda2 на 9G и он весь занят файловой системой. Расширять нечего. Надо сначала увеличить сам раздел.
Для увеличения раздела нагуглил другую утилиту — growpart. Устанавливаю на Centos 7:
# yum install cloud-utils-growpart
Напомню, что у меня перед расширением раздела с xfs вот такая картинка по разбиению диска — диск sda, далее /boot раздел sda1 на 1G, потом корень / sda2 на 9G и дальше свободное место 10G. Мне надо увеличить второй раздел свободным местом. Делаю это так:
# growpart /dev/sda 2 CHANGED: partition=2 start=2099200 old: size=18872320 end=20971520 new: size=39843807,end=41943007
Теперь уже расширяю файловую систему xfs на все пространство увеличенного раздела:
# xfs_growfs -d / meta-data=/dev/sda2 isize=512 agcount=4, agsize=589760 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=2359040, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 2359040 to 4980475
Корневой раздел root / с xfs расширил на лету, без остановки и перезагрузки системы. Изначально в рунете нашел информацию по увеличению раздела только через размонтирование, а если системный раздел, то через загрузку с livecd с последующим удалением текущего раздела и созданием нового, расширенного.
Покопался в буржунете и собрал вот такой рабочий вариант, который опробовал сам на практике на продуктовом сервере с предварительным бэкапом всей виртуалки. Откатываться не пришлось, все получилось не сложнее, чем с lvm. Изначально не питал больших надежд на такой исход, готовился к переустановке. Но обошелся малой кровью.
Онлайн курс по Linux
- Умение строить отказоустойчивые кластера виртуализации для запуска современных сервисов, рассчитанных под высокую нагрузку.
- Будете разбираться в современных технологиях кластеризации, оркестрации и виртуализации.
- Научитесь выбирать технологии для построения отказоустойчивых систем под высокую нагрузку.
- Практические навыки внедрения виртуализации KVM, oVirt, Xen.
- Кластеризация сервисов на базе pacemaker,k8s, nomad и построение дисковых кластеров на базе ceph, glaster, linstore.
Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!
Помогла статья? Подписывайся на telegram канал автора
Автор Zerox
Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале — https://t.me/srv_admin/425 или на сайте в контактах.
34 комментария
Имею виртуалку Zabbix Appliance 6.0.6 со следующими разделами [root@appliance ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 25M 1.9G 2% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda2 4.0G 1.4G 2.7G 34% /
/dev/sda3 1014M 40M 975M 4% /tmp
/dev/sda1 488M 50M 403M 11% /boot
tmpfs 393M 0 393M 0% /run/user/0
/dev/sda5 4.5G 1.6G 2.9G 36% /var/lib/mysql Необходимо увеличить свободное место в партиции для БД до максимума, место есть [root@appliance ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 256G 0 disk
├─sda1 8:1 0 512M 0 part /boot
├─sda2 8:2 0 4G 0 part /
├─sda3 8:3 0 1G 0 part /tmp
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 4.5G 0 part /var/lib/mysql Сначала делаю как предложено в статье [root@appliance ~]# growpart /dev/sda 5
CHANGED: partition=5 start=11538432 old: size=9433088 end=20971520 new: size=525332447 end=536870879 Расширяю дисковое пространство [root@appliance ~]# xfs_growfs -d /dev/sda5
meta-data=/dev/sda5 isize=512 agcount=4, agsize=294784 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=0 inobtcount=0
data = bsize=4096 blocks=1179136, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data size unchanged, skipping Не получилось, пробую по другому [root@appliance ~]# xfs_growfs -d /var/lib/mysql
meta-data=/dev/sda5 isize=512 agcount=4, agsize=294784 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=0 inobtcount=0
data = bsize=4096 blocks=1179136, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data size unchanged, skipping Тот же результат. Ну и закономерный вопрос — ЧЯДНТ ? Судя по комментам людям удавалось увеличить дисковый раздел для Zabbix предложенным способом, но в готовом решении Zabbix он почему то не работает.
Расширение диска или раздела Linux
Обновлено: 04.04.2023 Опубликовано: 22.06.2017
В зависимости от типа раздела и файловой системы, действия различаются.
Любая работа с диском несет риск потери информации. Перед началом работ убедитесь в наличие резервных копий ценных данных.
Шаг 1. Расширение раздела
Мы рассмотрим варианты работы с обычными томами (разделами) и томами LVM. Проверить, какой тип раздела у нас используется можно командой:
Нам интересны варианты part и lvm.
Обычные тома (part)
Допустим, есть диск /dev/sdb и раздел /dev/sdb2, который нужно увеличить. Разберем два подхода, сделать это.
1. С помощью утилиты growpart (без отмонтирования раздела)
Данная утилита позволяет увиличить размер слайса без необходимости его отмонтировать. Это очень удобно для работы с корневыми разделами. Данная утилита не установлена в системе. В зависимости от последней наши действия будут различаться.
а) Для систем DEB:
apt install cloud-guest-utils
б) Для систем RPM:
yum install cloud-utils-growpart
Если наш диск имеет разметку GPT, то потребуется установить также утилиту gdisk.
а) Для DEB:
Установка growpart завершена. Идем дальше.
Для расширения раздела /dev/sdb2 вводим команду:
Мы должны увидеть что-то на подобие:
CHANGED: partition=2 start=4096 old: size=20965376 end=20969472 new: size=41938910 end=41943006
2. С помощью утилиты fdisk/parted (требуется отмонтировать раздел)
Данный способ удобнее тем, что не нужно устанавливать дополнительных утилит, но он потребует отмонтирование раздела. Это можно сделать командой:
В случае работы с корневой директорией, отмонтировать ее не получиться. В таком случае необходимо загрузить компьютер с Windows LiveCD или GParted Live.
Подключаемся утилитой fdisk к /dev/sdb:
Если мы работаем с разделом более чем 2Тб, используем утилиту parted.
Удаляем раздел (не переживайте — все данные сохраняются):
* в моем примере, раздел для удаления на второй позиции.
На запрос начального и конечного секторов просто нажимаем Enter.
Если раздел был загрузочный, добавляем соответствующий флаг:
Еще раз проверяем, что получилось:
LVM
LVM-тома расширяются на лету, даже для корневых разделов. В данном примере, работаем с /dev/sda.
Подробнее о работе с LVM читайте в инструкции Как работать с LVM.
Открываем диск утилитой fdisk:
* напомню, что при работе с диском 2Тб и более, следует использовать утилиту parted.
Номер раздела оставляем тот, который предлагает система (просто нажимаем Enter).
Первый и последний сектора также оставляем по умолчанию для использования всего дискового пространства (еще два раза Enter).
Выбираем номер раздела (в моем примере создавался раздел 3):
Командой L можно посмотреть список всех типов, но нас интересует конкретный — LVM (8e):
Проинформируем систему, что в таблице разделов произошли изменения:
Создаем физический том из нового раздела:
Смотрим наши Volume Group и для нужного добавляем созданный том:
vgextend vg_centos /dev/sda3
* в моем примере группа томов LVM называется vg_centos
Смотрим LVM-разделы и расширяем пространства для нужного:
lvextend -l +100%FREE /dev/vg_centos/lv_root
* данная команда расширяем LVM-раздел /dev/vg_centos/lv_root, используя все свободное пространство (100%FREE).
Шаг 2. Изменение размера для файловой системы
После того, как на предыдущем шаге мы расширили раздел, система по-прежнему будет видеть старый по объему диск. Чтобы это исправить, необходимо выполнить команду по изменению размера файловой системы. В зависимости от последней, команды различаются.
Посмотреть файловую систему:
ext2/ext3/ext4:
* обратите внимание, что в данных примерах используются различные устройства.
Если раздел был отмонтирован, монтируем его, например:
Проверяем, что настройки применились:
Увеличение разделов с Gparted
Если работы выполняются на системе с графическим интерфейсом или есть возможность перезагрузить сервер и загрузиться с LiveCD, можно воспользоваться простым средством — утилитой Gparted, которая позволяем менять размер разделов мышкой.
Запускаем утилиту — выбираем диск, с которым будем работать — кликаем правой кнопкой по разделу, который хотим увеличить и выбираем Resize/Move:
В открывшемся окне с помощью мышки или форм меняем размер раздела:
Нажимаем кнопку Resize/Move.
Проверяем изменения в окне программы и сохраняем настройки кнопкой «Apply All Operations»: