PartMan

From Wikitech
(Difference between revisions)
Jump to: navigation, search
(Different Partman profiles and what they do)
Line 163: Line 163:
 
2 disk system, each drive is 1 terabyte, 1 main raid1 partition, 2 swap partitions (one on each disk)  
 
2 disk system, each drive is 1 terabyte, 1 main raid1 partition, 2 swap partitions (one on each disk)  
  
== Other Helpful Documents
+
== Other Helpful Documents ==
 
[[Build_a_new_server]]
 
[[Build_a_new_server]]
 +
 
[[PartitionProfiles]]
 
[[PartitionProfiles]]
  
 
[[Category:How-To]]
 
[[Category:How-To]]

Revision as of 20:15, 24 October 2011

This page is about partitioning with preseed. See Ubuntu installer for other parts of the installation process and preseed options.

Contents

Background Info

Debian preseed's partman options are an incomprehensible automatic partitioning language.{{fact}}

Help Files

These files are in the Debian and Ubuntu packages, and give some explanation

PartManAuto

PartManAutoRaid

Our implementation

Most hosts don't have LVM, only the boxes with arrays. In the directory /srv/autoinstall on brewster there should already be a file that handles the partition layout for your host(s), and it should already be included in netboot.cfg. If not and you are automating this for the first time, create a config file with a name descriptive of the host(s). For example, we have apache.cfg, db.cfg. You can steal from one of the existing files as a base.

Config language

<owner> <question name> <question type> <value>

<owner>: "d-i" which stands for Debian Installer.

<question name>: partman-auto, partman-auto-raid and partman-auto-lvm are the packages that handle automatic partitioning of various types, and some of the questions (prompts) issued by them are described here: [1]

<question type> says what sort of value to expect (eg string, boolean, select (for a menu)...)

<question value> this is where you put the answer that you would otherwise be entering interactively

NOTE that after the question type you can put only one space or tab; any other whitespace will get stuffed in at the front of the value, which you probably don't want.

Dissecting a Semi-working configuration

# Automatic software RAID 1 with LVM partitioning

d-i     partman-auto/method     string  raid

This sentence makes partman know that it will be making a raid

# Use the first two disks
d-i     partman-auto/disk       string  /dev/sda /dev/sdb

after d-i partman-auto/disk you must put the list of hard drives that are going to be used

# Define physical partitions
d-i     partman-auto/expert_recipe      string  \
                multiraid ::                                                    \
                        400000    1000    9500000       raid                    \
                                $primary{ }  method{ raid }                     \
                        .                                                       \

                        4000    1200    4100    linux-swap                      \
                        $primary{ } method{ swap } format{ }                    \
                        .

An interesting thing about partman is that you can put everything on one line, or you can break lines using the character "\". Use a "." in between hard drives. $primary{ } is needed to make the partition a primary partition. method { } is used to tell it what type to format. You can use swap, raid, or format. format { } tells partman to format the partition. Don't put this statement in a section that you will be using for the raid. use_filesystem{ } makes partman use a file system (don't know why this isn't done by the filesystem command) filesystem{ X } use ext3, murderfs, xfs, etc in here to tell it what filesystem to run mountpoint{ X } use things like /, /mnt/sda3, etc

# Parameters are:
# <raidtype> <devcount> <sparecount> <fstype> <mountpoint> \
#          <devices> <sparedevices>
d-i     partman-auto-raid/recipe        string  \
                1       2       0       ext3    /                       \
                        /dev/sda1#/dev/sdb1                             \
                .

This snippet is telling us to make a raid 1, with 2 devices, 0 spares, ext3 filesystem, mounted at /, and across /dev/sda1 and /dev/sda2

d-i     partman-md/confirm              boolean true

Theoretically now it confirms stuff automatically. It doesn't. Partman lies

d-i     partman-md/device_remove_md     boolean true

This lets partman remove any existing raids

