Days ago I needed to format a large 4TB drive on Linux, and same as other times I knew I couldn’t run a simple fdisk command to create the new partition, as fdisk won’t work on drives larger than 2TB on Linux. This is what I did to format and mount a driver larger than 2TB on Linux, follow my step by step tutorial.
Run fdisk -l to check out your disk device name, for example:
fdisk -l
Output example:
Disk /dev/sdd: 4000.8 GB, 4000787030016 bytes 255 heads, 63 sectors/track, 486401 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/sdd1 1 267350 2147483647+ ee GPT Partition 1 does not start on physical sector boundary.
How can I create a 4TB partition size on Linux without fdisk?
We will use the parted command as you see below:
parted /dev/sdd
Output example:
[root@DHPV006 ~]# parted /dev/sdd GNU Parted 2.1 Using /dev/sdd Welcome to GNU Parted! Type 'help' to view a list of commands. (parted)
Now let’s create a new GPT disk label, issue this command:
mklabel gpt
Output example:
(parted) mklabel gpt Warning: The existing disk label on /dev/sdd will be destroyed and all data on this disk will be lost. Do you want to continue? Yes/No? yes
Now set the default disk unit to TB, issue the next command:
(parted) unit TB
Create the new 4TB partition:
mkpart primary 0.00TB 4.00TB
Now let’s see if the system can detect the new partition by printing the new disk information, enter “print”:
(parted) print
Sample outputs:
Model: ATA TOSHIBA MD04ACA4 (scsi) Disk /dev/sdd: 4.00TB Sector size (logical/physical): 512B/4096B Partition Table: gpt Number Start End Size File system Name Flags 1 0.00TB 4.00TB 4.00TB primary
All done, now let’s format the new partition with ext4 filesystem, for that we will use the mkfs command, as you see here:
mkfs.ext4 /dev/sdd1
Output example:
[root@DHPV006 ~]# mkfs.ext4 /dev/sdd1 mke2fs 1.41.12 (17-May-2010) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=1 blocks, Stripe width=0 blocks 244195328 inodes, 976754176 blocks 48837708 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=4294967296 29809 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 20 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@DHPV006 ~]#
Add the new 4TB partition to fstab so the system will try to mount it automatically after every reboot:
nano -w /etc/fstab
Then add this line at the end:
/dev/sdd1 /mnt/home2 ext4 defaults 0 2
On this example I used “/mnt/home2” as mount point, but you can use any directory you need.
Now let’s create the directory:
mkdir /mnt/home2
Then issue this command to manually mount it by reading /etc/fstab content:
mount -a
Now let’s verify the new partition is mounted as expected by running df command, as you see down here:
df -ah | grep home2
Output example:
[root@DHPV006 ~]# df -ah | grep home2 /dev/sdd1 3.6T 68M 3.4T 1% /mnt/home2 [root@DHPV006 ~]#
If you see that then I have to say congratulations, your new big partition is ready to be used.
Further readings: