Hogyan tudom átméretezni egy ext root partíciót futás közben?

196

Hogyan növelhetem a rendszer gyökérpartíciójának méretét futásidőben?

Van egy olyan partíciónk, amely nincs felosztva a gyökérpartíció után (ami szintén ext4), hogyan adhatom hozzá a nem hozzárendelt helyet a gyökérpartícióhoz hozzárendelt tárhelyhez anélkül, hogy le kellene állítania a kiszolgálót?

    
készlet BonboBingo 30.01.2011 18:23
forrás

10 válasz

170

GUI (Ubuntu 14.04 és újabb) : A GParted v0.17 és újabb grafikus grafikus felületet biztosít. (A régebbi verziók megtagadják a beépített partíció átméretezését.)

Parancssor (bármilyen Ubuntu verzió): Ennek három lépése van.

1. lépés A partíciót először át kell méretezni. Ha LVM-t használsz, akkor könnyű, és feltételezhetően tudja, hogyan kell továbbmenni. Ha klasszikus partíciókat használsz, akkor ez egy kicsit bonyolultabb, és újraindulást igényel (bár nem kell rendszerindítást vagy élő CD-t indítani).

Így csinálom: Afdisk használatával először törölje a partíciót (az ötlet az, hogy a lemezen tárolt adatok megmaradnak), majd gondosan újra létrehozza nagyobb méretű ugyanazon pozícióban.

Példa:

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

Ismét fontos, hogy az új partíció ugyanabban a blokkban kezdődik, mint a régi. Az azonosítónak is meg kell felelnie (83 Linux rendszerek esetén). Készülj fel minden adataidra a legkevesebb tippet.

Ahhoz, hogy biztonságban legyen, visszaállíthatja a rendszerindító jelzőt is (amelyre a Wikipedia szerint még mindig szükség van néhány számítógépen) aa paranccsal.

Tekintse meg a megjegyzést, hogy mi a teendő, ha a swap partíciója így van.

Most már nyilvánvalónak kell lennie, hogy miért javasolják az emberek egy élő CD használatát. ; -)

2. lépés Ahogy afdisk hasznos módon emlékezteti Önt, a folytatás előtt újra be kell töltenie a partíciós táblát. A legbiztonságosabb az egyszerű újraindítás; de apartprobe vagykpartx (további információ) használatával is használható.

3. lépés Miután a partíció átméretezése és a partíciós tábla újratöltése után egyszerűen aresize2fs parancsfájl futtatása a fájlrendszeren, akkor ezt akkor is elvégezheti, ha root partícióként van telepítve.

Példa:

$ sudo resize2fs /dev/sda1
    
válasz adott Søren Løvborg 06.04.2012 16:23
forrás
109

Lehetőség van egy ext4 fájlrendszer on-line átméretezésére, még akkor is, ha ez a root partíció. Használja aresize2fs parancsot.

sudo resize2fs /dev/sda1

EDIT: Az online zsugorodás nem megengedett:

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
    
válasz adott CodeAddict 02.03.2012 11:50
forrás
23

Egy könnyebb megoldás - használjagrowpart <device> <partition>:

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

Mint mindig, készítsen biztonsági másolatot a partíciós tábla (sfdisk -d /dev/xvda > partition_bak.dmp) csak abban az esetben.

    
válasz adott STRML 18.07.2017 15:26
forrás
8

A GParted kifejezést is használhatja - mindaddig, amíg az átméretezett partíció nem az, amelyet elindítottál - egyébként azt javaslom, hogy az élő CD lehetőség kissé könnyebb az újszülöttek számára.

GParted alapvetően az összes lépést tartalmazza - csak GUI alapúan.

    
válasz adott leatherjacket 30.09.2012 13:34
forrás
8

Igen, az online gyökérpartíció csökkentése / áthelyezése / növelése újraindítás nélkül (nem livecd, sem usbkey): forduljon ehhez a válaszhoz . Nagyon jól írható és könnyen követhető, bár elég hosszú és egy kicsit kockázatos. Tehát ha csak ext4 partícióját szeretné bővíteni, akkor ragaszkodhat a hagyományosresize2fs megoldásokhoz.

Az általános megoldás, amit én kérek, mindenféle dedikált vagy VPS megoldásra fog működni.

TLDR; ez a megoldás apivot_root -ratmpfs -ra vonatkozik, így biztonságosanumount biztonságban tudod a root partíciódat élni és hegedülni vele. Ha kész, akkorpivot_root újra az új root partícióra.

Ez nagyjából bármilyen manipulációt tesz lehetővé a root fájlrendszeren (mozgatni, megváltoztatni a fájlrendszert, megváltoztatni a fizikai eszközt ...).

Nincs szükség újraindításra a folyamatban, és ez a engedélyezi aresize2fs korlátozásának megkerülésével ext4 partíciókat.

Én ezt személyesen használtam, és nagyon jól működik a debian rendszeren is, ezért az Ubuntu-n kell dolgoznia. Nagyon meglepődtem, hogy nem látom ezt a mélyreható megoldást egy kicsit többet a stackexchange weboldalak számos kérdésével, amely ugyanazt a problémát tárgyalja.

Megjegyzés: Természetesen, ha meg szeretné növelni a partíciót, egy egyszerűresize2fs elég lesz, amint azt számos helyen és más válaszokban megjegyeztük.

    
válasz adott vaab 01.02.2016 03:08
forrás
5

