Монтирование LVM-based томов (LVM-in-LVM)
Задача:
добраться до данных в этих разделах с родительской машины.

Дано:
виртуальная машина на LVM-разделе /dev/mapper/vol-centos1
внутри неё имеются разделы /boot, / и swap, причем / и swap на LVM

для начала посмотрим что из себя представляет /dev/mapper/vol-centos1:
# kpartx -l /dev/mapper/vol-centos1
vol-centos1p1: 0 1024000 /dev/loop0 2048
vol-centos1p2: 0 15751168 /dev/loop0 1026048
и замяпим разделы:
# kpartx -a /dev/mapper/vol-centos1
после этого в /dev/mapper у нас появятся два раздела
vol-centos1p1 vol-centos1p2

Первый раздел vol-centos1p1 (/boot) нас не интересует, мы можем его хоть сейчас примонтировать. Нас интересует второй раздел vol-centos1p2, в котором находятся / и swap.
просканируем и увидем LVM-тома:
# lvm pvscan
PV /dev/mapper/vol-centos1p2 VG VolGroup lvm2 [7.51 GiB / 0 free]
Total: 1 [7.51 GiB] / in use: 1 [7.51 GiB] / in no VG: 0 [0 ]

теперь нам необходимо активировать LVM-тома, что бы добраться до них, делаем:
# lvm vgchange -a y
2 logical volume(s) in volume group «VolGroup» now active

в /dev/mapper появятся еще два раздела
vol-centos1p1 vol-centos1p2 VolGroup-lv_root VolGroup-lv_swap

вот теперь мы спокойно можем примонтировать раздел VolGroup-lv_root и удобно работать с ним:
# mount /dev/mapper/VolGroup-lv_root /mnt

После работы, надо все вернуть на круги своя.
отмонтируем # umount /dev/mapper/VolGroup-lv_root
деактивируем LVM-тома # lvm vgchange -a n VolGroup
удаляем маппинг # kpartx -d /dev/mapper/vol-centos1

Монтирование LVM томов (CentOS)
root@debian:~# fdisk -l /dev/sda
Disk /dev/sda: 6 GiB, 6442450944 bytes, 12582912 sectors
Disk model: QEMU HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x000c434c

Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 12582911 10483712 5G 8e Linux LVM

диск обычный
root@debian:~# parted /dev/sda1 print
Model: Unknown (unknown)
Disk /dev/sda1: 1074MB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Disk Flags:

Number Start End Size File system Flags
1 0,00B 1074MB 1074MB xfs

диск с LVM
root@debian:~# parted /dev/sda2 print
Error: /dev/sda2: unrecognised disk label
Model: Unknown (unknown)
Disk /dev/sda2: 5368MB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:

Если вы попытаетесь смонтировать LVM так же, как вы это делаете с другими стандартными разделами Linux, у вас ничего не получится.

root@debian:~# mount /dev/sda2 /mnt
mount: /mnt: unknown filesystem type 'LVM2_member'.

Чтобы смонтировать раздел, сначала определите группу томов, содержащуюся в /dev/sda2:

root@debian:~# lvm pvscan
PV /dev/sda2 VG centos lvm2 [<5,00 GiB / 0 free]
Total: 1 [<5,00 GiB] / in use: 1 [<5,00 GiB] / in no VG: 0 [0 ]

root@debian:~# vgscan
Reading volume groups from cache.
Found volume group "centos" using metadata type lvm2

root@debian:~# lvscan
inactive '/dev/centos/swap' [616,00 MiB] inherit
inactive '/dev/centos/root' [4,39 GiB] inherit

root@debian:~# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <5,00g 0

root@debian:~# lvdisplay /dev/centos
--- Logical volume ---
LV Path /dev/centos/swap
LV Name swap
VG Name centos
LV UUID wjDWlO-4ipJ-8w3g-xx7v-AvaS-lk8s-duwIiG
LV Write Access read/write
LV Creation host, time localhost, 2018-08-12 11:47:26 +0000
LV Status available
# open 0
LV Size 616,00 MiB
Current LE 154
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:0

--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID c2DUKp-zXmb-ecIO-R26b-m477-3NXc-6dPwz8
LV Write Access read/write
LV Creation host, time localhost, 2018-08-12 11:47:26 +0000
LV Status available
# open 0
LV Size 4,39 GiB
Current LE 1125
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:1


необходимо активировать LVM-тома, что бы добраться до них
root@debian:~# lvm vgchange -a y
2 logical volume(s) in volume group "centos" now active

проверяю
root@debian:~# ls /dev/mapper/
centos-root centos-swap control

swap мне не нужен, монтирую /dev/centos/root
root@debian:~# mount /dev/centos/root /mnt

после работы нужно не забыть отмонтировать
root@debian:~# umount /dev/centos/root

деактивируем LVM-тома
root@debian:~# lvm vgchange -a n centos
0 logical volume(s) in volume group "centos" now active
root@debian:~# ls /dev/mapper/
control


Изменение размера дисков LVM
http://xgu.ru/wiki/LVM
https://github.com/storaged-project/blivet-gui/wiki
Уменьшение виртуального диска с LVM
Как использовать LVM для управления устройствами хранения в Ubuntu 18.04
Как я могу изменить размер раздела LVM? (то есть: физический объем)
Как уменьшить корневой раздел XFS на LVM
Linux: LVM — уменьшить home, увеличить root
Расширение диска на Linux (LVM, классическая разметка)
Повесть о Linux и LVM (Logical Volume Manager).
КАК УВЕЛИЧИТЬ LVM РАЗДЕЛ В CENTOS 7
Как увеличить LVM раздел в CentOS 7
Расширение LVM диска (без изменения его структуры)
Изменение размера дисков LVM


Уменьшение размера раздела диска в Linux
Статья содержит информацию о способе уменьшения размера раздела диска, созданного посредством системы управления томами LVM и отформатированного в файловую систему ext4
Замечание: строго говоря, во всем запускаемых далее утилитах используется одна и та же единица измерения — «мебибайт» (за исключением «parted», использующей «мегабайт»), которую, тем не менее, мы по привычке будем называть «мегабайт»

  • скачиваем загрузочный диск Gparted, выполняем с него загрузку системы и запускаем утилиту «Terminal»

  • определяем имя интересующего нас логического раздела LVM (параметр «LV Path»)

  • sudo lvdisplay

  • подключаем раздел

  • sudo mount /dev/some-vg/root /mnt

  • просматриваем объем занятого пространства файловой системы раздела

  • sudo df -h

  • отключаем раздел

  • sudo umount /dev/some-vg/root

  • проверяем файловую систему

  • sudo e2fsck -vf /dev/some-vg/root

    Замечание: v — вывод подробных сообщений, f — выполнить проверку, даже если файловая система помечена, как не содержащая ошибок

  • уменьшаем размер файловой системы
    sudo resize2fs -p /dev/some-vg/root 3000M

    Замечание: p — отображать прогресс выполнения каждого этапа

  • уменьшаем размер раздела; в качестве нового размера указываем РАЗМЕР_ФАЙЛОВОЙ_СИСТЕМЫ + 1

  • lvreduce /dev/some-vg/root —size 3001M

  • проверяем, что в процессе уменьшения размера раздела никакие данные не были повреждены; для этого пробуем увеличить размер файловой системы до максимально возможного, в результате чего он должен вырасти на 1 МБ

  • sudo resize2fs /dev/some-vg/root

  • определяем имя интересующего нас физического раздела LVM (параметр «PV Name»)

  • sudo pvdisplay

  • выводим информацию о распределении выделенных физических областей по разделу

  • sudo pvs —verbose —segments /dev/sda5

  • перемещаем выделенные физические области так, чтобы между ними не было свободного пространства

  • sudo pvmove —alloc anywhere /dev/sda5:2370-2497

  • уменьшаем размер раздела; в качестве нового размера указываем ОБЪЕМ_ЗАНЯТЫХ_ОБЛАСТЕЙ (параметр «Allocated PE») * РАЗМЕР_ОБЛАСТИ (параметр «PE Size») + 1

  • sudo pvresize /dev/sda5 —setphysicalvolumesize 3517M

    Замечание: если указать слишком маленькое значение, ничего страшного не произойдет — утилита просто сообщит, что новый размер меньше объема занятого пространства

  • запускаем parted для интересующего нас диска

  • sudo parted /dev/sda

  • устанавливаем в качестве единиц измерения по умолчанию — мебибайты

  • unit MiB

  • просматриваем таблицу разделов

  • print free

  • уменьшаем размер логического раздела, при этом конец раздела вычисляем так: НАЧАЛО_РАСШИРЕННОГО_РАЗДЕЛА + ОБЪЕМ_ЗАНЯТЫХ_ОБЛАСТЕЙ * РАЗМЕР_ОБЛАСТИ + ОБЪЕМ_НЕИСПОЛЬЗУЕМОГО_ПРОСТРАНСТВА (параметр «PV Size» после знака «/») + 2

  • resizepart 5 3764MiB

    Замечание: перед выполнением операции нужно повторно просмотреть объем неиспользуемого пространства физического раздела LVM

  • проверяем, что в процессе уменьшения размера раздела никакие данные не были повреждены; для этого пробуем увеличить размер физического раздела LVM до максимально возможного, в результате чего объем неиспользуемого пространства должен вырасти на 1МБ

  • sudo pvresize /dev/sda5

  • уменьшаем размер расширенного раздела до размера логического раздела

  • resizepart 2 3764MiB


