Extending extended partition linux

How to expand ext4 partition size using command-line?

There is 478GB unallocated space, how would I go about adding this space to /dev/sda1 without losing the data that is currently on /dev/sda1 ? (the filesystem is ext4). NOTE: it is a server with only SSH, no GUI for running stuff like gparted.

Also see askubuntu.com/a/937351/621883 especially the answer containing growpart and resize2fs was useful for me.

5 Answers 5

Enlarge the partition: fdisk -u /dev/sda .

p to print the partition table, take note of the number, start, end, type of sda1.

Recreate it using command n with same number (1), start and type but with a bigger end (taking care not to overlap with other partitions). Try to align things on a megabyte boundary that is for end, make it a multiple of 2048 minus 1. Change the type if needed with t (for partitions holding an extX or btrfs filesystem, the default of 83 is fine).

Then w to write and q to quit.

The partition table will have been modified but the kernel will not be able to take that into account as some partitions are mounted.

However, if in-use partitions were only enlarged, you should be able to force the kernel to take the new layout with:

If that fails, you’ll need to reboot. The system should boot just fine.

Then, resize the filesystem so it spreads to the extent of the enlarged partition (might be located in /sbin ):

Which for ext4 will work just fine even on a live FS.

@CanadianLuke, yes, deleting the partition in fdisk only modifies the partition table. If you recreate it the same size, there will be no change at all. The data is never altered unless you shrink a partition and create another logical or extended partition in the middle of what your partition used to be, in which case the partition record for that extended/logical partition will be written over some data there.

That sounds reasonable, but what if i have Extended, Linux LVM and Linux swap/Solaris partitions which starts on the end of Linux partition? Should I delete these partitions>? I am worried that in that case, filesystem won’t start, becuase may be using Linux LVM for example in same start and end. And i don’t want to loose data too.

@cyan resizing a LVM logical volume with a ext4 FS on it, or resizing a partition used as a physical volume for LVM would be different questions with different procedures.

It is very ease to expand ext4 partition with growpart.

sfdisk -d /dev/sdb > sdb_partition_bak.dmp

  1. Execute dry-run to see what will be changed. If you don’t have this tool. Run apt-get install cloud-utils

You can’t do it safely while the partition is mounted, meaning you need to boot some other partition and do it from there.

Читайте также:  Source code file linux

gparted is a nice, easy GUI for this purpose. In our deleted comment exchange you mentioned it would not start because of «can’t access display» — this implies you aren’t in X; since it is a GUI it won’t work without that.

Of course, if you don’t have another partition to use, you’ll need a live CD or something — I think they usually come with gparted. Your best bet is probably the actual gparted live CD, which looks to have a reasonably recent latest stable version (and will fit on a CD, which is nice since the «live CD» is rapidly becoming the «live DVD»).

I’ve never had gparted cause a problem but of course do back your important tish up first.

I can’t use gparted as I only have SSH access (it is a headless server). I am able to unmount the HDD, as the system does not run on /dev/sda.

If you don’t have physical access to the system and thus can’t usefully unmount and change the partition, I think you are out of luck, or at least into very sketchy territory — eg, you could attempt to use fdisk while mounted, select (x)pert, (c)hange number of cylinders. But I have not done this and would only do so if there was absolutely no other choice.

I just said that I can unmount the partition. I can even netboot the whole server and go in from another server, which would be just like using a Live CD (just without a GUI).

I know this is very old issue, but many people are looking for that resolve.

For this example you have the following typical situation. On the beginning is a single partition, and on the end a swap partition is located. it isn’t good because swap can be heavily loaded, and end of rotated disk is the slowest part of it. what I suggest?

  1. Create boot partition at the begin. Why at the beginning? because many tools have got problems with end of large disk above 2TB barrier. After boot partition should be swap partition. This is for performance. Rest of disk should be used for other partitions.

But what with this situation? I don’t recommend expanding sda1. I suggest creating other partitions after sda1 & sda2, mounted as /home and /usr . On that directories are stored the most user and system data, and it is possible to securely move data from that directories to new partitions.

  1. But. (second «but») if you still want keep your current structure, you should first remove swap partition. You should do swapoff, remark this in /etc/fstab . if swapon tells you (see man) no swap is used, you can remove it by partition tool (fdisk or similar). When you don’t have this partition, you can enlarge your sda1. Using fdisk you should firstly print partition. It is for remembering where it starts. Secondly remove partition using ‘d’ key. Don’t panic, nothing is written to hard drive :). After print you see, no partition exist on the disk. Next create new partition, but be careful. See on what sector original partition started. Write the same number. After that look at the end. fdisk prompts you for last available sector. Use calculator and assign in your mind how much swap do you need in kilobytes. Multiple it by 2, and subtract this number from last sector number prompted by fdisk. Create partition. Print this (it is still in fdisk temporary memory), and look all is ok. After this press ‘w’ key, this will tru write new partitioning to the drive. You will see information all is synced, or sync is failed. If failed, you can call command partx /dev/sda for doing sync. If it still fails, you should reboot your system. After reboot you have prepared larger partition, but filesystem on it is still smaller. You should grow it. EXT4 is growable on the fly :), use resize2fs /dev/sda1 for do it. You don’t need remounting rebooting etc. Last, you should restore swap partition. Simply use fdisk again, create new partition as swap. After writing ‘w’, device sda2 will be restored. Prepare swap structure on it using mkswap /dev/sda2 , remove remarks for swap on /etc/fstab and finally do swapon -a . Look using swapon or top command, swap is activated.
Читайте также:  Opening rpm in linux

I know, it’s very long explanation. I hope it will be usable for any. Notice, in my opinion xfs filesystem is much better, unfortunately this fs doesn’t support shrinking without temporary copying to alternate place, but shrink is used rarely. It is nice, xfs takes extremely little place for his own metadata, and is faster in many ways in comparison to ext4.

Another hint, better use some LVM as middle layer for partitioning. after that any resizing is much easier. Performance is comparable, of course, you can use mix of HDD management. you can use in common raw partitions and LVM.

Источник

Расширение диска или раздела Linux

Обновлено

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

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

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

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

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

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

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

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

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

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

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

apt install cloud-guest-utils

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

yum install cloud-utils-growpart

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

а) Для DEB:

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

Читайте также:  Most common linux commands

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

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

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

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

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

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

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

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

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

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

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

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

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

LVM

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

Подробнее о работе с LVM читайте в инструкции Как работать с LVM.

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

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

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

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

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

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

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

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

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

vgextend vg_centos /dev/sda3

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

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

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

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

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

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

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

ext2/ext3/ext4:

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

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

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

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

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

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

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

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

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

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

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

Источник

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