fdisk Disk partitioning

Version util-linux 2.41.5 · source

Start here

lsblk
Find the right disk
sudo fdisk -l <disk>
Show its partitions
sudo fdisk <disk>
Open interactive editor
g
New GPT table (in fdisk)
n
Add a partition (in fdisk)
w
Write and exit (in fdisk)
sudo mkfs.ext4 <part>
Format the partition
sudo mount <part> <dir>
Use it

Concepts

  1. Partition table fdisk / sfdisk
  2. Partition /dev/sdb1
  3. Filesystem ext4, xfs, swap
  4. Mount point /mnt/data

Inspect

lsblk
Tree of disks and partitions
lsblk -f
Add filesystem type, label, UUID
sudo fdisk -l
List partition tables of all disks
sudo fdisk -l <disk>
List one disk's table
lsblk -o NAME,SIZE,UUID
Pick your own columns
sudo blkid
UUIDs and filesystem types
sudo sfdisk -F <disk>
List free unpartitioned areas

Interactive fdisk

sudo fdisk <disk>
Edit a disk's partition table
m
Show the command menu
p
Print the table as edited so far
g
New empty GPT table
o
New empty MBR (DOS) table
n
Add a partition
d
Delete a partition
t
Change partition type
w
Write changes and exit
q
Quit without saving
v
Verify the table
i
Info about one partition
F
List free unpartitioned space
l
List known partition types
a
Toggle bootable flag (MBR only)
I / O
Load / dump layout as sfdisk script

Creating a partition

n Enter Enter +<size>
Next number, first free sector, given size
Press Enter to accept defaults. Sizes take K, M, G, T suffixes, e.g. +20G.
n Enter Enter Enter
Use all remaining space
t <n> linux
Linux filesystem type (alias)
Aliases exist in fdisk 2.36 and later; otherwise pick a number from L.
t <n> swap
Linux swap type
t <n> lvm
Linux LVM type
t <n> uefi
EFI System partition type

Apply and format

sudo partprobe <disk>
Tell the kernel about new partitions
Part of the parted package; not installed everywhere.
sudo mkfs.ext4 <part>
Format as ext4
sudo mkfs.xfs <part>
Format as XFS
sudo mkfs.vfat -F 32 <part>
Format as FAT32 (EFI, USB)
sudo mkswap <part>
Prepare swap space
sudo swapon <part>
Enable swap now
sudo mkfs.ext4 -L <label> <part>
Format with a label
sudo mount <part> <dir>
Mount it
sudo blkid <part>
UUID for /etc/fstab

sfdisk (scripting)

sudo sfdisk -d <disk> > <file>
Dump the table to a file
sudo sfdisk <disk> < <file>
Restore or apply a layout
Overwrites the table without asking when stdin is a file.
sudo sfdisk --delete <disk> <n>
Delete partition n
sudo sfdisk -b <disk>
Back up table sectors first

Safety and cleanup

sudo wipefs <disk>
List signatures (no changes)
sudo wipefs -a <disk>
Erase all signatures
Destructive: the disk stops looking like a disk with data.
sudo umount <part>
Unmount before editing

Recipes

New GPT disk with one ext4 partition
lsblksudo fdisk /dev/sdb      # g, n, Enter x3, wsudo mkfs.ext4 /dev/sdb1sudo mount /dev/sdb1 /mnt
Clone a layout to another disk
sudo sfdisk -d /dev/sda > sda.dump# review sda.dump, then:sudo sfdisk -n /dev/sdb < sda.dumpsudo sfdisk /dev/sdb < sda.dump
Scripted GPT layout, no prompts
sudo sfdisk /dev/sdb <<EOFlabel: gpt,512M,U,,LEOF
Partition for LVM
sudo fdisk /dev/sdb      # g, n, t, lvm, wsudo pvcreate /dev/sdb1sudo vgcreate vg0 /dev/sdb1