Linux change disk size

2 easy methods to extend/shrink resize primary partition in Linux

Related Searches: How to resize primary partition in Linux. How to extend non lvm root partition. How to change size of partition in Linux using parted and fdisk without destroying data. Steps to expand partition in RHEL/CentOS 7 and 8 Linux. Perform Disk Management in CentOS. How to use unallocated space to change size of partition in a disk in Linux. How to resize root partition not on LVM in Linux. Step by step guide to resize primary partition. How to expand partition with examples in Linux. centos disk management. rhel 7 extend non lvm root partition. centos 7 resize root partition. Steps to resize primary partition to extend non lvm root partition in linux. how to add unallocated disk space to a partition in Linux. centos shrink or extend non lvm root partition. add space to partition. fdisk extend partition. resize boot partition. extend non lvm root partition in linux. change size of partition.how to expand partition. centos resize primary partition. rhel change size of partition.

  • This article covers steps to resize primary partition (non-lvm) which can be dangerous and can leave your Linux system in an unusable broken state. It is important that you backup your content before you attempt to change size of partition.
  • You can change size of partition (non-lvm) only on the last partition on the storage device with unallocated space. If the respective partition is not the last partition then the only way to expand partition is to backup your data , rebuild the disk and partitions, then restore the data. No tool such as gparted, parted or fdisk can help you change size of partition in such case.
  • You must have some unallocated space or free space available in the concerned device to be able to expand partition. In some of the virtual environment you have an option to change the storage device size but on physical node if there is no enough unallocated space then resize primary partition (extend non lvm root partition) is not possible
  • This article assumes you’re using either a GPT partition table, or an msdos partition table using primary partition types to extend non lvm root partition.

Lab Environment to resize primary partition (RHEL/CentOS 7/8) in Linux

I have performed resize primary partition operation on Virtual Machine running on Oracle VirtualBox installed on Linux server . My VM is running with CentOS 8 but I have also verified these steps on RHEL/CentOS 7 and RHEL 8 Linux.

Here my VM is installed on /dev/sda device where /dev/sda1 is boot partition, /dev/sda2 is root while /dev/sda3 is for swap.. Additionally I have left some unallocated free space in /dev/sda for the demonstration of this article to extend non lvm root partition.

Method 1: Change size of partition using parted CLI utility

You can either use gparted (GUI utility) or parted (CLI utility) to change size of partition in Linux. Here we plan to resize primary partition which in our case is /dev/sda.

List available partitions

To list the available partitions in /dev/sda we will execute below command

As I mentioned in the disclaimer section, you can change size of partition only on the last partition of the device but here root partition ( /dev/sda2 ) is not the last one instead swap ( /dev/sda3 ) is my last partition. So to expand root partition I must delete swap device to be able to to use unallocated space and extend non lvm root partition. After deleting swap, root partition will become the last partition on /dev/sda after which we can resize primary partition.

Disable swap partition

Currently I have around 1GB reserved for swap partition

I will turn off my swap (disable swap partition) and use this space to extend non lvm root partition in Linux

Verify the swap partition space, as you see not it is 0

Update /etc/fstab to make sure swap partition is not mounted at boot up stage.

Delete swap and expand partition

Now to resize primary partition /dev/sda2 and expand partition to a new value we must first delete swap partition using parted utility. As we need root partition to be the last partition of /dev/sda before we expand partition.

But our root partition is showing the same size as earlier i.e.

To complete the steps to resize non lvm root partition, execute resizefs to expand partition and refresh the changes

Re-verify the new size of root partition to make sure our steps to extend non lvm root partition was successful.

Re-create swap partition

Now we must create Swap partition which we deleted earlier in this article. We will again use parted utility to create swap partition

Now with parted we only created a partition with file system type as swap. Use mkswap to turn this partition into swap.

Next we must update /etc/fstab with the UUID of our new swap partition. To get the new UUID of swap partition

Update this UUID in /etc/fstab as shown below

Finally turn on the new swap partition

Verify the new swap partition

Now you can reboot your Linux server to make sure everything is OK and resize primary partition was successful.

Method 2: Change size of partition using fdisk utility

Similar to parted command, you can also use fdisk utility to resize primary partition and extend non lvm root partition.

List available partitions

Before we resize primary partition, let us list the available partitions

Now as you see my existing root partition /dev/sda2 size is

10G . Here we will expand partition with +1GB using unallocated disk space from /dev/sda .

Delete swap partition

Currently my swap partition is enabled and is the last partition of /dev/sda . So we must first delete swap partition here before we change size of partition as we need root to be the last partition in /dev/sda

So we will turn off the swap partition before we disable it

Now it is time to use fdisk utility to resize partition

Part 1 — Resize root partition

We will continue with the steps to extend non lvm root partition in the same fdisk session. Note down the start sector of the root partition before you expand partition.

Create swap partition

After we resize primary partition, in the same fdisk session we will also create a new swap partition which we had deleted initially with new start and end sector

Update the kernel regarding the recent changes we did to change size of partition

But our swap partition is still shown as 0

Now let us complete our steps to create swap partition using mkswap

Next update /etc/fstab with the UUID for your new swap partition. You can use blkid to get the UUID

Update the same in /etc/fstab as shown below

Now you can turn on the swap partition

Verify the same using free command

Part 2 — Resize root partition

If not done already in above steps, once you exit fdisk utility, update the kernel regarding the recent changes we did to change size of partition

We are not done with resize primary partition, as df command still shows old partition size for root partition

Execute resize2fs to expand partition on /dev/sda2 with the new changes

Now you can verify the new size of root partition

Lastly I hope the steps from the article to resize primary partition and extend non lvm root partition on RHEL/CentOS 7/8 Linux was helpful. So, let me know your suggestions and feedback using the comment section.

Изменение размера диска или раздела Linux

Рано или поздно всегда приходиться делать изменение размера диска или раздела Linux. Варианты как это сделать существуют разные и все зависит от конкретного случая. Постарался найти вариант который подходит для разных случаев.

Введение

Рано или поздно всем необходимо произвести изменение размера диска, раздела, или вообще перестроить разбивку диска по новому.

Вариантов как это сделать множество, но мне кажется я нашел идеальный и 100% рабочий вариант.

Основной принцип состоит из следующих моментов:

  • Подключаем дополнительный диск;
  • Загружаем систему с Live-образа;
  • Переносим информацию на дополнительный диск;
  • Создаем, изменяем разделы на требуемом диске;
  • Возвращаем данные в случае форматирования;
  • Обновляем загрузчик системы и вносим правки в файл системы отвечающий за подключение разделов диска в систему.

Это очень грубая общая схема не отражающая всех нюансов, но дающая понять суть процесса.

В моем случае необходимо было поменять размер диска с преобразованием системы XFS в EXT4 на виртуальной машине работающей в Proxmox.

Меня лично необходимость уменьшить раздел возникла по причине того что в системе Proxmox появился диск SSD, но вот перенести туда нужную машину я не мог по причине большого размера диска а не реально используемого пространства.

Подготовка

Обязательно перед выполнением работ сделайте резервные копии виртуальных машин или как минимум данных с них!

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

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

В моем случае делались изменения размеров на корневом разделе а значит необходимо запустить систему с Live-образа. Для этих целей у меня сделана собственная сборка дистрибутива Calculate Linux где установлены все необходимые мне утилиты. Можно использовать любой удобный вам Live-образ системы Linux.

Перед началом работ выполните команду которая покажет все реально смонтированные диски в работающей системе:

Сохраните эти данные, так как в последствии нам с ними будет проще работать.

Загружаем систему используя Live-образ.

Работать в консоли самого Proxmox не удобно, так как нет возможности копировать команды. Запускаю ssh сервер командой:

Подключаюсь по ssh используя данные авторизации live-образа.

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

В примере имеется ввиду что раздел /boot выведен на отдельный раздел и мы его не трогаем. Всегда при создании выношу раздел boot на отдельный раздел и не раз эта схема упрощала мне жизнь при работе или проблемах с диском.

Изменение размера диска без форматирования

В случае простого изменения размеров у разделов все просто.

К сожалению раздел XFS уменьшить нельзя а увеличить можно.

