Linux Basic Partitioning
In this guide we are assuming that, we want to prepare the device /dev/nvme0n1
for Linux UEFI installation with LVM and GPT partition table. So the partitions that will be created are as follow:
/dev/nvme0n1p1
– EFI System (for:/boot/efi
),/dev/nvme0n1p2
– Linux filesystem (for:/boot
),/dev/nvme0n1p3
– Linux LVM (for:/
,/home
, etc.).
We can use fdisk
, parted
or gdisk
within the command line, or we can use gparted
and other similar tools for manipulation the partition table via the graphical user interface. Note this operation will wipe all partitions and create new partitions you need.
Partitioning with Fdisk
In this guide we will use the tool fdisk
to accomplish this task.
sudo fdisk /dev/nvme0n1
# Create a new empty GPT partition table:
Command (m for help): g
# Add a new partition:
Command (m for help): n
Partition number (1-128, default 1): 1
First sector (2048-1951473664, default 2048): [Press Enter]
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-1951473664, default 1951473664): +512M
Created a new partition 1 of type 'Linux filesystem' and of size 512 MiB.
# Add a new partition:
Command (m for help): n
Partition number (2-128, default 1): 2
First sector (1050624-1951473664, default 1050624): [Press Enter]
Last sector, +/-sectors or +/-size{K,M,G,T,P} (1050624-1951473664, default 1951473664): +488M
Created a new partition 2 of type 'Linux filesystem' and of size 488 MiB.
# Add a new partition:
Command (m for help): n
Partition number (3-128, default 1): 3
First sector (2050048-1951473664, default 2050048): [Press Enter]
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2050048-1951473664, default 1951473664): [Press Enter]
Created a new partition 3 of type 'Linux filesystem' and of size 930.54 GiB.
# Change a partition type:
Command (m for help): t
Partition number (1-3, default 3): 1
Partition type (type L to list all types): 1
Changed type of partition 'Linux filesystem' to 'EFI System'.
# Change a partition type:
Command (m for help): t
Partition number (1-3, default 3): 3
Partition type (type L to list all types): 31
Changed type of partition 'Linux filesystem' to 'Linux LVM'.
# Print the partition table:
Command (m for help): p
Disk /dev/nvme0n1: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: Samsung SSD 980 1TB
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 16384 bytes / 131072 bytes
Disklabel type: gpt
Disk identifier: E5B93AC4-141D-4174-B94D-07FCBB074D5C
Device Start End Sectors Size Type
/dev/nvme0n1p1 2048 1050623 1048576 512M EFI System
/dev/nvme0n1p2 1050624 2050047 999424 488M Linux filesystem
/dev/nvme0n1p3 2050048 1953523711 1951473664 930.5G Linux LVM
# Verify the partition table
Command (m for help): v
No errors detected.
Header version: 1.0
Using 2 out of 128 partitions.
A total of 0 free sectors is available in 0 segments (the largest is (null)).
# Write the table to the disk and exit:
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
Format the Partitions
1. Format the UEFI partition, /dev/nvme0n1p1
, as Fat32 by mkfs.vfat
.
sudo mkfs.vfat -F 32 /dev/nvme0n1p1
2. Format the BOOT partition, /dev/nvme0n1p2
, as Ext2 (or Ext4) by mkfs.ext2
(or mkfs.ext4
).
sudo mkfs.ext2 /dev/nvme0n1p2
3. Create LVM Physical volume (PV) on the largest partition, /dev/nvme0n1p2
, by pvcreate
.
sudo pvcreate /dev/nvme0n1p3
Lather when the Volume groups and Logical volumes are create they could be formatted as certain file system. For more details read the article LVM Basic Operations.
Get information about a Block device by Fdisk and Parted
sudo fdisk -l /dev/nvme0n1
Disk /dev/nvme0n1: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: Samsung SSD 980 1TB
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 16384 bytes / 131072 bytes
Disklabel type: gpt
Disk identifier: E5B93AC4-141D-4174-B94D-07FCBB074D5C
Device Start End Sectors Size Type
/dev/nvme0n1p1 2048 1050623 1048576 512M EFI System
/dev/nvme0n1p2 1050624 2050047 999424 488M Linux filesystem
/dev/nvme0n1p3 2050048 1953523711 1951473664 930.5G Linux LVM
sudo parted -l # -l, --list - lists partition layout on all block device
...
Model: Samsung SSD 980 1TB (nvme)
Disk /dev/nvme0n1: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 538MB 537MB fat32 EFI System Partition boot, esp
2 538MB 1050MB 512MB ext2
3 1050MB 1000GB 999GB lvm
References
- Linux for Devices: How to Detect the Filesystem of an Unmounted Partition on Linux
- Linux for Devices: Top 5 Disk Partitioning tools for Linux
- Ubuntu Manual Pages:
mke2fs
– create an ext2/ext3/ext4 file system - Ubuntu Manual Pages: mkfs – build a Linux filesystem [#SEE ALSO]
- Ubuntu Manual Pages: mkfs.fat – create an MS-DOS FAT filesystem
- Ask Ubuntu: How to format a USB flash drive?
- LVM Basic Operations