Partitioning
This guide assumes an LVM + Btrfs setup. We are not going to create SWAP on disk but are rather going to employ Zram later on.
- List disks with
fdisk -l
- Run
cfdisk /dev/nvme0n1
(it's a little bit easier to use) Make sure that/dev/nvme0n1
is actually your desired device! - Partition with the following scheme
FS Type Size Mount Point Comment vfat 1G /boot EFI System LVM (remaining) Linux LVM - Run
cfdisk /dev/sda
Make sure that/dev/sda
is 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 volume
- 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/@cache btrfs subvolume create /mnt/@pkg btrfs subvolume create /mnt/@log btrfs subvolume create /mnt/@kvmimg
- Mount Btrfs subvolumes
umount -R /mnt mount /dev/mapper/vg0-lv_root -o compress-force=zstd,subvol=@ /mnt mkdir -p /mnt/{home,var/cache,var/cache/pacman/pkg,var/log,var/lib/libvirt/images} mount /dev/mapper/vg0-lv_root -o compress-force=zstd,subvol=@home /mnt/home mount /dev/mapper/vg0-lv_root -o compress-force=zstd,subvol=@cache /mnt/var/cache mount /dev/mapper/vg0-lv_root -o compress-force=zstd,subvol=@pkg /mnt/var/cache/pacman/pkg mount /dev/mapper/vg0-lv_root -o compress-force=zstd,subvol=@log /mnt/var/log mount /dev/mapper/vg0-lv_root -o nodatacow,subvol=@kvmimg /mnt/var/lib/libvirt/images