[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#462396: Multiple disks support for partman-auto-lvm



Package: partman-auto-lvm
Version: 26
Severity: wishlist

Hi,

I finally managed to write a more general patch[1] to have multiple disks 
support in partman-auto-lvm. It has been successfully tested on x86 with
the  three base recipes of the installer (atomic, home and multi) to
prevent  regressions, and with four homebrew recipes that show what you
can do with  it.

This patch is based on the current (as of 2008/01/24) SVN version of 
partman-auto and partman-auto-lvm (the former needing only a minor 
modification).

A little note about how to use this patch : it is currently available only
 using preseeding. To do this, you must preseed three things :
- partman-auto/expert_recipe_file : nothing new here ;
- partman-auto/disk : the first disk, known from now as the default one.
This  is not mandatory, but may prevent bad surprises ;
- partman-auto-lvm/extra_devices : a new entry in which you declare all
extra  devices that will be available to partman-auto-lvm. You must at
least add  here all devices used in the recipe. Devices not used in the
recipe and  declared here will be silently ignored.

Now here is a description of the four recipes I wrote, and that must cover
all  use cases supported by this patch, with informations about new
attributes  available. All of these recipes use two disks (hda and hdb),
but it should  work with more (a bug in QEmu prevented me from using hdd,
but I hope I'll  can test it on VMWare on another machine).

The first recipe[2] creates two volume groups, vg00 and vg01, respectively
on  hda and hdb, plus a /boot partition. vg00 is used for all LV except
/home,  created on vg01.

In it you can see all the new attributes and their use :
- device{ } is used when declaring a new PV on a specific device. In this 
example, device is /dev/hda, but it can also be a partition as you'll see
in  the third recipe. If device is empty, the default device is used ; -
vgname{ } is used to declare of which VG the PV will be a member of. If 
vgname is empty, the default one will be used ;
- invg{ } is used to create a LV on a specific VG. If invg is empty, it is
 created on the default one.

The second recipe[3] is roughly the same as the first, with a minor change
:  no VG is declared for the LVs except /home. In this case, a default VG
(whose  name is the hostname of the machine) is created and all LVs that
don't have a  invg{ } declaration will be created on this one. Of course,
this VG must have  a free device available to be created on. But more on
the errors after the  recipes.

The third recipe[4] creates a single VG, with a given name, out of two 
partitions on the devices. The rest is simple to understand if you read
the  first two recipes : all LVs are created on a single VG, vg00,
declared on the  PVs hda2 and hdb1. I put a big, red, flashing warning
here : it's not because  you said "use hda2 and hdb1 to create this VG"
that these partitions will be  created. No, you must guess what the
partitions numbers will be based on the  behavior of partman-auto-lvm.
With the recent patch of Frans Pop, default PV  will always be created on
a primary partition. With your recipe it's on your  own to guess.

The fourth recipe[5] is the same as the third, except the PVs will be
added to  the default VG (whose name is the hostname of the machine) as
there's no  vgname and invg attributes.

OK, now about the errors that you can have. I added two debconf templates
in  partman-auto-lvm :
- partman-auto-lvm/no_such_pv : this means that the recipe contains a 
reference to a PV that doesn't exist. This is the case if it's not
declared  in partman-auto-lvm/extra_devices, or if it hasn't been
detected, or if you  didn't guessed correctly the partitioning ;
- partman-auto-lvm/no_pv_in_vg : happens if a VG was declared but that no
PV  could be associated with. For example it could happen if you forgot a
invg{ }  declaration on a LV (which then triggers the need for the default
VG), and if  there's no device without a vgname{ } attribute. But it's not
limited to this  case, and this error is a Bad News.

OK, I think it's all for now. If you have any question or if you found a
bug  I'll happily try to help. I hope you'll find this patch useful.

Cheers,
Grégory

[1] : http://ogre.nerim.net/d-i/partman-auto-lvm_20080124.diff
[2] : http://ogre.nerim.net/d-i/testrecipe-01
[3] : http://ogre.nerim.net/d-i/testrecipe-02
[4] : http://ogre.nerim.net/d-i/testrecipe-03
[5] : http://ogre.nerim.net/d-i/testrecipe-04






Reply to: