Как изменить размер корневого раздела linux

Шпаргалка по увеличению дискового пространства на компьютерах с Linux. Рассмотрена работа с несколькими файловыми системами и типами разделов.

Обновлено Обновлено: 09.01.2023
Опубликовано Опубликовано: 22.06.2017

В инструкции рассмотрены сценарии расширения дискового пространства разделов в Linux без потери информации.

Принцип увеличения диска:

  1. Расширение раздела.
  2. Изменение размера файловой системы.

В зависимости от типа раздела и файловой системы, действия различаются.

Любая работа с диском несет риск потери информации. Перед началом работ убедитесь в наличие резервных копий ценных данных.

Расширение разделов
    Обычных
    LVM
Изменение размера файловой системы
Использование GParted

Шаг 1. Расширение раздела

Мы рассмотрим варианты работы с обычными томами (разделами) и томами LVM. Проверить, какой тип раздела у нас используется можно командой:

lsblk

Нам интересны варианты part и lvm.

Обычные тома (part)

Допустим, есть диск /dev/sdb и раздел /dev/sdb2, который нужно увеличить. Разберем два подхода, сделать это.

1. С помощью утилиты growpart (без отмонтирования раздела)

Данная утилита позволяет увиличить размер слайса без необходимости его отмонтировать. Это очень удобно для работы с корневыми разделами. Данная утилита не установлена в системе. В зависимости от последней наши действия будут различаться.

а) Для систем DEB:

apt install cloud-guest-utils

б) Для систем RPM:

yum install cloud-utils-growpart

Если наш диск имеет разметку GPT, то потребуется установить также утилиту gdisk.

а) Для DEB:

apt install gdisk

б) Для RPM:

yum install gdisk

Установка growpart завершена. Идем дальше.

Для расширения раздела /dev/sdb2 вводим команду:

growpart /dev/sda 2

Мы должны увидеть что-то на подобие:

CHANGED: partition=2 start=4096 old: size=20965376 end=20969472 new: size=41938910 end=41943006

Готово.

2. С помощью утилиты fdisk/parted (требуется отмонтировать раздел)

Данный способ удобнее тем, что не нужно устанавливать дополнительных утилит, но он потребует отмонтирование раздела. Это можно сделать командой:

umount /dev/sdb2

В случае работы с корневой директорией, отмонтировать ее не получиться. В таком случае необходимо загрузить компьютер с Windows LiveCD или GParted Live.

Подключаемся утилитой fdisk к /dev/sdb:

fdisk /dev/sdb

Если мы работаем с разделом более чем 2Тб, используем утилиту parted.

Смотрим номера разделов:

: p

Удаляем раздел (не переживайте — все данные сохраняются):

: d

: 2

* в моем примере, раздел для удаления на второй позиции.

Создаем новый раздел:

: n

Первичный (primary):

: p

Номер раздела — 2: 

: 2

На запрос начального и конечного секторов просто нажимаем Enter.

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

: a

Еще раз проверяем, что получилось:

: p

Сохраняем изменения:

: w

LVM

LVM-тома расширяются на лету, даже для корневых разделов. В данном примере, работаем с /dev/sda.

Открываем диск утилитой fdisk:

fdisk /dev/sda

* напомню, что при работе с диском 2Тб и более, следует использовать утилиту parted.

Создаем еще один раздел:

: n

Первичный:

: p

Номер раздела оставляем тот, который предлагает система (просто нажимаем Enter).

Первый и последний сектора также оставляем по умолчанию для использования всего дискового пространства (еще два раза Enter).

Задаем тип раздела:

: t

Выбираем номер раздела (в моем примере создавался раздел 3):

: 3

Командой L можно посмотреть список всех типов, но нас интересует конкретный — LVM (8e):

: 8e

Сохраняем настройки:

: w

Проинформируем систему, что в таблице разделов произошли изменения:

partprobe

Создаем физический том из нового раздела:

pvcreate /dev/sda3

Смотрим наши Volume Group и для нужного добавляем созданный том:

vgdisplay

vgextend vg_centos /dev/sda3

* в моем примере группа томов LVM называется vg_centos

Смотрим LVM-разделы и расширяем пространства для нужного:

lvdisplay

lvextend -l +100%FREE /dev/vg_centos/lv_root

* данная команда расширяем LVM-раздел /dev/vg_centos/lv_root, используя все свободное пространство (100%FREE).

Шаг 2. Изменение размера для файловой системы

После того, как на предыдущем шаге мы расширили раздел, система по-прежнему будет видеть старый по объему диск. Чтобы это исправить, необходимо выполнить команду по изменению размера файловой системы. В зависимости от последней, команды различаются.

Посмотреть файловую систему:

df -T

ext2/ext3/ext4:

resize2fs /dev/vg_centos/lv_root

XFS:

xfs_growfs /dev/sda2

Reiserfs:

resize_reiserfs /dev/sdb

