Disk Partitioning is the process of dividing a disk into one or more logical areas, known as partitions.
Before we can create any files, a filesystem must exist. And for creating a filesystem we must create a partition on our disk.
In this tutorial, we’ll discuss the tools and the process of partitioning disks in Linux. First, we will add a new disk in our server and then create a new partition in it. We will create a partition with both the
Table of Contents
- How a Partitioned Disk is Store in the System
- Disk Partitioning with parted
- Disk Partitioning with fdisk
How a Partitioned Disk is Store in the System
First let’s understand how the information of a partitioned disk is stored in the system.
This is called partition table and its format is generally known as disk type.
There exist two most commonly used partition tables, MBR (Master Boot Record) and GPT (GUID Partition Table).
The MBR standard supports creating a disk partition up to 2TB.
If we have a disk of 2TB or larger, we have to use GPT.
There are generally 3 types of partitions:
MBR has a limit of 4 primary partitions.
If we need more partitions, one of the primary partitions has to be set as an extended partition.
Inside that extended partition, we will create our new partitions and these additions are called logical partitions.
With GPT, we can have up to 128 partitions. GPT doesn’t support extended or logical partitions.
Two tools can be used for partitioning.
- For partitioning the MBR disk, fdisk is used (fdisk can also understand GPT format).
- For partitioning both MBR and GPT, parted is used. It is newer and considered a better option than fdisk.
In this tutorial we will use both the tools and create partitions with them.
Disk Partitioning with parted
Adding A New Device
First, we will add a new device on our server. We will first check our current disk and filesystem using lsblk command.
Here we can see I have only one disk added, nvme0n1 which is a nvme disk and has three partitions within it (nvme0n1p1, nvme0n1p2, nvme0n1p3).
Note: I’m using RedHat Enterprise in VMware so I’ll demonstrate how to add a SATA disk to my virtual machine, but your setup may differ.
Adding a New Disk to a VMware Virtual Machine
Now we will add a SATA disk of about 10G.
From the workstation, right clicking on the vm server, we click the settings menu on the last of dropdown.
After that we will select Add on the bottom left to add new components.
Then we will select the hard disk and press next.
After that, we will select “SATA” to add a SATA disk and press next.
We will select Create a new virtual disk and press next.
Then we will set the size as 10G.
Then we will finish and our disk will be added.
Then we will see our newly added disk here.
We can also check it from the command line using lsblk.
Here we can find our added sata disk. As it is the first SATA disk, so the name is already set as sda.
Now we will start with partitioning and need a root or sudo user for executing commands.
Always remember that these tools can be dangerous and we should use them with extreme caution as there is a possibility of data loss. So, if partitions contain data, it is good practice to take a backup and then partition it.
Using parted to list out storage device information
We will first check the list storage devices and partitions using command
Here we are provided with information on storage devices and partitions. Parted command will print out below information:
- Model – Model of the storage device.
- Disk – Name and size of the disk.
- Sector size – Logical and physical size of the memory
- Partition Table – Partition table type (msdos, gpt, aix, amiga, bsd, dvh, mac etc)
- Disk Flags – Partitions with information on size, type, file system, and flags.
Opening the Storage Disk
Here we will first open the disk. Our disk path is /dev/sda. We will open it using the command
sudo parted /dev/sda
We can also use parted, and then choose our disk, if we had multiple.
So again, we will first enter into the parted command menu using
And then select our desired disk to create a partition.
(parted) select /dev/sda
GNU Parted 3.2 Using /dev/sda Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) select /dev/sda Using /dev/sda (parted)
Create Partition Table
Now we have to create a partitioning table. To do this we run the following command in the parted menu:
(parted) mklabel <partition table type>
Here we will create a gpt partition table. Run the following command:
(parted) mklabel gpt
Enter yes at the prompt.
Now we will check our latest created partition table. To do this run
Now it’s time to create a partition. The command used for this is mkpart and format is
(parted) mkpart <partition type> <filesystem> <start size> <end size>
Let’s make a new 2048MB partition using the ext4 file system. The assigned disk start shall be 1MB and the disk end is at 2048MB. Command will be
(parted) mkpart primary ext4 1MB 2048MB
Now again we can check it using the print command.
Here we can see our created partition under the Disk Flags section.
Finally, we will enter the quit command. Changes are saved automatically with this command.
There will be a text with information that we need to update /etc/fstab. We will understand that after a while.
Now we will again check our filesystem and blocks using
Here we can see our 2GB partition named as /dev/sda1 under /sda.
Activating the partitions
Now that the partition has been created, the next step is to format the partitions and mount them to the system’s directory tree.
To format the partition, we use the
mkfs command, format is
mkfs. <filesystem type> <partition name>
Here, we are formatting the partition as an ext4 filesystem. So, our command will be
Our partition is formatted and activated to use.
Mount point creation and mounting the partition
Now we will create a mount point to interact with the new partition we created. We will create a new mount point named partedpartition. The command for this is:
Then we have to mount the partition with the created mount point. To do this, we run:
mount /dev/sda1 /partedpartition
We can check our recently added mount point using the following command:
Yes, we have now created a partition and mounted it into a mount point to access it.
But this mount is temporary. If you restart your machine or unmount the mount point, then this mounting will be gone.
For making this mount point permanent we have to add an entry of it on the /etc/fstab file.
Understating the fstab
fstab stands for File System Table, which is a system configuration file.
fstab entry table consists of 6 columns where each column designates a specific parameter and must be set up in the correct order. The columns of the table are as follows from left to right:
- Device: usually the given name or UUID of the mounted device (sda1/sda2/etc).
- Mount Point: the directory where the device will be mounted.
- File System Type: the type of filesystem in use.
- Options: lists any active mount options, set defaults in general, other options can be added using commas
- Backup Operation: (the first digit) this is a binary system where 1 = dump utility backup of a partition. 0 = no backup. 0 is default and generally used
- File System Check Order: (second digit) Here we can see three possible outcomes. 0 means that
fsckwill not check the filesystem. Numbers higher than this represent the check order. By default, we will use 0.
The general entry format is:
<device name> <mount point> <filesystem type> defaults 0 0
Editing the fstab
Now open the /etc/fstab file using vi or vim or nano and add an entry. And then we will add information about our partition. Here I will open it using vi.
The command for this is:
Now we will add our partition entry on the file. Press i for insert into the /etc/fstab file.
So, our entry format will be
/dev/sda1 /partedpartition ext4 defaults 0 0
We will save and exit the editor by first pressing esc.
Then :wq to save and exit from the editor.
Now our partition is permanently mounted. We can use
df -hT to check:
You can check it after restarting the server.
Disk Partitioning with fdisk
Another option for partitioning is to use the
fdisk tool and its command. This is widely used among the Linux systems and very easy to use.
Adding a new hard disk
First, we will add another hard disk about 10G. We’ve already learnt how to do it, so I’ve just added it and now checking using
We can see our newly added hard disk here, named
sdb. And in this example, we’ll work on /dev/sdb to create a partition using
The fdisk command is almost similar to parted. We will first list our partitions using command:
fdisk -l /dev/sdb
Here we can see the information about our disk device containing
- Disk location
- Sector Size
- I/O Size
Get Started with fdisk
First, we have to select the disk to create a partition using fdisk. Then we will be prompted into the fdisk command line tool. Command format is
As our device is sdb, we will use the command as below:
Here we can see that the command prompt is prompting for entering the fdisk command (just like parted).
We can type m for help, to see all the options available for fdisk.
We can see many options here for our use. If we forget any, we can type m and check the desired command.
No need of partition table (if MBR)
We will partition the disk on MBR. As
fdisk will by default configure the disk as MBR, we don’t need to create a partition table now.
If we want to use GPT, we will create a new gpt partition table first using g and then add a new partition.
Create New Partiton
We will now add a new partition using the command n as shown in help.
Now first we have to select the partition type.
As shown in the screen, we have 4 free primary partitions, we will choose p for creating a new primary partition. Or by default, it will choose primary.
Then we will be prompted to choose the partition number. By default, it will be the first one available. Here as we are creating the first one, we will go with 1.
Then we will be prompted to enter the first sector and last sector.
For the first sector we will always select default and press enter. (as it is not possible for us to mark the first block sector in storage device)
Then for the end sector, we will enter our partition size.
Here I want to create a partition with 3GB. So, I will add this 3GB to the end. And in the command prompt we will write +3G and press Enter.
Congratulations! Our partition is created. We have to write the configuration and exit using w.
Then we will use the command:
partprobe is a program that informs the operating system kernel of partition table changes, by requesting that the operating system re-read the partition table. It is necessary to use this command.
Checking the newly created partition
Finally, we can check using
Mounting the partition
Now for mounting, the process is the same as it was for parted. We have to
- Format the partition with desired filesystem using mkfs
- Create new mount point
- Mount the mount point with newly formatted partition
- Make it permanent by adding an entry on /etc/fstab
Formatting the partition to activate
We will format our partition on the xfs filesystem. To do this run:
Mount Point creation and addition
Then we will create a new mount point named /fdiskpartiton and mount our partition on it.
Finally, we edit the /etc/fstab file and enter the partition as shown in below format. To do this run:
Then add entry on below format:
/dev/sdb1 /fdiskpartition xfs defaults 0 0
Finally exiting the fstab using
We can check our mounted system using
df -hT command.
We have now learned 2 command line tools to create partitions in Linux without LVM. We can get more information about them on their man pages. You can type
man parted or
man fdisk to learn more. If you have any feedback or questions feel free to let us know in the comments and we’ll get back to you as soon as we can.