This guide is based on an example with two IDE hard disks. It means that you will more than likely need to change the drive, partition names and partition sizes to match your own setup and needs.
If you do a fresh install of Gentoo, you will need to use a bootable CD with
LVM2 support such as a Gentoo LiveCD. You can find the LiveCD for an x86
architecture on our
If you install LVM2 on a currently running system with some spare hard disk
space, you will need to enable the LVM2 module (
Not all 2.4 kernels provided by Gentoo support LVM2!
Our example system has two IDE hard disks and will be partitioned as follows:
OK, time to start...
Follow the handbook, but with the following amendments to chapter
Use
Create a small physical /boot partition (hda1). In this example, /boot will be not managed by LVM2. This partition will contain your bootloader and your kernel(s). A 64MB partition should be well enough for quite a few kernel generations.
Create a swap partition (hda2) and activate it.
# mkswap /dev/hda2 # swapon /dev/hda2
Create a / (root) partition (hda3). If you are interested in trying to put your
root partition under LVM management (which we do not recommend), see the
resources section at the end of this guide for a link to a mini-howto on how to
do this. The size of the root partition need not be large if you will keep
Assuming the /boot, swap and root partitions do not use the whole physical disk, create a fourth partition on this disk and set it to type 8e (Linux LVM). If you have more physical drives you would like to use with LVM, create one partition on each and give them the same type (8e).
Load the LVM2
# modprobe dm-mod
Scan and activate LVM:
(Avoid scanning your cdrom) # mkdir -p /etc/lvm # echo 'devices { filter=["r/cdrom/"] }' >/etc/lvm/lvm.conf # vgscan Reading all physical volumes. This may take a while... No volume groups found(Make any previously set up volume groups available) # vgchange -a y
Prepare the partitions.
# pvcreate /dev/hda4 /dev/hdb1 No physical volume label read from /dev/hda4 Physical volume "/dev/hda4" successfully created No physical volume label read from /dev/hdb1 Physical volume "/dev/hdb1" successfully created
Setup a volume group. A volume group is the result of combining several physical units into a single logical device.
In our example,
(Create a volume group named vg) # vgcreate vg /dev/hda4 /etc/lvm/backup: fsync failed: Invalid argument(Ignore this warning) Volume group "vg" successfully created(Extending an existing volume group) # vgextend vg /dev/hdb1 /etc/lvm/backup: fsync failed: Invalid argument(Ignore this warning, again and later as well) Volume group "vg" successfully extended
Create the logical volumes. Logical volumes are the equivalent of partitions you would create using fdisk in a non LVM2 environment. In our example, we create the following partitions:
| Directory | Size |
|---|---|
Since we are going to use LVM2, we should not worry too much about partition sizes because they can always be expanded as needed.
# lvcreate -L10G -nusr vg Logical volume "usr" created(Further similar messages not displayed) # lvcreate -L5G -nhome vg # lvcreate -L5G -nopt vg # lvcreate -L10G -nvar vg # lvcreate -L2G -ntmp vg(As an example, let's extend a logical volume with 5 extra Gbytes) # lvextend -L+5G /dev/vg/home
Create filesystems on the logical volumes the same way you would on a regular partition. We use ext3 on the logical volumes but any filesystem of your choice will work:
# mke2fs -j /dev/vg/usr # mke2fs -j /dev/vg/home # mke2fs -j /dev/vg/opt # mke2fs -j /dev/vg/var # mke2fs -j /dev/vg/tmp
Mount your partitions as described in the handbook and mount your LVM2 logical
volumes as if they were partitions. Replace the usual
(Make sure you have mounted your root partition as described in the handbook first) # mkdir /mnt/gentoo/usr # mount /dev/vg/usr /mnt/gentoo/usr # mkdir /mnt/gentoo/home # mount /dev/vg/home /mnt/gentoo/home # mkdir /mnt/gentoo/opt # mount /dev/vg/opt /mnt/gentoo/opt # mkdir /mnt/gentoo/var # mount /dev/vg/var /mnt/gentoo/var # mkdir /mnt/gentoo/tmp # mount /dev/vg/tmp /mnt/gentoo/tmp
When configuring your kernel, make sure to configure your kernel to support LVM2 (not all 2.4 kernels do). Select the LVM2 module as follows:
Multi-device support (RAID and LVM) ---> [*] Multiple devices driver support (RAID and LVM) < > RAID support(Note that LVM is not selected on purpose, this was for LVM1) < > Logical volume manager (LVM) support <M> Device-mapper support < > Mirror (RAID-1) support
Device Drivers ---> Multi-device support (RAID and LVM) ---> [*] Multiple devices driver support (RAID and LVM) < > RAID support <M> Device mapper support
The compiled module is called
After you have built your kernel and installed its modules, add the following
line to your
# nano -w /etc/modules.autoload.d/kernel-2.6(Add the following line) dm-mod
Now, install the lvm2 package.
# emerge lvm2(At the time of writing, the stable version is 2.00.08. With version 2.00.08, prevent lvm2 from probing your cdrom by doing: # echo 'devices { filter=["r/cdrom/"] }' >> /etc/lvm/lvm.conf(Versions 2.00.15 and later come with a /etc/lvm/lvm.conf Edit your /etc/lvm/lvm.conf and follow the comments # nano -w /etc/lvm/lvm.conf
When editing your
/dev/hda1 /boot ext3 noauto,noatime 1 1 /dev/hda2 none swap sw 0 0 /dev/hda3 / ext3 noatime 0 0 # Logical volumes /dev/vg/usr /usr ext3 noatime 0 0 /dev/vg/home /home ext3 noatime 0 0 /dev/vg/opt /opt ext3 noatime 0 0 /dev/vg/var /var ext3 noatime 0 0 /dev/vg/tmp /tmp ext3 noatime 0 0
When you reach the end of the installation part of the handbook, don't forget to umount all your LVM2 logical volumes as well and for a good measure run the following command before you reboot:
# vgchange -a n
Restart your machine and all partitions should be visible and mounted.
If you have interrupted the Gentoo installation at one point and want to continue, you need to create the volume device nodes first:
# vgscan --mknodes
Installation CDs with less recent tools might need to reactivate the volumes instead:
(Deactivate all volumes first) # vgchange -a n(Export all the volumes) # vgexport -a vg(Import all volumes) # vgimport -a vg(Reactivate all volumes) # vgchange -a y
Thanks