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 parted
and fdisk
commands.
Table of Contents
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:
- Primary
- Extended
- Logical
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
parted -l
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
[powerkit_alert type=”info” dismissible=”false” multiline=”false”]
Important Note: We’ll run the next commands in the parted menu. You’ll notice that all commands are shown to being with (parted)
.
[/powerkit_alert]
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 parted
command:
parted
And then select our desired disk to create a partition.
(parted) select /dev/sda
parted
menuGNU 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.
Check Table
Now we will check our latest created partition table. To do this run print
inside the parted menu:
(parted) print
Partition Creation
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.
(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.
(parted) quit
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 lsblk
.
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
mkfs.ext4 /dev/sda1
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:
mkdir /partedpartition
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:
df -hT
Yes, we have now created a partition and mounted it into a mount point to access it.
Permanent Mount
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.
The 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
fsck
will 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:
vi /etc/fstab
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 lsblk
or 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 lsblk
.
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 fdisk
.
List partitions
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
- Units
- 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
fdisk <device_name>
As our device is sdb, we will use the command as below:
fdisk /dev/sdb
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.
Using partprobe
Then we will use the command:
partprobe
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 lsblk
command.
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:
mkfs.xfs /dev/sdb1
Mount Point creation and addition
Then we will create a new mount point named /fdiskpartiton and mount our partition on it.
/etc/fstab entry
Finally, we edit the /etc/fstab file and enter the partition as shown in below format. To do this run:
vi /etc/fstab
Then add entry on below format:
/dev/sdb1 /fdiskpartition xfs defaults 0 0
Finally exiting the fstab using :wq
.
We can check our mounted system using lsblk
and df -hT
command.
Conclusion
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.
Nicely written , does sfdisk support NVMe SSD partition?