Creating and managing partitions in Linux with parted

So you need to manage a storage device? Well, if you are a Linux administrator, then you are in luck. As it turns out, there are a ton of different tools and command suites that you can use to accomplish this. Today we are going to look at the parted
command suite. GNU parted
(PARTition EDitor) was created by Andrew Clausen and Lennert Buytenhek. It runs at the command line, or with a graphical interface, if that's more your speed. We are going to focus on the command line variant here. Let's look at some of the functionality parted
offers.
The parted utility
Parted
allows you to add, shrink, extend, and remove partitions from storage disks on your system. Be sure of what you are doing when making changes to partitions. I recommend that you explore the tool on a virtual machine that contains no important data. You will also need root access to the system. I am using parted on Red Hat Enterprise Linux 8 for this example. Parted
comes pre-installed in this particular distro, but if you need to install it on a different Linux flavor, there is plenty of information online. For now, let's take a look at the basic operations with which you will want to be familiar.
Listing partitions with parted
The first thing that you want to do anytime that you need to make changes to your disk is to find out what partitions you already have. Displaying existing partitions allows you to make informed decisions moving forward and helps you nail down the partition names will need for future commands. Run the parted
command to start parted
in interactive mode and list partitions. It will default to your first listed drive. You will then use the print
command to display disk information.
[root@rhel ~]# parted /dev/sdc
GNU Parted 3.2
Using /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Error: /dev/sdc: unrecognised disk label
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdc: 1074MB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
(parted)
Creating new partitions with parted
Now that you can see what partitions are active on the system, you are going to add a new partition to /dev/sdc
. You can see in the output above that there is no partition table for this partition, so add one by using the mklabel
command. Then use mkpart
to add the new partition. You are creating a new primary partition using the ext4 architecture. For demonstration purposes, I chose to create a 50 MB partition.
(parted) mklabel msdos
(parted) mkpart
Partition type? primary/extended? primary
File system type? [ext2]? ext4
Start? 1
End? 50
(parted)
(parted) print
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdc: 1074MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 50.3MB 49.3MB primary ext4 lba
Modifying existing partitions with parted
Now that you have created the new partition at 50 MB, you can resize it to 100 MB, and then shrink it back to the original 50 MB. First, note the partition number. You can find this information by using the print
command. You are then going to use the resizepart
command to make the modifications.
(parted) resizepart
Partition number? 1
End? [50.3MB]? 100
(parted) print
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdc: 1074MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 100MB 99.0MB primary
You can see in the above output that I resized partition number one from 50 MB to 100 MB. You can then verify the changes with the print
command. You can now resize it back down to 50 MB. Keep in mind that shrinking a partition can cause data loss.
(parted) resizepart
Partition number? 1
End? [100MB]? 50
Warning: Shrinking a partition can cause data loss, are you sure you want to
continue?
Yes/No? yes
(parted) print
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdc: 1074MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 50.0MB 49.0MB primary
Removing partitions with parted
Now, let's look at how to remove the partition you created at /dev/sdc1
by using the rm
command inside of the parted
suite. Again, you will need the partition number, which is found in the print
output.
NOTE: Be sure that you have all of the information correct here, there are no safeguards or are you sure? questions asked. When you run the rm
command, it will delete the partition number you give it.
(parted) rm 1
(parted) print
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdc: 1074MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
Wrap-up
Parted
is another great option for manipulating hard disks in Linux, and is about as easy to use as any tool I've seen! From creation, deletion, shrinking, extending, etc, there is so much functionality offered. I highly recommend that you take the time to learn parted
, and if you have the chance, consider using it to accomplish your next partitioning job!
[ Want to test your sysadmin skills? Take a skills assessment today. ]

Tyler Carrigan
Tyler is the Sr. Community Manager at Enable Sysadmin, a submarine veteran, and an all-round tech enthusiast! He was first introduced to Red Hat in 2012 by way of a Red Hat Enterprise Linux-based combat system inside the USS Georgia Missile Control Center. More about me