Коротко — уменьшать «внутреннюю» занятость и копировать систему на новый меньший диск (attach new disk → rsync → пересоздать загрузчик) — это самый надёжный путь. Прямое «усечение» виртуального диска (особенно LVM/raw) рискованно и легко ведёт к неработающей системе. Ниже — подробные варианты и шаги.
Важно (читайте сначала)
- Сделайте хотя бы одну резервную копию конфигурации VM и, если возможно, снимок/backup диска. Без резервной копии любые операции на разделах/загрузчике — риск.
- Выясните тип файловой системы и разметки: XFS нельзя уменьшить, ext2/3/4 — можно; root в LVM — добавляет сложностей. Выполните lsblk -f и df -h в госте.
- Планируйте окно простоя — потребуется перезагрузка/выключение VM. Для безопасности работайте с выключенной VM при манипуляциях на уровне хоста.
Рекомендованный (и наиболее безопасный) метод — создать новый диск меньшего размера и скопировать систему
1. Подготовка в Proxmox:
- Создайте новый диск нужного размера (например 80G) и добавьте его в VM (через GUI или CLI):
qm set VMID --scsi1 local-lvm:80G
(или используйте storage и контроллер, который у вас в VM).
2. Внутри VM:
- Очистите ненужные данные: apt-get clean, удалите лог-файлы, почту, кэш.
- Нулейте свободное пространство (полезно для последующего образа qcow2):
sudo dd if=/dev/zero of=/zerofile bs=1M || true; sync; sudo rm -f /zerofile; sync
- Убедитесь, что используемое место < нового диска (оставьте запас ~5-10 GB). df -h
3. Разметьте и отформатируйте новый диск:
- lsblk — найдите /dev/sdb (новый диск).
- parted /dev/sdb mklabel gpt; parted /dev/sdb mkpart primary ext4 1MiB 100%
- mkfs.ext4 /dev/sdb1
4. Смонтируйте и скопируйте систему (rsync сохраняет права, xattrs):
- sudo mount /dev/sdb1 /mnt/new
- sudo rsync -aAXHv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /mnt/new
5. Подготовьте chroot и установите загрузчик:
- sudo mount --bind /dev /mnt/new/dev
sudo mount --bind /dev/pts /mnt/new/dev/pts
sudo mount --bind /proc /mnt/new/proc
sudo mount --bind /sys /mnt/new/sys
- проверьте /mnt/new/etc/fstab — замените UUID старого диска на UUID нового (/sbin/blkid /dev/sdb1)
- sudo chroot /mnt/new /bin/bash
update-grub
grub-install /dev/sdb (для BIOS/legacy)
Для UEFI: смонтируйте EFI раздел и установите grub-efi (apt-get install grub-efi-amd64; grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu)
exit
- Отмонтируйте bind-монты.
6. Тест и переключение:
- Выключите VM.
- В настройках VM Proxmox сделайте новый диск первичным для загрузки (поменяйте контроллер/порядок).
- Запустите VM и проверьте, загружается ли система корректно, все сервисы (особенно Zentyal/AD) работают.
- Если всё ок — удалите старый диск.
Плюсы этого метода:
- Минимальный риск для старого диска — до последнего момента он остаётся подключённым.
- Работает с XFS и LVM (копирование уровня файлов обходят многие ограничения).
- Даёт контроль над fstab, grub и UUID.
Альтернативный метод (более «прямой», подходящий если диск qcow2 и FS — ext4)
Только если диск QCOW2 (файл) и файловая система поддерживает сжатие/уменьшение (ext4), можно:
1. В госте:
- Проверьте/очистите и уменьшите FS: boot с LiveCD или в однопользовательском режиме.
- e2fsck -f /dev/sda1
- resize2fs /dev/sda1 70G
- скорректировать раздел (parted/fdisk) — убедитесь, что начало раздела не меняется.
2. На хосте Proxmox (VM остановлена):
- Сделайте копию файла диска: qemu-img convert -p -O qcow2 old.qcow2 new.qcow2
(qemu-img convert автоматически создаст файл минимального размера, если внутри много нулей).
- Подмените диск VM на новый new.qcow2 (проверьте права и ownership).
3. Запустите VM и проверьте загрузку.
Ограничения/риски альтернативного метода:
- raw/LVM-хранилища: qemu-img convert в случае LVM-thin требует дополнительных шагов (создать новый LV, импортировать образ туда).
- Нельзя уменьшать XFS; нельзя безопасно уменьшить filesystem без её проверки и корректного уменьшения внутри гостя.
- Неправильное изменение таблицы разделов может сделать систему не загрузочной.
Если корневой том в LVM внутри гостя
- Придётся уменьшать файловую систему, затем lvreduce, затем pvresize — все эти операции нужно выполнять осторожно, лучше в LiveCD. Иногда проще копировать на новый диск (первый метод).
Контрольный список перед началом
- Убедитесь, что занятое место существенно меньше целевого размера.
- Сделайте снимок/копию конфигурации VM.
- План простоя.
- Проверьте, нет ли сервисов с жёсткими ссылками снаружи (например, резервное копирование на основе UUID).
- Особая осторожность: это контроллер домена — продумайте перенос ролей/репликацию, если возможно, прежде чем экспериментировать.
Если хотите — могу:
- Прописать конкретную пошаговую инструкцию под вашу конфигурацию (скажетe: storage тип в Proxmox — qcow2 файл или local-lvm? VMID? файловая система внутри — ext4/XFS? root в LVM?).
С этими данными дам точный набор команд и возможный сценарий «копирования на новый диск» или «shrink qcow2».