Jump to content

LVM: Difference between revisions

From NixOS Wiki
imported>Makefu
update disko link to nix-community
Axka (talk | contribs)
Converted type descriptions to a definition list
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
The Logical Volume Manager (LVM) provides means to dynamically organize partitions.
[https://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux) The Logical Volume Manager] (LVM) provides means to dynamically organize partitions.
 
== Basic Setup ==
== Basic Setup ==
LVM manages three types:
LVM manages three types:


* physical volumes - directly on a physical partition
; Physical volume (PV) : Space reservation consisting of a disk partition, a whole disk, a meta device, or a loopback file.
* volume groups - a group of physical volumes  
; Volume group (VG) : Group of physical volumes.
* logical 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 16: Line 17:
# creates a new logical volume named "home" with the size of 10GB (check with lvdisplay)
# creates a new logical volume named "home" with the size of 10GB (check with lvdisplay)
# makes /dev/pool/home available
# makes /dev/pool/home available
lvcreate -L 10G -n home pool
lvcreate --size 10G --name home pool
mkfs.ext4 /dev/pool/home
mkfs.ext4 /dev/pool/home
</syntaxHighlight>
</syntaxHighlight>
Line 49: 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]]

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