# LVM

### lvm work

На имеющемся образе centos/7 - v. 1804.21 (приложенный Vagrantfile)

Уменьшить том под / до 8G Выделить том под /home Выделить том под /var - сделать в mirror /home - сделать том для снапшотов Прописать монтирование в fstab. Попробовать с разными опциями и разными файловыми системами ( на выбор)

Работа со снапшотами:- сгенерить файлы в /home/

снять снапшот удалить часть файлов восстановится со снапшота Залоггировать работу можно с помощью утилиты script

Разворачиваем Vagrantfile, подключаемся к машине lvm

```
    vagrant up
    vagrant ssh
```

На vm устанавливаем утилиты, кот. помогут в дальнейшей работе

```
    sudo yum install xfsdump vim
```

Смотрим список дисков и их разделов сразу после старта vm

```
    lsblk
```

Подготовим временный том для / раздела

```
    pvcreate /dev/sdb
    vgcreate vg_root /dev/sdb
    lvcreate -n lv_root -l +100%FREE /dev/vg_root
```

Создадим на нем файловую систему и смонтируем его, чтобы перенести туда данные:

```
    mkfs.xfs /dev/vg_root/lv_root
    mount /dev/vg_root/lv_root /mnt
```

Этой командой скопируем все данные с / раздела в /mnt - итог вывода на скрине:

```
    xfsdump -J - /dev/VolGroup00/LogVol00 | xfsrestore -J - /mnt
```

Проверим, что скопировалось

```
    ls /mnt
```

Переконфигурируем grub для того, чтобы при старте перейти в новый / Сымитируем текущий root -> сделаем в него chroot и обновим grub:

```
    for i in /proc/ /sys/ /dev/ /run/ /boot/; do mount --bind $i /mnt/$i; done
    chroot /mnt/
    grub2-mkconfig -o /boot/grub2/grub.cfg
```

Обновим образ initrd.

```
    cd /boot ; for i in `ls initramfs-*img`; do dracut -v $i `echo $i|sed "s/initramfs-//g; s/.img//g"` --force; done
```

Чтобы при загрузке был смонтирован нужный root: в файле /boot/grub2/grub.cfg заменим rd.lvm.lv=VolGroup00/LogVol00 на rd.lvm.lv=vg\_root/lv\_root. Для редактирования я использовала vim, установленный в самом начале.

```
    nano /etc/default/grub
```

После изменений - обновила grub

```
    grub2-mkconfig -o /boot/grub2/grub.cfg
```

Выход, перезагрузка. После подключения можно проверить, что успешно загрузились с новым рут томом

```
    lsblk
```

Теперь изменяем размер старой VG и возвращаем на него рут. Для этого удаляем старый LV размеров в 40G и создаем новый на 8G:

```
    lvremove /dev/VolGroup00/LogVol00
    lvcreate -n VolGroup00/LogVol00 -L 8G /dev/VolGroup00
```

Создаём файловую систему

```
    mkfs.xfs /dev/VolGroup00/LogVol00
```

Монтируем файловую систему, копируем данные

```
    mount /dev/VolGroup00/LogVol00 /mnt
    xfsdump -J - /dev/vg_root/lv_root | xfsrestore -J - /mnt
```

Переконфигурируем grub, за исключением правки /etc/grub2/grub.cfg

```
    for i in /proc/ /sys/ /dev/ /run/ /boot/; do mount --bind $i /mnt/$i; done
    chroot /mnt/
    grub2-mkconfig -o /boot/grub2/grub.cfg
    cd /boot ; for i in `ls initramfs-*img`; do dracut -v $i `echo $i|sed "s/initramfs-//g; s/.img//g"` --force; done
```

Пока не перезагружаемся и не выходим из под chroot - мы можем заодно перенести /var На свободных дисках создаем зеркало:

```
    pvcreate /dev/sdc /dev/sdd
    vgcreate vg_var /dev/sdc /dev/sdd
    lvcreate -L 950M -m1 -n lv_var vg_var
```

Создаем на нем ФС и перемещаем туда /var:

```
    mkfs.ext4 /dev/vg_var/lv_var
    mount /dev/vg_var/lv_var /mnt
    cp -aR /var/* /mnt/      # rsync -avHPSAX /var/ /mnt/
```

На всякий случай сохраняем содержимое старого var:

```
    mkdir /tmp/oldvar && mv /var/* /tmp/oldvar
```

Монтируем новый var в каталог /var:

```
    umount /mnt
    mount /dev/vg_var/lv_var /var
```

Правим fstab для автоматического монтирования /var:

```
    echo "`blkid | grep var: | awk '{print $2}'` /var ext4 defaults 0 0" >> /etc/fstab
```

Внесём правки в grub, заменив rd.lvm.lv=vg\_root/lv\_root на rd.lvm.lv=VolGroup00/LogVol00

```
    grub2-mkconfig -o /boot/grub2/grub.cfg
    nano /etc/default/grub
```

После изменений - обновим grub

```
    grub2-mkconfig -o /boot/grub2/grub.cfg
```

Перезагружаемся в новый (уменьшенный root), удаляем временную Volume Group:

```
    lvremove /dev/vg_root/lv_root
    vgremove /dev/vg_root
    pvremove /dev/sdb
```

Выделяем том под /home по тому же принципу что делали для /var:

```
    lvcreate -n LogVol_Home -L 2G /dev/VolGroup00 
    mkfs.xfs /dev/VolGroup00/LogVol_Home
    mount /dev/VolGroup00/LogVol_Home /mnt/
    cp -aR /home/* /mnt/
    rm -rf /home/*
    umount /mnt
    mount /dev/VolGroup00/LogVol_Home /home/
```

Правим fstab для автоматического монтирования /home

```
    echo "`blkid | grep Home | awk '{print $2}'` /home xfs defaults 0 0" >> /etc/fstab
```

Сгенерируем файлы в /home/:

```
    touch /home/file{1..20}
```

Снять снапшот:

```
    lvcreate -L 100MB -s -n home_snap /dev/VolGroup00/LogVol_Home
```

Удалить часть файлов:

```
    rm -f /home/file{11..20}
```

Процесс восстановления со снапшота:

```
    lvconvert --merge /dev/VolGroup00/home_snap
    mount /home
```

Выход, перезагрузка, проверяем, что всё в норме lsblk
