Immer wieder stellt man fest, dass für einige LVM noch Hexenwerk ist. Sofern man allerdings noch nicht mit BTRfs oder vergleichbaren Filesystemen spielt, ist LVM immernoch sehr attraktiv. Denn man erhöht die Flexibilität bei Erweiterungen von Mountpoints und Verwaltung der physikalischen Festplatten. Es gibt sicherlich noch viele weitere Vorteile, die will ich aber nicht alle aufzählen. 🙂
Erweiterung von Mointpoints
Sofern noch Platz in der Volumegroup ist, kann direkt beim lvextend
loslegen. Herausfinden könnt ihr das über:
root@servername:~# vgs VG #PV #LV #SN Attr VSize VFree random-vg-name 1 2 0 wz--n- 149.76g 8.00m
Hier wären nun nur 8MB frei.
Erweitern des VGs
Nehmen wir an wir haben eine neue Festplatte eingebaut - Virtuell oder Physikalisch spielt natürlich keine Rolle.
Nun müssen wir herausfinden, wie die neue Festplatte im System heißt, dazu können wir zum einen unter dmesg
oder in die /proc/partitions
schauen:
dmesg | tail -n 7 [17986986.088284] sd 3:0:0:0: [sdb] 104857600 512-byte logical blocks: (53.6 GB/50.0 GiB) [17986986.088292] sd 3:0:0:0: Attached scsi generic sg2 type 0 [17986986.088302] sd 3:0:0:0: [sdb] Write Protect is off [17986986.088304] sd 3:0:0:0: [sdb] Mode Sense: 61 00 00 00 [17986986.088322] sd 3:0:0:0: [sdb] Cache data unavailable [17986986.088323] sd 3:0:0:0: [sdb] Assuming drive cache: write through [17986986.104055] sd 3:0:0:0: [sdb] Attached SCSI disk # Ergebnis ist "sdb" cat /proc/partitions
Bei neuen Partitionen ist hier das Device ohne "Nummer" zu suchen.
In unserem Fall ist es also das Device sdb
, dieses partitionieren wir. Auch hier gibt es verschiedenste Ansichten... aber ich lege eine saubere Partition an.
parted /dev/sd[n] ## Buchstabe der Festplatte/Partition angeben GNU Parted 2.3 Using /dev/sdb Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) mklabel msdos Error: Expecting a partition type. (parted) mkpart primary 0% 100% (parted) set 1 lvm on (parted) print Model: VMware Virtual disk (scsi) Disk /dev/sdb: 53.7GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 1049kB 53.7GB 53.7GB primary lvm (parted) quit
Nun ist das Device vorbereitet und wir können es der Volumegroup hinzufügen.
Erstellen des physical devices
Dieser Schritt wird bei vgextend
oder vgcreate
gleich mit erledigt. Der Vollständigkeit halber, erwähne ich es trotzdem kurz. Mit pvcreate machen wir aus der eben angelegten Partion sd[n]1
ein physical device.
# Hilfeausgabe root@servername:~# pvcreate --help pvcreate: Initialize physical volume(s) for use by LVM pvcreate [--norestorefile] [--restorefile file] [-d|--debug] [-f[f]|--force [--force]] [-h|-?|--help] [--labelsector sector] [-M|--metadatatype 1|2] [--pvmetadatacopies #copies] [--metadatasize MetadataSize[bBsSkKmMgGtTpPeE]] [--dataalignment Alignment[bBsSkKmMgGtTpPeE]] [--dataalignmentoffset AlignmentOffset[bBsSkKmMgGtTpPeE]] [--setphysicalvolumesize PhysicalVolumeSize[bBsSkKmMgGtTpPeE] [-t|--test] [-u|--uuid uuid] [-v|--verbose] [-y|--yes] [-Z|--zero {y|n}] [--version] PhysicalVolume [PhysicalVolume...] root@servername:~# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created root@servername:~# pvs PV VG Fmt Attr PSize PFree /dev/sda5 random-vg-name lvm2 a-- 149.76g 8.00m /dev/sdb1 lvm2 a-- 50.00g 50.00g
Erweitern der Volumegroup
Nun können wir die Volumegroup erweitern:
root@servername:~# vgextend --help vgextend: Add physical volumes to a volume group vgextend [-A|--autobackup y|n] [--restoremissing] [-d|--debug] [-f|--force] [-h|--help] [-t|--test] [-v|--verbose] [--version] [ PHYSICAL DEVICE OPTIONS ] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...] root@servername:~# vgextend random-vg-name /dev/sdb1 Volume group "random-vg-name" successfully extended root@servername:~# vgs VG #PV #LV #SN Attr VSize VFree random-vg-name 2 2 0 wz--n- 199.75g 50.00g root@servername:~# pvs PV VG Fmt Attr PSize PFree /dev/sda5 random-vg-name lvm2 a-- 149.76g 8.00m /dev/sdb1 random-vg-name lvm2 a-- 50.00g 50.00g
Erweitern des Logical Volumes (LV) und des Dateisystems
Nun muss das LV und das Filesystem natürlich noch erweitert werden. Dies werde ich ebenfalls in zwei Schritten durchführen. Bei lvextend
kann über den Schalter -r
das Filesystem gleich mit erweitert werden.
root@servername:~# lvs LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert root random-vg-name -wi-ao--- 141.75g swap_1 random-vg-name -wi-ao--- 8.00g root@servername:~# lvextend --help lvextend: Add space to a logical volume lvextend [-A|--autobackup y|n] [--alloc AllocationPolicy] [-d|--debug] [-f|--force] [-h|--help] [-i|--stripes Stripes [-I|--stripesize StripeSize]] {-l|--extents [+]LogicalExtentsNumber[%{VG|LV|PVS|FREE|ORIGIN}] | -L|--size [+]LogicalVolumeSize[bBsSkKmMgGtTpPeE]} [-m|--mirrors Mirrors] [--nosync] [--use-policies] [-n|--nofsck] [--noudevsync] [-r|--resizefs] [-t|--test] [--type VolumeType] [-v|--verbose] [--version] LogicalVolume[Path] [ PhysicalVolumePath... ] root@servername:~# lvextend -L +20G /dev/random-vg-name/root (ein -r erweitert gleich das Filesystem) Extending logical volume root to 161.75 GiB Logical volume root successfully resized
Anzeigen des genutzten Filesystems:
root@servername:~# mount /dev/mapper/random-vg-name--02--vg-root on / type **ext4** (rw,errors=remount-ro) <<---- EXT4 ... # Ausgabe gekürzt root@servername:~# resize2fs /dev/random-vg-name/root resize2fs 1.42.9 (4-Feb-2014) Filesystem at /dev/random-vg-name/root is mounted on /; on-line resizing required old_desc_blocks = 9, new_desc_blocks = 11 The filesystem on /dev/random-vg-name/root is now 42402816 blocks long. root@servername:~# df -h Filesystem Size Used Avail Use% Mounted on udev 3.9G 4.0K 3.9G 1% /dev tmpfs 799M 960K 798M 1% /run /dev/dm-0 160G 119G 33G 79% / none 4.0K 0 4.0K 0% /sys/fs/cgroup none 5.0M 0 5.0M 0% /run/lock none 3.9G 0 3.9G 0% /run/shm none 100M 0 100M 0% /run/user /dev/sda1 236M 70M 154M 32% /boot root@servername:~# vgs VG #PV #LV #SN Attr VSize VFree random-vg-name 2 2 0 wz--n- 199.75g 30.00g
Wir haben das Filesystem bzw. das LV nicht um die volle Kapazität erweitert, falls diese irgendwo anders untergebracht werden sollen. Man könnte bei lvextend
auch alle Extents zuweisen lvextend -l 100%FREE /dev/random-vg-name/root
Ich hoffe dieses kleine HowTo hilft euch etwas weiter. Gerne könnt ihr Fragen oder Anregungen in den Kommentaren posten!
Grüße
Schreibe einen Kommentar