Уменьшение размера LVM раздела в Centos

Решение

Перед изменением размера раздела его необходимо отмонтировать, но
учитывая что редактировать нам надо корневой раздел, лучше загрузится с
LiveCD/LiveDVD или с установочного диска в режиме rescue (для этого выбрать соответствующий пункт меню загрузки с диска).

При работе с rescue-диска, к командам LVM надо впереди добавять lvm, либо выполнять их из встроенного интерпретатора lvm:


# lvm pvs
либо
# lvm
lvm> pvs

Проверяем, определился или нет, системой наша LVM группа.


# pvs
  PV         VG         Fmt  Attr PSize   PFree  
  /dev/sda1  VolGroup   lvm2 a-   100,00g      0

# vgs
  VG         #PV #LV #SN Attr   VSize   VFree  
  VolGroup   1   2   0   wz--n- 100,00g      0

# lvs
  LV         VG         Attr   LSize   Origin Snap%  Move Log Copy%  Convert
  lv_root    VolGroup   -wi-a-  98,00g
  lv_swap    VolGroup   -wi-a-   2,00g

lvreduce урезает размер LVM раздела. Работает она
следующим образом, параметр -L указывает на изменение размера раздела,
здесь же есть 2 варианта: указание размера и относительное значение, со
знаком + или -. Например, -L 83G урежет размер до 83G(то бишь lvm_root станет 83Gb вместо 98Gb), соответственно -L -15G или -L +15G уменьшит или увеличит размер на указанный (lvm_root станет 98G минус 15G или 98G плюс 15G).

Итак, нам надо уменьшить размер раздела следующей командой:


# lvreduce -r -L -15G /dev/Volgroup/lv_root



Наличие опции -r указывает, что надо также изменить размер файловой системы, без неё данные будут утеряны.


Успешность выполнения команды lvreduce проверяется просмотром свободного места в VolGroup.


# vgs

Свободного места должно быть 83G.




Создаём новый раздел для директории home


 lvcreate -L 83GB -n lv_home VolGroup 

и файловую систему на нём.


 mkfs.ext4 -L home /dev/VolGroup/lvm_home

Добавляем запись о разделе в файл /etc/fstab


 /dev/VolGroup/lvm_home  /home   etx4 defaults 1 2 



Перенести всю информацию из директории /home относительно
раздела / (корневого раздела) в /home вновь созданого раздела (он будет
пустой, если не считать системной директории lost+found)



Для этого:


  • создаём папки к которым будут смотрированы разделы

mkdir /mnt/{root,home}

  • монтируем

mount -t ext4 /dev/VolGroup/lv_root /mnt/root
mount -t ext4 /dev/VolGroup/lv_home /mnt/home

  • перемещаем информацию

mv -v /mnt/root/home /mnt/home

загружаем нашу ОС и проверяем логические разделы LVM


lvdisplay
  --- Logical volume ---
  LV Name                /dev/VolGroup/lv_root
  VG Name                VolGroup
       .....
  LV Size                15,00 GiB
       .....
   
  --- Logical volume ---
  LV Name                /dev/VolGroup/lv_home
  VG Name                VolGroup
       .....
  LV Size                83,00 GiB
       .....
   
  --- Logical volume ---
  LV Name                /dev/VolGroup/lv_swap
  VG Name                VolGroup
       .....
  LV Size                2,00 GiB









отремонтировать диск LVM
Как отремонтировать диск LVM с помощью fsck

1. Проверка и исправление диска LVM без шифрования с помощью fdisk
Для проверки LVM используйте следующие шаги.
Для начала проверяем разметку дисков с lsblk:

lsblk

Пример вывода:
NAME                 MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                    8:0    0    20G  0 disk  
└─sda1                 8:1    0    20G  0 part  
  └─xubuntu--vg-root 253:0    0    19G  0 lvm   / 
sr0                   11:0    1  1024M  0 rom

Как можно увидеть, LVM назван xubuntu--vg-root, но мы не можем запустить fsck на это имя, так как команда не найдёт его. Нам нужно получить полное имя, для этого нужно запустить команду lvm lvscan для получения LV имени с которым мы можем запустить fsck на LVM.

Следующая команда должна запускаться с повышенными правами (с sudo или как root):

lvscan

Пример вывода:
inactive          '/dev/xubuntu-vg/root' [<19.04 GiB] inherit
inactive          '/dev/xubuntu-vg/swap_1' [980.00 MiB] inherit

Как можно увидеть, имя диска который нужно проверить на ошибки это /dev/xubuntu-vg/root, оно должно подойти для запуска fsck на этом имя.
Если /dev/xubuntu-vg/root не ACTIVE, нужно сделать его активным чтобы мы могли запустить его проверку.

lvchange -ay /dev/xubuntu-vg/root

Теперь это должно выглядеть примерно так:

sudo lvscan
  ACTIVE            '/dev/xubuntu-vg/root' [<19.04 GiB] inherit
  inactive          '/dev/xubuntu-vg/swap_1' [980.00 MiB] inherit

Теперь можно запустить fsck для проверку тома LVM:

fsck /dev/xubuntu-vg/root

или запустить форсированную проверку с автоматическим исправлением ошибок:

fsck -fy /dev/xubuntu-vg/root

2. Исправление LVM с шифрованием
Поиск корневого раздела:
sudo fdisk -l

Расшифровываем раздел.
sudo cryptsetup open --type luks /dev/nvme0n1p3 nvme0n1p3_crypt

Внимание: замените /dev/nvme0n1p3 на ваш собственный диск
замените "nvme0n1p3_crypt" на корректное имя раздела для вашей установки, вы можете его узнать запустив следующее в chroot:
cat /etc/crypttab | cut -f1 -d " "

Пример вывода:
nvme0n1p3_crypt

Монтирование корневого раздела
sudo vgscan
sudo vgchange -ay
sudo mount /dev/mapper/xubuntu--vg-root /mnt

Подготовка окружения chroot:
sudo mount /dev/nvme0n1p2 /mnt/boot/ # замените nvme0n1p2 на ваш загрузочный раздел!
sudo mount -o rbind /dev/ /mnt/dev/
sudo mount -t proc proc /mnt/proc/
sudo mount -t sysfs sys /mnt/sys/

Делаем так, чтобы в chroot работал DNS:
sudo cp /etc/resolv.conf /mnt/etc/resolv.conf

Входим в chroot:
sudo chroot /mnt /bin/bash

Переустанавливаем отсутствующие пакеты:
apt install cryptsetup lvm2

Заново генерируем (это может быть выполнено командой apt на предыдущем шаге — если это уже было сделано, то пропустите):
update-initramfs -u -k all

Покидаем среду chroot:
exit

Записываем буфер на диск:
sudo sync

Размонтируем файловые системы:
sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt/boot


This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

uzverss: (Default)
uzverss

December 2024

S M T W T F S
12345 67
891011121314
15161718192021
22232425262728
293031    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 22nd, 2025 07:28 pm
Powered by Dreamwidth Studios