Hvordan kan jeg øge størrelsen af rodpartitionen i et system ved kørselstid?
Jeg har en partition, der ikke er allokeret efter rodpartitionen (som også er ext4), hvordan kan jeg tilføje denne ikke-allokerede plads til den plads, der er allokeret til rodpartitionen, uden at skulle lukke serveren ned?
GUI (Ubuntu 14.04 og nyere): GParted v0.17 og nyere giver en fin GUI til dette. (Ældre versioner vil nægte at ændre størrelsen på en monteret partition).
Kommandolinje (enhver Ubuntu-version): Der er tre trin til dette.
Strin 1. Partitionen skal først ændres i størrelse. Hvis du bruger LVM, er det nemt, og du ved formodentlig, hvordan du skal gå frem. Hvis du bruger klassiske partitioner, er det lidt mere kompliceret, og kan kræve en genstart (selvom du aldrig behøver at starte et andet system eller en live-cd).
Sådan her gør jeg det: Brug fdisk
til først at slette partitionen (ideen er at dataene på disken vil blive bevaret), og derefter omhyggeligt genskabe den med en større størrelse på samme position.
Eksempel:
$ sudo fdisk /dev/sda
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 9437183 4717568 83 Linux
Command (m for help): d
Selected partition 1
Command (m for help): p
Device Boot Start End Blocks Id System
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4, default 1): 1
First sector (2048-10485759, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759):
Using default value 10485759
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/sda1 2048 10485759 5241856 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
Igen er det afgørende, at den nye partition starter på samme blok som den gamle. Id'et skal også stemme overens (83 for Linux-systemer). Vær forberedt på at miste alle dine data ved den mindste tastefejl.
For at være på den sikre side kan du også genoprette boot-flaget (som ifølge Wikipedia stadig er påkrævet på nogle computere) ved at trykke på a
.
Se kommentarfeltet for hvad du skal gøre, hvis din swap-partition er i vejen.
Nu burde det være tydeligt, hvorfor folk anbefaler at bruge en live-cd. ;-)
Stræk 2.
Som fdisk
hjælpsomt minder dig om, skal du genindlæse partitionstabellen før du fortsætter. Den sikreste måde er simpelthen at genstarte; men du kan også bruge partprobe
eller kpartx
(mere information).
Stræk 3.
Når partitionen er ændret i størrelse og partitionstabellen er genindlæst, er det et simpelt spørgsmål om at køre resize2fs
på filsystemet, og du kan gøre dette, selv når det er monteret som root-partition.
Eksempel:
$ sudo resize2fs /dev/sda1
Det er muligt at lave en online-omformning af et ext4-filsystem, selv om det er din rodpartition. Brug kommandoen resize2fs
.
sudo resize2fs /dev/sda1
EDIT: On-line krympning er ikke tilladt:
root@brunojcm-htpc:/home# resize2fs /dev/sda5 2654693
resize2fs 1.42 (29-Nov-2011)
Filesystem at /dev/sda5 is mounted on /; on-line resizing required
resize2fs: On-line shrinking not supported
Du kan også bare bruge GParted - så længe den partition, du ændrer størrelsen på, ikke er den partition, du startede fra - ellers foreslår jeg live CD, som er noget nemmere for nybegyndere.
GParted gør stort set alle trinene - bare baseret på en GUI fronted.