Potřeboval jsem rozšířit disk na serveru. Server mám virtuální u Nethost. Jakmile mi přidali volného místa na disku, potřeboval jsem v operačním systému zvětšit partitionu. Samozřejmě jsem to potřeboval za běhu a bez ztráty dat.
V mém případě mám disk /dev/sda a partitionu /dev/sda1.
Po konzultaci s Nethostem jsem použil následující řešení:
root@server:~# parted /dev/sda (parted) unit s (parted) print free Model: QEMU nhhdd1419000 (scsi) Disk /dev/sda: 117194752s Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 2s 2047s 2046s Free Space 1 2048s 97654783s 97652736s primary ext4 boot 97654784s 117194751s 19539968s Free Space (parted) resizepart 1 117194751 Warning: Partition /dev/sda1 is being used. Are you sure you want to continue? Yes/No? Yes (parted) quit Information: You may need to update /etc/fstab. root@server:~# resize2fs /dev/sda1 resize2fs 1.46.2 (28-Feb-2021) Filesystem at /dev/sda1 is mounted on /; on-line resizing required old_desc_blocks = 6, new_desc_blocks = 7 The filesystem on /dev/sda1 is now 14649088 (4k) blocks long.
Rozšíření disku se tedy skládal ze 2 částí. První část je použití programu parted a druhá část příkaz resize2fs. Postup použití parted vypadá takto.
parted /dev/sda unit s print free // toto Vám vypíše počáteční a koncový sektor vaší partition, a poté počáteční a koncový sektor volného místa na disku resizepart 1 KONCOVY_SEKTOR // koncový sektor který u volného místa vidíte jako konec / end (můžete zadat s jednotkou s, nebo bez, nehraje roli) pokud dostanete hlášku, že partition je použivaná, pokračujte s YES quit
Situace je taková, že jsem špatně odhadl situaci a špatně rozdělil SD kartu na Raspberry Pi. Oddíl sda2 jsem nastavil na 16 GB a šifrovaný oddíl (LUKS) sda3 zbytek. Na disku sda2 mi začalo docházet místo a potřeboval jsem přesunout 8 GB z sda3 na sda2.
Nakonec jsem se rozhodl řešit to přes grafický program GParted. Jako první jsem připojil SD kartu k druhému počítači, odmountoval disky, zkontroloval pomocí fsck a přešel do programu GParted.
Označil jsem zašifrovaný oddíl a musel jsem ho dešifrovat. Poté bylo možné provést resize šifrovaného oddílu. Spustil jsem proces resize.
Při resize se na konci vytvoří nové místo, které potřebuji alokovat k disku sda2.
Tady je ovšem problém. Místo je na konci a potřebuji ho přesunou na začátek disku sda3. Tedy mezi sda2 a sda3.
Dalším krokem tedy bylo zavřít šifrování a pak mi GParted dovolil při resize sda3 dát volné místo před tento oddíl, místo za.
Následující varovnou hlášku jsem potvrdil, protože z disku sda3 se operační systém nezavádí, tak mě to netrápí.
Tady je vidět, jak by mělo volné místo vypadat po provedení operace.
Tato část kopírování bude opravdu časově náročná. Bude trvat několik hodin, protože se musí překopírovat velké množství dat z místa na místo.
Jako poslední krok jsem dal resize sda2 a zvětšil jsem ji o uvolněné místo z předchozího kroku.