Linux kann online, ohne reboot, erkennen, wenn eine Festplatte vergrössert wurde. Gerade für VMware oder auch CloudStack ist das hilfreich.
Für neue Systeme: Man vermeide es, eine Linux LVM PV als „logisches Laufwerk“ in einer erweiterten Partition (Extended Partition) zu erzeugen. Besser, man legt das PV als letzte „normale“ Partition auf der Festplatte an!
Inhaltsverzeichnis
Festplatte „physisch“ vergrössern
Zuerst wird die Festplatte „physisch“ vergrössert. Wie das geht, ist out-of-scope für diese Beschreibung.
Rescan
Um den Kernel die neue Plattengrösse herausfinden zu lassen, muss eine 1
an die rescan
„Datei“ im /sys/class/scsi_disk
Ordner gesendet werden. Es mag mehrere Unterordner geben.
local@allelv-vh01-stage:~$ ls /sys/class/scsi_disk/
32:0:0:0
Auf dem System gibt es nur 1 Festplatte und somit nur einen Unterordner.
local@allelv-vh01-stage:~$ echo 1 | sudo dd of=/sys/class/scsi_disk/32\:0\:0\:0/device/rescan
0+1 records in
0+1 records out
2 bytes copied, 0.000580769 s, 3.4 kB/s
Im /var/log/syslog
sieht man, das der Kernel den Befehl empfangen hat:
Aug 28 12:00:24 allelv-vh01-stage kernel: [4814229.136379] sd 32:0:0:0: [sda] 356515840 512-byte logical blocks: (183 GB/170 GiB)
Aug 28 12:00:24 allelv-vh01-stage kernel: [4814229.136583] sda: detected capacity change from 128849018880 to 182536110080
Partition vergrössern
Falls das System „legacy“ Partitionen hat, so muss die letzte Partition vergrössert werden. Hierzu muss die Partition „gelöscht“ und mit identischem Start Block neu angelegt werden.
Falls eine „Extended Partition“ „im Weg“ ist, so kann man versuchen, statt dessen eine weitere primäre Partition anzulegen.
local@allelv-vh01-stage:~$ sudo fdisk /dev/sda
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): n
Partition type
p primary (2 primary, 1 extended, 1 free)
l logical (numbered from 5)
Select (default p): p
Selected partition 4
First sector (3500032-356515839, default 3500032): 251656192
Last sector, +sectors or +size{K,M,G,T,P} (251656192-356515839, default 356515839):
Created a new partition 4 of type 'Linux' and of size 50 GiB.
Command (m for help): p
Disk /dev/sda: 170 GiB, 182536110080 bytes, 356515840 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: 0xc1efb381
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 1499135 1497088 731M b W95 FAT32
/dev/sda2 * 1499136 3500031 2000896 977M 83 Linux
/dev/sda3 3502078 251656191 248154114 118.3G 5 Extended
/dev/sda4 251656192 356515839 104859648 50G 83 Linux
/dev/sda5 3502080 3504127 2048 1M 83 Linux
/dev/sda6 3506176 251656191 248150016 118.3G 83 Linux
Partition table entries are not in disk order.
Command (m for help): t
Partition number (1-6, default 6): 4
Partition type (type L to list all types): 8e
Changed type of partition 'Linux' to 'Linux LVM'.
Command (m for help): p
Disk /dev/sda: 170 GiB, 182536110080 bytes, 356515840 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: 0xc1efb381
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 1499135 1497088 731M b W95 FAT32
/dev/sda2 * 1499136 3500031 2000896 977M 83 Linux
/dev/sda3 3502078 251656191 248154114 118.3G 5 Extended
/dev/sda4 251656192 356515839 104859648 50G 8e Linux LVM
/dev/sda5 3502080 3504127 2048 1M 83 Linux
/dev/sda6 3506176 251656191 248150016 118.3G 83 Linux
Partition table entries are not in disk order.
Command (m for help): w
Als Start Sektor wurde 251656192
eingegeben, da die Extended Partitin sda3
einen Sektor vorher, auf 251656191
endet.
Extended → Nur offline!
Falls das System eine „Extended Partition“ und somit ein oder mehrere logische Laufwerke hat, so wird dies u.U. nicht gelingen von Hand. Man boote [Grml][grml] oder ein anderes Rescue System und verwende gparted
.
Partitionstabelle neu lesen
Nachdem die Partitionstabelle von fdisk
neu geschrieben wurde, weiss der Kernel nicht direkt was davon, was durch folgende Meldung gezeigt wird:
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).
local@allelv-vh01-stage:~$ ls -la /dev/sda?
brw-rw---- 1 root disk 8, 1 Jul 3 18:43 /dev/sda1
brw-rw---- 1 root disk 8, 2 Jul 3 18:43 /dev/sda2
brw-rw---- 1 root disk 8, 3 Aug 28 12:11 /dev/sda3
brw-rw---- 1 root disk 8, 5 Aug 28 12:29 /dev/sda5
brw-rw---- 1 root disk 8, 6 Aug 28 12:29 /dev/sda6
partprobe
hilft hier:
local@allelv-vh01-stage:~$ sudo partprobe /dev/sda
local@allelv-vh01-stage:~$ ls -la /dev/sda?
brw-rw---- 1 root disk 8, 1 Jul 3 18:43 /dev/sda1
brw-rw---- 1 root disk 8, 2 Jul 3 18:43 /dev/sda2
brw-rw---- 1 root disk 8, 3 Aug 28 12:11 /dev/sda3
brw-rw---- 1 root disk 8, 4 Aug 28 12:33 /dev/sda4
brw-rw---- 1 root disk 8, 5 Aug 28 12:33 /dev/sda5
brw-rw---- 1 root disk 8, 6 Aug 28 12:33 /dev/sda6
LVM Volume Group (VG) vergrössern
Falls nur die Partition vergrössert wurde, so muss die bestehende Physical Volume (PV) vergrössert werden:
local@allelv-vh01-stage:~$ sudo lvm pvresize /dev/sda6
Physical volume "/dev/sda6" changed
1 physical volume(s) resized / 0 physical volume(s) not resized
Falls eine neue Partition angelegt wurde, so ist eine weitere Physical Volume anzulegen und die Volume Group zu erweitern.
local@allelv-vh01-stage:~$ sudo lvm pvcreate /dev/sda4
Physical volume "/dev/sda4" successfully created
local@allelv-vh01-stage:~$ sudo vgextend system /dev/sda4
Volume group "system" successfully extended