From 23bf4f137db957262672c2693ae84e1822377fe8 Mon Sep 17 00:00:00 2001 From: Evan Broder Date: Sun, 27 Apr 2008 13:13:52 -0400 Subject: [PATCH] Added clvm-config package and made sipb-xen-host-master depend on it svn path=/trunk/packages/sipb-xen-clvm-config/; revision=473 --- debian/changelog | 5 + debian/compat | 1 + debian/control | 14 +++ debian/control.in | 14 +++ debian/copyright | 3 + debian/init | 57 +++++++++ debian/install | 1 + debian/rules | 9 ++ files/etc/lvm.conf | 357 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 9 files changed, 461 insertions(+) create mode 100644 debian/changelog create mode 100644 debian/compat create mode 100644 debian/control create mode 100644 debian/control.in create mode 100644 debian/copyright create mode 100755 debian/init create mode 100644 debian/install create mode 100755 debian/rules create mode 100644 files/etc/lvm.conf diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..6f4d617 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,5 @@ +sipb-xen-clvm-config (1) unstable; urgency=low + + * Initial Release. + + -- Evan Broder Sun, 27 Apr 2008 12:55:34 -0400 diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..7ed6ff8 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +5 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..f79340c --- /dev/null +++ b/debian/control @@ -0,0 +1,14 @@ +Source: sipb-xen-clvm-config +Section: base +Priority: extra +Maintainer: SIPB Xen Project +Build-Depends: cdbs (>= 0.4.23-1.1), debhelper (>= 5), config-package-dev (>= 4.5~) +Standards-Version: 3.7.2 + +Package: sipb-xen-clvm-config +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, clvm, cman, ccs +Provides: ${diverted-files} +Conflicts: ${diverted-files} +Description: Configure clustering LVM + Configure the dom0 servers for clustering LVM diff --git a/debian/control.in b/debian/control.in new file mode 100644 index 0000000..9ffea2d --- /dev/null +++ b/debian/control.in @@ -0,0 +1,14 @@ +Source: sipb-xen-clvm-config +Section: base +Priority: extra +Maintainer: SIPB Xen Project +Build-Depends: @cdbs@ +Standards-Version: 3.7.2 + +Package: sipb-xen-clvm-config +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, clvm, cman, ccs +Provides: ${diverted-files} +Conflicts: ${diverted-files} +Description: Configure clustering LVM + Configure the dom0 servers for clustering LVM diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..7789434 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,3 @@ +This package was created for internal use of the SIPB Xen Project of +the MIT Student Information Processing Board. Ask sipb-xen@mit.edu if +you have questions about redistribution. diff --git a/debian/init b/debian/init new file mode 100755 index 0000000..52e49b4 --- /dev/null +++ b/debian/init @@ -0,0 +1,57 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: sipb-xen-clvm-config +# Required-Start: $ccs $cman +# Required-Stop: +# Should-Start: $network +# Default-Start: S +# Default-Stop: +# Short-Description: Start clvm daemon +# Description: Network file systems are mounted by +# /etc/network/if-up.d/mountnfs in the background +# when interfaces are brought up; this script waits +# for them to be mounted before carrying on. +### END INIT INFO + +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin +DAEMON=/sbin/clvmd +NAME=sipb-xen-clvm-config +PIDFILE=/var/run/cluster/clvmd.pid +DESC="Cluster LVM" + +test -x $DAEMON || exit 0 + +CLVMD_OPTIONS="" + +if [ -f /etc/default/sipb-xen-clvm-config ] ; then + . /etc/default/sipb-xen-clvm-config +fi + +set -e + +case "$1" in + start) + echo -n "Starting $DESC: " + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- $CLVMD_OPTIONS + echo "$NAME." + ;; + stop) + echo -n "Stopping $DESC: " + start-stop-daemon --stop --oknodo --quiet --pidfile $PIDFILE --exec $DAEMON + echo "$NAME." + ;; + restart|force-reload) + echo -n "Restarting $DESC: " + $0 stop + sleep 1 + $0 start + echo "$NAME." + ;; + *) + N=/etc/init.d/$NAME + echo "Usage: $N {start|stop|restart|force-reload}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/debian/install b/debian/install new file mode 100644 index 0000000..dfdfced --- /dev/null +++ b/debian/install @@ -0,0 +1 @@ +files/* . \ No newline at end of file diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..0b1576f --- /dev/null +++ b/debian/rules @@ -0,0 +1,9 @@ +#!/usr/bin/make -f + +DEB_AUTO_UPDATE_DEBIAN_CONTROL = 1 +DEB_DIVERT_EXTENSION = sipb-xen +DEB_DIVERT_FILES_sipb-xen-clvm-config += \ + /etc/lvm/lvm.conf.sipb-xen + +include /usr/share/cdbs/1/rules/debhelper.mk +include /usr/share/cdbs/1/rules/config-package.mk \ No newline at end of file diff --git a/files/etc/lvm.conf b/files/etc/lvm.conf new file mode 100644 index 0000000..de1ab47 --- /dev/null +++ b/files/etc/lvm.conf @@ -0,0 +1,357 @@ +# This is an example configuration file for the LVM2 system. +# It contains the default settings that would be used if there was no +# /etc/lvm/lvm.conf file. +# +# Refer to 'man lvm.conf' for further information including the file layout. +# +# To put this file in a different directory and override /etc/lvm set +# the environment variable LVM_SYSTEM_DIR before running the tools. + + +# This section allows you to configure which block devices should +# be used by the LVM system. +devices { + + # Where do you want your volume groups to appear ? + dir = "/dev" + + # An array of directories that contain the device nodes you wish + # to use with LVM2. + scan = [ "/dev" ] + + # A filter that tells LVM2 to only use a restricted set of devices. + # The filter consists of an array of regular expressions. These + # expressions can be delimited by a character of your choice, and + # prefixed with either an 'a' (for accept) or 'r' (for reject). + # The first expression found to match a device name determines if + # the device will be accepted or rejected (ignored). Devices that + # don't match any patterns are accepted. + + # Be careful if there there are symbolic links or multiple filesystem + # entries for the same device as each name is checked separately against + # the list of patterns. The effect is that if any name matches any 'a' + # pattern, the device is accepted; otherwise if any name matches any 'r' + # pattern it is rejected; otherwise it is accepted. + + # Don't have more than one filter line active at once: only one gets used. + + # Run vgscan after you change this parameter to ensure that + # the cache file gets regenerated (see below). + # If it doesn't do what you expect, check the output of 'vgscan -vvvv'. + + # By default we accept every block device + # filter = [ "a/.*/" ] + + # Exclude the cdrom drive + filter = [ "r|/dev/cdrom|" ] + + # When testing I like to work with just loopback devices: + # filter = [ "a/loop/", "r/.*/" ] + + # Or maybe all loops and ide drives except hdc: + # filter =[ "a|loop|", "r|/dev/hdc|", "a|/dev/ide|", "r|.*|" ] + + # Use anchors if you want to be really specific + # filter = [ "a|^/dev/hda8$|", "r/.*/" ] + + # The results of the filtering are cached on disk to avoid + # rescanning dud devices (which can take a very long time). By + # default this cache file is hidden in the /etc/lvm directory. + # It is safe to delete this file: the tools regenerate it. + cache = "/etc/lvm/.cache" + + # You can turn off writing this cache file by setting this to 0. + write_cache_state = 1 + + # Advanced settings. + + # List of pairs of additional acceptable block device types found + # in /proc/devices with maximum (non-zero) number of partitions. + # types = [ "fd", 16 ] + + # If sysfs is mounted (2.6 kernels) restrict device scanning to + # the block devices it believes are valid. + # 1 enables; 0 disables. + sysfs_scan = 1 + + # By default, LVM2 will ignore devices used as components of + # software RAID (md) devices by looking for md superblocks. + # 1 enables; 0 disables. + md_component_detection = 1 +} + +# This section that allows you to configure the nature of the +# information that LVM2 reports. +log { + + # Controls the messages sent to stdout or stderr. + # There are three levels of verbosity, 3 being the most verbose. + verbose = 0 + + # Should we send log messages through syslog? + # 1 is yes; 0 is no. + syslog = 1 + + # Should we log error and debug messages to a file? + # By default there is no log file. + #file = "/var/log/lvm2.log" + + # Should we overwrite the log file each time the program is run? + # By default we append. + overwrite = 0 + + # What level of log messages should we send to the log file and/or syslog? + # There are 6 syslog-like log levels currently in use - 2 to 7 inclusive. + # 7 is the most verbose (LOG_DEBUG). + level = 0 + + # Format of output messages + # Whether or not (1 or 0) to indent messages according to their severity + indent = 1 + + # Whether or not (1 or 0) to display the command name on each line output + command_names = 0 + + # A prefix to use before the message text (but after the command name, + # if selected). Default is two spaces, so you can see/grep the severity + # of each message. + prefix = " " + + # To make the messages look similar to the original LVM tools use: + # indent = 0 + # command_names = 1 + # prefix = " -- " + + # Set this if you want log messages during activation. + # Don't use this in low memory situations (can deadlock). + # activation = 0 +} + +# Configuration of metadata backups and archiving. In LVM2 when we +# talk about a 'backup' we mean making a copy of the metadata for the +# *current* system. The 'archive' contains old metadata configurations. +# Backups are stored in a human readeable text format. +backup { + + # Should we maintain a backup of the current metadata configuration ? + # Use 1 for Yes; 0 for No. + # Think very hard before turning this off! + backup = 1 + + # Where shall we keep it ? + # Remember to back up this directory regularly! + backup_dir = "/etc/lvm/backup" + + # Should we maintain an archive of old metadata configurations. + # Use 1 for Yes; 0 for No. + # On by default. Think very hard before turning this off. + archive = 1 + + # Where should archived files go ? + # Remember to back up this directory regularly! + archive_dir = "/etc/lvm/archive" + + # What is the minimum number of archive files you wish to keep ? + retain_min = 10 + + # What is the minimum time you wish to keep an archive file for ? + retain_days = 30 +} + +# Settings for the running LVM2 in shell (readline) mode. +shell { + + # Number of lines of history to store in ~/.lvm_history + history_size = 100 +} + + +# Miscellaneous global LVM2 settings +global { + + # The file creation mask for any files and directories created. + # Interpreted as octal if the first digit is zero. + umask = 077 + + # Allow other users to read the files + #umask = 022 + + # Enabling test mode means that no changes to the on disk metadata + # will be made. Equivalent to having the -t option on every + # command. Defaults to off. + test = 0 + + # Whether or not to communicate with the kernel device-mapper. + # Set to 0 if you want to use the tools to manipulate LVM metadata + # without activating any logical volumes. + # If the device-mapper kernel driver is not present in your kernel + # setting this to 0 should suppress the error messages. + activation = 1 + + # If we can't communicate with device-mapper, should we try running + # the LVM1 tools? + # This option only applies to 2.4 kernels and is provided to help you + # switch between device-mapper kernels and LVM1 kernels. + # The LVM1 tools need to be installed with .lvm1 suffices + # e.g. vgscan.lvm1 and they will stop working after you start using + # the new lvm2 on-disk metadata format. + # The default value is set when the tools are built. + # fallback_to_lvm1 = 0 + + # The default metadata format that commands should use - "lvm1" or "lvm2". + # The command line override is -M1 or -M2. + # Defaults to "lvm1" if compiled in, else "lvm2". + # format = "lvm1" + + # Location of proc filesystem + proc = "/proc" + + # Type of locking to use. Defaults to file-based locking (1). + # Turn locking off by setting to 0 (dangerous: risks metadata corruption + # if LVM2 commands get run concurrently). + locking_type = 1 + + # Local non-LV directory that holds file-based locks while commands are + # in progress. A directory like /tmp that may get wiped on reboot is OK. + locking_dir = "/var/lock/lvm" + + # Other entries can go here to allow you to load shared libraries + # e.g. if support for LVM1 metadata was compiled as a shared library use + # format_libraries = "liblvm2format1.so" + # Full pathnames can be given. + + # Search this directory first for shared libraries. + # library_dir = "/lib/lvm2" + + # Enable these three for cluster LVM when clvmd is running. + # Remember to remove the "locking_type = 1" above. + # + locking_library = "liblvm2clusterlock.so" + locking_type = 2 + library_dir = "/lib/lvm2" +} + +activation { + # Device used in place of missing stripes if activating incomplete volume. + # For now, you need to set this up yourself first (e.g. with 'dmsetup') + # For example, you could make it return I/O errors using the 'error' + # target or make it return zeros. + missing_stripe_filler = "/dev/ioerror" + + # How much stack (in KB) to reserve for use while devices suspended + reserved_stack = 256 + + # How much memory (in KB) to reserve for use while devices suspended + reserved_memory = 8192 + + # Nice value used while devices suspended + process_priority = -18 + + # If volume_list is defined, each LV is only activated if there is a + # match against the list. + # "vgname" and "vgname/lvname" are matched exactly. + # "@tag" matches any tag set in the LV or VG. + # "@*" matches if any tag defined on the host is also set in the LV or VG + # + # volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ] + + # Permissions to use for new devices + # device_permissions = [ 0, 6, 0660 ] + + # Size (in KB) of each copy operation when mirroring + mirror_region_size = 512 + + # 'mirror_image_fault_policy' and 'mirror_log_fault_policy' define + # how a device failure affecting a mirror is handled. + # A mirror is composed of mirror images (copies) and a log. + # A disk log ensures that a mirror does not need to be re-synced + # (all copies made the same) every time a machine reboots or crashes. + # + # In the event of a failure, the specified policy will be used to + # determine what happens: + # + # "remove" - Simply remove the faulty device and run without it. If + # the log device fails, the mirror would convert to using + # an in-memory log. This means the mirror will not + # remember its sync status across crashes/reboots and + # the entire mirror will be re-synced. If a + # mirror image fails, the mirror will convert to a + # non-mirrored device if there is only one remaining good + # copy. + # + # "allocate" - Remove the faulty device and try to allocate space on + # a new device to be a replacement for the failed device. + # Using this policy for the log is fast and maintains the + # ability to remember sync state through crashes/reboots. + # Using this policy for a mirror device is slow, as it + # requires the mirror to resynchronize the devices, but it + # will preserve the mirror characteristic of the device. + # This policy acts like "remove" if no suitable device and + # space can be allocated for the replacement. + # Currently this is not implemented properly and behaves + # similarly to: + # + # "allocate_anywhere" - Operates like "allocate", but it does not + # require that the new space being allocated be on a + # device is not part of the mirror. For a log device + # failure, this could mean that the log is allocated on + # the same device as a mirror device. For a mirror + # device, this could mean that the mirror device is + # allocated on the same device as another mirror device. + # This policy would not be wise for mirror devices + # because it would break the redundant nature of the + # mirror. This policy acts like "remove" if no suitable + # device and space can be allocated for the replacement. + + mirror_log_fault_policy = "allocate" + mirror_device_fault_policy = "remove" +} + + +#################### +# Advanced section # +#################### + +# Metadata settings +# +# metadata { + # Default number of copies of metadata to hold on each PV. 0, 1 or 2. + # You might want to override it from the command line with 0 + # when running pvcreate on new PVs which are to be added to large VGs. + + # pvmetadatacopies = 1 + + # Approximate default size of on-disk metadata areas in sectors. + # You should increase this if you have large volume groups or + # you want to retain a large on-disk history of your metadata changes. + + # pvmetadatasize = 255 + + # List of directories holding live copies of text format metadata. + # These directories must not be on logical volumes! + # It's possible to use LVM2 with a couple of directories here, + # preferably on different (non-LV) filesystems, and with no other + # on-disk metadata (pvmetadatacopies = 0). Or this can be in + # addition to on-disk metadata areas. + # The feature was originally added to simplify testing and is not + # supported under low memory situations - the machine could lock up. + # + # Never edit any files in these directories by hand unless you + # you are absolutely sure you know what you are doing! Use + # the supplied toolset to make changes (e.g. vgcfgrestore). + + # dirs = [ "/etc/lvm/metadata", "/mnt/disk2/lvm/metadata2" ] +#} + +# Event daemon +# +# dmeventd { + # mirror_library is the library used when monitoring a mirror device. + # + # "libdevmapper-event-lvm2mirror.so" attempts to recover from failures. + # It removes failed devices from a volume group and reconfigures a + # mirror as necessary. + # + # mirror_library = "libdevmapper-event-lvm2mirror.so" +#} + -- 1.7.9.5