Extending root partition linux

Increase partition size on which Ubuntu is installed?

I have Ubuntu installed on a drive. The problem is it is running low on disk space. This is installed on vmware. I expanded the virtual drive and booted into ubuntu. But when I opened gparted(sudo gparted), the move/resize option is unavailable. This is the partition Ubuntu is installed on, but I need to resize it. Any ideas? I am comfortable using command line

You can see how they do it in raspi-config for the Raspberry Pi, where expanding the root file system is something you do almost every time you set up a new Raspberry Pi. github.com/RPi-Distro/raspi-config/blob/…

I’ve found a youtube tutorial which can be a good answer for this question, it starts at this position: youtu.be/07hpUigWQyY?t=1538

8 Answers 8

As a matter of fact, you CAN enlarge the root filesystem while Ubuntu is running (I learned this recently myself here) — this sounds incredible but it’s true 🙂

Here’s the list of steps for a simple scenario where you have two partitions, /dev/sda1 is an ext4 partition the OS is booted from and /dev/sdb2 is swap. For this exercise we want to remove the swap partition an extend /dev/sda1 to the whole disk.

  1. As always, make sure you have a backup of your data — since we’re going to modify the partition table there’s a chance to lose all your data if you make a typo, for example.
  2. Run sudo fdisk /dev/sda
    • use p to list the partitions. Make note of the start cylinder of /dev/sda1
    • use d to delete first the swap partition ( 2 ) and then the /dev/sda1 partition. This is very scary but is actually harmless as the data is not written to the disk until you write the changes to the disk.
    • use n to create a new primary partition. Make sure its start cylinder is exactly the same as the old /dev/sda1 used to have. For the end cylinder agree with the default choice, which is to make the partition to span the whole disk.
    • use a to toggle the bootable flag on the new /dev/sda1
    • review your changes, make a deep breath and use w to write the new partition table to disk. You’ll get a message telling that the kernel couldn’t re-read the partition table because the device is busy, but that’s ok.
  3. Reboot with sudo reboot . When the system boots, you’ll have a smaller filesystem living inside a larger partition.
  4. The next magic command is resize2fs . Run sudo resize2fs /dev/sda1 — this form will default to making the filesystem to take all available space on the partition.

That’s it, we’ve just resized a partition on which Ubuntu is installed, without booting from an external drive.

@Isaac: Yes, we still have to reboot to make the kernel to re-read the partition table. However, a quick reboot in many scenarios is a much smaller problem than booting from an external medium (think of remote machines, headless machines, VPSes etc.)

Two quick notes: 1. You can use df to show the «resulting» space after this (confirm that it worked), and 2. remember to recreate some swap space!

Читайте также:  Can firefox run on linux

Thanks so much. Ubuntu never used the space I gave the VirtualBox vdisk. Now I know why. Many thanks!

Thanks for a great post. In step 2, after running ‘n’, it prompts whether to delete a signature. I choose to retain the signature, and approach works as expected.

@Sid: It is very important that the start cylinder is the exactly the same. If the free space is anywhere but immediately after the partition you need to use another method (which would require booting from another drive)

Two Methods

1. Tested in Ubuntu Server 16.04 to 18.10

After extending the volume in VMware ESXi (shutdown vm, backup/export vm, remove all snapshots, then increased number in disk size, take snapshot of vm again before following the next steps so you can revert mistake/error).

