LVM: Difference between revisions
m Add category filesystem |
Converted type descriptions to a definition list |
||
(One intermediate revision by one other user not shown) | |||
Line 4: | Line 4: | ||
LVM manages three types: | LVM manages three types: | ||
; Physical volume (PV) : Space reservation consisting of a disk partition, a whole disk, a meta device, or a loopback file. | |||
; Volume group (VG) : Group of physical volumes. | |||
; Logical volume (LV) : Space reservation inside a volume group, which may be laid across multiple physical volumes. | |||
=== Create a logical volume === | === Create a logical volume === | ||
Line 50: | Line 50: | ||
=== Disko === | === Disko === | ||
Disko provides means to automatically generate the creation and configuration of logical volumes, see https://github.com/nix-community/disko | [[Disko]] provides means to automatically generate the creation and configuration of logical volumes, see https://github.com/nix-community/disko | ||
[[Category:Filesystem]] | [[Category:Filesystem]] |
Latest revision as of 14:22, 18 July 2025
The Logical Volume Manager (LVM) provides means to dynamically organize partitions.
Basic Setup
LVM manages three types:
- Physical volume (PV)
- Space reservation consisting of a disk partition, a whole disk, a meta device, or a loopback file.
- Volume group (VG)
- Group of physical volumes.
- Logical volume (LV)
- Space reservation inside a volume group, which may be laid across multiple physical volumes.
Create a logical volume
# formats the partion into a physical volume (check with pvdisplay)
pvcreate /dev/sda2
# creates a new volume group named pool (check with vgdisplay)
vgcreate pool /dev/sda2
# creates a new logical volume named "home" with the size of 10GB (check with lvdisplay)
# makes /dev/pool/home available
lvcreate --size 10G --name home pool
mkfs.ext4 /dev/pool/home
Use the Logical Volume
in your configuration.nix
:
fileSystems."/home" = {
device = "/dev/pool/home";
fsType = "ext4";
};
Booting with special LVM Modes
LVM provides a number of special features such as creating snapshots, raid for single Logical Volumes and much more. If you want to use these devices on bootup, the associated dm-*
kernel module must be provided in the initrd (see for example 🚩︎#33646) . This is a non-exhaustive list of features and the corresponding kernel module and other options to put into your configuration.nix
:
boot.initrd.kernelModules = [
"dm-snapshot" # when you are using snapshots
"dm-raid" # e.g. when you are configuring raid1 via: `lvconvert -m1 /dev/pool/home`
"dm-cache-default" # when using volumes set up with lvmcache
];
services.lvm.boot.thin.enable = true; # when using thin provisioning or caching
Automated Partitioning
People have created a number of tools to automate the partitioning in NixOS:
NixOps
NixOps can repartition Hetzner Physical Machines, see [NixOps Manual].
Disko
Disko provides means to automatically generate the creation and configuration of logical volumes, see https://github.com/nix-community/disko