Partitioning (LVM + Cache)
NOTE: This partition scheme is tailored towards a desktop computer setup with enough RAM and no SWAP (and therefore no hibernate/suspend-to-disk support).
CAUTION: This setup does NOT utilize LUKS disk encryption.
LVM cache combines the benefits of a fast mass storage device (e.g. SSD) with a slow mass storage device (HDD), utilizing the former as a read/write cache for the latter. This allows the system to manage blocks of data in a way such that often used blocks are kept on the fast cache device, making the whole system a lot more responsive. Over time the cache device fills up with frequently accessed data and the system accesses the cache device more often than the origin device (the HDD). This can be used to cost-effectively speed up an inexpensive large storage device (think Apple Fusion Drive).
This guide assumes anthe LVM + Btrfs setup. We are not going to create SWAP on disk but are rather going to employ Zram later on.following:
List disks withfdisk -lRuncfdisk /dev/nvme0n1(it's a little bit easier to use)Make sure that/dev/nvme0n1
isactuallythe primary disk (cache device)/dev/sda
is the secondary disk (origin device)-
List available disks
fdisk -l
-
Start partitionaing tool for primary disk (
cfdisk
is a little easier to use as it has a nice TUI)WARNING: Make sure to select your actually desired device!
cfdisk /dev/nvme0n1
-
Partition with the following scheme
FS Type Size Mount Point Comment vfat 1G /boot EFI System LVM (remaining) Linux LVM RunStart partioning tool for secondary disk
WARNING: Make sure to select your actually desired device!
cfdisk /dev/sda
Make sure that/dev/sdais actually your desired device!-
Partition with the following scheme
FS Type Size Mount Point Comment LVM (all) Linux LVM - Create LVM physical volumes
pvcreate /dev/nvme0n1p2 # SSD pvcreate /dev/sda1 # HDD
- Create LVM volume group
vgcreate VOL_GROUP_NAME /dev/nvme0n1p2 /dev/sda1
- Create LVM logical volumes
lvcreate -l 100%FREE -n lv_root vg0 /dev/sda1 lvcreate --type cache-pool -n lv_cache -l 100%FREE vg0 /dev/nvme0n1p2 # Link cache devices lvconvert --type cache --cachepool vg0/lv_cache vg0/lv_root
- Create partitions
mkfs.fat -F 32 /dev/nvme0n1p1 # EFI System Partition mkfs.btrfs /dev/mapper/vg0-lv_root # Btrfs root
volumefile system - Create Btrfs subvolumes
# First, mount root file system mount /dev/mapper/vg0-lv_root /mnt # Create subvolumes btrfs subvolume create /mnt/@ btrfs subvolume create /mnt/@home
btrfs subvolume create /mnt/@log btrfs subvolume create /mnt/@pkg - Mount partitions
# Unmount the root file system umount -R /mnt # Mount the @ subvolume mount /dev/mapper/vg0-lv_root -o noatime,compress-force=zstd,space_cache=v2,subvol=@ /mnt # Create mountpoints mkdir -p /mnt/{boot,
home,var/log,var/cache/pacman/pkg}home} # Mount the remaining partitions/subvolumes mount /dev/nvme0n1p1 /mnt/boot mount /dev/mapper/vg0-lv_root -o noatime,compress-force=zstd,space_cache=v2,subvol=@home /mnt/homemount /dev/mapper/vg0-lv_root -o noatime,compress-force=zstd,space_cache=v2,subvol=@log /mnt/var/log mount /dev/mapper/vg0-lv_root -o noatime,compress-force=zstd,space_cache=v2,subvol=@pkg /mnt/var/cache/pacman/pkg