====== VM disk Expansion LVM with XFS/EXT4 =======
Expand the original disk or add a second vdisk from **Infrastructure Client**.\\
If you are on a kernel newer or equal to 2.6.32 then you can issue the command
echo "1" > /sys/block/sdX/device/rescan
to get the new size w/o reboot.
In case you cant see the "disk" do this:
echo "- - -" > /sys/class/scsi_host/host0/scan
Do this for all host0,1,2 etc.
or
echo "1" > /sys/class/scsi_device/2\:0\:0\:0/device/rescan
whereby after scsi_device you need to find the correct scsi device
or
apt-get install scsitools
rescan-scsi-bus
At the end it should list that a new device was found, note down the name/number!
echo '1' > /sys/class/scsi_disk/32\:0\:1\:0/device/rescan
IMPORTANT: Be sure to replace the 32\:0\:1\:0 with the appropriate disk for your purposes.
**EXPAND ORIGINAL DISK**
Create an additional partition on the free space, say you increased the existing disc
from 8GB to 15GB. The partition type is 8e.
cfdisk /dev/sda or cfdisk /dev/sdb
**RESIZE ORIGINAL DISK**
Resize the already existing partition, e.g. /dev/sda4 to the newly created free partition.
cfdisk /dev/sda or cfdisk /dev/sdb
Now resize the Physical Volume to the new size
pvresize /dev/sda4
extend the logical volume
lvextend -l +100%FREE /dev/data-www-vg/lvol-datawww
next resize the file system
resize2fs -p /dev/data-www-vg/lvol-datawww
If you get a error:
GPT PMBR size mismatch (2362232011 != 2516582399) will be corrected by w(rite).
run this command:
parted -l
and when asked to Fix/Cancel? type **F**
# for example if the new partition is /dev/sda3
# create logical disk /dev/sda3 of type 8e (Linux LVM)
# make disk visible to linux
partprobe
pvcreate /dev/sda3
now you have to extend the volgroup. use ''lvdisplay'' to see which is the name of the group,\\
in this example it's **base**
lvdisplay
--- Logical volume ---
LV Name /dev/base/root
VG Name base
LV UUID 8cL9Qd-ksIn-1Ve2-94ym-gTrW-8jet-91tnah
LV Write Access read/write
LV Status available
# open 1
LV Size 5.00 GB
Current LE 1280
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:0
--- Logical volume ---
LV Name /dev/base/tmp
VG Name base
LV UUID mEnEXY-UtOf-P439-MDpg-BlT3-n8hI-Q6KIfm
LV Write Access read/write
LV Status available
# open 1
LV Size 1.00 GB
Current LE 256
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:1
--- Logical volume ---
LV Name /dev/base/swap
VG Name base
LV UUID fm2A23-FPb3-itQa-Fvf2-QQmj-giwI-j8FZAf
LV Write Access read/write
LV Status available
# open 2
LV Size 2.00 GB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:2
--- Logical volume ---
LV Name /dev/base/data
VG Name base
LV UUID GZKUbb-hZn2-igXN-3dxj-TNz9-1C15-I8u8MR
LV Write Access read/write
LV Status available
# open 1
LV Size 1.52 GB
Current LE 389
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:3
and we assume the new partition is /dev/sda3
vgextend base /dev/sda3
check with ''pvscan'' if the extend was successfull
pvscan
Now we extend the "data" partition to 11.5 GB. See man lvextend for other options\\
11.5 G is the NEW total size of the disk we want to extend!
Extend the LV to use all free space
lvextend -l +100%FREE /dev/base/data
Extend with 20G
lvextend -L +20G /dev/base/data
now we have to grow the filesystem /data
xfs_growfs /data
===== FOR EXT3/4 =====
Extend filesystem to use all free space
vgextend base /dev/sda3
lvextend -l +100%FREE /dev/base/root
Check that the filesystem is ok, **but only if the FS is unmounted**
fsck.ext4 -f /dev/base
Now resize the filesystem
Debian System:
resize2fs -p /dev/base/root
Centos/Fedora System:
resize4fs -p /dev/base/root
===== For swap =====
swapoff /dev/base/swap
lvextend -L 3.9G /dev/base/swap
mkswap /dev/base/swap
swapon /dev/base/swap
free
Check if filesystems are ok, and only then release the snapshot
Fix issue with swap
* swapoff: /dev/dm-1: swapoff failed: Cannot allocate memory
[[https://unix.stackexchange.com/questions/321675/unable-to-swapoff-but-enough-physical-memory-is-available/472012|Swapoff Cannot Allocate Memory]]
[[https://leizhilong.github.io/blog/2018-11-12-case-study-swapoff-cannot-allocate-memory/|Swapoff Cannot Allocate Memory]]
======= Create LVM =======
Find all LVM VG
vgscan
Create Physical Volumes
Der Befehl pvcreate legt den VGDA Block auf dem PV an. Er muss für jedes PV ausgeführt werden, bevor es von LVM verwendet werden kann:
pvcreate /dev/hda3
Volume Groups anlegen
Jetzt legen wir mit 'vgcreate ' unsere Volume Group an und nennen sie "vg01":
vgcreate vg01 /dev/hda3 /dev/hdb2
Logische Volumes anlegen.
Hier legen wir jetzt alle unsere logischen Volumes an. Als Namen verwenden wir, etwas fantasielos, lvol1, lvol2 und lvol3. Dabei bedienen wir uns mit dem Plattenplatz auf Volume Group vg01, der einzigen Volume Group in diesem Beispiel. Es ist offensichtlich, dass wir hier nicht mehr Plattenplatz "verteilen" können, als wir bei vgcreate in die Volume Group "hineingesteckt" haben, und zwar in Form der beiden Partitionen hda3 und hdb2. (lvcreate -L -n ).
lvcreate -l +100%FREE -n lvol1 vg01
oder wir könne die Größen angeben! (1500M)
lvcreate -L 1500M -n lvol1 vg01
Filesysteme anlegen
Ab jetzt können die logischen Partitionen, genau so wie gewöhnliche Partitionen, über Ihre Device Files angesprochen werden. Gewöhliche Partitionen werden mit /dev/sd[a-z]* oder /dev/hd[a-z]* bezeichnet; Logische Volumes werden mit /dev/VolumeGroupName/LogicalVolumeName angesprochen. Mit mke2fs legen wir die ext2 Filesysteme an:
mkfs.ext4 /dev/vg01/lvol1
fstab anpassen
Damit die neuen Filesysteme nun bei jedem Systemstart automatisch gemountet werden, müssen wir sie in die Datei /etc/fstab eintragen (siehe 'man fstab'). In unserem Scenario sehen die zusätzlichen Einträge wie folgt aus:
/dev/vg01/lvol1 /usr ext4 defaults 1 2
===== Links =====
[[http://www.thegeekstuff.com/2010/08/how-to-create-lvm/|How To Create LVM Using vgcreate, lvcreate, and lvextend lvm2 Commands]]\\
[[https://unix.stackexchange.com/questions/47380/where-does-lvm-store-data|Where does LVM store data?]]\\
[[http://www.howtoforge.com/linux_lvm|A Beginner's Guide To LVM]]\\
[[http://wiki.gentoo.org/wiki/LVM#LV_.28Logical_Volume.29|LVM]] VERY GOOD SOURCE!\\
[[http://www.funtoo.org/LVM_Fun#Physical_volumes_creation|LVM Fun]] VERY GOOD SOURCE!\\
[[http://serverfault.com/questions/223361/how-to-recover-logical-volume-deleted-with-lvremove|How to recover logical volume deleted with lvremove]]\\
[[http://www.novell.com/support/kb/doc.php?id=3803380|LVM Volume Group Shows "unknown device"]]
[[https://www.tutorialspoint.com/unix_commands/pvresize.htm|pvresize - Unix, Linux Command]]
http://www.linuxhaven.de/dlhp/HOWTO-test/DE-LVM-HOWTO-2.html\\
http://www.howtogeek.com/howto/40702/how-to-manage-and-use-lvm-logical-volume-management-in-ubuntu/