Запускаем программу Gparted и выполняем необходимые действия с имеющимися разделами. Уменьшаем, перераспределяем или отключаем какой то раздел и переносим в корень. Например, в моем случае раздел /var/sevo44 находился на отдельном разделе а мне захотелось перенести его в корневой раздел.

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

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

Изменение размера диска с форматированием

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

Определяем имеющиеся диски в системе выполнив команду:

Из вывода видно что sda рабочий диск а sdb подключенный.

Создаем раздел из всего диска sdb и форматируем его в ext4:

Создаем две папки куда будем монтировать диски:

Монтируем раздел sdb1 в необходимую папку:

C диском sda немного посложнее. В нашем случае разделы были подключены следующим образом:

Раздел sda1 надо оставить как есть а вот sda3 убрать переместив все данные в корневой раздел sda2.

Монтируем вначале главный раздел а затем вложенный:

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

Всё смонтировалось как надо.

Переноси теперь все данные с папки /mnt/sda в папку /mnt/sdb

Переносить необходимо в консольном файловом менеджере Midnight Commander (mc), так как она при переносе сохранит все права на файлы и перенесёт все один в один.

Есть и другие способы переноса в консоли, но вариант с Midnight Commander проще и наглядней.

После переноса проверяем правильность и только после этого отключаем разделы диска sda строго в таком порядке:

Запускаем программу Gparted с Live-образа и делаем с разделами что нам необходимо. В моем случае получилось следующее:

Удалил раздел sda3 а раздел sda2 увеличил и отформатировали в формат ext4. Уменьшили диск больше чем на 50 Гиб.

Можно высчитывать и обрезать раздел ровно для последующего уменьшения, но мне проще потом его расширить подключившись с Live-образа.

Монтируем sda2 в папку /mnt/sda и копируем обратно в программе mc все данные с папки /mnt/sdb в /mnt/sda:

После копирования и проверки отключаем sdb1:

Теперь нам необходимо отредактировать файл /etc/fstab который отвечает за монтирование разделов.

Определим какие uuid у разделов диска sda (при форматирование раздела uuid меняется на новый):

Открываем /mnt/sda/etc/fstab и смотрим какие там прописаны uuid и параметры файловых систем:

Как видим у раздела /boot uuid не поменялся а вот у корневого сменился. Приведем файл к необходимым параметрам:

Обновление загрузчика Grub2

После перезагрузки системы CentOS 8 вы увидите такое сообщение:

Система говорит что она не видит корневой диск с таким uuid.

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

Решается эта проблема в два шага:

  1. Загрузится указав правильный uuid;
  2. В загрузившейся системе обновить Grub2.

Запускаем систему и как только увидите варианты загрузки нажимайте клавишу е:

В результате вы увидите место где необходимо сменить информацию:

Меняем на наш новый uuid 611171b8-5da5-460c-a6da-7bf8d42f2128 и нажимаем сочетание клавиш Ctrl и X.

Система загрузится, но значения загрузчика не поменяются. Выполним команду которая обновит grub2 в системе CentOS 8:

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

Диск мы уменьшили и добились работоспособности системы теперь осталось выполнить последнее действие по уменьшению файла raw.

Преобразование раздела утилитой fstransform

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

Утилита называется fstransform и способна она преобразовывать в разные форматы.

Для преобразования корневого раздела необходимо загрузится с Live-образа установить утилиту и преобразовать нужный раздел.

Для Live-образа системы Debian (консольный вариант) нам вначале необходимо получить права root:

Обновить список пакетов и установить:

Определить нужный раздел для преобразования командой # fdisk -l и запустить необходимую команду:

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

Боле подробно об утилите можно посмотреть тут.

Уменьшение диска образа RAW

Возможно если у вас виртуальная машина работает на LVM существует способ более простой и не надо переносить образ в файловый вариант, но мне не захотелось выполнять более сложные действия с системой LVM.

Воспользуемся командой которая может произвести изменение диска обрезав образ диска raw с конца на нужный размер.

В нашем случае номер виртуальной машины был 112 и нам необходимо уменьшить образ на 50 G:

Как видим образ успешно изменён.

Осталось загрузится c Live-образа и в программе Gparted задействовать все свободное место от диска.

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

Вывод

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

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.