d-i     partman/confirm_write_new_label boolean true
d-i     partman/choose_partition        select  finish
d-i     partman/confirm                 boolean true

d-i     partman-lvm/device_remove_lvm   boolean true

d-i     mdadm/boot_degraded             boolean true

Most of these possibly do what they appear to do.

Boot degraded is important - if we have a disk failure we'd still like the system to boot, just warn us.

Dissecting another config

# Application server specific configuration

# Implementation specific hack:
d-i	partman-auto/init_automatically_partition	select	20some_device__________/var/lib/partman/devices/=dev=sda
d-i     partman-auto/method     string  regular
d-i	partman-auto/disk	string	/dev/sda

d-i	partman/choose_partition	select Finish partitioning and write changes to disk
d-i	partman/confirm			boolean	      true

# Note, expert_recipe wants to fill up the entire disk
# See http://d-i.alioth.debian.org/svn/debian-installer/installer/doc/devel/partman-auto-recipe.txt
d-i   partman-auto/expert_recipe	string	apache : 3000 5000 8000 ext3 $primary{ } $bootable{ } method{ format } format{ } use_filesystem{ }
 filesystem{ ext3 } mountpoint{ / } . 1000 1000 1000 linux-swap method{ swap } format{ } . 64 1000 10000000 jfs method{ format } format{ } use_fil
esystem{ } filesystem{ jfs } mountpoint{ /a } .
d-i		   partman-auto/choose_recipe	   apache

# Preseeding of other packages
fontconfig   fontconfig/enable_bitmaps	boolean	true

These are preseed file entries that get fed to prompts issued by the installer. Syntax:

<owner> <question name> <question type> <value>

<owner>: "d-i" which stands for Debian Installer.

<question name>: partman-auto, partman-auto-raid and partman-auto-lvm are the packages that handle automatic partitioning of various types, and some of the questions (prompts) issued by them are described here: [2]

<question type> says what sort of value to expect (eg string, boolean, select (for a menu)...)

<question value> this is where you put the answer that you would otherwise be entering interactively

NOTE that after the question type you can put only one space or tab; any other whitespace will get stuffed in at the front of the value, which you probably don't want.

The first few lines of the sample config file should be obvious: select the device, choose the partition method and confirm. After that an "expert recipe" for partioning is defined, and given the name "apache". This allows it to be chosen later from the list of recipes.

Let's look at the particular recipe: it says

  • 3000 5000 8000 ext3 $primary{ } $bootable{ } method{ format } format{ } use_filesystem{ } filesystem{ ext3 } mountpoint{ / }
    3000: minumum size of partition in mb
    5000: priority if it and other listed partitions are vying for space on the disk (this is compared with the priorities of the other partitions)
    8000: maximum size of partition in mb (80GB; this is for 80GB disks, which the apaches all have.)
    ext3: filesystem type
    $primary{ }: this is a primary, not logical partition
    $bootable{ }: this is a bootable partition
    method{ format }: set to format to format the partition, to "keep" to not format, and to "swap" for swap partitions
    format{ }: also needed so the partition will be formatted
    use_filesystem{ }: this partition will have a filesystem on it (it won't be swap, lvm, etc)
    filesystem{ ext3 }: what filesystem it gets
    mountpoint{ / }: where it's mounted

The other two lines in the recipe should now be obvious.

  • 1000 1000 1000 linux-swap method{ swap } format{ }
  • 64 1000 10000000 jfs method{ format } format{ } use_filesystem{ } filesystem{ jfs } mountpoint{ /a }


Different Partman profiles and what they do

  • raid1-1T-1partition.cfg

2 disk system, each drive is 1 terabyte, 1 main raid1 partition, 2 swap partitions (one on each disk)

Other Helpful Documents

Build_a_new_server

PartitionProfiles

Personal tools
Namespaces

Variants
Actions
Navigation
Ops documentation
Wiki
Toolbox