Format an NTFS Drive in Linux

Here's how to format an NTFS Drive in Linux.

Use case

You have a new HDD or SSD, and you want to be able to share it amongst some Linux, Windows or MacOs hosts.

You might choose to format it with the NTFS filesystem. It is probably one of the better options for cross-platform support.

To make this happen, in the end, we'll want a hard drive with a partition with a filesystem mounted to our computer.

See the disks

First, plug in your new disk. To see the disks, run:

lsblk

You'll see a device like /dev/sda (HDD) or /dev/nvme0n1 (SSD). Make note of the appropriate device name.

Create a partition

If it's a new disk, it won't have a partition. If it had, lsblk would show it as /dev/sda1 or something like that.

To create a new partition, start the parted utility with sudo parted /dev/sda, then these commands:

parted
mklabel gpt
unit TB
mkpart primary 0.00TB 4.00TB

mklabel gpt will designate the layout of the partition table as GPT or "Guid Partition Table".

mkpart will create a single primary partition of 4TB. Adjust this to your disk size. Note that this works, no problem, with disks over 2TB in size (you'd have a problem in the case of FAT32, for instance).

Format the partition as NTFS

Now it's time to format the partition. There's a linux-compatible NTFS implementation called ntfs-3g. It uses FUSE, "file system in user space", to allow creating new filesystems without editing the kernel. To install:

sudo apt install ntfs-3g

To format, run:

sudo mkntfs --fast --label MyCoolNewDisk /dev/sda1

Note that we created a volume label for easy identification when it's mounted later. And we're targeting the partition we just made previously (ie, /dev/sda1).

Mount the NTFS partition

Now you want to mount the partition to your system's filesystem so that you can run file operations on it, like copy over some files. To mount:

sudo mkdir /mnt/drv
sudo mount -t ntfs /dev/sda1 /mnt/drv

Check space available

As you go, see what kind of space you have left:

df -BG

-BG prints the block sizes in gigabytes.

This is how I format NTFS drives. Do you do anything differently?