How To Format Linux

How To Format Linux

Reading time1 min
#Linux#Tech#OpenSource#DiskManagement#Filesystem#Partitioning

Mastering Linux Disk Formatting: Step-by-Step for Reliable System Setups

Formatting disks in Linux isn’t a matter of running a one-liner from a tutorial—it’s about precise control over your storage layer. Whether prepping an NVMe drive for PostgreSQL 16 or salvaging a decades-old SATA volume, the right workflow prevents silent data loss, wasted capacity, or avoidable downtime. A look at any systemd journal after a botched format confirms: shortcuts are dangerous.


Why Filesystem Selection—and Clean Formatting—Matter

Filesystem selection isn’t arbitrary. Consider a high-throughput logging server. You'll max out faster with ext4's default 16TB limit versus XFS's theoretical 500TB. Or take Btrfs—attractive for snapshots/storage pools, but unfinished in terms of RAID 5/6 support as of kernel 6.8 (check btrfs device stats for known quirks). The format operation sets the stage for these trade-offs.


1. Audit Current Disks and Partitions

Misidentifying a target device leads to unrecoverable data loss—trivial but common. Always confirm disk state first. Use:

lsblk -fio NAME,SIZE,TYPE,MOUNTPOINT,LABEL,UUID

Typical output:

NAME     SIZE TYPE MOUNTPOINT LABEL        UUID
sda      1.8T disk                       
├─sda1   512M part /boot      BOOT         9df64b6f-...
├─sda2   1.7T part /data      DATA         e3408b74-...
nvme0n1  477G disk                       
└─nvme0n1p1 477G part /var/lib/postgresql PGDATA       d4af21ae-...

Side note: NVMe devices use different naming (nvmeXnY/pZ). blkid gives another source of truth for device details.


2. Unmount Target Filesystem

Trying to format /dev/sda2 when it's mounted results in an error like:

mke2fs: Device is busy while trying to open /dev/sda2

Always check mounts:

findmnt | grep sda2

If mounted, unmount:

sudo umount /dev/sda2

If it’s / or any critical mount, operate from a live system (e.g., Ubuntu 22.04 LTS live USB). Attempting an in-place format will either fail or break the active OS.


3. Partitioning (Optional, but Often Needed)

Editing partitions? Use the right tool for the table type: fdisk for MBR, gdisk or parted for GPT.

To wipe and repurpose an entire device:

sudo parted /dev/sdb
(parted) mklabel gpt
(parted) mkpart primary ext4 1MiB 100%
(parted) quit

For fine-tuning alignment (common with SSDs), specify sector boundaries explicitly. Gotcha: Some tools default to non-optimal alignments; verify with fdisk -l.


4. Selecting the Filesystem—A Comparison

FilesystemIdeal Use CaseCaveats / Considerations
ext4General-purpose, wide compatibilityMax file size ~16TB (with 4KB blocks), great default
XFSLarge files, database, parallel writesNot ideal for small files, warning: xfs_repair is slow
BtrfsSnapshots, checksumming, subvolumesRAID5/6 not prod-ready; unstable after power failures
exFATCross-OS, external mediaNo UNIX permissions; avoid for system partitions

Choose with intent. For instance, mounting 'shared' exFAT partitions between Windows and Linux? Acceptable for USB sticks; hazardous for /home.


5. Formatting the Partition

Once ready—double-check you have the correct device—run the appropriate command:

sudo mkfs.ext4 -L DATA /dev/sda2

or for XFS (with sector alignment on a 4096b SSD):

sudo mkfs.xfs -f -s size=4096 -L DATA /dev/sdb1

For exFAT, ensure exfatprogs (v1.2.2+ recommended on modern distros):

sudo mkfs.exfat -n SHARED /dev/sdc1

Practical detail: Some USB flash drives require explicit flushes due to write cache; use sync after formatting.


6. Label and Identify Devices

Labelling (with -L) saves trouble downstream. To set or update a label post-format:

sudo e2label /dev/sda2 exports
sudo xfs_admin -L archive /dev/sdb1

Use lsblk -fo NAME,LABEL,UUID to confirm.

For persistent mounting, prefer UUIDs:

blkid /dev/sda2

7. Mount, Test, and Confirm

Create mount point:

sudo mkdir -p /mnt/exports
sudo mount /dev/sda2 /mnt/exports

Validate:

df -hT | grep sda2
ls -l /mnt/exports/

Quick integrity check:

sudo fsck.ext4 -n /dev/sda2

Failures here often trace back to mismatched UUIDs in /etc/fstab or SELinux context errors. Diagnose with dmesg | tail and review mount options (noatime, data=journal, etc.) for perf/security.


8. Persistent Mounts with UUID

Edit /etc/fstab—but take care. Configuration error here can cause unbootable systems. Use:

UUID=e3408b74-... /mnt/exports ext4 defaults,noatime 0 2

Verify new entries before reboot:

sudo mount -a

Gotcha: If mount -a throws wrong fs type, bad option, bad superblock, revisit UUIDs and filesystem types.


Non-Obvious Tips

  • For servers with udev-volatile naming (e.g., multi-NIC or multi-HBA SAS), always use UUIDs, never /dev/sdX.
  • Some modern SSDs (Samsung 980 Pro, WD SN850, etc.) benefit from discard mount option for TRIM support.
  • Formatting doesn’t fully erase data; use shred or blkdiscard where security is critical.

Summary

Disk formatting under Linux is routine, but never trivial. Precise identification, correct filesystem, alignment for underlying storage, and explicit labels/UUIDs are prerequisites for stability in modern environments. Revisit these steps during routine maintenance—filesystem health degrades, mount logic evolves, and hardware gets replaced.

Questions about encryption layers (e.g., LUKS2 workflows) or resizing live filesystems (e.g., online xfs_growfs)? Let me know—these require their own treatment.


Known issue: Btrfs RAID5/6 remains experimental as of kernel 6.8—verify with btrfs balance status before trusting critical data.