Storage

Partition disks, create filesystems, mount drives, and manage storage on Linux.

Contents

  1. Check Disk Information
  2. Partition a Disk
  3. Create a Filesystem
  4. Mount and Unmount
  5. Persistent Mounts with /etc/fstab
  6. LVM — Logical Volume Manager

Check Disk Information

# List all disks and partitions
lsblk

# Detailed disk info
sudo fdisk -l

# Disk usage (human-readable)
df -h

# Directory size
du -sh /var/www/
du -sh /* 2>/dev/null | sort -rh | head -20

Partition a Disk

# Use fdisk (MBR/DOS)
sudo fdisk /dev/sdb

# Use gdisk (GPT — recommended for disks > 2TB)
sudo gdisk /dev/sdb

# Or use parted
sudo parted /dev/sdb mklabel gpt
sudo parted /dev/sdb mkpart primary ext4 0% 100%

Create a Filesystem

# ext4 (most common for Linux data drives)
sudo mkfs.ext4 /dev/sdb1

# xfs (preferred for large files)
sudo mkfs.xfs /dev/sdb1

# Format for swap
sudo mkswap /dev/sdb2
sudo swapon /dev/sdb2

Mount and Unmount

# Mount a partition
sudo mkdir -p /mnt/data
sudo mount /dev/sdb1 /mnt/data

# Unmount
sudo umount /mnt/data

# List mounted filesystems
mount | grep /dev/sd

Persistent Mounts with /etc/fstab

Use UUID instead of device names to prevent mount failures after a reboot.

# Get UUID of a partition
sudo blkid /dev/sdb1

# Add to /etc/fstab
UUID=a1b2c3d4-xxxx-xxxx-xxxx-xxxxxxxxxxxx  /mnt/data  ext4  defaults,noatime  0  2
# Test fstab entries without rebooting
sudo mount -a

LVM — Logical Volume Manager

# Create physical volume
sudo pvcreate /dev/sdb

# Create volume group
sudo vgcreate data_vg /dev/sdb

# Create logical volume (50GB)
sudo lvcreate -L 50G -n data_lv data_vg

# Format and mount
sudo mkfs.ext4 /dev/data_vg/data_lv
sudo mount /dev/data_vg/data_lv /mnt/data

# Extend a logical volume
sudo lvextend -L +20G /dev/data_vg/data_lv
sudo resize2fs /dev/data_vg/data_lv