The following example is extending volume on root partition on a system that is already using LVM.

 # fdisk -l /dev/sda Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 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: 0xc8b647ff Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 999423 997376 487M 83 Linux /dev/sda2 1001470 16775167 15773698 7.5G 5 Extended /dev/sda3 16775168 41943039 25167872 12G 8e Linux LVM (***** See new partition /dev/sda3*****) /dev/sda5 1001472 16775167 15773696 7.5G 8e Linux LVM 
 # pvcreate /dev/sda3 Physical volume "/dev/sda3" successfully created 
 # vgdisplay --- Volume group --- VG Name linuxetc1-vg (***** this is vg i'm extending*****) System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size 7.52 GiB PE Size 4.00 MiB Total PE 1925 Alloc PE / Size 1925 / 7.52 GiB Free PE / Size 0 / 0 . 
 # vgextend linuxetc1-vg /dev/sda3 Volume group "linuxetc1-vg" successfully extended 
 # lvextend -l+100%FREE /dev/linuxetc1-vg/root Size of logical volume linuxetc1-vg/root changed from 6.52 GiB (1669 extents) to 18.52 GiB (4741 extents). Logical volume root successfully resized. Or if you only wanted to give 5 more GB to root # lvextend -L +5g /dev/linuxetc1-vg/root 
 # df -h Filesystem Size Used Avail Use% Mounted on udev 477M 0 477M 0% /dev tmpfs 100M 4.6M 95M 5% /run /dev/mapper/linuxetc1--vg-root 6.3G 2.5G 3.5G 42% / (***** this line*****) tmpfs 497M 0 497M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 497M 0 497M 0% /sys/fs/cgroup /dev/sda1 472M 105M 343M 24% /boot tmpfs 100M 0 100M 0% /run/user/1000 
 # resize2fs /dev/mapper/linuxetc1--vg-root resize2fs 1.42.13 (17-May-2015) Filesystem at /dev/mapper/linuxetc1--vg-root is mounted on /; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 2 The filesystem on /dev/mapper/linuxetc1--vg-root is now 4854784 (4k) blocks long. 
 # df -h Filesystem Size Used Avail Use% Mounted on udev 477M 0 477M 0% /dev tmpfs 100M 4.6M 95M 5% /run /dev/mapper/linuxetc1--vg-root 19G 2.5G 15G 15% / (***** this line*****) tmpfs 497M 0 497M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 497M 0 497M 0% /sys/fs/cgroup /dev/sda1 472M 105M 343M 24% /boot tmpfs 100M 0 100M 0% /run/user/1000 

2. Faster Method Tested in Ubuntu Server 18.04.3 LTS

This method is a little faster than the first. This is due to a new option in the cfdisk menu called «Resize» that saves some steps.

Читайте также:  Узнать dns сервер домена linux

After extending the volume in VMware ESXi (shutdown vm, backup/export vm, remove all snapshots, then increased number in disk size, take snapshot of vm again before following the next steps so you can revert mistake/error).

The following example is extending volume on root partition on a system that is already using LVM.

  1. ssh into the system, switch to root and run cfdisk .
  2. Choose the partition to extend and select «Resize». enter image description here
  3. Set the «New size». enter image description here
  4. After pressing enter, you’ll see screen with the following note «Partition [someNumber] resized»: enter image description here
  5. Next you’ll need to «Write» (save) your changes: enter image description hereenter image description hereenter image description here
  6. Quit cfdisk . When you exit you may see message «syncing disks». enter image description hereenter image description here
  7. I rebooted my system at this point but it may not be necessary. Now you can pickup from step 19 from the first method (repeated below).
  8. (19) Get filesystem name for next step
 # df -h Filesystem Size Used Avail Use% Mounted on udev 477M 0 477M 0% /dev tmpfs 100M 4.6M 95M 5% /run /dev/mapper/linuxetc1--vg-root 6.3G 2.5G 3.5G 42% / (***** this line*****) tmpfs 497M 0 497M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 497M 0 497M 0% /sys/fs/cgroup /dev/sda1 472M 105M 343M 24% /boot tmpfs 100M 0 100M 0% /run/user/1000 
 # resize2fs /dev/mapper/linuxetc1--vg-root resize2fs 1.42.13 (17-May-2015) Filesystem at /dev/mapper/linuxetc1--vg-root is mounted on /; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 2 The filesystem on /dev/mapper/linuxetc1--vg-root is now 4854784 (4k) blocks long. 
 # df -h Filesystem Size Used Avail Use% Mounted on udev 477M 0 477M 0% /dev tmpfs 100M 4.6M 95M 5% /run /dev/mapper/linuxetc1--vg-root 19G 2.5G 15G 15% / (***** this line*****) tmpfs 497M 0 497M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 497M 0 497M 0% /sys/fs/cgroup /dev/sda1 472M 105M 343M 24% /boot tmpfs 100M 0 100M 0% /run/user/1000 

