Перейти к основному содержанию

Уменьшение виртуального диска с LVM

Linux

У нас есть виртуальная машина на VMware, на ней есть диск. Диск большой, данных мало. Наша задача - сделать диск меньшего размера. На борту Logical Volume Manager (LVM). Gparted не умеет переносить данные на LVM разделах. Будем делать всё руками.

  1. Остановка процессов на сервере.
  2. Создаём клон виртуалки. Вдруг мы всё запорем - возрадуемся бэкапу как родному.
  3. Пока создаётся клон рассчитаем место, которое нужно оставить на дисках.
    df -h
    
    Filesystem                              Size  Used Avail Use% Mounted on
    /dev/mapper/vg_smartfe00-lv_root         50G   15G   33G  30% 
    /tmpfs                                  7.8G     0  7.8G   0% /dev/shm
    /dev/sda2                               477M  104M  348M  23% /boot
    /dev/sda1                               197M  253K  197M   1% /boot/efi
    /dev/mapper/vg_smartfe00-lv_home        211G   11G  190G   6% /home

    lv_root уменьшим с 50G до 30G
    lv_home уменьшим с 211G до 25G

  4. Выключить ось.
  5. Переключить UEFI на BIOS.
  6. Переключить vlan на PXE или вставляем образ Resque CD.
  7. Загрузиться с Resque CD.
  8. Через gparted убеждаемся в том, что /dev/sdb активен (не обязательно).
  9. Уменьшаем размеры файловых систем, уменьшаем логические разделы, сдвигаем данные к началу диска, уменьшаем физический раздел.
    Список групп:
    vgdisplay
    Список логических томов:
    lvdisplay
    Список дисков
    pvdisplay

    Ресайзим root до 30 Гб:

    e2fsck -f /dev/mapper/vg_smartfe00-lv_root
    resise2fs /dev/mapper/vg_smartfe01-lv_root 30G

    Ресайзим home до 25 Гб:

    e2fsck -f /dev/mapper/vg_smartfe00-lv_home
    resise2fs /dev/mapper/vg_smartfe01-lv_home 25G

    Уменьшаем размер логических томов:

    lvreduce -L 30G /dev/mapper/vg_smartfe01-lv_root
    lvreduce -L 25G /dev/mapper/vg_smartfe01-lv_home

    Далее все сегменты вычисляем на калькуляторе для каждого сервера! Смысл в том, чтобы перемещать сегменты только на пустое место.
    Список сегментов:

    pvs -v --segments /dev/sdb1

    Включаем мозг, понимаем куда двигать home и сдвигаем его подальше:

    pvmove --alloc anywhere /dev/sdb1:12800-19199

    Снова смотрим список сегментов:

    pvs -v --segments /dev/sdb1

    Двигаем home вплотную к root:

    vmove --alloc anywhere /dev/sdb1:19200-25599 /dev/sdb1:7680-14079

    Двигаем swap вплотную к home:

    pvmove --alloc anywhere /dev/sdb1:67083-71110 /dev/sdb1:14080-18107
    Дальше запускаем gparted и работаем через него.
    gparted - деактивируем /dev/sdb
    gparted - ресайзим /dev/sdb1
  10. Смотрим инфо получившегося /dev/sdb1 - total sector 148350848.
    Вычисляем размер нового диска 148350848*512/1024/1024=72436,9375 Мб
    Новый диск будем делать 72438 Мб, это в три раза меньше того, что было.
  11. Выключаем ось.
  12. Добавляем через vCenter новый диск на 72438 Мб.
  13. Снова загружаемся через Resque CD.
  14. gparted на /dec/sdc делаем device - create partition table.
  15. gparted на /dev/sdc делаем новый раздел /dev/sdc1 в файловой системе lvm2 pv
  16. Проверяем через инфо, чтобы количество секторов на /dev/sdc1 (148350976) было не меньше чем на /dev/sdb1 (148350848).
  17. Расширяем группу:
    vgextend vg_smartfe00 /dev/sdc1
  18. Мувим диск с /dev/sdb1 на /dev/sdc1:
    pvmove /dev/sdb1 /dev/sdc1
  19. Исключаем из группы /dev/sdb1:
    vgreduce vg_smartfe00 /dev/sdb1
  20. gparted - деактивируем диск /dev/sdc1.
  21. gparted - check диска /dev/sdc1 - дополнительно раздел расширяется до полного объёма.
  22. Выключаем ось.
  23. Удаляем ненужный более диск через vCenter.
  24. Переключаем BIOS обратно на EFI.
  25. Переключаем vlan на боевой, если ранее переключались на PXE.
  26. Включаем тачку.
 

Похожие материалы

Seafile — установка на Ubuntu 18.04 LTS

Seafile — это личное облачное хранилище для хранения данных в стиле Dropbox. Сегодня мы развернём это хранилище на виртуальном сервере. В качестве гипервизора у нас ESXi 6.7 Update 1.