Расширение диска Online
В данной статье мы опишем способ увеличения доступного пространства в Linux системе. Данный способ работает в режиме online, то есть не требует перезагрузок сервера или размонтирования.
Итак, у нас есть виртуальный сервер с заканчивающимся местом на диске (раздел не имеет значения - можно расширить даже корневой раздел). Мы в гипервизоре увеличили размер диска. Требуется увеличить размер файловой системы.
Если сервер с базой данных или высоконагруженный - желательно перевести базу в readonly или как то ещё ограничить/снять нагрузку с сервера, чтобы дисковые запросы на запись не мешали нам.
Увеличение partition
Имеем
# fdisk -l /dev/sda Disk /dev/sda: 37.6 GB, 37580963840 bytes, 73400320 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk label type: dos Disk identifier: 0x000eefc7 Device Boot Start End Blocks Id System /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 62914559 30407680 8e Linux LVM
Система увидела увеличение диска /dev/sda на 5Гб, но разделы остались без изменений.
Раздел расширяется через удаление! Сначала мы удаляем раздел, который хотим увеличить, а затем на этом же месте создаём новый. Не беспокойтесь - данные не пропадут.
# fdisk /dev/sda Command (m for help): d # Удаляем партицию Partition number (1,2, default 2): 2 # 2-ю Partition 2 is deleted # Успешно Command (m for help): p # Смотрим что получилось Disk /dev/sda: 37.6 GB, 37580963840 bytes, 73400320 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk label type: dos Disk identifier: 0x000eefc7 Device Boot Start End Blocks Id System /dev/sda1 * 2048 2099199 1048576 83 Linux # Раздел sda2 удалён Command (m for help): n # создаём новую партицию Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): p # нам надо primary Using default response p Partition number (2-4, default 2): 2 # номер раздела 2 как и был раньше First sector (2099200-73400319, default 2099200): # по-умолчанию предлагается сектор с которого и начинался удалённый раздел, но на всякий случай проверяем с тем что было раньше - 2099200 Using default value 2099200 Last sector, +sectors or +size{K,M,G} (2099200-73400319, default 73400319): # по-умолчанию предлагает увеличить до максимума - нас это устраивает Using default value 73400319 Partition 2 of type Linux and of size 34 GiB is set # успешно Command (m for help): t # вносим метку и типе партиции. В моём случае у меня LVM - код 8e. Можно посмотреть в предыдущем выводе команды fdisk -l /dev/sda - столбик Id, то что нам надо Partition number (1,2, default 2): Hex code (type L to list all codes): 8e Changed type of partition 'Linux' to 'Linux LVM' # успешно Command (m for help): w # записываем изменения на диск The partition table has been altered!
При записи изменений на диск и выходе fdisk ругнётся, что требуется перезагрузить сервер или обновить информацию о резделах командой partprobe или kpartx.
Перезагрузка нам не нужна, так что запускаем
# partprobe
Проверяем что прошло успешно и раздел увеличен.
# fdisk -l /dev/sda Disk /dev/sda: 37.6 GB, 37580963840 bytes, 73400320 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk label type: dos Disk identifier: 0x000eefc7 Device Boot Start End Blocks Id System /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 73400319 35650560 8e Linux LVM
Но доступного места больше не стало!
# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 27G 1.7G 26G 7% / /dev/sda1 1014M 212M 803M 21% /boot
Расширение LVM
Поскольку у нас есть LVM, то требуется и его расширять. Если у Вас раздел сразу отформатирован в ext4 или xfs, то можете переходить к следующему разделу.
Имеем
# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <29.00g 4.00m
Для начала требуется увеличить PV
# pvresize /dev/sda2
Получаем
# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <34.00g 5.00g
Проверяем, что VG так же увидел увеличение раздела
# vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <34.00g 5.00g
Теперь увеличиваем LV
# lvextend -l +100%FREE /dev/centos/root
Тут centos - название VG, а root - LV Проверяем, что всё получилось
# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- <32.00g swap centos -wi-ao---- 2.00g
Resize ext4/xfs
У меня Centos с XFS в качестве файловой системы, поэтому я даю команду
# xfs_growfs /
В качестве аргумента указывается точка монтирования (у меня это корень).
Для ext4 команда будет такая
# resize2fs /dev/centos/root