Источник

How to extend my root (/) partition?

Till today I was using ubuntu 13.04 in my windows7/ubuntu dual boot. Just now I have upgraded to ubuntu 14.04. My software updater showed an updates available message. I proceeded with Install Now . Soon I got the following window. 'Not enough free disk space' messageThen I tried sudo apt-get clean as recommended. Nothing happened! Not even a window opened. Teach me deleting the temporary packages. Deleting temporary files may not be highly helpful in case of further updates and installs for I don’t have too much space left in my /. I wanna extend my / partition with the help of the unallocated space in my HD. The following is my Gparted window. Gparted windowI got an answer here. But it wasn’t useful for me. I had two choices. But the answer wasn’t working for both my chioces. Choice 1: I may use the 4.25 GiB unallocated space to extend my /dev/sda10. To do so, I must need to move my linux-swap partition. But my Resize/Move option is disabled for the linux-swap partition. Choice 1 failed! Choice 2: I may use the 14.35 GiB unallocated space instead. In this case I must move more than one partition. /dev/sda4 partition is the first on the list. Even that partition has the same problem. Resize/Move option is disabled. Choice 2 failed! I am out of choices now. What shall I do? Help me to extend my / with Gparted.

Why does it says 1.96 GiB unused in your root? You actually have space, no? What’s the output of df ?

apt-get clean doesn’t pop-up a window or even echo to the command line what it did. It just does it, but the now freed 1.96 gb space shows it did something.

3 Answers 3

You actually can use the 4.25 GiB at the end without any reboot, because Linux supports on-line partition resizing since kernel 2.6 (meaning you can resize partitions while they’re mounted, even the root partition, without any reboot).

I’ll show you how to remove the swap partition and extend the root partition with all the free space at the end. Then I’ll use the unallocated space in the beginning (14.35 GiB) for a new swap partition. Of course 14.35 GiB is a bit much so you can also choose to use some to extend your NTFS partition.

  1. Open GParted
  2. Right click on /dev/sda11 and select Swapoff
  3. Right click on /dev/sda11 and select Delete
  4. Click on Apply All Operations
  5. Open a terminal
  6. Extend the root partition:

Initially I wrote this using the command line only, but then I decided to try to use GParted as much as possible as this may be easier for you to see what’s going on. You may even extend the root partition using GParted. But you need to unmount your root partition before you work on it. I mean you should work offline (using a liveUSB). In some cases your grub may get damaged. So do reinstall your grub before you leave out from your offline working.

I believe GParted will automatically enable the new swap partition but I’m not sure. You can always check by right clicking on it and then selecting Swapon . If this option is not available the swap partitions is probably already enabled.

Also the Refresh Devices step is probably unnecessary, but you should follow it just to be sure.

We cannot resize the extended partition ( sda4 , in this case) as it has a mounted logical partition within it. So we need to boot into the live mode of an Ubuntu USB/CD drive. From there, start GParted, turn off swap if necessary, right click on the extended partition and resize it to suit your needs. Then, follow the steps mentioned as needed to resize root and add back swap. In the event that your root partition UUID gets changed, you can update Grub by executing these steps in the live mode:

sudo mount /dev/sda10 /mnt sudo mount -o bind /dev/ /mnt/dev sudo grub-install --root-directory=/mnt /dev/sda sudo chroot /mnt /bin/bash # Now within the chroot sudo update-grub exit # Now outside chroot 

The first couple of commands mount the root partition ( sda10 , in this case) and set up /dev/ for use within a chroot environment. (Other partitions that can be similarly mounted for a more functional chroot are /proc , /sys and /dev/pts .) Then we reinstall grub (not really necessary). Then, we enter the chroot and update grub. This causes grub to use the new UUIDs where necessary. After exiting the chroot, reboot and we should get the grub menu back.

Источник

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