> ## Content Index
> Fetch the complete content index at: https://brianchristner.io/llms.txt
> Use this file to discover other available public pages before exploring further.

# How to Resize Ubuntu Root Partition
- URL: https://brianchristner.io/how-to-resize-ubuntu-root-partition/
- Published: 2015-06-02T12:25:06.000Z
- Updated: 2024-08-15T14:43:41.000Z
- Author: Brian Christner
- Tags: Open Source

I used to be able to do these tasks with my eyes closed with AIX and other version of Linux and Unix. Today my brain blue screened on me while trying to expand my Ubuntu machine's root volume group, logical volume, and filesystem. Wow it's been awhile.

So instead of racking my brain in the future I will jot down the process here for anyone else stuck in the same situation.

## How to expand Ubuntu root filesystem

So a quick recap for those that don't remember. We have to expand components of the filesystem in the following order. **Physical Volume -> Volume Group -> Logical Volume -> Filesystem**

In my scenario I increased the size of my Virtual Machine disk in VMware from 18GB to 28 GB.

- **Step 1** Before we get started run *pvdisplay* in order to see the current state of the physical volume

```
root@Docker01:~# pvdisplay
--- Physical volume ---
  PV Name               /dev/sda1
  VG Name               ubuvg
  PV Size               16.00 GiB / not usable 2.00 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              4095
  Free PE               678
  Allocated PE          3417
  PV UUID               HiNAY2-sfqz-7fwT-tLvy-XKfT-3QR6-BXash5

```

- **Step 2** Manipulate the disk partition table with *fdisk*

```
root@Docker01:~# fdisk /dev/sdb
n   (create new partition, select start and end cylinders, all free space is selected by default)
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p):
Using default response p
Partition number (1-4, default 2):
Using default value 2
First sector (33552384-33554431, default 33552384):
Using default value 33552384
Last sector, +sectors or +size{K,M,G} (33552384-33554431, default 33554431):
Using default value 33554431
w  (save partition table and exit)

```

Accept the default values that are provide that the "n" option returns.

- **Step 3** Reboot your Ubuntu machine in order for Ubuntu to recognize the change.  
`root@Docker01:~# reboot`
- **Step 4** Update the partition table tool using *cfdisk*.  
`root@Docker01:~# cfdisk`  
Select **\[NEW\]** partition and **\[PRIMARY\]** for partition type. Select how big you want the partition and enter.  
Once finished select **\[WRITE\]** to save your changes to your partition then **\[QUIT\]**.  
You've now created a new partition most likely **/dev/sda1**  
![CFDisk](https://storage.ghost.io/c/29/50/2950930d-60f2-422c-90aa-232fbd4873b6/content/images/2015/06/cfdisk.png)
- **Step 5** Intialize the newly created partition with *pvcreate*

```
root@Docker01:~# pvcreate /dev/sda3
Physical volume "/dev/sda3" successfully created

```

- **Step 6** Add the newly created partition to the root volume group. First rerun *pvdisplay* to show the new physical volume details. You should now see the new partition

```
  "/dev/sda3" is a new physical volume of "9.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sda3
  VG Name
  PV Size               9.00 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               OEADew-tamR-EHil-FU4p-kIuW-F5rT-V0CTcY

```

Run the command *vgs* in order to get the name of your volume group

```
root@Docker01:~# vgs
  VG    #PV #LV #SN Attr   VSize  VFree
  ubuvg   1   5   0 wz--n- 16.00g 2.65g

```

Expand the volume group with *vgextend* then verify your volume group again once complete with *vgs*

```
root@Docker01:~# vgextend ubuvg /dev/sda3
  Volume group "ubuvg" successfully extended
root@Docker01:~# vgs
  VG    #PV #LV #SN Attr   VSize  VFree
  ubuvg   2   5   0 wz--n- 24.99g 11.64g
root@Docker01:~#

```

- **Step 7** Next we need to extend the Logical Volume with *lvextend*

```
root@Docker01:~# df -k
Filesystem                 1K-blocks    Used Available Use% Mounted on
/dev/mapper/ubuvg-ubulv      8726456 7739868    520260  94% /

root@Docker01:~# lvextend -L +10G /dev/mapper/ubuvg-ubulv
  Extending logical volume ubulv to 18.58 GiB
  Logical volume ubulv successfully resized

```

- **Step 8** Extend the Filesystem to fill the logical volume

```
root@Docker01:~# resize2fs /dev/mapper/ubuvg-ubulv
resize2fs 1.42.9 (4-Feb-2014)
Filesystem at /dev/mapper/ubuvg-ubulv is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/mapper/ubuvg-ubulv is now 4871168 blocks long.

root@Docker01:~# df -k
Filesystem                 1K-blocks    Used Available Use% Mounted on
/dev/mapper/ubuvg-ubulv     19048316 7744220  10420152  43% /

```

### Ubuntu Root Resize in Review

Hopefully this tutorial will save you time and give you a little more background on the flow of a resize. Important to remember is the path of the resize **Physical Volume -> Volume Group -> Logical Volume -> Filesystem**. We must follow this flow or the resize will either fail or encounter problems. If you use the Ubuntu GUI some tools contain the entire process in a single tool.

I'm a CLI junkie so no plans of me finding out how a GUI works anytime soon.

### Follow me

If you liked this article be sure to [Follow Me](https://twitter.com/idomyowntricks?ref=brianchristner.io) on Twitter to stay updated!