Уменьшение LVM, раздела, PV и диска qcow2
Приведены команды для нового раздела размером 10ГБ и имя раздела sda1
Если действия производятся с root разделом, работы выполняются в live cd (как в примере)
Уменьшение LVM
Загружаемся с Live CD, можно использовать установочный диск системы
Активируем vg LVM
vgchange -ay
Проверяем файловую систему на наличие ошибок
e2fsck -f /dev/ubuntu-vg/ubuntu-lv
Изменяем размер fs, берем на 100М меньше 10G чтобы не было проблем, потом расширим до доступного места.
resize2fs /dev/ubuntu-vg/ubuntu-lv 9700M
Изменяем размер lv, берем на 100М больше размера fs чтобы не было проблем, потом расширим до доступного места.
lvreduce -L 9.8G /dev/ubuntu-vg/ubuntu-lv
WARNING: Reducing active logical volume to 10.00 GiB THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce root [y/n]: y
Reducing logical volume root to 10.00GiB Logical volume root sucessfully resized
Продолжение работ с LVM в разделе - «Продолжение работ с LVM»
Уменьшение PV и раздела
Есть 2 варианта - использовать live cd GPARTED или проводить работы через терминал (что описано ниже)
Порядок здесь важен: PV сжимаем с запасом — чуть сильнее, чем планируем ужать сам раздел. Тогда после изменения раздела PV можно будет расширить обратно на весь его объём, и эта операция сработает как проверка: если расширение не проходит, значит раздел получился меньше ожидаемого и ошибку видно сразу, а не через полгода при первом же сбое.
Сжимаем physical volume
pvresize --setphysicalvolumesize 9.9G /dev/sda1
Делаем копию существующей таблицы разделов (если есть куда)
sfdisk -d /dev/sda > /safe/location/partition_table_backup.dump
Запускаем fdisk в интерактивном режиме
fdisk /dev/sda
Нужно посмотреть текущую таблицу разделов и убедиться, что значения «начало» и «конец» отображаются в виде секторов. Запишите «начальное» значение.
p
Удаляем текущую запись раздела для sda1
d
Воссоздаём запись первичного раздела 1 для sda1 желаемого размера.
n
- Местоположение первого сектора точно в том виде, в котором он был (т.е. тот же номер, который был показан в «начальном» значении команды)
First sector:
- Конец раздела указывается в Гб:
Last sector: +10G
На вопрос Do you want to remove the signature? [Y]es/[N]o: отвечаем нет — сигнатуру LVM нужно сохранить.
Устанавливаем тип раздела «Linux LVM»:
t
30
Код
30соответствует Linux LVM в GPT-разметке. Для MBR тот же тип задаётся кодом8e— fdisk показывает подходящий список по командеL.
Записываем обновленную таблицу разделов и выходим
w
Если изменение размера раздела прошло успешно, расширяем physical volume на всё оставшееся место
pvresize /dev/sda1
Если PV изначально ужали с запасом, команда просто дотянет его до фактической границы раздела. Ошибка на этом шаге означает, что раздел создан меньше нужного размера — верните исходную таблицу разделов из сделанной копии и повторите разметку:
sfdisk /dev/sda < /safe/location/partition_table_backup.dump
Продолжение работ с LVM
После всех манипуляция увеличиваем lv до максимального размера
lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
И увеличиваем fs до максимально размера
resize2fs /dev/ubuntu-vg/ubuntu-lv
Выполняем проверку файловой системы
e2fsck -f /dev/ubuntu-vg/ubuntu-lv
Изменение размера диска qcow2
Если работы проводятся с виртуальной машиной Proxmox, после всех выполненных действий, размер диска не изменится.
Нужно провести работы со стороны системы proxmox
- Создать новый диск требуемого объема (на нем должно быть достаточно место под все существующие разделы исходного диска) и подключить его к виртуальной машине.
Далее проводим работы с гостевой системой
- Запустить live cd (в случае root prtition) или саму систему виртуальной машины
- Используя fdisk посмотреть все разделы на исходном диске (записать текущие начала и конца разделов в секторах) и создать на новом диске такую же разметку диска (gpt, mbr) и такие же разделы с точно таким же расположение разделов по секторам.
- Собираем информацию по исходному диску:
fdisk /dev/sda -l
Для зачистки информации на новом диске используем wipefs
sudo wipefs --all --force /dev/sdb
Для изменения таблиц разделом используем parted
sudo parted /dev/sdb
mklabel msdos - для перевода в mbr
mklabel gpt - для перевода в gpt
q - выход
- Настраиваем целевой диск:
fdisk /dev/sdb - открыть новый диск
p - убедится что таблица разделов соответствует исходному диску
n - создать новые разделы, важно указать начало и конец в секторах по аналогии с исходным
t - установить метки раздела по аналогии с исходным
w - записать изменения и выйти
Перед клонированием разделов обязательно деактивируем vg - vgchange -an
- Копируем разделы между дисками:
sudo dd if=/dev/sda1 of=/dev/sdb1
sudo dd if=/dev/sda2 of=/dev/sdb2
sudo dd if=/dev/sda3 of=/dev/sdb3
и т.д.
Далее выключаем vm и возвращаемся к системе Proxmox
- Переходим в папку с дисками
cd /var/lib/vz/images/<vm_number>
- Переименовываем исходный диск в «имяисходногодиска_bak»
mv <имяисходногодиска> <имяисходногодиска_bak>
- Переименовываем новый в исходный диск
mv <имяновогодиска> <имяисходногодиска>
- Обновляем информацию по виртуальной машине
qm rescan --vmid <vm_number>
- Запускаем виртуальную машину, проверяем проделанную работу.
- Если всё успешно, удаляем старый диск
rm <имяисходногодиска_bak>
После проведённых работ система может перестать грузиться с нового диска
Повисает на статусе - Booting from hard disk
В таком случае требуется выполнить восстановление загрузчика