Az ext4 gyökérpartíció átméretezése egy élő rendszerre, a gyökér csatolásakor.

[root@habib 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.

[root@habib i686]# 
    
válasz adott CDR 04.12.2012 23:40
forrás
1

Csak sikerült ezt végrehajtani anélkül, hogyumount,pivot_root, vagy a fő partíció ideiglenes eltávolításával az Ubuntu 16.04, 4.4.0 kernel parted 3.2-es verzióját használnám. Óvatosan mindent megtettem egy virtuális konzolról, ahol a hálózatépítés le van tiltva, és előre elkészített egy pillanatfelvételt, de a pillanatfelvételre nem volt szükség, így az SSH-n keresztül és a futási szintek módosítása nélkül is ugyanúgy sikerült. >

A partíció méretének meghatározása:parted /dev/sda1 print | egrep "Disk.*GB"

Opcionálisan többfelhasználós módra kapcsolódhat hálózat nélkül (konzolon, nem SSH-n keresztül):

runlevel     # remember the original runlevel
init 2

Opcionálisan VM pillanatképet készítsen óvatosnak.

Partíció átméretezése:

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

A fájlrendszer átméretezése:resize2fs /dev/sda1

Ha valami rosszul működik, itt visszaállíthatja pillanatképét. Ha minden rendben ment, akkor térjen vissza a normál futási szinthez (fent kapott érték) - általában 5:init 5. Talán jobb lenne teljes újraindulni ezen a ponton, hogy megbizonyosodjon róla, hogy minden rendben megtörténik (későbbi dátum / ntp kérdésem volt).

    
válasz adott Roger Dueck 14.07.2017 02:09
forrás
0

Mint korábban említettük:

  • Élő verzióból történő kiterjesztés lehetséges (nincs nehézség, mivel a rendszerindítási szakasz nem mozgatható)

  • az élő root partíció csökkentését külső rendszertöltő eszközről kell végrehajtani (boot az élő rendszer cd / usb-stick-ből), mintha bármilyen hiba, hiba lenne. újraindul, és végül nem tud megfelelően indítani.

Mindenféle "de én csináltam és működik" tiszta szerencse.

    
válasz adott ascervera 10.01.2014 22:58
forrás
0

Kövesse az alábbi lépéseket.

  1. nyitott terminál mint superusersu
  2. futtassaparted
  3. írja be ap -ot az elérhető partíciók megtekintéséhez
  4. azonosítsa a gyökér partíció számát (pl .: 'sda 3' jelenti a 3-as számot), és töröl egy szomszédos partíciót arm PARTITION NUMBER használatával a szabad terület létrehozásához.
  5. most növelje a gyökérméretet aresizepart ROOT NUMBER beírásával, és szükség esetén indítsa újra a rendszert
  6. Kilépés aparted -ból aexit és apartprobe terminál típusában, majd nyomja meg az enter billentyűt (ez újraindítás után is elvégezhető)
  7. végre futtassa aresize2fs /dev/sda PARTITION NUMBER -ot, és élvezze a tágas gyökérpartíciót.
válasz adott Gurunadha Reddy 13.09.2017 22:22
forrás
0

Szeretnék kiterjeszteni a @ Søren Løvborg válaszára: a partíció kiterjesztése egy swap partícióra.

Először a meghajtó elrendezését meghosszabbítva:

$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

Tehát az sda1-t ki kell terjeszteni a lemez végén lévő szabad helyre, de a swap partíció közöttük van. Így teheti meg:

Először le kell tiltani a swapot. Ellenőrizze, hogy mennyi felhasználásra kerül, és kikapcsolhatja.

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

A swap itt nem használatos, így kikapcsolhatjuk

$sudo swapoff /dev/sda2

Most megváltoztatjuk a partíciós táblát:

$sudo fdisk /dev/sda

(Megjegyzés: ha az első partíció a 2048 helyett a 63-as szektorban kezdődik, akkor hozzá kell adnia a-c=dos) beállítást

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): 122                                                                  42941

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

Megjegyzés: Az sda1 mérete a szektorok teljes összege a swap partíció szektorméretével csökkentve: 14335999-2093058 = 12242941

Ahogy az fdisk megemlíti: a rendszermag továbbra is használja a régi partíciós táblát, így újra be kell töltenünk.

$partprobe

Most kell resize2fs-t futtatnunk az sda1-ről (ne felejtsük el!)

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

A dolgok még nem értek véget. Amint azt valószínűleg észrevette, az sda2 Linux-típusú (Ext4) típusú partíciós. Valamilyen oknál fogva az fdisk nem tudja kiválasztani a típust. Ezért acfdisk

használatával váltakozzunk

$ sudo cfdisk

Válassza az sda2 értéket, és változtassa meg a82 Linux swap / Solaris értéket, és győződjön meg róla, hogy írja (írja be a yes -t a megerősítéshez)

Most újra tudjuk aktiválni a swapot

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

És végül kapcsolja be:

$swapon /dev/sda2

Csak annyit kell tennünk, hogy frissítjük az fstab-ot a swap partíció automatikus csatolására a

$sudo nano /etc/fstab

És módosítsa a swap partíció UUID-jét a fenti kimenetre:

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

Most minden rendben van, és problémamentesen újraindíthatja.

    
válasz adott wouter205 07.09.2018 08:58
forrás