Category Archives: LVM

Mount LVM guest schijven op een hypervisor met LVM

Proxmox maakt gebruikt van LVM, als je dus een guest aanmaakt krijgt deze netjes zijn eigen logical volume.
Als je vervolgens een OS installeert en je geeft aan LVM te gebruiken, heb je dus LVM binnen LVM.

Als je vervolgens partities van je guest wil mounten op je hypervisor om bijvoorbeeld een fsck uit te voeren, doe je het volgende:

root@hypervisor:~# lvdisplay 

--- Logical volume ---
  LV Path                /dev/pve/vm-100-disk-1
  LV Name                vm-100-disk-1
  VG Name                pve
  LV UUID                b6iKwA-iE9n-rfI4-bFU3-Kyrl-wixM-1BZb4e
  LV Write Access        read/write
  LV Creation host, time hypervisor, 2017-05-15 13:00:19 +0200
  LV Pool name           data
  LV Status              available
  # open                 1
  LV Size                60.00 GiB
  Mapped size            90.73%
  Current LE             15360
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           251:6

Het gaat dus om: /dev/pve/vm-100-disk-1

root@hypervisor:~# ls -alh /dev/pve/vm-100-disk-1 
lrwxrwxrwx 1 root root 7 Jun 16 11:43 /dev/pve/vm-100-disk-1 -> ../dm-6
root@hypervisor:~# fdisk -l /dev/dm-6

Disk /dev/dm-6: 60 GiB, 64424509440 bytes, 125829120 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 131072 bytes / 262144 bytes
Disklabel type: dos
Disk identifier: 0x134f441b

Device      Boot   Start       End   Sectors  Size Id Type
/dev/dm-6p1 *       2048    999423    997376  487M 83 Linux
/dev/dm-6p2      1001470 125827071 124825602 59.5G  5 Extended
/dev/dm-6p5      1001472 125827071 124825600 59.5G 8e Linux LVM

Je ziet dat er 3 partities zijn, deze kun je mappen met kpartx:

root@hypervisor:~# kpartx -av /dev/mapper/pve-vm--100--disk--1 
add map pve-vm--100--disk--1p1 (251:10): 0 997376 linear /dev/mapper/pve-vm--100--disk--1 2048
add map pve-vm--100--disk--1p2 (251:11): 0 2 linear /dev/mapper/pve-vm--100--disk--1 1001470
add map pve-vm--100--disk--1p5 : 0 124825600 linear /dev/mapper/pve-vm--100--disk--1 1001472

Kijk met lvscan welke logical volumes er nu zijn:

root@hypervisor:/dev/mapper# lvscan
  inactive          '/dev/guest-vg/root' [55.51 GiB] inherit
  inactive          '/dev/guest-vg/swap_1' [4.00 GiB] inherit

Activeer de volume group:

root@hyervisor:/dev/mapper# vgchange -a y guest-vg
  2 logical volume(s) in volume group "guest-vg" now active
root@hypervisor:/dev/mapper# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/guest-vg/root
  LV Name                root
  VG Name                guest-vg
  LV UUID                d0kREf-4oEy-HkP1-0eif-EJGw-3wOr-aeDBJG
  LV Write Access        read/write
  LV Creation host, time guest, 2017-05-15 13:08:25 +0200
  LV Status              available
  # open                 0
  LV Size                55.51 GiB
  Current LE             14211
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           251:13

Nu kun je doen wat je wil, in mijn geval een e2fsck :)

root@hypervisor:~# e2fsck /dev/guest-vg/root
e2fsck 1.42.12 (29-Aug-2014)
/dev/guest-vg/root: recovering journal
/dev/guest-vg/root contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Free blocks count wrong (13275876, counted=9402797).
Fix<y>? yes
Free inodes count wrong (3522133, counted=1037469).
Fix<y>? yes

/dev/guest-vg/root: ***** FILE SYSTEM WAS MODIFIED *****
/dev/guest-vg/root: 2600851/3638320 files (0.0% non-contiguous), 5149267/14552064 blocks

Als je klaar bent maak je de volume group weer inactief:

root@hypervisor:~# vgchange -a n guest-vg

En wis je de mapping weer:

root@hypervisor:~# kpartx -dv /dev/mapper/pve-vm--100--disk--1 
del devmap : pve-vm--100--disk--1p5
del devmap : pve-vm--100--disk--1p2
del devmap : pve-vm--100--disk--1p1