How to Create a Disk Partitions in Linux

In order to effectively use storage devices such as hard drives and USB drives on your computer, you need to understand and know how to structure them before using in Linux. In most cases, big storage devices are split into separate portions called partitions.

Partitioning enables you to split your hard drive into multiple parts, where each part acts as its own hard drive and this is useful when you are installing multiple operating systems in the same machine.

In this article, we will explain how to partition a storage disk in Linux systems such as CentOS, RHEL, Fedora, Debian and Ubuntu distributions.

Creating a Disk Partition in Linux

In this section, we will explain how to partition a storage disk in Linux using the parted command.

The first step is to view the partition table or layout on all block devices. This helps you identify the storage device you want to partition. You can do this using parted or fdisk command. We will use the former for purposes of demonstration, as follows, where the -l flag means list partition layout on all block devices.

# parted -l
List Partitions in Linux
List Partitions in Linux

From the output of the above command, there are two hard disks attached to the test system, the first is /dev/sda and the second is /dev/sdb.

In this case, we want to partition hard disk /dev/sdb. To manipulate disk partitions, open the hard disk to start working on it, as shown.

# parted /dev/sdb

At the parted prompt, make a partition table by running mklabel msdos or gpt, then enter Y/es to accept it.

(parted) mklabel msdos
Make Disk Label
Make Disk Label

Important: Make sure to specify the correct device for partition in the command. If you run parted command without a partition device name, it will randomly pick a storage device to modify.

Next, create a new primary partition on the hard disk and print the partition table as shown.

(parted) mkpart primary ext4 0 10024MB 
(parted) print 
Create Partition in Linux
Create Partition in Linux

You can create another partition for the reaming space as shown.

(parted) mkpart primary ext4 10.0GB 17.24GB
(parted) print 
Create Another Partition
Create Another Partition

To quit, issue the quit command and all changes are automatically saved.

Next, create the file system type on each partition, you can use the mkfs utility (replace ext4 with the file system type you wish to use).

# mkfs.ext4 /dev/sdb1
# mkfs.ext4 /dev/sdb2
Create Filesystem Type on Partition
Create Filesystem Type on Partition

Last but not least, to access the storage space on the partitions, you need to mount them by creating the mount points and mount the partitions as follows.

# mkdir -p /mnt/sdb1
# mkdir -p /mnt/sdb2
# mount -t auto /dev/sdb1 /mnt/sdb1
# mount -t auto /dev/sdb2 /mnt/sdb2

To check if the partitions are actually mounted, run the df command to report file system disk space usage.

# df -hT
Check Partitions Disk Space Usage
Check Partitions Disk Space Usage

Important: You may need to update /etc/fstab file to mount newly created partitions automatically at boot time.

You might also like to read these following related articles:

  1. 9 Tools to Monitor Linux Disk Partitions and Usage in Linux
  2. How to Backup or Clone Linux Partitions Using ‘cat’ Command
  3. 8 Linux ‘Parted’ Commands to Create, Resize and Rescue Disk Partitions
  4. How to Repair and Defragment Linux System Partitions and Directories
  5. How to Clone a Partition or Hard drive in Linux
  6. How to Add a New Disk to an Existing Linux Server
  7. Top 6 Partition Managers (CLI + GUI) for Linux

That’s all! In this article, we have shown how to partition a storage disk, create a file system type on a partition and mount it in Linux systems. You can ask questions or share you thoughts with us via the comment form below.

Hey TecMint readers,

Exciting news! Every month, our top blog commenters will have the chance to win fantastic rewards, like free Linux eBooks such as RHCE, RHCSA, LFCS, Learn Linux, and Awk, each worth $20!

Learn more about the contest and stand a chance to win by sharing your thoughts below!

Aaron Kili
Aaron Kili is a Linux and F.O.S.S enthusiast, an upcoming Linux SysAdmin, web developer, and currently a content creator for TecMint who loves working with computers and strongly believes in sharing knowledge.

Each tutorial at TecMint is created by a team of experienced Linux system administrators so that it meets our high-quality standards.

Join the TecMint Weekly Newsletter (More Than 156,129 Linux Enthusiasts Have Subscribed)
Was this article helpful? Please add a comment or buy me a coffee to show your appreciation.

6 Comments

Leave a Reply
  1. I successfully partitioned my drive for Linux and Windows. On boot up, I had set Linux as the default. This resulted in a screen giving me an option between OS choices. Then after a slight delay if nothing was selected the OS went to Linux.

    I was having a printer issue and changed the default to Windows. Now when I boot up the options screen does not show up and my system just goes straight into Windows. I would like to change the OS setting back to Linux as the default as I had before.

    Any help on getting a boot options screen in Windows would be greatly appreciated.

    Thanks

    Reply
  2. [root@localhost ahabab]# lsblk
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
    sda      8:0    0   35G  0 disk 
    ├─sda1   8:1    0  500M  0 part /boot/efi
    ├─sda2   8:2    0    2G  0 part [SWAP]
    ├─sda3   8:3    0   20G  0 part /
    ├─sda4   8:4    0    1G  0 part [SWAP]
    └─sda6   8:6    0 11.5G  0 part 
    sr0     11:0    1    8G  0 rom  /run/media/ahabab/RHEL-9-0-0-BaseOS-x86_64
    
    [root@localhost ahabab]# df -HT | grep sda
    /dev/sda3      xfs        22G  5.3G   17G  25% /
    /dev/sda1      vfat      524M  7.4M  517M   2% /boot/efi
    
    [root@localhost ahabab]# mount /dev/sda6 /testmount
    [root@localhost ahabab]# df -HT | grep sda
    /dev/sda3      xfs        22G  5.4G   17G  25% /
    /dev/sda1      vfat      524M  7.4M  517M   2% /boot/efi
    /dev/sda6      xfs        13G  120M   13G   1% /testmount
    

    Before I started practicing according to your article, my machine’s partition system was as above. When I made the partition table by running “mklabel msdos“, then changed it to look like the below :

    Command (m for help): p
    Disk /dev/sda: 35 GiB, 37580963840 bytes, 73400320 sectors
    Disk model: VMware Virtual S
    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: 0xc00800d1
    
    Device     Boot    Start      End  Sectors  Size Id Type
    /dev/sda1              1 19578125 19578125  9.3G 83 Linux
    /dev/sda2       19578880 30064639 10485760    5G 83 Linux
    /dev/sda3       30064640 34258943  4194304    2G 83 Linux
    /dev/sda4       34258944 73400319 39141376 18.7G  5 Extended
    
    Command (m for help): w
    The partition table has been altered.
    Failed to add partition 2 to system: Device or resource busy
    Failed to add partition 3 to system: Device or resource busy
    Failed to add partition 4 to system: Device or resource busy
    

    The kernel still uses the old partitions. The new table will be used at the next reboot.
    Syncing disks.

    What will happen after rebooting my laptop? Will I get my user login option ? will OS run in my computer ?

    Reply
    • The folks at tecmint are in love with the command line. They will go through all kinds of contortions to use CLI even when GUI is much simpler and quicker.

      Reply

Got Something to Say? Join the Discussion...

Thank you for taking the time to share your thoughts with us. We appreciate your decision to leave a comment and value your contribution to the discussion. It's important to note that we moderate all comments in accordance with our comment policy to ensure a respectful and constructive conversation.

Rest assured that your email address will remain private and will not be published or shared with anyone. We prioritize the privacy and security of our users.