* обратите внимание, что в данных примерах используются различные устройства.

Если раздел был отмонтирован, монтируем его, например:

mount /dev/sda2 /mnt

Проверяем, что настройки применились:

df -h 

Увеличение разделов с Gparted

Если работы выполняются на системе с графическим интерфейсом или есть возможность перезагрузить сервер и загрузиться с LiveCD, можно воспользоваться простым средством — утилитой Gparted, которая позволяем менять размер разделов мышкой.

Запускаем утилиту — выбираем диск, с которым будем работать — кликаем правой кнопкой по разделу, который хотим увеличить и выбираем Resize/Move:

Изменение раздела в GParted

В открывшемся окне с помощью мышки или форм меняем размер раздела:

Уменьшение или увеличение пространства в GParted

Нажимаем кнопку Resize/Move.

Проверяем изменения в окне программы и сохраняем настройки кнопкой «Apply All Operations»:

Сохранение изменение в GParted



В данной статье (скорее заметке) будет вестись речь об увеличении размера корневого раздела жёсткого диска, если Вы желаете сразу просмотреть решение — пролистните до него в низ.



Перед тем, как я установил Linux (это был 2007 или 2008 год), я конечно же прочитал множество статей, о том, как это сделать — и, естественно, совсем ничего не понимал). 

Основная проблема заключалась в том, что я не знал как разбить жёсткий диск, в статьях давались примерно одинаковые советы, корневому разделу 5-10GB, немного на SWAP (RAMx2 для малого кол-ва памяти, или 512-1024МБ), остальное под /home/ где будут храниться все мои настройки и личные данные. 

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

Мой системный жёсткий диск выглядел примерно следующим образом:

раздел /dev/sda1, точка монтирования «/», размер 10ГБ

раздел /dev/sda2, SWAP, размер 512МБ

раздел /dev/sda3, точка монтирования «/home», размер — всё остальное

Однако в один прекрасный момент обновления дистрибутива (я использую Kubuntu) достигли достаточно больших размеров, что место на  «/» очень быстро стремилось к 0, что мешало безболезненно и быстро обновиться, и я понял, что 10ГБ недостаточно.

Самым очевидным вариантом, естественно, стало увеличение корневого раздела до 15ГБ (цифра сугубо с потолка), что я и выполнил, о чём сейчас подробнее распишу (сразу скажу что процедура эта довольно не сложная).

Итак.


Дано: жёсткий диск на 160ГБ, разделы — root (корень) 10ГБ, SWAP 512MB, /home — всё остальное.
Задача: увеличить размер root (корня) до 15ГБ, не повредив при этом никакие данные.
Важное условие: на /home должно быть свободного места ровно столько, на сколько Вы желаете увеличитьroot (именно от /home мы и будем отрезать)
Принадлежности: LiveCD любого дистрибутива с установленным пакетом gparted, 2-3 часа свободного времени (в зависимости от объёма диска).


Решение:


1. Выключаем компьютер (нет, подождите, сначала дочитайте) и загружаемся с LiveCD

2. Запускаем gparted с правами суперпользователя (для debian: sudo gparted из консоли (терминала))


3. Выбираем необходимый диск в выпадающем меню справа (не ошибитесь!)


4. Сперва выбираем раздел на котором SWAP (не ошибитесь!), нажимаем правой кнопкой, выбираем «удалить», подтверждаем и применяем (удаление займёт не более минуты), появится «неразмеченная область».
Примечание: поскольку сразу после корневого раздела идёт SWAP, мы его должны удалить, чтобы он не мешал увеличивать размер, если после корневого раздела сразу идёт /home, то данный шаг пропускаем.
5. Теперь выбираем раздел с /home, нажимаем правой кнопкой, выбираем «изменить размер», после чего сдвигаем ползунок СЛЕВА (с начала полосы, это важно) вправо на необходимый объём, подтверждаем и применяем (выполнение данной операции у меня заняло примерно два с половиной часа, Ваше вмешательство не потребуется, поэтому можно идти по делам).


6. После выполнения операции «отрезания» (англ: shrink) от /home, Ваш жёсткий диск в gparted будет выглядеть следующим образом: root (10ГБ), неразмеченная область, /home
Примечание: теперь можно выполнить увеличение корневого раздела на размер неразмеченной области)

7. Выбираем корневой раздел, нажимаем правой кнопкой мыши — «изменить размер» и сдвигаем ползунок вправо на необходимое значение (не забудьте оставить место для SWAP) и нажимаете «ОК» (сразу не применяйте, поставим в очередь еще следующую операцию).


8. Выбираем оставшуюся неразмеченную область, нажимаем правой кнопкой — «создать«, выбираем файловую систему «linux-swap» и нажимаем «ОК».


9. Нажимаем применить (выполнится две операции, 7 и 8), ожидаем примерно 3-5 минут.


10. Всё, теперь можно перезагружаться в основную систему :-)


