it-swarm.dev

Jak mohu změnit velikost kořenového oddílu ext za běhu?

Jak mohu zvětšit velikost kořenového oddílu systému za běhu?

Mám oddíl, který není přidělen za kořenovým oddílem (který je také ext4). Jak mohu přidat tento nepřidělený prostor k prostoru přidělenému kořenovému oddílu bez nutnosti vypínání serveru?

264
BonboBingo

GUI (Ubuntu 14.04 a novější) : GParted v0.17 a později k tomu poskytují pěkné GUI. (Starší verze odmítnou změnit velikost připojeného oddílu).

Příkazový řádek (jakákoli verze Ubuntu): K tomu existují tři kroky.

Krok 1. Oddíl musí být nejprve změněn. Pokud používáte LVM, je to snadné a pravděpodobně víte, jak postupovat. Pokud používáte klasické diskové oddíly, je to o něco složitější a může vyžadovat restartování (i když už nikdy nebudete muset zavádět jiný systém nebo živé CD).

Takto to provedu: Pomocí fdisk nejprve vymažte oddíl (myšlenka je, že data na disku budou zachována), a poté je opatrně znovu vytvořte s větší velikostí na stejné pozici.

Příklad:

$ 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.

Opět je důležité, aby nový oddíl začal ve stejném bloku jako starý. Id by se také mělo shodovat (83 pro systémy Linux). Buďte připraveni ztratit všechna data při nejmenším překlepu.

Chcete-li být na bezpečné straně, můžete také obnovit příznak bootování (který podle Wikipedie je v některých počítačích stále vyžadován) stisknutím a.

V sekci komentář naleznete informace o tom, jak postupovat, pokud je váš odkládací oddíl v cestě.

Nyní by mělo být zřejmé, proč lidé doporučují používat živé CD. ;-)

Krok 2. Jak vám fdisk užitečně připomíná, musíte před pokračováním znovu načíst tabulku oddílů. Nejbezpečnější způsob je jednoduše restartovat; ale můžete také použít partprobe nebo kpartx(více informací) .

Krok 3. Jakmile je velikost oddílu a tabulka oddílů znovu načtena, je to jednoduchá záležitost spuštění resize2fs v systému souborů a můžete tak učinit, i když je připojeno jako kořenový oddíl.

Příklad:

$ Sudo resize2fs /dev/sda1
237
Søren Løvborg

Je možné provést online změnu velikosti souborového systému ext4, i když je to váš kořenový oddíl. Použijte resize2fs příkaz.

Sudo resize2fs /dev/sda1

ÚPRAVA: On-line zmenšení není povoleno:

[email protected]:/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
118
CodeAddict

Snadnější řešení - použijte growpart <device> <partition>:

growpart /dev/xvda 1  # Grows the partition; note the space
resize2fs /dev/xvda1  # Grows the filesystem

Jako vždy zálohujte tabulku oddílů (sfdisk -d /dev/xvda > partition_bak.dmp) jen pro jistotu.

74
STRML

Ano, můžete zmenšit/přesunout/rozšířit online kořenový oddíl bez restartování (ani livecd, ani usbkey): podívejte se na tuto odpověď . Je velmi dobře psaný a snadno sledovatelný, i když poměrně dlouhý a trochu riskantní. Pokud tedy chcete pouze rozšířit svůj oddíl ext4, můžete se držet konvenčních pracovních řešení resize2fs.

Obecné řešení, na které jsem narazil, bude fungovat například na jakémkoli typu dedikovaného nebo VPS řešení.

TLDR; toto řešení znamená pivot_roottmpfs, takže můžete bezpečně umount bezpečně žít svůj kořenový oddíl a hrát si s ním. Po dokončení budete pivot_root Zpět na svůj nový kořenový oddíl.

To umožňuje téměř jakoukoli manipulaci v kořenovém souborovém systému (přesunout, změnit systém souborů, změnit jeho fyzické zařízení ...).

V tomto procesu není třeba restartovat a to umožňuje obejít omezení resize2fs schopný zmenšit ext4 oddíly.

Osobně jsem to použil a funguje to také dobře na debianovém systému, takže by měl fungovat na Ubuntu. Jsem velmi překvapen, když nevidím toto hloubkové řešení o něco více spojené s mnoha otázkami na webových stránkách stackexchange, které se zabývají stejným problémem.

Poznámka: Samozřejmě, pokud chcete svůj oddíl rozšířit, postačí jednoduchý resize2fs, Jak je uvedeno na mnoha místech a v dalších odpovědích tady.

13
vaab

Dalo by se také využít GParted - pokud oddíl, ze kterého měníte velikost, není ten, ze kterého jste zavedli - jinak navrhuji možnost live CD je o něco jednodušší pro nováčci.

GParted v podstatě provádí všechny kroky - pouze na základě GUI fronted.

10
leatherjacket

Chtěl bych udělat odpověď na odpověď @ Sørena Løvborga: rozšířit oddíl o odkládací oddíl.

Nejprve rozložení disku po jeho rozšíření:

$Sudo parted /dev/sda 'unit s print' free
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 14336000s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start      End        Size       Type      File system     Flags
        63s        2047s      1985s                Free Space
 1      2048s      10485759s  10483712s  primary   ext4            boot
        10485760s  10487805s  2046s                Free Space
 2      10487806s  12580863s  2093058s   extended
 5      10487808s  12580863s  2093056s   logical   linux-swap(v1)
        12580864s  14335999s  1755136s             Free Space

Sda1 je tedy třeba rozšířit o volné místo na konci disku, ale odkládací oddíl je mezi nimi. Takto to můžete udělat:

Nejprve musíme vypnout swap. Zkontrolujte, kolik se používá a zda je můžete vypnout.

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           992M         52M        464M        3.2M        475M        784M
Swap:          1.0G          0B        1.0G

swap se zde nepoužívá, takže jej můžeme vypnout

$Sudo swapoff /dev/sda5

Nyní změníme tabulku oddílů:

$Sudo fdisk /dev/sda

(poznámka: Pokud náhodou začínáte první oddíl v sektoru 63 místo 2048, musíte přidat možnost -c=dos)

Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p
Disk /dev/sda: 6.9 GiB, 7340032000 bytes, 14336000 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: 0x9e11c6df

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sda1  *        2048 10485759 10483712    5G 83 Linux
/dev/sda2       10487806 12580863  2093058 1022M  5 Extended
/dev/sda5       10487808 12580863  2093056 1022M 82 Linux swap / Solaris

Command (m for help): d
Partition number (1,2,5, default 5): 2

Partition 2 has been deleted.

Command (m for help): d
Selected partition 1
Partition 1 has been deleted.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-14335999, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-14335999, default 14335999): 12242941

Created a new partition 1 of type 'Linux' and of size 5.9 GiB.

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (12242942-14335999, default 12242944):
Last sector, +sectors or +size{K,M,G,T,P} (12242944-14335999, default 14335999):

Created a new partition 2 of type 'Linux' and of size 1022 MiB.

Command (m for help): a
Partition number (1,2, default 2): 1

The bootable flag on partition 1 is enabled now.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: 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).

Poznámka: velikost sda1 je celkové množství sektorů mínus velikost sektoru vašeho swapového oddílu: 14335999-2093058 = 12242941

Jak uvádí fdisk: jádro stále používá starou tabulku oddílů, takže ji musíme znovu načíst.

$partprobe

Nyní potřebujeme spustit resize2fs na sda1 (nezapomeňte to!)

$resize2fs /dev/sda1
resize2fs 1.42.12 (29-Aug-2014)
Filesystem at /dev/sda1 is mounted on /; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 10
The filesystem on /dev/sda1 is now 38833617 (4k) blocks long.

Teď, věci ještě neskončily. Jak jste si pravděpodobně všimli, sda2 je rozdělen jako typ Linux (Ext4). Z nějakého důvodu ve fdisku neexistuje způsob, jak vybrat typ. Musíme to tedy střídat pomocí cfdisk

$ Sudo cfdisk

Vyberte sda2 a změňte typ na 82 Linux swap / Solarisa nezapomeňte to napsat (zadejte ano pro potvrzení)

