Setting up Logical Volumes with LVM: Difference between revisions
(Mention -L option for setup-disk) |
(replace /etc/init.d with rc-service) |
||
(11 intermediate revisions by 8 users not shown) | |||
Line 3: | Line 3: | ||
This document how to create logical volumes in Alpine using lvm2. | This document how to create logical volumes in Alpine using lvm2. | ||
LVM is collection of programs that allow | LVM is collection of programs that allow physical disks to be reassembled into "logical" disks that can be shrunk or expanded as data needs change. | ||
In this document we will use a [[Setting up a software RAID array|software RAID1 device]] as physical storage for our logical volumes. We will set up a swap partition and a data partition for [[Setting up a basic vserver|vservers ]] | |||
=== Installing LVM software === | === Installing LVM software === | ||
First we need to load the kernel driver, ''dm-mod'' | First we need to load the kernel driver, ''dm-mod'' | ||
Line 13: | Line 14: | ||
We also want it to be loaded during next reboot. | We also want it to be loaded during next reboot. | ||
{{Cmd|echo dm-mod >> /etc/modules}} | {{Cmd|echo dm-mod >> /etc/modules-load.d/dm.conf}} | ||
We also need the userspace programs. | We also need the userspace programs. | ||
Line 20: | Line 21: | ||
=== Preparing the physical volumes === | === Preparing the physical volumes === | ||
First we need to tell LVM | First we need to tell LVM the partition is available as a physical volume and can be added to a volume group. In this example we use a software raid array as physical volume. | ||
{{Cmd|pvcreate /dev/md0}} | {{Cmd|pvcreate /dev/md0}} | ||
Line 29: | Line 30: | ||
{{Cmd|vgcreate vg0 /dev/md0}} | {{Cmd|vgcreate vg0 /dev/md0}} | ||
If we | If we need more space later, we can add additional physcal volumes with ''vgextend''. All physcal disks/partitions added need to be prepared with ''pvcreate''. | ||
=== Creating Logical volumes === | === Creating Logical volumes === | ||
Line 38: | Line 39: | ||
=== Display Logical Volumes === | === Display Logical Volumes === | ||
You can now | You can now see the logical volumes with the lvdisplay utility. | ||
lvdisplay | lvdisplay | ||
Line 85: | Line 86: | ||
We want lvm to init the logical volumes during boot. There is a boot service named ''lvm'' to do this. If your volumes are on raid, make sure that ''/etc/init.d/lvm'' is started after mdadm-raid. | We want lvm to init the logical volumes during boot. There is a boot service named ''lvm'' to do this. If your volumes are on raid, make sure that ''/etc/init.d/lvm'' is started after mdadm-raid. | ||
{{Cmd|rc-update add lvm}} | {{Cmd|rc-update add lvm boot}} | ||
on Alpine Linux 1.8 or earlier: | |||
{{Cmd|rc_add -s 12 -k lvm}} | {{Cmd|rc_add -s 12 -k lvm}} | ||
Line 111: | Line 112: | ||
{{Cmd|mkfs.xfs /dev/vg0/vservers}} | {{Cmd|mkfs.xfs /dev/vg0/vservers}} | ||
Add the mount information to your /etc/fstab: NOTE:tagxid may cause this not | Add the mount information to your /etc/fstab: NOTE:tagxid may cause this to not mount. Try this by hand and check dmesg to see if there are any errors: | ||
/dev/vg0/vservers /vservers xfs noatime,tagxid 0 0 | /dev/vg0/vservers /vservers xfs noatime,tagxid 0 0 | ||
Note that the ''tagxid'' option is specific for setting up vserver [http:// | Note that the ''tagxid'' option is specific for setting up vserver [http://wiki.linux-vserver.org/Disk_Limits_and_Quota disk limits]{{insecure url|Connection refused on HTTPS port}} so you might not want it. | ||
The ''noatime'' option increases performance, but you will no longer know when files were last accessed. | |||
=== Starting localmount and swap === | === Starting localmount and swap === | ||
Line 122: | Line 124: | ||
{{Cmd|mount /vservers}} | {{Cmd|mount /vservers}} | ||
We need to run ''localmount'' during boot, but it has to happen '''after''' lvm. In Alpine Linux 1.9 and later, this should not be needed | |||
{{Cmd|rc-update add localmount boot}} | {{Cmd|rc-update add localmount boot}} | ||
on Alpine Linux 1.8 or earlier: | |||
{{Cmd|rc_add -s 14 -k localmount}} | {{Cmd|rc_add -s 14 -k localmount}} | ||
Line 132: | Line 134: | ||
Start the swap service and make sure it starts during next reboot and that it starts '''after''' lvm. | Start the swap service and make sure it starts during next reboot and that it starts '''after''' lvm. | ||
{{Cmd| | {{Cmd|rc-service swap start | ||
rc-update add swap}} | rc-update add swap}} | ||
on Alpine Linux 1.8 or earlier: | |||
{{Cmd| | {{Cmd|rc-service swap start | ||
rc_add -s 14 -k swap}} | rc_add -s 14 -k swap}} | ||
Line 142: | Line 144: | ||
These resources may be helpful: | These resources may be helpful: | ||
* the [ | * the [https://tldp.org/HOWTO/LVM-HOWTO/commontask.html common tasks] section in the [https://tldp.org/HOWTO/LVM-HOWTO/index.html LVM Howto] | ||
* [[LVM_on_LUKS| Alpine wiki page for LVM on LUKS]] | |||
* [https://wiki.archlinux.org/index.php/LVM Arch wiki page on LVM] | * [https://wiki.archlinux.org/index.php/LVM Arch wiki page on LVM] | ||
* [https://wiki.archlinux.org/index.php/Software_RAID_and_LVM Arch wiki page on RAID and LVM] | * [https://wiki.archlinux.org/index.php/Software_RAID_and_LVM Arch wiki page on RAID and LVM] |
Latest revision as of 10:29, 17 November 2023
This document how to create logical volumes in Alpine using lvm2.
LVM is collection of programs that allow physical disks to be reassembled into "logical" disks that can be shrunk or expanded as data needs change.
In this document we will use a software RAID1 device as physical storage for our logical volumes. We will set up a swap partition and a data partition for vservers
Installing LVM software
First we need to load the kernel driver, dm-mod
modprobe dm-mod
We also want it to be loaded during next reboot.
echo dm-mod >> /etc/modules-load.d/dm.conf
We also need the userspace programs.
apk add lvm2
Preparing the physical volumes
First we need to tell LVM the partition is available as a physical volume and can be added to a volume group. In this example we use a software raid array as physical volume.
pvcreate /dev/md0
Preparing the Volume Group
We can then create a volume group and add the physical volume /dev/md0
vgcreate vg0 /dev/md0
If we need more space later, we can add additional physcal volumes with vgextend. All physcal disks/partitions added need to be prepared with pvcreate.
Creating Logical volumes
In the volume group we can create logical volumes. To create a 1GB volume called swap and a 6GB volume called 'vservers on the volume group vg0 we run
lvcreate -n swap -L 1G vg0 lvcreate -n vservers -L 6G vg0
Display Logical Volumes
You can now see the logical volumes with the lvdisplay utility.
lvdisplay --- Logical volume --- LV Name /dev/vg0/swap VG Name vg0 LV UUID a4NYOi-FQP6-Lj5Q-0TYk-Jjtk-Qxjt-nxeBPn LV Write Access read/write LV Status available # open 0 LV Size 1.00 GB Current LE 256 Segments 1 Allocation inherit Read ahead sectors 0 Block device 253:0 --- Logical volume --- LV Name /dev/vg0/vservers VG Name vg0 LV UUID 16VMmy-7I0s-eeoW-tL2V-JrlN-jM6C-d0wEg0 LV Write Access read/write LV Status available # open 0 LV Size 6.00 GB Current LE 1536 Segments 1 Allocation inherit Read ahead sectors 0 Block device 253:1
Rename Logical Volumes
lvrename /dev/vg0/vservers /dev/vg0/database
Extend Logical Volumes
If you want to add space and the volume has the room for it...
lvextend -L +50G /dev/vg0/vservers
If you want to set the space to a new larger size...
lvextend -L 10G /dev/vg0/vservers
Start LVM during Boot
We want lvm to init the logical volumes during boot. There is a boot service named lvm to do this. If your volumes are on raid, make sure that /etc/init.d/lvm is started after mdadm-raid.
rc-update add lvm boot
on Alpine Linux 1.8 or earlier:
rc_add -s 12 -k lvm
Setting up swap
Now we have our devices in /dev/vg0 and can use them as normal disk paritions. To set up swap:
mkswap /dev/vg0/swap
Add the following line to your /etc/fstab:
/dev/vg0/swap none swap sw 0 0
Setting up /vservers partition
Finally we want to set up an XFS partition for /vservers.
Install xfsprogs.
apk add xfsprogs
Create filesystem on /dev/vg0/vservers.
mkfs.xfs /dev/vg0/vservers
Add the mount information to your /etc/fstab: NOTE:tagxid may cause this to not mount. Try this by hand and check dmesg to see if there are any errors:
/dev/vg0/vservers /vservers xfs noatime,tagxid 0 0
Note that the tagxid option is specific for setting up vserver disk limits 🔓 so you might not want it. The noatime option increases performance, but you will no longer know when files were last accessed.
Starting localmount and swap
Now we can mount our partition.
mount /vservers
We need to run localmount during boot, but it has to happen after lvm. In Alpine Linux 1.9 and later, this should not be needed
rc-update add localmount boot
on Alpine Linux 1.8 or earlier:
rc_add -s 14 -k localmount
Start the swap service and make sure it starts during next reboot and that it starts after lvm.
rc-service swap start rc-update add swap
on Alpine Linux 1.8 or earlier:
rc-service swap start rc_add -s 14 -k swap
More Info on LVM
These resources may be helpful: