Πρόσφατα μου ανατέθηκε το task να μεγαλώσω ένα partition σε ένα vm. Μια χαρά λέω, πάμε. Τα είχα υπολογίσει όμως χωρίς τον ξενοδόχο..ο οποίος είχε κάνει την εγκατάσταση ΧΩΡΙΣ lvm οπότε το μόνο που έμενε ήταν το live resize...
Και πως γίνεται αυτό με ρωτάτε??
Ω ναι ... πρέπει να σβηστεί το partition και να ξαναγραφτεί..
αρχίζουμε κοιτάζοντας την υπάρχουσα κατάσταση:
# fdisk /dev/sda
Command (m for help): p
Disk /dev/sda: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 cylinders, total 251658240 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
Disk identifier: 0x000d11b8
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 100663295 50330624 83 Linux
/dev/sda2 100665342 104855551 2095105 5 Extended
/dev/sda5 100665344 104855551 2095104 82 Linux swap / Solaris
Σβήνουμε τα partitions από το partition table
Command (m for help): d
Partition number (1-5): 1
Command (m for help): d
Partition number (1-5): 2
τσεκάρουμε και όντως έχουν σβηστεί
Command (m for help): p
Disk /dev/sda: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 cylinders, total 251658240 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
Disk identifier: 0x000d11b8
Device Boot Start End Blocks Id System
Φτιάχνουμε το νέο partition
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-251658239, default 2048): 2048
Last sector, +sectors or +size{K,M,G} (2048-251658239, default 251658239): 247468030
αν προσέξετε έχω αφήσει 251658239 - 247468030 = 4190209 sectors, το οποίο χοντρικά είναι 2G
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/sda1 2048 247468030 123732991+ 83 Linux
Πάμε τώρα να φτιάξουμε και το extended partition στο οποίο μέσα θα είναι και το ..swap (μη με ρωτάτε γιατί...)
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): e
Partition number (1-4, default 2): 2
First sector (247468031-251658239, default 247468031):
Using default value 247468031
Last sector, +sectors or +size{K,M,G} (247468031-251658239, default 251658239):
Using default value 251658239
Command (m for help): p
Disk /dev/sda: 128.8 GB, 128849018880 bytes
Device Boot Start End Blocks Id System
/dev/sda1 2048 247468030 123732991+ 83 Linux
/dev/sda2 247468031 251658239 2095104+ 5 Extended
Και τέλος φτιάχνουμε και το μελλοντικό swap
Command (m for help): n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
Adding logical partition 5
First sector (247470079-251658239, default 247470079):
Using default value 247470079
Last sector, +sectors or +size{K,M,G} (247470079-251658239, default 251658239):
Using default value 251658239
Ιδού το νέο partition table
Command (m for help): p
Disk /dev/sda: 128.8 GB, 128849018880 bytes
Device Boot Start End Blocks Id System
/dev/sda1 2048 247468030 123732991+ 83 Linux
/dev/sda2 247468031 251658239 2095104+ 5 Extended
/dev/sda5 247470079 251658239 2094080+ 83 Linux
αλλάζουμε το partition type στο swap
Command (m for help): t
Partition number (1-5): 5
Hex code (type L to list codes): 82
Changed system type of partition 5 to 82 (Linux swap / Solaris)
Command (m for help): p
Disk /dev/sda: 128.8 GB, 128849018880 bytes
Device Boot Start End Blocks Id System
/dev/sda1 2048 247468030 123732991+ 83 Linux
/dev/sda2 247468031 251658239 2095104+ 5 Extended
/dev/sda5 247470079 251658239 2094080+ 82 Linux swap / Solaris
βάζουμε το boot flag στο 1ο partition
Command (m for help): a
Partition number (1-5): 1
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 247468030 123732991+ 83 Linux
/dev/sda2 247468031 251658239 2095104+ 5 Extended
/dev/sda5 247470079 251658239 2094080+ 82 Linux swap / Solaris
και τέλος γράφουμε τις αλλαγές στον δίσκο
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.
όπως βλέπετε οι αλλαγές δεν είναι ορατές από τον kernel οπότε πρέπε να δοκιμάσετε είτε με το partprobe, είτε με το kpartx. Αν κανένα από τα δύο δεν πιάσει, απλά κάνετε reboot και μπαίνετε σε single user mode
Αφού καταφέραμε να μεγαλώσουμε το partition, πρέπει τώρα να μεγαλώσουμε και το filesystem μέσα σε αυτό. Ευτυχώς για εμάς αυτό το κάνει το resize2fs
# resize2fs /dev/sda1
resize2fs 1.42.9 (4-Feb-2014)
Filesystem at /dev/sda1 is mounted on /; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 8
The filesystem on /dev/sda1 is now 30933247 blocks long.
# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 ext4 117G 20G 92G 18% /
none tmpfs 4.0K 0 4.0K 0% /sys/fs/cgroup
udev devtmpfs 991M 12K 991M 1% /dev
tmpfs tmpfs 201M 488K 200M 1% /run
none tmpfs 5.0M 0 5.0M 0% /run/lock
none tmpfs 1001M 0 1001M 0% /run/shm
none tmpfs 100M 0 100M 0% /run/user
===================
Για το τέλος αφήσαμε το swap:
# free -m
total used free shared buffers cached
Mem: 2001 592 1409 0 62 459
-/+ buffers/cache: 71 1930
Swap: 0 0 0
όντως δεν υπάρχει swap αφού δεν το φτιάξαμε οπότε πάμε να το "φορμάρουμε"
# mkswap /dev/sda5
Setting up swapspace version 1, size = 2094076 KiB
no label, UUID=8d78c3dc-5ed9-42c1-a04f-050b99b8a39d
είμαστε έτοιμοι και χωρίς απώλειες ελπίζω!