Nyní můžeme swap znovu aktivovat

$mkswap /dev/sda2
/dev/sda2
UUID=d58bf1cb-d27a-487d-b337-056767fd5ad6 none swap sw 0 0

A konečně to zapněte:

$swapon /dev/sda2

Jediné, co musíme udělat, je aktualizovat fstab tak, aby připojovací oddíl automaticky při bootování připojil

$Sudo nano /etc/fstab

A změňte UUID swapového oddílu na výše uvedený výstup:

# swap was on /dev/sda5 during installation
UUID=d58bf1cb-d27a-487d-b337-056767fd5ad6 none            swap    sw              0       0

Nyní je vše v pořádku a můžete bez problémů restartovat počítač.

7
wouter205

Právě jste dokončili změnu velikosti kořenového oddílu ext4 v živém systému, zatímco kořenový server byl připojen.

[[email protected] i686]# resize2fs /dev/vg_habib/lv_root
resize2fs 1.42 (29-Nov-2011)
Filesystem at /dev/vg_habib/lv_root is mounted on /; on-line resizing required
old_desc_blocks = 4, new_desc_blocks = 10
Performing an on-line resize of /dev/vg_habib/lv_root to 38427648 (4k) blocks.
The filesystem on /dev/vg_habib/lv_root is now 38427648 blocks long.

[[email protected] i686]# 
5
CDR

Udělal jsem to úspěšně bez umount, pivot_root nebo dočasné odebrání hlavního oddílu pomocí parted 3.2 na jádře Ubuntu 16.04, 4.4.0. Abych byl opatrný, udělal jsem všechno z virtuální konzole se zakázaným připojením k síti a pořídil jsem si snímek předem jen pro případ, ale snímek nebyl potřeba, takže jsem to mohl udělat stejně dobře přes SSH a beze změn runlevelů.

Určete velikost oddílu: parted /dev/sda1 print | egrep "Disk.*GB"

Volitelně přepněte do režimu pro více uživatelů bez připojení k síti (musí být provedeno z konzoly, nikoli z SSH):

runlevel     # remember the original runlevel
init 2

Případně si udělejte opatrný snímek VM).

Změna velikosti oddílu:

parted
p
resizepart NUMBER SIZE
# answer "Yes" when asked about resizing a live partition.
q

Změnit velikost systému souborů: resize2fs /dev/sda1

Pokud se něco pokazí, můžete snímek obnovit zde. Pokud vše dopadlo dobře, vraťte se k normální úrovni běhu (získané výše) - obvykle 5: init 5. V tomto okamžiku může být lepší provést úplný restart, abyste se ujistili, že se vše vrátí správně (později jsem měl problém s datem/ntp).

1
Roger Dueck

Následuj tyto kroky.

  1. otevřený terminál jako superuživatel su
  2. spustit parted
  3. chcete-li zobrazit dostupné oddíly, zadejte p
  4. identifikujte číslo kořenového oddílu (např .: 'sda 3' znamená číslo 3) a smažte sousední oddíl pomocí rm PARTITION NUMBERk vytvoření volného místa.
  5. nyní zvyšte velikost kořenového adresáře zadáním resizepart ROOT NUMBER a v případě potřeby restartujte systém
  6. exit parted zadáním exit a typu terminálu partprobe a stiskem enter (to lze provést i po restartu)
  7. konečně spustit resize2fs /dev/sda PARTITION NUMBER a užijte si prostorný kořenový oddíl.
1
Gurunadha Reddy

Jak bylo uvedeno výše:

  • je možné rozšířit živě z kořenového systému. (Žádné potíže, protože spouštěcí část se nemusí přesouvat)

  • zmenšení živého kořenového oddílu musí být provedeno z externího zaváděcího zařízení (spouštění ze živého systému cd/usb-stick), jako by došlo k nějaké chybě, neshodě .. cokoli .. váš systém visí, musí být restartován a nakonec nebude schopen správně nabootovat.

Jakýkoli druh „ale udělal jsem to a funguje to“ je čisté štěstí.

0
ascervera