Всё это я проделал на своём домашнем (по совместительству и учебном и рабочем) компьютере, завершилось всё хорошо, без каких-либо форс-мажоров, удачи!


P.S. Для подстраховки можете сделать backup важных файлов, временно, на другой диск.

Изменение размеров логических томов в Linux осуществляется сложнее, нежели в Windows, что связано с особенностями использования консольных команд и доступных графических приложений. Однако эта задача под силу любому пользователю, и приведенные далее инструкции помогут разобраться с тем, как выполнить ее быстро.

Работа с разделами в GParted

Не все юзеры Linux предпочитают использовать терминал, когда можно обойтись без него. К тому же новички в этой операционной системе не особо желают разбираться с активацией сложных команд. Поэтому в качестве первого варианта предлагаю ознакомиться с использованием программы GParted, которая представляет собой полноценную систему управления дисками.

GParted по умолчанию установлена в большинстве популярных дистрибутивов и их оболочках. Однако если при запуске окажется, что она отсутствует, используйте менеджер приложений или пользовательские репозитории для стандартной процедуры инсталляции. После этого приступайте к выполнению следующей инструкции.

  1. Запустите приложение через терминал, введя там gparted, или нажмите по созданному значку. В главном окне сразу можно выбрать диск, размер которого необходимо изменить, и нажать по кнопке «Изменить размер/Переместить».Переход к изменению размера диска через GParted в Linux
  2. Отобразится новое окно, где вы можете добавить свободное пространство к диску или же сжать том, освободив тем самым определенное количество мегабайт. Как только выставите новые настройки, подтвердите действие, чтобы закрыть это окно.Выбор нового размера для диска через GParted в Linux
  3. В главном меню разверните всплывающее меню «Редактировать» и нажмите «Применить все операции».Запуск процесса внесения изменений в размер диска через GParted в Linux
  4. В новом окне следите за прогрессом операции, а по ее завершении можете убедиться в том, что размер был успешно изменен.Процесс внесения изменений в размер диска через GParted в Linux

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

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Подписаться

Меняем размер разделов диска с помощью fdisk

Более гибкий, но сложный вариант изменения размера диска в Linux подразумевает использование консольной утилиты fdisk. Для выполнения расширения тома на все свободное пространство понадобится выполнить более десятка разных действий, но на все про все уйдет не больше 10 минут.

Просмотр списка дисков перед изменением размера в Linux

  1. Если вы пока не знаете, под какими метками располагается сам диск и его логические тома, используйте команду sudo fdisk -l, отобразив список со всеми секторами.
  2. Используйте команду umount /dev/sdb2 для размонтирования раздела. Замените его название на необходимое и учитывайте, что корневой том размонтировать так просто нельзя, понадобится загрузка с LiveCD.
  3. Далее укажите fdisk /dev/sdb, подключившись тем самым к указанному диску.
  4. Посмотрите все разделы, введя p и нажав на Enter.
  5. За удаление отвечает d; после активации этого атрибута понадобится ввести цифру раздела, который вы хотите удалить (при этом форматирования не происходит, все данные сохраняются).
  6. Последовательно активируйте n (новый раздел), p (основной) и 2 (замените на номер тома). При появлении уведомления о создании первого и последнего сектора подтверждайте операцию нажатием на Enter.
  7. Проверьте список томов еще раз через p, а затем нажмите w для сохранения изменений.

Осталось только указать файловой системе, что размер тома был расширен до максимального, поскольку пока отображается старое значение. Для этого сначала определите используемую файловую систему через df -T. Введите одну из трех следующих команд, отталкиваясь от полученной информации:

Для ext2/ext3/ext4:

resize2fs /dev/vg_centos/lv_root

XFS:

xfs_growfs /dev/sda2

Reiserfs:

resize_reiserfs /dev/sdb

В командах номера разделов указаны в качестве примеров, вы же заменяете их на свои. Еще оставлю пример команды для монтирования диска, если ранее он был отключен:

mount /dev/sda1 /mnt

Сделать это нужно уже после внесения всех изменений.

Для уменьшения размера раздела используйте последовательность команд:

umount /dev/vdb1

fsck -f /dev/vdb1

resize2fs /dev/vdb1 100M

fdisk /dev/vdb

После ввода последней снова используйте последовательную активацию букв так, как это было показано в предыдущей инструкции, чтобы создать новый раздел. Кроме того, не забудьте смонтировать его обратно!

image

Чаще всего задача расширить файловую систему возникает при работе с облачной инфраструктурой. Виртуализация позволяет экономить на дисковом пространстве и выделять его столько, сколько необходимо в конкретный момент. Но простого расширения ресурсов недостаточно, об изменениях необходимо сообщить операционной системе. Сегодня ведущий архитектор #CloudMTS Дмитрий Фисенко в формате пошагового туториала расскажет, как это сделать.

