July 15

resize qcow2 with windows on board from the command line. Yes, i did it

#Перевіряємо чи нічого там не живе

fdisk -l /dev/nbd0
fdisk -l /dev/nbd1

#Перевіряємо інфу по старому диску, особлива увага їбучому backing file:

qemu-img info old.qcow2

#Якщо він є, то вказуємо шлях до нього – то це срака, і спершу його потрібно завезти та покласти, а потім:

mkdir -p /var/lib/libvirt/images/
qemu-img create -f qcow2 -F qcow2 -b /var/lib/libvirt/images/06xysn6-4379-489c-9d47-833492d0aaf1 new.qcow2 200G

#Якщо його нема:

qemu-img create -f qcow2 new.qcow2 200G

#Підʼєднуємо обидва диски

qemu-nbd --connect=/dev/nbd0 old.qcow2
qemu-nbd --connect=/dev/nbd1 new.qcow2

#перевіряємо, чи бачимо ми розділи на сорсі – нас дуже цікавлять закінчення та початок кожного розділу

fdisk -l /dev/nbd0

Нас дуже цікавлять початки на завершення розділів (сектори)

Device Boot Start End Sectors Size Id Type
/dev/nbd0p1 * 2048 1126399 1124352 549M 7 HPFS/NTFS/exFAT
/dev/nbd0p2 1126400 414511103 413384704 197.1G 7 HPFS/NTFS/exFAT

#пиздимо звідти таблицю розділів у файлик:

sfdisk -d /dev/nbd0 > partition_table.txt

#дивимося скільки секторів у нового диску:

fdisk -l /dev/nbd1|grep -w Disk

#Disk /dev/nbd1: 200 GiB, 214748364800 bytes, 419430400 sectors

#редагуємо таблицю розділів. потрібно змінити :

nano partition_table.txt

#Розкатуємо таблицю розділів на новий диск:

sfdisk /dev/nbd1 < partition_table.txt

———————-Вихлоп—————————-

root@nodes:/the_way/# sfdisk /dev/nbd1 < partition_table.txt
Checking that no-one is using this disk right now ... OK

Disk /dev/nbd1: 200 GiB, 214748364800 bytes, 419430400 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xec93683b

Old situation:

Device Boot Start End Sectors Size Id Type
/dev/nbd1p1 * 2048 1126399 1124352 549M 7 HPFS/NTFS/exFAT
/dev/nbd1p2 1126400 62912511 61786112 29.5G 7 HPFS/NTFS/exFAT

>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Created a new DOS (MBR) disklabel with disk identifier 0xec93683b.
/dev/nbd1p1: Created a new partition 1 of type 'HPFS/NTFS/exFAT' and of size 549 MiB.
Partition #1 contains a ntfs signature.
/dev/nbd1p2: Created a new partition 2 of type 'HPFS/NTFS/exFAT' and of size 197.1 GiB.
Partition #2 contains a ntfs signature.
/dev/nbd1p3: Done.

New situation:
Disklabel type: dos
Disk identifier: 0xec93683b

Device Boot Start End Sectors Size Id Type
/dev/nbd1p1 * 2048 1126399 1124352 549M 7 HPFS/NTFS/exFAT
/dev/nbd1p2 1126400 414511103 413384704 197.1G 7 HPFS/NTFS/exFAT

The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

———————-^Вихлоп^—————————-

#Створюємо карту розділів для нового диску:

#ДДшкаємо або ntfsclone розділ за розділом – менший розмір блоку потрібен щоб воно не уїбунькало хост систему
##там де розділи службові – ддшкаємо
##там де точно NTFS – використувуємо ntfsclone !!!!! розділ куди і звідки йдуть поміняні тобто ntfsclone –overwrite /dev/TARGET /dev/SOURCE –force
#і це доволі не очевидна хрінь ^^^^^
#чому не ддшкою – бо воно “зробить” файл диску “важким” – все щедро забивши нулями

dd if=/dev/nbd0p1 of=/dev/nbd1p1 bs=1M status=progress
ntfsclone --overwrite /dev/nbd1p2 /dev/nbd0p2 --force

….
———————-Вихлоп—————————-

root@nodes:/the_way/# ntfsclone --overwrite /dev/nbd1p2 /dev/nbd0p2 --force
ntfsclone v2022.10.3 (libntfs-3g)
NTFS volume version: 3.1
Cluster size : 4096 bytes
Current volume size: 211652964352 bytes (211653 MB)
Current device size: 211652968448 bytes (211653 MB)
Scanning volume ...
100.00 percent completed
Accounting clusters ...
Space in use : 27538 MB (13.0%)
Cloning NTFS ...
100.00 percent completed
Syncing ...
root@nodes:/the_way/#

———————-^Вихлоп^—————————-

#Розбираємо все назад

qemu-nbd --disconnect /dev/nbd1
qemu-nbd --disconnect /dev/nbd0

Все – новий диск готовий до використання, можемо підключати і пробувати


Copyright 2021. All rights reserved.

Posted 15 July 2025 by admin in category "simple memo

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.