Linux растянуть файловую систему

Как увеличить размер раздела и файловой системы после увеличения физического размера диска

Размер раздела диска и размер файловой системы

В Linux диск может использоваться целиком одним разделом или быть разделённым на несколько разделов (аналоги томов в Windows).

Обычно на этапе установки операционной системы делается разметка диска: создаются разделы диска, а затем эти разделы форматируются в ту или иную файловую систему. В этом случае размер файловой системы соответствует размеру раздела (или всего диска, если раздел один). То есть размеры файловых систем равны размерам разделов.

Но могут быть ситуации, когда размер файловой системы перестаёт соответствовать размеру раздела, на которой она размещена. Примеры таких ситуаций:

  • вы увеличили размер диска виртуального частного сервера (VPS)
  • вы заменили жёсткий диск вашего компьютера и корневую файловую систему перенесли с помощью утилиты dd (или других утилит поддерживающих создание и запись клона целых дисков и разделов) на новый диск

В обоих описанных случаях операционная система Linux сможет использовать только тот размер, который изначально имела файловая система.

Для ясности разберёмся с терминами:

Размер диска — весь размер физического или виртуального диска. Может использоваться операционной системой полностью или частично в рамках созданных разделов и файловых систем.

Размер раздела — пространство, которое занимает тот или иной раздел. При клонировании разделов с помощью dd на диск большего раздела, сохраняется разметка предыдущего диска. То есть операционная система может использовать даже новый диск только в пределах старой разметки диска.

Размер файловой системы — аналогичен размеру раздела, ОС может использовать раздел только в пределах размера файловой системы, даже если файловая система перенесена на новый диск большего раздела.

Если вы так и не поняли до конца чем различаются «размер раздела» и «размер файловой системы», то вам нужно знать, что, с практической точки зрения, при увеличении размера диска нужно выполнить две команды:

Читайте также:  Linux командная строка условие

Примечание: у некоторых хостинг провайдеров размер файловой системы увеличивается автоматически, после перехода на тарифный план с большим размером диска. Например, у Digitalocean достаточно выбрать диск большего размера и дождаться завершения применения изменений. А у Ihor хостинга после увеличения размера диска сервера (можно сделать только через службу поддержки), вам необходимо самостоятельно увеличить размеры разделов и файловой системы.

Как увеличить размер раздела и размер файловой системы на сервере

В этой статье будет показано, как увеличить размер раздела и файловой системы на компьютере без графического пользовательского интерфейса, без перезагрузки компьютера, без размонтирования файловой системы и без необходимости загрузки Live ОС. То есть вы можете использовать показанный метод на сервере. Но ничего не мешает использовать команды из этой статьи также и на домашнем компьютере, например, при клонировании ОС на новый диск.

В данной статье я увеличиваю файловую систему ext4. Описанные команды точно должны работать для файловых систем ext2/ext3/ext4.

Я выполняю действия на Arch Linux, но показанные команды должны работать для любой ОС. Значение имеет только тип файловой системы. То есть если вы хотите увеличить размер ext2/ext3/ext4, то данная инструкция должна работать независимо от дистрибутива Linux.

Утилиты для увеличения размера разделов и файловой системы.

Нам понадобиться утилита resize2fs. Эта утилита входит в пакет e2fsprogs и, скорее всего, установлена в вашем дистрибутиве по умолчанию, поскольку обычно относится к core пакетам, то есть программам, необходимым для нормального функционирования ОС Linux.

Также нам понадобиться утилита growpart, которая входит в пакет cloud-utils.

  • На производных Debian и Ubuntu дистрибутивах для установки этого пакета выполните команды:
sudo apt update sudo apt install cloud-utils
  • На Arch Linux и производных этого дистрибутива для установки пакета cloud-utils выполните команду:

Создание резервной копии таблицы разделов

На случай, если что-то пойдёт не так, создайте резервную копию таблицы разделов вашего диска:

sfdisk -d /dev/vdX > partition_bak.dmp

Сохраните файл partition_bak.dmp в безопасное место, отличное от диска, для которого вы создали резервную копию таблицы разделов, поскольку если произойдёт потеря данных, то этот файл также станет недоступным.

Читайте также:  Как настроить oracle vm virtualbox на linux

Как проверить размер раздела и размер файловой системы

Посмотрим на размер файловой системы следующей командой

Filesystem Size Used Avail Use% Mounted on dev 2.0G 0 2.0G 0% /dev run 2.0G 552K 2.0G 1% /run /dev/vda2 30G 28G 0 100% / tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 2.0G 27M 1.9G 2% /tmp /dev/vda1 193M 103M 80M 57% /boot tmpfs 393M 0 393M 0% /run/user/0