Материал будет интересен начинающим системным администраторам, а также разработчикам, которые хотят ближе познакомиться с файловыми системами.

Подготовительная работа

Мы рассмотрим сценарии с двумя вариантами разметки диска — с использованием LVM и логических разделов, а также без них. Поскольку мы будем работать в облачной среде, где важны доступность и непрерывность сервисов, сфокусируемся на подходах, позволяющих расширить файловую систему без перезагрузки виртуальной машины (хотя сделать это не всегда возможно).

В рамках руководства нам также потребуется утилита growpart. К сожалению, нельзя просто так взять и расширить смонтированную файловую систему. Стандартные утилиты вроде fdisk или GParted предлагают предварительно размонтировать раздел. Вот команды установки growpart для различных семейств Linux-систем:

apt-get install cloud-utils-growpart
yum install cloud-utils-growpart
dnf install cloud-utils-growpart

Также рекомендуем сформировать на виртуальной машине точку восстановления (snapshot) на случай, если что-то пойдет не по плану.

Когда нет LVM

Рассмотрим задачу, когда на диске присутствует два раздела — загрузочный и корневой. Они смонтированы в произвольную точку. Вот как это выглядит в графическом интерфейсе GParted:

image
Расширять будем корневой раздел. Первым делом необходимо увеличить доступный объем жесткого диска через панель управления облачной инфраструктурой #CloudMTS — с 7 до 8 Гбайт.

image
Увеличение диска займет какое-то время, а мы вернемся на тестовый стенд. Отобразим структуру разделов с помощью команды:

parted /dev/sdb/ print free

Параметры print и free отвечают за отображение структуры разделов и неразмеченного пространства.

image
Мы увеличили объем диска, но все равно не видим в выдаче команды parted свободную память. Можно перезагрузить сервер, но мы решили, что по возможности не будем останавливать виртуальную машину. Вместо этого, выполним команду:

echo 1 > /sys/block/sdb/device/rescan

image
Если мы попытаемся снова отобразить структуру разделов командой parted, то увидим предупреждение. Мы используем таблицу разделов в формате GPT. Информация о ней хранится в начале и в конце диска (для резервирования). Когда мы увеличили объем физического накопителя, сменился конец адресного пространства. Система предлагает автоматически переместить резервные файлы. Соглашаемся и пишем в командной строке fix.

image
Появилось свободное дисковое пространство в размере одного гигабайта:

image
Прежде чем перейти к расширению файловой системы, необходимо разметить новое пространство и расширить сам раздел. Здесь нам пригодится утилита growpart — выполним команду:

growpart /dev/sdb 2

image
Мы расширили раздел, но файловая система осталась нетронутой. Вот как это выглядит в GParted:

image
Давайте расширим ФС командой resize2fs. Если у вас xfs, то нужно указывать точку монтирования. В случае с ext2, ext3 и ext4 достаточно выполнить команду с указанием блочного устройства, которое монтируется в файловую систему. Мы используем ext4, поэтому выполним:

resize2fs /dev/sdb2

Таким образом, мы успешно расширили файловую систему до размера диска.

image
Теперь рассмотрим другую ситуацию, когда ФС находится в логическом диске, созданном в расширенном разделе. Так структура выглядит в древовидном формате:

image
У нас два основных раздела — sdc1 и sdc2. Второй — расширенный, и внутри него можно сформировать неограниченное количество новых разделов. Перейдем в облачную панель управления и увеличим диск на один гигабайт, а затем обновим информацию об устройстве sdc уже известной командой:

echo 1 > /sys/block/sdс/device/rescan

Конкретно этот диск мы разметили в формате MBR, поэтому здесь мы не видим предупреждений о переносе резервной копии таблицы разделов, как в случае с GPT.

image
Вернемся в консоль и отобразим информацию о диске:

parted /dev/sdb/ print free

image
Чтобы не захламлять выдачу, временно уберем отображение свободного пространства на диске:

parted /dev/sdb/ print 

image
У нас есть три раздела: основной под номером один, расширенный и логический под номерами два и пять.

Чтобы понять, какие разделы находятся в extended, необходимо сверить их начало и конец. Здесь мы видим, что конец второго раздела соответствует концу пятого раздела — 5369 Мбайт. И размер последнего на один мегабайт меньше. Так мы можем утверждать, что пятый раздел находится во втором разделе.

Чтобы расширить пятый раздел, необходимо предварительно увеличить второй. Для этого выполним:

growpart /dev/sdc 2

image
Вот так результат команды будет выглядеть в графическом отображении:

image
Раздел extended был расширен до конца всего раздела — вокруг неразмеченной области появилась голубая рамка. Теперь расширим пятый раздел, который пока занимает 4,5 Гб из доступных 5,5 Гб. В консоли пишем:

growpart /dev/sdc 5

