User Tools

Site Tools


bareos_power_on_off_sd

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
bareos_power_on_off_sd [2017/02/18 18:52] herwarthbareos_power_on_off_sd [2017/02/18 19:09] (current) herwarth
Line 1: Line 1:
 +======Bareos SD power on/off======
 =====Introduction===== =====Introduction=====
-I have a SAS tapedrive connected to a dedicated server for backups. On this machine bareos-sd is running. I do not want the bareos-sd server powered on all the time when it is only backup-ping a litte time of the day. So I have made some scripts to power on and off the server.+I have a SAS tapedrive connected to a dedicated server for backups. On this machine bareos-sd is running. I do not want the bareos-sd server powered on all the time when it is only backup-ping a litte time of the day. 
 + 
 +So I have made some scripts to power on and off the server.
 The server is a Supermicro machine with IPMI, so I am using ipmiutils to power on/off the machine. The server is a Supermicro machine with IPMI, so I am using ipmiutils to power on/off the machine.
  
-;tag=linux+=====Powering off the SD===== 
 +The catalog backup runs with a lower priority so shutting down the server after the catalog backup makes sense. In a schedule I always end with creating a catalog backup. When the SD is powered down, I do not want to power it down again. 
 + 
 +=====Catalog backup===== 
 +<code - /etc/bareos/bareos-dir.d/job/catalog.conf> 
 +Job { 
 +  Name = catalog 
 +  Client = backup-mngt-bh 
 +  Type = Backup 
 +  Level = Full 
 +  Storage = disk-bh 
 +  Pool = disk 
 +  Messages = Standard 
 +  FileSet = catalog 
 +  Schedule = catalog 
 + 
 +  # Default 
 +  #RunBeforeJob = /usr/lib/bareos/scripts/make_catalog_backup 
 +  # Helux 
 +  RunBeforeJob = /usr/lib/bareos/scripts/make_catalog_backup.sh 
 +  # Default 
 +  #RunAfterJob  = "/usr/lib/bareos/scripts/delete_catalog_backup" 
 +  # Helux 
 +  RunAfterJob  = "/usr/lib/bareos/scripts/delete_catalog_backup.sh" 
 +#  Write Bootstrap = "|/usr/bin/bsmtp -h localhost -f \"\(Bareos\) \" -s \"Bootstrap for Job %j\" root@localhost" # (#01) 
 +  Priority = 11 
 +
 +</code> 
 + 
 +<code - /usr/lib/bareos/scripts/delete_catalog_backup.sh> 
 +#!/bin/sh 
 +
 +# BAREOS® - Backup Archiving REcovery Open Sourced 
 +
 +# Copyright (C) 2000-2011 Free Software Foundation Europe e.V. 
 +# Copyright (C) 2013-2014 Bareos GmbH & Co. KG 
 +
 +# This program is Free Softwareyou can redistribute it and/or 
 +# modify it under the terms of version three of the GNU Affero General Public 
 +# License as published by the Free Software Foundation and included 
 +# in the file LICENSE. 
 +
 +# This program is distributed in the hope that it will be useful, but 
 +# WITHOUT ANY WARRANTY; without even the implied warranty of 
 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 
 +# Affero General Public License for more details. 
 +
 +# You should have received a copy of the GNU Affero General Public License 
 +# along with this program; if not, write to the Free Software 
 +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 
 +# 02110-1301, USA. 
 +
 +# This script deletes a catalog dump 
 +
 + 
 +
 +# Source the Bareos config functions. 
 +
 +. /usr/lib/bareos/scripts/bareos-config-lib.sh 
 + 
 +db_name="${db_name:-bareos}" 
 +working_dir=`get_working_dir` 
 + 
 +rm -f ${working_dir}/${db_name}.sql 
 + 
 +# added by Helux 
 +/usr/lib/bareos/scripts/poweroff_bareos_sd.sh 
 +</code> 
 +<code - /usr/lib/bareos/scripts/poweroff_bareos_sd.sh> 
 +#!/bin/bash 
 +BAREOS_SD_IP=172.16.2.23 
 +BAREOS_SD_PORT=9103 
 +IPMI_IP=172.16.2.18 
 +IPMI_USER=USER 
 +IPMI_PASS=PASSWORD 
 +SLEEP=5 
 +NUM_TRIES=6 
 + 
 +function check_bareos_sd { 
 +  nc -w1 $BAREOS_SD_IP $BAREOS_SD_PORT < /dev/null 2>/dev/null 
 +  if [ $? -eq 0 ]; then 
 +  # if return value is 0 then port is reachable so we can exit the function with value 0 
 +    return 0 
 +  else 
 +    return 1 
 +  fi 
 +
 + 
 +COUNT=0 
 +while true; do 
 +  check_bareos_sd 
 +  if [ $? -eq 0 ]; then 
 +    # We are online, so add 1 to counter, sleep for $SLEEP seconds and continue loop 
 +    # $COUNT=0 then we can power off the machine using ssh 
 +    if [ $COUNT -eq 0 ]; then 
 +      ssh -t $BAREOS_SD_IP sudo /usr/sbin/shutdown -h now 
 +    fi 
 +    let COUNT=$COUNT+1 
 +    sleep $SLEEP 
 +  else 
 +    # We are offline, so we can exit the loop 
 +    exit 0 
 +  fi 
 +  # check if $COUNT reaches $NUM_TRIES and when it does do a hard power down 
 +  if [ $COUNT -eq $NUM_TRIES ]; then 
 +    ireset -d -N $IPMI_IP -U $IPMI_USER -P $IPMI_PASS >/dev/null 2>&
 +    if [ $? -eq 0 ]; then 
 +      exit 0 
 +    else 
 +      exit 1 
 +    fi 
 +  fi 
 +done 
 +</code> 
 +=====Powering on the SD when running a job===== 
 +When I need to write a backup to the bareos-sd server, I need to power it on. But I do not want to power it on when it is already on. It is possible a job will be triggered with another job still running. 
 +<code - /etc/bareos/bareos-dir.d/job/example.conf> 
 +Job { 
 +  . 
 +  . 
 +  . 
 +  RunBeforeJob = /usr/lib/bareos/scripts/poweron_bareos_sd.sh 
 +
 +</code> 
 +<code - /usr/lib/bareos/scripts/poweron_bareos_sd.sh> 
 +#!/bin/bash 
 +BAREOS_SD_IP=172.16.2.23 
 +BAREOS_SD_PORT=9103 
 +IPMI_IP=172.16.2.18 
 +IPMI_USER=USER 
 +IPMI_PASS=PASSWORD 
 +SLEEP=5 
 +NUM_TRIES=24 
 + 
 +function check_bareos_sd { 
 +  nc -w1 $BAREOS_SD_IP $BAREOS_SD_PORT < /dev/null 2>/dev/null 
 +  if [ $? -eq 0 ]; then 
 +  # if return value is 0 then port is reachable so we can exit the function with value 0 
 +    return 0 
 +  else 
 +    return 1 
 +  fi 
 +
 + 
 +COUNT=0 
 +while true; do 
 +  check_bareos_sd 
 +  if [ $? -eq 0 ]; then 
 +    # We are online, so exit loop 
 +    exit 0 
 +  else 
 +    # We are offline, so add 1 to counter, sleep for $SLEEP seconds and continue loop 
 +    # $COUNT=0 then we can power on the machine using ireset (ipmiutil) 
 +    if [ $COUNT -eq 0 ]; then 
 +      ireset -u -N $IPMI_IP -U $IPMI_USER -P $IPMI_PASS >/dev/null 2>&
 +    fi 
 +    let COUNT=$COUNT+1 
 +    sleep $SLEEP 
 +  fi 
 +  # check if $COUNT reaches $NUM_TRIES and when it does exit with value 1 
 +  if [ $COUNT -eq $NUM_TRIES ]; then 
 +    exit 1 
 +  fi 
 +done 
 +</code> 
 + 
 +{{tag>linux}} 
 + 
bareos_power_on_off_sd.1487443968.txt.gz · Last modified: by herwarth