Partitioning a disk allows you to create separate sections within the disk inorder to manage your data more efficiently. For example, in Windows you have C, D or E drives. There are various uses of partitioning a disk like:
a) Allows to boot different OS from same disk
b) Allocate separate partition to different users
c) Creating separate area for OS virtual memory swapping
In this post we will cover how to create disk partitions in Linux using the fdisk utility.
- root user access
- free disk
The process to create disk partitions
Step1: List the disks
Use the lsblk command to list the exiting disks along with partitions. An alternate command is fdisk -l.
The output shows that two disks sdb and sdc are both un-partitioned whereas sda is partitioned into sda1 and sda2. Think of sda disk as your hard disk which is partitioned into C(sda1) and D(sda2) drive. All the devices are listed in /dev directory. So the path of these disks are /dev/sda, /dev/sdb, /dev/sdc and so on.
Note: If you do not have a free disk like /dev/sdb or /dev/sdc, add a new virtual disk from your Virtual Box or VMWare software. As an alternate, you can run the below commands to add a disk temporarily.
#truncate -s 5g /tmp/myfile.trunc #losetup /dev/loop1 /tmp/myfile.trunc
This will add a disk /dev/loop1 whose size is 5Gb. Keep in mind that on the next reboot, the disk and the created partition(s) will be lost.
Step2: Specify the disk to partition
As the root user run the fdisk command by specifying the disk name as an argument. I will use the /dev/sdc disk for partitioning.
Step3: Request a new partition
Press ‘n‘ to request for a new partition. On pressing “enter” key, the system will ask for partition type, either primary or extended. Press ‘p‘ for primary and ‘e‘ for extended partition. The default is primary. maximum 4 primary partitions can be created. If you intend to create more then create 3 primary partitions and 1 extended partition. Then this extended partition can be used as a container to create more logical partitions can be created.
Step4: Specify partition number, first sector and last sector
Next, assign a partition number. Then specify the size of partition. For size you need to tell two things: first sector and last sector. The best way is to choose the default value of First sector (manual specification may result in wastage of sectors if you are not aware about the details). Simple press “enter” key to choose the default starting sector. F theor Last sector you can either specify the sector or give the exact size. Its better that you specify the size in Mb or Gb as shown in the example below.
So, here I choose the size to be 1Gb and the partition is created.
Step5: Specify the partition type
The default partition type is “Linux” as shown in the previous figure. If you want to change it to something else then press the ‘t’ key. If you don’t know the type code then use the ‘L’ key to see a list of all the available types.
Step6: Save the Partition Table
Use the ‘w‘ command to save the partition table. It is must to do this otherwise the partition will not be created.
Step7: Initiate kernel re-read of partition table
Use the partprobe command to force a re-read of the partition table
Now, re-run the lsblk command and you will see the partition.
Creating File systems
A partition can not be used until a file system is applied over it. There are different file systems but the most popular ones are xfs and ext4. mkfs command can be used for the same
#mkfs.xfs /dev/sdc1 or #mkfs -t xfs /dev/sdc1
Mounting file system
Finally, to access the partition we need to attach it to the directory structure. So, first create a mount point, which is nothing but a directory using the mkdir command.
There are two ways to mount: manually or persistently
Manually mounting the file system
Use the below command to manually mount the device or partition at the mount point
#mount /dev/sdc1 /mydisk
and start creating or accessing files as shown below.
However, on the next reboot, the file system will not be automatically mounted. For a persistent mount as an admin you need to make the entry in the /etc/fstab file
Persistently mounting the file system
To permanently mount a device at a mount point add an entry for that device in the /etc/fstab file. /etc/fstab is a white space-delimited file with six fields.
[root@localhost ~]# nano /etc/fstab #in the file write /dev/sdc1 /mydisk xfs defaults 0 0
The first filed is the device name, second is the mount point, third is the file system type, fourth field applies default mount settings. The last two fields are the dump flag and the fsck order.
A wrong entry in /etc/fstab file my render the system unbootable. Hence, use the
command. If the command returns no error this means everything is perfect.
Related Topics to How to create disk partitions in Linux?
- Swap Space Management
- Logical Volume Management in Linux
- Implementing Stratis in Linux
- Virtual Data Optimizer (VDO)