image
Теперь и желтая рамка, обозначающая пятый раздел, протянулась до конца физического диска. Но мы видим, что файловая система все еще заканчивается сильно раньше. В нашем примере мы используем файловую систему xfs, которая наиболее распространена на CentOS, хотя иногда её применяют и на Debian с Ubuntu.

Для расширения файловой системы выполним команду:

xfs_growfs /mnt/sdc5

Обратите внимание, что в случае с xfs мы указываем не само физическое устройство, а точку монтирования. В нашем случае это /mnt/sdc5, но в частном случае это будет корень.

image
Вновь обращаемся к GParted и видим, что файловая система расширена до конца.

image

Если есть доп. разделы

Рассмотрим ситуацию, когда после расширяемого раздела идут другие — SWP, Home, Data и так далее.

image

В случае SWP облачная инфраструктура предлагает выход из ситуации. Мы можем выделить операционной системе столько памяти, чтобы ей вообще не приходилось применять своп. Затем раздел можно отключить из автозагрузки и удалить, а освободившееся дисковое пространство присоединить к целевому.

Есть и другой вариант, позволяющий сохранить SWP. С точки зрения виртуальной машины диск представляет собой файл в системе хранения данных с разными расширениями — например, VDI или VHDX. Мы можем изменить локацию SWP на файл в файловой системе, которую планируем расширять. Мы не будем говорить о переносе SWP в файл, так как это выходит за рамки нашего материала. Однако в интернете можно найти подробные руководства — вот одна из таких инструкций.

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

Для решения задачи мы воспользуемся GParted Live CD — скачать его можно на официальном сайте. Переходим на вкладку Download и загружаем образ.

image

Подключаем образ к виртуальной машине. Последовательность действий зависит от конкретной системы виртуализации. Загружаемся с диска и видим уже привычный графический интерфейс для расширения файловой системы. Как обычно, начинаем с увеличения доступного объема диска в панели управления облаком.

image
В этом примере разделом с данными выступает linux-swap. Обновляем информацию по разделам в консоли:

echo 1 > /sys/block/sdd/device/rescan

Затем — информацию в графическом интерфейсе. Видим неразмеченное дисковое пространство объемом в один гигабайт.

image
Расширим раздел extended до максимального размера. Для этого правой кнопкой мыши вызываем выпадающее меню и выбираем пункт Resize/Move.

image
Откроется новое всплывающее окно, в котором необходимо подвинуть ползунок в крайнее правое положение. И подтвердить операцию.

image
Далее открываем меню Resize/Move для раздела с данными — в нашем случае это linux-swap.

image

Мышкой перемещаем красную рамку в конец жесткого диска, подтверждаем операцию.

image
image
Теперь на главном экране раздел linux-swap находится в конце блока extended.

image
Далее остается произвести расширение целевого раздела и файловой системы.

image
В верхней части экрана нажимаем кнопку Apply All Operations.

image
Спустя какое-то время утилита применит все изменения.

image
У такого подхода есть одна серьезная проблема. Если раздел linux-swap довольно объемный, то его перемещение в конец диска может занять два-три часа. Все это время приложения и сервисы виртуальной машины будут простаивать. Вопрос можно решить, если сформировать в виртуальной инфраструктуре несколько дисков под каждый раздел. Так вы всегда сможете расширить условные /data и /root, поскольку они будут независимы друг от друга.

Другим решением, которое позволит избежать простоев, является разметка диска с помощью LVM.

Если есть LVM

К сожалению, для работы с LVM нет нормальных программ с графическим интерфейсом. Точнее, они есть, но не слишком информативные. Так с логическими томами приходится работать исключительно в командной строке.

В контексте LVM существуют физические тома (physical volume) — это целые неразбитые диски или их разделы. Внутри физических томов также есть разделы, объединённые в volume-groups. Эти группы, в свою очередь, дробятся на логические разделы — еще один уровень абстракции.

Что нам это дает? Рассмотрим два варианта разметки разделов диска. Чисто технически они ничем не отличаются — первый загрузочный, а второй физический том с LVM. В последнем случае он уже разбит на дополнительные разделы.

image

Может быть и следующая картина. Два раздела лежат в extended partition, а третий стоит отдельно, но добавлен в volume group. На отдельном диске дополнительно выделен раздел и также добавлен в эту группу.

image

Дополнительный уровень абстракции LVM позволяет нам расширять файловую систему вне зависимости от порядка разделов и предоставляет несколько подходов. Например, можно просто увеличить объём раздела, а можно создать новый и «приписать» его в логическую группу. Главное не переборщить с дроблением, чтобы разметку было проще читать.

Небольшая ремарка — если на диске есть раздел, который монтируется как блочное устройство и не участвует в LVM, то при расширении могут возникнуть проблемы. Здесь нужно или подключать образ Live CD, или перемещать раздел на отдельный виртуальный диск — тогда он не будет мешать увеличивать основной и логические разделы и volume groups.

image

Перейдем непосредственно к расширению файловой системы с LVM. На нашем тестовом стенде есть диск /dev/sde со следующей структурой:

image
В панели управления облаком увеличим объем диска на один гигабайт. Отобразим информацию о нем в консоли:

echo 1 > /sys/block/sdd/device/rescan
parted /dev/sde/ print free

Мы видим, что у нас добавилось свободное дисковое пространство.

image
Разделы, использующие LVM, помечены соответствующим тегом. В этом конкретном примере мы будем увеличивать диск под номером три до необходимого нам объёма. Нам не придется ставить дополнительные утилиты, так как все инструменты по умолчанию присутствуют во всех популярных дистрибутивах Linux.

Мы воспользуемся возможностями parted. Но предварительно отобразим размер свободного пространства в мегабайтах для наглядности.

parted /dev/sde unit MB print free

Далее смотрим на ключевые столбцы — Start, End и Size. Свободное дисковое пространство заканчивается на точке в 6442 Мбайта.

image
Чтобы расширить последний раздел, прописываем команду:

parted /dev/sde resizepart 3 6441MB

Обратите внимание, что мы уменьшили цифровое значение в конце на один мегабайт. Проверим внесенные изменения:

parted /dev/sde print free

Свободное дисковое пространство уменьшилось до одного мегабайта, а наш второй раздел имеет объем в 3806 Мбайт.

image
Вернемся в GParted и обновим информацию по разделам. Сейчас LVM в /dev/sde3 не «растянут» до конца.

image
Посмотрим на объем текущего физического тома – для этого выполним:

pvdisplay

image
Как физические тома у нас помечены два устройства — sde2 и sde3. Последний имеет объем в 2,5 Гб, но в GParted эта цифра равна 3,5 Гб. Чтобы исправить ситуацию и синхронизировать значения, нужно выполнить команду:

pvresize /dev/sde3

Повторяем pvdisplay и видим, что объем физического раздела увеличился.

image
Визуальное отображение в GParted также изменилось:

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

lvscan

В нашей группе томов присутствуют два логических раздела — root и data.

image
Мы можем увеличить любой из этих томов. Для примера расширим /root следующей командой:

lvextend /dev/vg/root -l +100%FREE -r

Ключ -r автоматически расширит и раздел, и файловую систему внутри него (как в случае с xfr, так и с ext). Переходим в GParted и видим, что операция выполнена успешно:

image
Теперь, если прописать в консоли df -h, мы увидим, что устройство dev/mapper/vg-root имеет объем в два гигабайта, хотя изначально его объем был равен одному гигабайту.

image

Как определить разметку

Поговорим о том, как понять, какая разметка у нас используется — с LVM или без? Если после выполнения команды df -h вы видите исключительно устройства типа /dev/sda — блочные устройства — то разметка выполнена без LVM. Также можно ввести команду lvscan. Если LVM не используется, то она ничего не отобразит. В противном случае покажет используемые логические разделы. На изображении ниже их два — root и data.

image
Иногда консоль может отобразить достаточно экзотические варианты, когда используется не dev, а dm0, dm1 и так далее. Чтобы понять, что это за устройства и какие логические разделы следует расширять, можно воспользоваться следующей командой. Она выведет всю информацию об устройствах.

lsblk --output NAME,KNAME,TYPE,SIZE,MOUNTPOINT

image
Например, мы видим, что dm-0 смонтирован в /mnt/sde-vg-root. Достаточно часто этот путь указывает в корень. И есть еще одна команда:

ls /dev/dm-*

Она отображает все устройства вида dm-*. Как видно на скриншоте ниже, в нашем случае их два.

image

Пока на этом всё. В следующей части поработаем с реальной виртуальной машиной на операционной системе Linux Mint.

P.S. Продолжается акция при запуске ИТ‑инфраструктуры IaaS c #CloudMTS.

На данный момент Ext4 — это самая популярная файловая система для операционных систем семейства Linux, она используется как на серверах, так и на домашних компьютерах, и там и там часто возникает необходимость изменить размер раздела.

В сегодняшней статье мы рассмотрим как расширить раздел Ext4 в графическом интерфейсе или с помощью терминала.

Шаг 1. Увеличение раздела

Если вы хотите изменить размер корневого раздела файловой системы, то вам обязательно надо будет загрузится с LiveCD иначе вы не сможете редактировать примонтированный раздел. Если это не системный раздел, то его можно отмонтировать и затем изменять. Для увеличения раздела будем использовать parted. Сначала запустите утилиту:

sudo parted /dev/sda

Здесь /dev/sda — это ваш диск, один из разделов которого вы хотите расширить. Сначала выведите текущую таблицу разделов, для этого выполните:

(parted) print

Как видите, здесь есть только один раздел и он занимает 16 гигабайт, а всего на диске доступно 21,7 гигабайт. Чтобы расширить Ext4 и занять всё это пространство используйте команду resizepart:

(parted) resizepart 1 21,7GB

Первый параметр, это номер раздела, который вы узнали из предыдущей команды, а второй, размер раздела, доступный размер тоже выводится в предыдущей команде. Теперь утилиту можно закрыть:

(parted) q

Шаг 2. Увеличение файловой системы

Осталось увеличить самую файловую систему до конца раздела. Для этого воспользуемся утилитой resize2fs. Она может работать даже когда файловая система смонтирована.

sudo resize2fs /dev/sda1

Утилита по умолчанию увеличивает файловую систему на всё доступное пространство раздела.

Шаг 3. Проверка на ошибки

После этого не помешает проверить всё на ошибки с помощью fsck:

sudo e2fsck -f /dev/sda1

Шаг 4. Монтирование

Затем можно монтировать полученную файловую систему и проверять её размер, как видите, теперь она занимает 20 гигабайт:

df -h | grep /dev/sda1

Как уменьшить размер Ext4

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

Шаг 1. Проверка файловой системы

Перед тем, как уменьшить размер Ext4 надо проверить её на ошибки. Если файловая система смонтирована, размонтируйте её:

sudo umount /dev/sda1

Для этого выполните:

sudo e2fsck -f /dev/sda1

Шаг 2. Уменьшение файловой системы

Уменьшение размера файловой системы тоже выполняется с помощью resize2fs. Но теперь утилите надо передать в параметрах новый размер файловой системы. Например, 16 гигабайт:

resize2fs /dev/sda1 16G

Размер можно указывать в килобайтах (K), мегабайтах (M) или гигабайтах (G). Теперь вы знаете как изменить размер Ext4. В выводе утилита вы увидите сколько теперь блоков занимает файловая система. Это число надо умножить на 4096 чтобы получить размер файловой системы в байтах. Цифра четыре взята потому что размер одного блока в Ext4 равняется четырём килобайтам. Например, в данном случае это будет 17179869184 байт или 16 гигабайт:

Теперь надо уменьшить размер раздела с помощью parted. Но значение желательно брать чуть больше, для безопасности, потому, что если вы зацепите пространство, где расположена файловая система, то работать с ней вы больше не сможете.

Шаг 3. Уменьшение раздела

Запустите parted и используйте ту же команду resizepart чтобы уменьшить размер раздела:

sudo parted /dev/sda

Затем:

(parted) resizepart 1 16,1GB

Чтобы закрыть программу выполните:

(parted) q

Шаг 4. Монтирование

После этого файловую систему можно монтирововать и проверять её размер:

sudo mount /dev/sda1 /mnt

df -h | grep /dev/sda1

Выводы

В этой статье мы рассмотрели как уменьшить раздел Ext4, а также как его увеличить через терминал. Если вы работаете в графическом интерфейсе, то всё выполняется гораздо проще. Для этого можно воспользоваться утилитой Gparted. Она автоматически меняет как размер раздела, так и файловой системы. К тому же программа может не только менять положение конца раздела, но и начала, иногда это может быть полезно. А как вы меняете размер файловой системы? Напишите в комментариях!

Creative Commons License

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

Об авторе

Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.

Расширить корневой раздел (ext4, не LVM) диска в Debian 1

Расширяем корневой раздел

Корневой раздел является хранилищем всех остальных файловых систем. Через него система получает доступ ко многим (если не ко всем) своим ресурсам. В этом разделе (файловая система) содержит такие важные системные каталоги (которые могут быть выноситься в отдельные разделы при желании и являться отдельными файловыми системами) как «/usr», «/bin», «/etc», «/var», «/opt» и т. д., в совокупности все они содержат файлы ядра, стандартные системные утилиты, файлы хранимой конфигурации системы, файлы журналов системных событий и т. д.

Есть виртуальная машина, разбивка диска следующая:

$ lsblk
$ df -H
$ sudo cfdisk /dev/sda
  • Расширить корневой раздел (ext4, не LVM) диска в Debian 2
  • Расширить корневой раздел (ext4, не LVM) диска в Debian 3

Выключаем виртуалку, увеличиваем размер vdi-диска с помощью VBoxManage (в составе VirtualBox):

"C:Program FilesOracleVirtualBoxVBoxManage.exe" modifyhd "C:UsersuserVirtualBox VMsdebian8debian8.vdi" --resize 12288

Включаем виртуалку, смотрим что получилось

$ lsblk
$ df -H
$ sudo cfdisk /dev/sda
  • Расширить корневой раздел (ext4, не LVM) диска в Debian 4
  • Расширить корневой раздел (ext4, не LVM) диска в Debian 5

Выключаем swap (файл подкачки)

$ sudo swapoff -a

Начинаем удалять разделы (данные не потеряются)

Смотрим разметку

$ sudo fdisk /dev/sda

Command (m for help): p
Disk /dev/sda: 12 GiB, 12821987328 bytes, 25042944 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: 0xd00b3928

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sda1  *        2048 15988735 15986688  7.6G 83 Linux
/dev/sda2       15990782 16775167   784386  383M  5 Extended
/dev/sda5       15990784 16775167   784384  383M 82 Linux swap / Solaris

В данном примере вначале удаляем /dev/sda2

Command (m for help): d
Partition number (1,2,5, default 5): 2

Partition 2 has been deleted.

Смотрим результат

Command (m for help): p
Disk /dev/sda: 12 GiB, 12821987328 bytes, 25042944 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: 0xd00b3928

Device     Boot Start      End  Sectors  Size Id Type
/dev/sda1  *     2048 15988735 15986688  7.6G 83 Linux

Удаляем раздел /dev/sda1 (данные не потеряются)

Command (m for help): d
Selected partition 1
Partition 1 has been deleted.

Таким образом мы удалили разделы на диске. Данный способ используется потому, что при автоматической разбивке диска в Debian (без LVM) корневой раздел оказывается в начале диска, а добавляемое пространство оказывается в конце диска. А между ними область, выделенная под swap.

Создадим новый раздел (primary)

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-25042943, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-25042943, default 25042943): +11G

Created a new partition 1 of type 'Linux' and of size 11 GiB.

Таким образом мы создали новый раздел размером 11 Gb, 1 Gb оставили под swap

Создадим раздел (extended) под swap

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): e
Partition number (2-4, default 2):
First sector (23070720-25042943, default 23070720):
Last sector, +sectors or +size{K,M,G,T,P} (23070720-25042943, default 25042943):

Created a new partition 2 of type 'Extended' and of size 963 MiB.

Попробуем поменять тип файловой системы

Command (m for help): t
Partition number (1,2, default 2): 2
Hex code (type L to list all codes): 82
You cannot change a partition into an extended one or vice versa. Delete it first.

Type of partition 2 is unchanged: Extended.

Утилита ругается

Сохраняем изменения

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: Device or resource busy

The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).

Утилита сообщает, что изменения применятся после перезагрузки

Перезагружаем виртуалку

$ sudo reboot

Смотрим результат

$ lsblk
$ df -H
$ sudo cfdisk /dev/sda
  • Расширить корневой раздел (ext4, не LVM) диска в Debian 6
  • Расширить корневой раздел (ext4, не LVM) диска в Debian 7

Запускаем утилиту cfdisk

$ sudo cfdisk /dev/sda

Выбираем /dev/sda1:

Bootable

Выбираем неразмеченную область:

New - > Partition size: 962M -> Type: 82
Расширить корневой раздел (ext4, не LVM) диска в Debian 8

Сохраняем изменения

Write: yes - > Quit
Расширить корневой раздел (ext4, не LVM) диска в Debian 9

Передаем информацию об изменении разметки операционной системе, установив утилиту parted

$ sudo apt install parted -y
$ sudo partprobe

Создаем раздел под swap

$ sudo mkswap /dev/sda5
Setting up swapspace version 1, size = 985084 KiB
no label, UUID=be9028ea-7dd0-445b-99ae-69835d586ed5

Включаем swap

$ sudo swapon /dev/sda5

Смотрим новые UUID

$ sudo blkid
/dev/sda1: UUID="c86485d2-6505-426e-9298-48eb1462be89" TYPE="ext4" PARTUUID="d00b3928-01"
/dev/sda5: UUID="be9028ea-7dd0-445b-99ae-69835d586ed5" TYPE="swap" PARTUUID="d00b3928-05"

Прописываем их в /etc/fstab

$ sudo nano /etc/fstab

Монтируем

$ sudo mount -a

Перезагружаем виртуалку

$ sudo reboot

Проверяем

$ lsblk
$ df -h
Расширить корневой раздел (ext4, не LVM) диска в Debian 10

Расширяем раздел /dev/sda1

$ sudo resize2fs /dev/sda1

Проверяем

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        11G  1.2G  9.1G  12% /
udev             10M     0   10M   0% /dev
tmpfs           403M  5.5M  397M   2% /run
tmpfs          1006M     0 1006M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs          1006M     0 1006M   0% /sys/fs/cgroup

Таким образом мы расширили корневой раздел работающей операционной системы Debian не прибегая к помощи LiveCD

У блога появился хостинг, его любезно предоставила компания Облакотека. Облакотека — облачные сервисы для создания и управления виртуальной ИТ-инфраструктурой.
Если вам понравился мой блог и вы хотели бы видеть на нем еще больше полезных статей, большая просьба поддержать этот ресурс.

Если вы размещаете материалы этого сайта в своем блоге, соц. сетях, и т.д., убедительная просьба публиковать обратную ссылку на оригинал

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Как изменить размер коньков roces
  • Как изменить размер коньков nordway
  • Как изменить размер контейнера bootstrap
  • Как изменить размер композиции афтер эффект
  • Как изменить размер композиции after effects

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии