У нас есть виртуальная машина на VMware, на ней есть диск. Диск большой, данных мало. Наша задача - сделать диск меньшего размера. На борту Logical Volume Manager (LVM). Gparted не умеет переносить данные на LVM разделах. Будем делать всё руками.
- Остановка процессов на сервере.
- Создаём клон виртуалки. Вдруг мы всё запорем - возрадуемся бэкапу как родному.
- Пока создаётся клон рассчитаем место, которое нужно оставить на дисках.
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 - Выключить ось.
- Переключить UEFI на BIOS.
- Переключить vlan на PXE или вставляем образ Resque CD.
- Загрузиться с Resque CD.
- Через gparted убеждаемся в том, что /dev/sdb активен (не обязательно).
- Уменьшаем размеры файловых систем, уменьшаем логические разделы, сдвигаем данные к началу диска, уменьшаем физический раздел.
Список групп: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 - деактивируем /dev/sdb
gparted - ресайзим /dev/sdb1 - Смотрим инфо получившегося /dev/sdb1 - total sector 148350848.
Вычисляем размер нового диска 148350848*512/1024/1024=72436,9375 Мб
Новый диск будем делать 72438 Мб, это в три раза меньше того, что было. - Выключаем ось.
- Добавляем через vCenter новый диск на 72438 Мб.
- Снова загружаемся через Resque CD.
- gparted на /dec/sdc делаем device - create partition table.
- gparted на /dev/sdc делаем новый раздел /dev/sdc1 в файловой системе lvm2 pv
- Проверяем через инфо, чтобы количество секторов на /dev/sdc1 (148350976) было не меньше чем на /dev/sdb1 (148350848).
- Расширяем группу:
vgextend vg_smartfe00 /dev/sdc1
- Мувим диск с /dev/sdb1 на /dev/sdc1:
pvmove /dev/sdb1 /dev/sdc1
- Исключаем из группы /dev/sdb1:
vgreduce vg_smartfe00 /dev/sdb1
- gparted - деактивируем диск /dev/sdc1.
- gparted - check диска /dev/sdc1 - дополнительно раздел расширяется до полного объёма.
- Выключаем ось.
- Удаляем ненужный более диск через vCenter.
- Переключаем BIOS обратно на EFI.
- Переключаем vlan на боевой, если ранее переключались на PXE.
- Включаем тачку.