fdisk-parted
Installation
SKILL.md
Identity
| Property | Value |
|---|---|
| Binaries | fdisk, parted, gdisk |
| Config | No persistent config — invoked directly or interactively |
| Logs | No persistent logs — changes written directly to disk |
| Type | CLI tools |
| Install | apt install fdisk parted gdisk / dnf install util-linux parted gdisk |
Tool Selection Guide
| Use case | Tool |
|---|---|
| MBR partitioning (legacy BIOS, < 2 TB, < 4 partitions common) | fdisk |
| GPT partitioning with advanced features | gdisk |
| Non-interactive scripting, LVM/RAID prep | parted |
| Converting MBR to GPT without data loss | gdisk (hybrid) |
| Resize a partition | parted resizepart |
| Align-check partitions | parted align-check |
Key Operations
| Task | Command |
|---|---|
| List all partitions on all disks | sudo fdisk -l |
| List partitions on a specific disk | sudo fdisk -l /dev/sdb |
| Interactive MBR partition editor | sudo fdisk /dev/sdb |
| Interactive GPT partition editor | sudo gdisk /dev/sdb |
| parted interactive session | sudo parted /dev/sdb |
| parted: print partition table | sudo parted /dev/sdb print |
| parted: create GPT table | sudo parted /dev/sdb mklabel gpt |
| parted: create MBR table | sudo parted /dev/sdb mklabel msdos |
| parted: create a partition (non-interactive) | sudo parted /dev/sdb mkpart primary ext4 1MiB 100% |
| parted: check partition alignment | sudo parted /dev/sdb align-check optimal 1 |
| parted: resize a partition | sudo parted /dev/sdb resizepart 1 200GiB |
| Inform kernel of table changes | sudo partprobe /dev/sdb |
| Resize ext4 filesystem after partition grow | sudo resize2fs /dev/sdb1 |
| Grow XFS filesystem to fill partition | sudo xfs_growfs /mountpoint |
fdisk Interactive Commands
| Key | Action |
|---|---|
p |
Print current partition table |
n |
New partition |
d |
Delete partition |
t |
Change partition type |
g |
Create new GPT table |
o |
Create new MBR table |
w |
Write changes and exit |
q |
Quit without saving |
m |
Help / list commands |
Common Failures
| Symptom | Cause | Fix |
|---|---|---|
| fdisk creates MBR partition table by default | fdisk defaults to MBR (o) unless told otherwise |
Use g in fdisk to create GPT, or use gdisk/parted for GPT-first workflow |
| Partition changes not visible after fdisk exits | Kernel has the old table cached | sudo partprobe /dev/sdX; if device is busy, reboot |
| "WARNING: Re-reading the partition table failed" | The disk is in use (mounted or part of active LVM/RAID) | Unmount all partitions; stop RAID/LVM; then partprobe or reboot |
| Partition resized but filesystem still the same size | parted resizes the partition block device only | Grow ext4: resize2fs /dev/sdX1; XFS: xfs_growfs /mountpoint; btrfs: btrfs filesystem resize max /mountpoint |
| "Error: The backup GPT table is not at the end of the disk" | GPT backup header is in wrong location (disk was resized/replaced) | sudo gdisk /dev/sdX then w and accept fix, or sudo sgdisk -e /dev/sdX |
| Partitions misaligned on SSD | Start offset not on 1 MiB boundary | Use 1MiB as the start offset in parted; verify with parted /dev/sdX align-check optimal N |
| Disk larger than 2 TiB not partitionable with fdisk (MBR) | MBR cannot address beyond 2 TiB | Use GPT: sudo gdisk /dev/sdX or sudo parted /dev/sdX mklabel gpt |
Pain Points
- fdisk defaults to MBR: running
fdisk /dev/sdXcreates an MBR table unless you explicitly pressgfor GPT. For any new disk larger than 2 TB or where UEFI boot is needed, usegdiskorpartedwithmklabel gpt. - Changes only take effect after
w: interactive fdisk/gdisk sessions are staged in memory. Pressingqdiscards all changes. Pressingwwrites them immediately and irreversibly. On a live disk with data,won a wrong table wipes the partition structure. - Partition resize does not resize the filesystem:
parted resizepartorfdiskonly changes the partition boundary in the partition table. The filesystem inside must be grown separately. For ext4 useresize2fs(online growth supported); for XFS usexfs_growfs(online); for btrfs usebtrfs filesystem resize max; for shrinking ext4, unmount first, rune2fsck -f, thenresize2fs, thenresizepart. - 4K alignment matters for SSDs: starting partitions on 1 MiB boundaries ensures alignment to both 512-byte and 4096-byte physical sector boundaries. Misaligned partitions cause extra read-modify-write cycles on SSDs. Always specify start offsets in MiB when using parted non-interactively.
- Never partition a mounted disk: partitioning a disk with active mounts risks data corruption. Unmount all partitions and deactivate LVM/RAID before editing the partition table.
partprobeis not always sufficient: if any partition on the disk is mounted or held by LVM/RAID, the kernel will refuse to re-read the table. A reboot is the safe fallback.
References
See references/ for:
cheatsheet.md— 10 task-organized patterns for common partitioning workflowsdocs.md— man pages and upstream documentation links
Related skills