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

Re: Preseeding LVM over software RAID?



On Sun, Feb 10, 2008 at 07:51:35PM +0100, Jérémy Bobbio wrote:
> Attached is a patch against partman-auto-raid/5 (released with Etch)
> that allows the preseeding of RAID + LVM setup.

*ahem* Here it is.

-- 
Jérémy Bobbio                        .''`. 
lunar@debian.org                    : :Ⓐ  :  # apt-get install anarchism
                                    `. `'` 
                                      `-   
Index: debian/changelog
===================================================================
--- debian/changelog	(revision 50831)
+++ debian/changelog	(working copy)
@@ -1,3 +1,9 @@
+partman-auto-raid (5.0~0) UNRELEASED; urgency=low
+
+  * Add the ability to preseed LVM over RAID.
+
+ -- Jérémy Bobbio <lunar@debian.org>  Mon, 21 Jan 2008 19:54:40 +0100
+
 partman-auto-raid (5) unstable; urgency=low
 
   [ Updated translations ]
Index: auto.d/initial_auto_raid_fs
===================================================================
--- auto.d/initial_auto_raid_fs	(revision 50831)
+++ auto.d/initial_auto_raid_fs	(working copy)
@@ -29,16 +29,22 @@
 	fi
 	cd $id
 
-	if [ "$fstype" = swap ]; then
+	case "$fstype" in
+	    swap)
 		rm -f filesystem mountpoint use_filesystem options
 		echo "swap" >method
-	else
+		;;
+	    lvm)
+	        # Skip, handled separatly
+		;;
+	    *)
 		echo "$fstype" >filesystem
 		echo "$mountpoint" >mountpoint
 		echo "format" >method
 		touch use_filesystem
 		mkdir options
-	fi
+		;;
+	esac
 	touch format
 	touch formatable
 
Index: auto.d/_numbers
===================================================================
--- auto.d/_numbers	(revision 50831)
+++ auto.d/_numbers	(working copy)
@@ -1,2 +1,3 @@
 50 initial_auto_raid
+54 initial_auto_raid_lvm
 55 initial_auto_raid_fs
Index: auto.d/initial_auto_raid_lvm
===================================================================
--- auto.d/initial_auto_raid_lvm	(revision 0)
+++ auto.d/initial_auto_raid_lvm	(revision 0)
@@ -0,0 +1,64 @@
+#!/bin/sh
+
+# Apply LVM partitioning on top of a RAID preseed
+# This needs to run before initial_auto_raid_fs as auto_lvm_perform will
+# restart partman and otherwise forget about RAID partitions settings.
+
+. /lib/partman/definitions.sh
+. /lib/partman/recipes.sh
+. /lib/partman/auto-lvm_tools.sh
+
+# Check we have the stashed value of the first RAID dev we created
+db_get partman-auto-raid/raidnum
+if [ -z "$RET" ]; then
+	logger -t partman-auto-raid "Error: cannot determine device number for RAID device"
+	db_set partman-auto-raid/error false
+	db_input critical partman-auto-raid/error
+	db_go
+	exit 1
+fi
+raidnum=$RET
+
+# We've already checked that there is a recipe
+db_get partman-auto-raid/recipe
+recipes=$RET
+
+pv_devices=''
+# Try to act on each recipe we were given
+while [ -n "$recipes" ]; do
+	tmp=$recipes
+	recipes=$(echo $tmp | sed -e 's/^[^.]*\.\(.*\)$/\1/');
+	recipe=$(echo $tmp | sed -e 's/^\([^.]*\)\..*$/\1/');
+
+	if [ "$recipe" = "$recipes" ]; then
+		recipes=''
+	fi
+
+	# Do the recipe!
+	echo $recipe >/tmp/partman-auto-raid-fs-recipe
+	read raidtype devcount sparecount fstype mountpoint devs \
+		</tmp/partman-auto-raid-fs-recipe
+	if [ "$fstype" = lvm ]; then
+		pv_devices="${pv_devices:+$pv_devices }/dev/md$raidnum"
+	fi
+
+	raidnum=$(($raidnum + 1))
+done
+
+db_get partman-auto/expert_recipe_file
+recipe="$RET"
+
+decode_recipe $recipe lvm
+
+# Do nothing if there is no "lvmok" partitions.
+if ! echo "$scheme" | grep -q "lvmok"; then
+	exit 0
+fi
+
+expand_scheme
+
+# Be sure the modules are loaded 
+modprobe dm-mod >/dev/null 2>&1 || true 
+modprobe lvm-mod >/dev/null 2>&1 || true 
+
+auto_lvm_perform

Property changes on: auto.d/initial_auto_raid_lvm
___________________________________________________________________
Name: svn:executable
   + *

Index: README
===================================================================
--- README	(revision 50831)
+++ README	(working copy)
@@ -23,3 +23,64 @@
 
 -- Simon Huggins <huggie@earth.li>
 sponsored by Black Cat Networks http://www.blackcatnetworks.co.uk/
+
+It is also possible to preseed LVM over RAID.  The following example will
+create a RAID 1 setup on two hard drives with:
+
+  /dev/md0 as /boot (ext3)
+  /dev/md1 as a LVM physical volume
+  /dev/mapper/<hostname>-root as / (ext3)
+  /dev/mapper/<hostname>-swap_1 as swap
+  /dev/mapper/<hostname>-home as /home (ext3)
+
+--- 8< ---
+d-i partman-auto/method string raid
+
+d-i partman-auto/disk string /dev/discs/disc0/disc /dev/discs/disc1/disc
+
+d-i partman-auto-raid/recipe string				\
+	1 2 0 ext3 /boot					\
+		/dev/discs/disc0/part1#/dev/discs/disc1/part1	\
+	.							\
+	1 2 0 lvm -						\
+		/dev/discs/disc0/part5#/dev/discs/disc1/part5	\
+	.
+
+# Please note that RAID partitions are tagged as "lvmignore"
+# and LVM logical volumes as "defaultignore" and "lvmok".
+d-i partman-auto/expert_recipe string			\
+	multiraid ::					\
+		100 512 256 raid			\
+			$lvmignore{ }			\
+			$primary{ }			\
+			method{ raid }			\
+		.					\
+		900 5000 4000 raid			\
+			$lvmignore{ }			\
+			method{ raid }			\
+		.					\
+		700 5000 4000 ext3			\
+			$defaultignore{ }		\
+			$lvmok{ }			\
+			method{ format }		\
+			format{ }			\
+			use_filesystem{ }		\
+			filesystem{ ext3 }		\
+			mountpoint{ / }			\
+		.					\
+		64 512 300% linux-swap			\
+			$defaultignore{ }		\
+			$lvmok{ }			\
+			method{ swap }			\
+			format{ }			\
+		.					\
+		100 1000 1000000000 ext3		\
+			$defaultignore{ }		\
+			$lvmok{ }			\
+			method{ format }		\
+			format{ }			\
+			use_filesystem{ }		\
+			filesystem{ ext3 }		\
+			mountpoint{ /home }		\
+		.
+--- >8 ---

Attachment: signature.asc
Description: Digital signature


Reply to: