Обновлено: 09.01.2023
Опубликовано: 22.06.2017
В инструкции рассмотрены сценарии расширения дискового пространства разделов в Linux без потери информации.
Принцип увеличения диска:
- Расширение раздела.
- Изменение размера файловой системы.
В зависимости от типа раздела и файловой системы, действия различаются.
Любая работа с диском несет риск потери информации. Перед началом работ убедитесь в наличие резервных копий ценных данных.
Расширение разделов
Обычных
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:
В открывшемся окне с помощью мышки или форм меняем размер раздела:
Нажимаем кнопку Resize/Move.
Проверяем изменения в окне программы и сохраняем настройки кнопкой «Apply All Operations»:
В данной статье (скорее заметке) будет вестись речь об увеличении размера корневого раздела жёсткого диска, если Вы желаете сразу просмотреть решение — пролистните до него в низ.
Перед тем, как я установил 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 по умолчанию установлена в большинстве популярных дистрибутивов и их оболочках. Однако если при запуске окажется, что она отсутствует, используйте менеджер приложений или пользовательские репозитории для стандартной процедуры инсталляции. После этого приступайте к выполнению следующей инструкции.
- Запустите приложение через терминал, введя там gparted, или нажмите по созданному значку. В главном окне сразу можно выбрать диск, размер которого необходимо изменить, и нажать по кнопке «Изменить размер/Переместить».
- Отобразится новое окно, где вы можете добавить свободное пространство к диску или же сжать том, освободив тем самым определенное количество мегабайт. Как только выставите новые настройки, подтвердите действие, чтобы закрыть это окно.
- В главном меню разверните всплывающее меню «Редактировать» и нажмите «Применить все операции».
- В новом окне следите за прогрессом операции, а по ее завершении можете убедиться в том, что размер был успешно изменен.
Если все пространство уже распределено по разделам, учитывайте, что сначала его придется вернуть к нераспределенному, сжав один или несколько логических томов. Затем свободные мегабайты уже можно будет отнести к новому тому, расширив его.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться
Меняем размер разделов диска с помощью fdisk
Более гибкий, но сложный вариант изменения размера диска в Linux подразумевает использование консольной утилиты fdisk. Для выполнения расширения тома на все свободное пространство понадобится выполнить более десятка разных действий, но на все про все уйдет не больше 10 минут.
- Если вы пока не знаете, под какими метками располагается сам диск и его логические тома, используйте команду sudo fdisk -l, отобразив список со всеми секторами.
- Используйте команду umount /dev/sdb2 для размонтирования раздела. Замените его название на необходимое и учитывайте, что корневой том размонтировать так просто нельзя, понадобится загрузка с LiveCD.
- Далее укажите fdisk /dev/sdb, подключившись тем самым к указанному диску.
- Посмотрите все разделы, введя p и нажав на Enter.
- За удаление отвечает d; после активации этого атрибута понадобится ввести цифру раздела, который вы хотите удалить (при этом форматирования не происходит, все данные сохраняются).
- Последовательно активируйте n (новый раздел), p (основной) и 2 (замените на номер тома). При появлении уведомления о создании первого и последнего сектора подтверждайте операцию нажатием на Enter.
- Проверьте список томов еще раз через 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
После ввода последней снова используйте последовательную активацию букв так, как это было показано в предыдущей инструкции, чтобы создать новый раздел. Кроме того, не забудьте смонтировать его обратно!
Чаще всего задача расширить файловую систему возникает при работе с облачной инфраструктурой. Виртуализация позволяет экономить на дисковом пространстве и выделять его столько, сколько необходимо в конкретный момент. Но простого расширения ресурсов недостаточно, об изменениях необходимо сообщить операционной системе. Сегодня ведущий архитектор #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:
Расширять будем корневой раздел. Первым делом необходимо увеличить доступный объем жесткого диска через панель управления облачной инфраструктурой #CloudMTS — с 7 до 8 Гбайт.
Увеличение диска займет какое-то время, а мы вернемся на тестовый стенд. Отобразим структуру разделов с помощью команды:
parted /dev/sdb/ print free
Параметры print
и free
отвечают за отображение структуры разделов и неразмеченного пространства.
Мы увеличили объем диска, но все равно не видим в выдаче команды parted
свободную память. Можно перезагрузить сервер, но мы решили, что по возможности не будем останавливать виртуальную машину. Вместо этого, выполним команду:
echo 1 > /sys/block/sdb/device/rescan
Если мы попытаемся снова отобразить структуру разделов командой parted
, то увидим предупреждение. Мы используем таблицу разделов в формате GPT. Информация о ней хранится в начале и в конце диска (для резервирования). Когда мы увеличили объем физического накопителя, сменился конец адресного пространства. Система предлагает автоматически переместить резервные файлы. Соглашаемся и пишем в командной строке fix.
Появилось свободное дисковое пространство в размере одного гигабайта:
Прежде чем перейти к расширению файловой системы, необходимо разметить новое пространство и расширить сам раздел. Здесь нам пригодится утилита growpart — выполним команду:
growpart /dev/sdb 2
Мы расширили раздел, но файловая система осталась нетронутой. Вот как это выглядит в GParted:
Давайте расширим ФС командой resize2fs
. Если у вас xfs, то нужно указывать точку монтирования. В случае с ext2, ext3 и ext4 достаточно выполнить команду с указанием блочного устройства, которое монтируется в файловую систему. Мы используем ext4, поэтому выполним:
resize2fs /dev/sdb2
Таким образом, мы успешно расширили файловую систему до размера диска.
Теперь рассмотрим другую ситуацию, когда ФС находится в логическом диске, созданном в расширенном разделе. Так структура выглядит в древовидном формате:
У нас два основных раздела — sdc1 и sdc2. Второй — расширенный, и внутри него можно сформировать неограниченное количество новых разделов. Перейдем в облачную панель управления и увеличим диск на один гигабайт, а затем обновим информацию об устройстве sdc уже известной командой:
echo 1 > /sys/block/sdс/device/rescan
Конкретно этот диск мы разметили в формате MBR, поэтому здесь мы не видим предупреждений о переносе резервной копии таблицы разделов, как в случае с GPT.
Вернемся в консоль и отобразим информацию о диске:
parted /dev/sdb/ print free
Чтобы не захламлять выдачу, временно уберем отображение свободного пространства на диске:
parted /dev/sdb/ print
У нас есть три раздела: основной под номером один, расширенный и логический под номерами два и пять.
Чтобы понять, какие разделы находятся в extended, необходимо сверить их начало и конец. Здесь мы видим, что конец второго раздела соответствует концу пятого раздела — 5369 Мбайт. И размер последнего на один мегабайт меньше. Так мы можем утверждать, что пятый раздел находится во втором разделе.
Чтобы расширить пятый раздел, необходимо предварительно увеличить второй. Для этого выполним:
growpart /dev/sdc 2
Вот так результат команды будет выглядеть в графическом отображении:
Раздел extended был расширен до конца всего раздела — вокруг неразмеченной области появилась голубая рамка. Теперь расширим пятый раздел, который пока занимает 4,5 Гб из доступных 5,5 Гб. В консоли пишем:
growpart /dev/sdc 5
Теперь и желтая рамка, обозначающая пятый раздел, протянулась до конца физического диска. Но мы видим, что файловая система все еще заканчивается сильно раньше. В нашем примере мы используем файловую систему xfs, которая наиболее распространена на CentOS, хотя иногда её применяют и на Debian с Ubuntu.
Для расширения файловой системы выполним команду:
xfs_growfs /mnt/sdc5
Обратите внимание, что в случае с xfs
мы указываем не само физическое устройство, а точку монтирования. В нашем случае это /mnt/sdc5
, но в частном случае это будет корень.
Вновь обращаемся к GParted и видим, что файловая система расширена до конца.
Если есть доп. разделы
Рассмотрим ситуацию, когда после расширяемого раздела идут другие — SWP, Home, Data и так далее.
В случае SWP облачная инфраструктура предлагает выход из ситуации. Мы можем выделить операционной системе столько памяти, чтобы ей вообще не приходилось применять своп. Затем раздел можно отключить из автозагрузки и удалить, а освободившееся дисковое пространство присоединить к целевому.
Есть и другой вариант, позволяющий сохранить SWP. С точки зрения виртуальной машины диск представляет собой файл в системе хранения данных с разными расширениями — например, VDI или VHDX. Мы можем изменить локацию SWP на файл в файловой системе, которую планируем расширять. Мы не будем говорить о переносе SWP в файл, так как это выходит за рамки нашего материала. Однако в интернете можно найти подробные руководства — вот одна из таких инструкций.
Если вместо SWP за целевым разделом следует раздел с данными, ситуация становится интереснее. К сожалению, в этом случае нельзя расширить файловую систему без простоя. Поэтому на реальной инфраструктуре лучше запланировать технологическое окно в вечернее время.
Для решения задачи мы воспользуемся GParted Live CD — скачать его можно на официальном сайте. Переходим на вкладку Download и загружаем образ.
Подключаем образ к виртуальной машине. Последовательность действий зависит от конкретной системы виртуализации. Загружаемся с диска и видим уже привычный графический интерфейс для расширения файловой системы. Как обычно, начинаем с увеличения доступного объема диска в панели управления облаком.
В этом примере разделом с данными выступает linux-swap. Обновляем информацию по разделам в консоли:
echo 1 > /sys/block/sdd/device/rescan
Затем — информацию в графическом интерфейсе. Видим неразмеченное дисковое пространство объемом в один гигабайт.
Расширим раздел extended до максимального размера. Для этого правой кнопкой мыши вызываем выпадающее меню и выбираем пункт Resize/Move.
Откроется новое всплывающее окно, в котором необходимо подвинуть ползунок в крайнее правое положение. И подтвердить операцию.
Далее открываем меню Resize/Move для раздела с данными — в нашем случае это linux-swap.
Мышкой перемещаем красную рамку в конец жесткого диска, подтверждаем операцию.
Теперь на главном экране раздел linux-swap находится в конце блока extended.
Далее остается произвести расширение целевого раздела и файловой системы.
В верхней части экрана нажимаем кнопку Apply All Operations.
Спустя какое-то время утилита применит все изменения.
У такого подхода есть одна серьезная проблема. Если раздел linux-swap довольно объемный, то его перемещение в конец диска может занять два-три часа. Все это время приложения и сервисы виртуальной машины будут простаивать. Вопрос можно решить, если сформировать в виртуальной инфраструктуре несколько дисков под каждый раздел. Так вы всегда сможете расширить условные /data и /root, поскольку они будут независимы друг от друга.
Другим решением, которое позволит избежать простоев, является разметка диска с помощью LVM.
Если есть LVM
К сожалению, для работы с LVM нет нормальных программ с графическим интерфейсом. Точнее, они есть, но не слишком информативные. Так с логическими томами приходится работать исключительно в командной строке.
В контексте LVM существуют физические тома (physical volume) — это целые неразбитые диски или их разделы. Внутри физических томов также есть разделы, объединённые в volume-groups. Эти группы, в свою очередь, дробятся на логические разделы — еще один уровень абстракции.
Что нам это дает? Рассмотрим два варианта разметки разделов диска. Чисто технически они ничем не отличаются — первый загрузочный, а второй физический том с LVM. В последнем случае он уже разбит на дополнительные разделы.
Может быть и следующая картина. Два раздела лежат в extended partition, а третий стоит отдельно, но добавлен в volume group. На отдельном диске дополнительно выделен раздел и также добавлен в эту группу.
Дополнительный уровень абстракции LVM позволяет нам расширять файловую систему вне зависимости от порядка разделов и предоставляет несколько подходов. Например, можно просто увеличить объём раздела, а можно создать новый и «приписать» его в логическую группу. Главное не переборщить с дроблением, чтобы разметку было проще читать.
Небольшая ремарка — если на диске есть раздел, который монтируется как блочное устройство и не участвует в LVM, то при расширении могут возникнуть проблемы. Здесь нужно или подключать образ Live CD, или перемещать раздел на отдельный виртуальный диск — тогда он не будет мешать увеличивать основной и логические разделы и volume groups.
Перейдем непосредственно к расширению файловой системы с LVM. На нашем тестовом стенде есть диск /dev/sde со следующей структурой:
В панели управления облаком увеличим объем диска на один гигабайт. Отобразим информацию о нем в консоли:
echo 1 > /sys/block/sdd/device/rescan
parted /dev/sde/ print free
Мы видим, что у нас добавилось свободное дисковое пространство.
Разделы, использующие LVM, помечены соответствующим тегом. В этом конкретном примере мы будем увеличивать диск под номером три до необходимого нам объёма. Нам не придется ставить дополнительные утилиты, так как все инструменты по умолчанию присутствуют во всех популярных дистрибутивах Linux.
Мы воспользуемся возможностями parted
. Но предварительно отобразим размер свободного пространства в мегабайтах для наглядности.
parted /dev/sde unit MB print free
Далее смотрим на ключевые столбцы — Start, End и Size. Свободное дисковое пространство заканчивается на точке в 6442 Мбайта.
Чтобы расширить последний раздел, прописываем команду:
parted /dev/sde resizepart 3 6441MB
Обратите внимание, что мы уменьшили цифровое значение в конце на один мегабайт. Проверим внесенные изменения:
parted /dev/sde print free
Свободное дисковое пространство уменьшилось до одного мегабайта, а наш второй раздел имеет объем в 3806 Мбайт.
Вернемся в GParted и обновим информацию по разделам. Сейчас LVM в /dev/sde3 не «растянут» до конца.
Посмотрим на объем текущего физического тома – для этого выполним:
pvdisplay
Как физические тома у нас помечены два устройства — sde2 и sde3. Последний имеет объем в 2,5 Гб, но в GParted эта цифра равна 3,5 Гб. Чтобы исправить ситуацию и синхронизировать значения, нужно выполнить команду:
pvresize /dev/sde3
Повторяем pvdisplay
и видим, что объем физического раздела увеличился.
Визуальное отображение в GParted также изменилось:
Чтобы отобразить существующие логические разделы, обратимся к команде:
lvscan
В нашей группе томов присутствуют два логических раздела — root и data.
Мы можем увеличить любой из этих томов. Для примера расширим /root следующей командой:
lvextend /dev/vg/root -l +100%FREE -r
Ключ -r автоматически расширит и раздел, и файловую систему внутри него (как в случае с xfr, так и с ext). Переходим в GParted и видим, что операция выполнена успешно:
Теперь, если прописать в консоли df -h
, мы увидим, что устройство dev/mapper/vg-root имеет объем в два гигабайта, хотя изначально его объем был равен одному гигабайту.
Как определить разметку
Поговорим о том, как понять, какая разметка у нас используется — с LVM или без? Если после выполнения команды df -h
вы видите исключительно устройства типа /dev/sda — блочные устройства — то разметка выполнена без LVM. Также можно ввести команду lvscan
. Если LVM не используется, то она ничего не отобразит. В противном случае покажет используемые логические разделы. На изображении ниже их два — root и data.
Иногда консоль может отобразить достаточно экзотические варианты, когда используется не dev, а dm0, dm1 и так далее. Чтобы понять, что это за устройства и какие логические разделы следует расширять, можно воспользоваться следующей командой. Она выведет всю информацию об устройствах.
lsblk --output NAME,KNAME,TYPE,SIZE,MOUNTPOINT
Например, мы видим, что dm-0 смонтирован в /mnt/sde-vg-root. Достаточно часто этот путь указывает в корень. И есть еще одна команда:
ls /dev/dm-*
Она отображает все устройства вида dm-*. Как видно на скриншоте ниже, в нашем случае их два.
Пока на этом всё. В следующей части поработаем с реальной виртуальной машиной на операционной системе 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 ShareAlike 4.0 при копировании материала ссылка на источник обязательна .
Об авторе
Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.
Расширяем корневой раздел
Корневой раздел является хранилищем всех остальных файловых систем. Через него система получает доступ ко многим (если не ко всем) своим ресурсам. В этом разделе (файловая система) содержит такие важные системные каталоги (которые могут быть выноситься в отдельные разделы при желании и являться отдельными файловыми системами) как «/usr», «/bin», «/etc», «/var», «/opt» и т. д., в совокупности все они содержат файлы ядра, стандартные системные утилиты, файлы хранимой конфигурации системы, файлы журналов системных событий и т. д.
Есть виртуальная машина, разбивка диска следующая:
$ lsblk
$ df -H
$ sudo cfdisk /dev/sda
Выключаем виртуалку, увеличиваем размер vdi-диска с помощью VBoxManage (в составе VirtualBox):
"C:Program FilesOracleVirtualBoxVBoxManage.exe" modifyhd "C:UsersuserVirtualBox VMsdebian8debian8.vdi" --resize 12288
Включаем виртуалку, смотрим что получилось
$ lsblk
$ df -H
$ sudo cfdisk /dev/sda
Выключаем 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
Запускаем утилиту cfdisk
$ sudo cfdisk /dev/sda
Выбираем /dev/sda1:
Bootable
Выбираем неразмеченную область:
New - > Partition size: 962M -> Type: 82
Сохраняем изменения
Write: yes - > Quit
Передаем информацию об изменении разметки операционной системе, установив утилиту 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
Расширяем раздел /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
У блога появился хостинг, его любезно предоставила компания Облакотека. Облакотека — облачные сервисы для создания и управления виртуальной ИТ-инфраструктурой.
Если вам понравился мой блог и вы хотели бы видеть на нем еще больше полезных статей, большая просьба поддержать этот ресурс.
Если вы размещаете материалы этого сайта в своем блоге, соц. сетях, и т.д., убедительная просьба публиковать обратную ссылку на оригинал