Parted is a GNU utility and is used to create, manipulate and delete the hard disk partitions. You can even clone partitions. There are other utilities available in Linux, such as fdisk, for performing disk related operations. But frankly speaking, it is not possible to create a Linux partition larger than 2 TB using the fdisk command. The fdisk works well for desktop and laptop users, but on a server you need a large partition.
Throughout this tutorial, you will learn how to create a partition that is greater than 2TB. The standard fdisk cannot work with GPT. We have to use GNU parted command with GPT. Partition Table (GPT) is the standard for the layout of the partition table on a physical hard disk.
Find Out the Current Disk Size
Let's use fdisk command to find the disk size
# fdisk -l /dev/sdb
Disk /dev/sdb: 3000.6 GB, 3000592982016 bytes
255 heads, 63 sectors/track, 364801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdb doesn't contain a valid partition table
Creating a 3TB partition size
In order to create a partition, you need to first start GNU parted command as follows:
# parted /dev/sdb
GNU Parted 2.3
Welcome to GNU Parted!
To display a list of commands just type help.
Step 1. First of all, let us create a new GPT disk label i.e. a partition table.
(parted) mklabel gpt
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
Step 2. Set the default unit to TB.
(parted) unit TB
Step 3. Create a 3TB partition size.
(parted) mkpart primary 0.00TB 3.00TB
Step 4. Print current partitions:
Model: ATA ST33000651AS (scsi)
Disk /dev/sdb: 3.00TB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 0.00TB 3.00TB 3.00TB ext4 primary
Step 5. Quit and save the changes:
It is mandatory to update /etc/fstab. Format the filesystem by using mkfs.ext3 or mkfs.ext4 command.
# mkfs.ext3 /dev/sdb1
# mkfs.ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
183148544 inodes, 732566272 blocks
36628313 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
22357 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848, 512000000, 550731776, 644972544
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 31 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
In order to mount /dev/sdb1 device just type as follows:
# mkdir /data
# mount /dev/sdb1 /apps
The df displays the amount of disk space available on the file system containing each file name argument.
# df -H
Filesystem Size Used Avail Use% Mounted on
/dev/sdc1 16G 819M 14G 6% /
tmpfs 1.6G 0 1.6G 0% /lib/init/rw
udev 1.6G 123k 1.6G 1% /dev
tmpfs 1.6G 0 1.6G 0% /dev/shm
/dev/sdb1 3.0T 211M 2.9T 1% /apps
A few things to keep in mind about parted utility are:
1. Parted writes directly to the disk.
2. It uses Megabytes, not blocks or cylinders to determine the partition boundaries.
3. If you use "parted" on a disk with live data then be prepared to lose your data.
If you have any questions or thoughts to share on this topic, use the below comment section.