Смотрите также:

Из этого вывода следует, что размер файловой системе на разделе /dev/vda2 равен 30G и на ней нет свободного места.

Посмотрим размеры дисков и разделов:

Disk /dev/vda: 35 GiB, 37580963840 bytes, 73400320 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x4b23ea92 Device Boot Start End Sectors Size Id Type /dev/vda1 * 2048 411647 409600 200M 83 Linux /dev/vda2 411648 62914559 62502912 29.8G 83 Linux

Из этих данных следует, что размер диска /dev/vda равен 35 Гигабайт, а размеры присутствующих на нём разделов равен 30 Гигабайт. Дело в том, что я хостинг провайдер увеличил размер диска по моей просьбе. Но ОС по-прежнему может использовать только старый размер диска.

Как увеличить размер раздела Linux в командной строке без Live системы и размонтирования файловой системы

Для увеличения раздела до максимального (с учётом свободного места на диске) используется команда вида:

  • /dev/DISK — имя дискового устройства
  • NUMBER — номер раздела, который вы хотите увеличить

Я хочу увеличить раздел /dev/vda2, следовательно в моём случае:

Сама команда приобретает следующий вид:

Но до её выполнения, рекомендуется запустить вашу команду с опцией -N. Эта опция приведёт к тому, что команда покажет, какие изменения она сделает, но сами изменения выполняться не будут.

CHANGE: partition=2 start=411648 old: size=62502912 end=62914559 new: size=72988639 end=73400286 # === old sfdisk -d === label: dos label-id: 0x4b23ea92 device: /dev/vda unit: sectors sector-size: 512 /dev/vda1 : start= 2048, size= 409600, type=83, bootable /dev/vda2 : start= 411648, size= 62502912, type=83 # === new sfdisk -d === label: dos label-id: 0x4b23ea92 device: /dev/vda unit: sectors sector-size: 512 /dev/vda1 : start= 2048, size= 409600, type=83, bootable /dev/vda2 : start= 411648, size= 72988639, type=83

В «# === old sfdisk -d ===» показано, что размер раздела /dev/vda2 составляет 62502912 секторов (чтобы получить размер диска умножьте количество секторов на размер одного сектора, например, 62502912*512/1024/1024/1024 = 29.80 Гб).

Читайте также:  Управление базой данных linux

В «# === new sfdisk -d ===» показан размер раздела /dev/vda2 после выполнения команды. Этот размер составляет 72988639 секторов (то есть 72988639*512/1024/1024/1024 = 34.80 Гб).

Поскольку в моём случае диск использован на 100%, а операция по изменению размеров разделов очень серьёзная, прежде чем фактически перейти к изменениям, я освободил немного места на диске. Как это сделать смотрите в статьях:

Если всё правильно, то теперь запускаем команду, которая действительно изменит размер выбранного раздела, увеличив его до максимально возможного в соответствии с имеющимся свободным пространством на диске (не забывайте подставить ваши значение диска и номер раздела):

CHANGED: partition=2 start=411648 old: size=62502912 end=62914559 new: size=72988639 end=73400286

Проверим размеры раздела и файловой системы:

Обратите внимание на строку:

Размер файловой системы по-прежнему около 30 Гигабайт. Её использование сократилось со 100% до 99% только потому, что я освободил место на диске.

Также обратим внимание на следующую строку:

/dev/vda2 411648 73400286 72988639 34.8G 83 Linux

То есть размер раздела /dev/vda2 действительно увеличился.

Как увеличить размер файловой системы Linux в командной строке без Live системы и размонтирования файловой системы

Команда для увеличения файловой системы до максимального размера в соответствии со свободным местом на разделе имеет следующий вид:

В этой команде /dev/DEVICE — это имя дискового устройства.

В моём случае имя раздела, который я хочу увеличить, это /dev/vda2, тогда команда следующая:

resize2fs 1.47.0 (5-Feb-2023) Filesystem at /dev/vda2 is mounted on /; on-line resizing required old_desc_blocks = 2, new_desc_blocks = 3 The filesystem on /dev/vda2 is now 9123579 (4k) blocks long.

В выводе сообщается, что файловая система на /dev/vda2 смонтирована в / (корневая файловая система), поэтому требуется «on-line resizing». Команда завершилась успешно.

Проверим размеры раздела и файловой системы:

Обратите внимание на строку:

Файловая система на /dev/vda2 теперь имеет размер 35G, а занято только 28G. То есть файловая система действительно увеличена.

Что касается размера раздела, который мы увеличили на предыдущем шаге

/dev/vda2 411648 73400286 72988639 34.8G 83 Linux

то для него ничего не изменилось.

Источник

Оцените статью
Adblock
detector