Adventures in Networking

Main menu:

SLES 10 Installation and Setup


Setup instructions for base SUSE Linux Enterprise Server in preparation for OES install

Staging Step 1 – Initial Install:

  • Storage setup for a standard file and print server:
    • Need two logical drives, RAID 1, 5 or 10
    • First logical drive is for /boot, swap and / partitions (recommend 50GB)
    • Second logical drive is for NSS pool (size accordingly)
  • Installation options:
    • Local DVD install: Boot SLES 10 SP1 DVD and start a new install
    • Network install: Boot SLES 10 SP1 CD1 and use the following options:
      • hostip=xx.xx.xx.xx/24
      • gateway=xx.xx.xx.xx
      • nameserver=xx.xx.xx.xx
      • nfs://servername/install/SLES-10-SP2-DVD-x86_64-GM-DVD1.iso
    • To perform install remotely with VNC (DVD or network), add these options:
      • vnc=1
      • vncpassword=password
  • Select Language, Accept License, select New Installation
  • Set Clock and Time Zone info:
    • Set Hardware Clock Set To UTC
    • Region: USA, Time Zone: Pacific
    • Set Time and Date to current at your location (look at your watch)
  • Click Partitioning:
    • Create Custom Partition Setup, Custom Partitioning (for experts)
    • You should have two logical drives available, sda and sdb:
      • Create 1GB primary partition on sda, format as ext2, mount as /boot
      • Create 2GB primary partition on sda, format as swap
      • Create a primary partition on sda, use remaining space, format as ext3, mount as /
      • sdb will hold the NSS pool, which will be configured after OES installation
  • You can leave the defaults for software selection.
  • Click Accept to start installation – Server will format partitions, install software, and reboot.

Staging Step 2 – Final Setup After Reboot:

  • Enter password for root
  • Enter hostname and domain (use lower case)
    • Uncheck Change Hostname via DHCP
  • Network Configuration:
    • Click to Enable Firewall for SSH
    • Make sure VNC Remote Administration is enabled
    • Click Network Interfaces, Edit:
      • Add Name Servers
      • Add search domains
  • Don’t check for Internet connectivity
  • Accept defaults on CA Management and click Next
  • Leave Authentication Method on Local, click Next
  • Don’t create a local user, just click Next, and Yes that it’s OK
  • Next on Release Notes
  • Next on Hardware Configuration
  • Uncheck Clone This System for Autoyast
  • Base install is finished at this point. If you’re doing a VNC install, your installation session will die here. You can reconnect to the new server at this point if needed.

Staging Step 3 – Other Settings:

  • If it is a normal file server, copy SLES and OES source ISO’s to server:
    • Create /install
    • Copy the following ISO’s to /install:
      • SLES-10-SP2-DVD-x86_64-GM-DVD1.iso
      • OES2-SP1-x86_64-CD1.iso
  • Delete CD/DVD or network install source and add local source for SLES:
    • YaST: Software, Installation Source
  • Delete any CD/DVD or network sources
  • Click Add new, then select Local Directory (if it is a normal site file server, otherwise select NFS and use stewart-mis or hdsp-mis)
  • Set Path to /install/SLES-10-SP2-DVD-x86_64-GM-DVD1.iso
  • Check ISO Image
  • YaST: Network Services, NTP Configuration:
    • Change Automatically Start NTP Daemon to start During Boot
    • Go to Advanced Configuration
    • Add server ntp.doc.nv.gov and Enable for initial sync
  • Configure and start SNMP:
    • Copy /etc/snmp/snmpd.conf from another server
    • Enter chkconfig snmpd on to set daemon to auto-start
    • Enter rcsnmpd start to start the daemon
  • Enable Systat:
  • Enable with chkconfig systat on
  • Start with /etc/init.d/xinetd restart

Reverse Differential Backup

Setup for Backup Server:

  • Configure forwarding of root’s email to GroupWise System Admin resource:
    echo user@test.com > /root/.forward
  • Create/modify /etc/rsyncd.conf. See example Backup Server rsyncd.conf.
  • Enable rsync daemon: chkconfig rsyncd on
  • Start rsyncd: rcrsyncd start
  • Change into the backup volume/directory:
    • For a NSS BACKUP volume: cd /media/nss/BACKUP
    • For a XFS /backup directory: cd /backup
  • Create the backup folders for the primary server:
    mkdir primaryservername
    mkdir primaryservername/APPS
    mkdir primaryservername/backup
    mkdir primaryservername/boot
    mkdir primaryservername/etc
    mkdir primaryservername/GW
    mkdir primaryservername/mbr
    mkdir primaryservername/SHARED
    mkdir primaryservername/USERS
  • Create the backup folders for the backup server:
    mkdir backupservername
    mkdir backupservername/backup
    mkdir backupservername/boot
    mkdir backupservername/etc
    mkdir backupservername/mbr
  • Modify /etc/exports to export the BACKUP volume and /install directory:
    • /install *(ro,sync,root_squash) 10.1.1.0/255.255.255.0(rw,no_root_squash,sync) 10.1.2.0/255.255.255.0(rw,no_root_squash,sync)
    • For NSS BACKUP Volume:
      /media/nss/BACKUP primaryservername(rw,no_root_squash,sync,fsid=20) backup1(rw,no_root_squash,sync,fsid=20)
    • For XFS /backup directory:
      /backup primaryservername(rw,no_root_squash,sync) backup1(rw,no_root_squash,sync)
  • Enable nfsserver: chkconfig nfsserver on
  • Start nfsserver: rcnfsserver start
  • Create backup script bkp_backupservername.sh. See example Backup Server Backup Script.
  • Set executable permission: chmod +x bkp_backupservername.sh
  • Create lst file. See example exclude.lst.
  • Use crontab -e to edit the cron jobs and add the backup script:
    • For a NSS BACKUP volume: @daily /media/nss/BACKUP/bkp_backupservername.sh
    • For a XFS /backup directory: @daily /backup/bkp_backupservername.sh

 

Backup Setup for Primary Server:

  • Configure forwarding of root’s email to GroupWise System Admin resource:
    echo user@test.com > /root/.forward
  • Create the backup folder: mkdir /backup
  • Change into backup folder: cd /backup
  • Create the mount folder: mkdir primaryservername
  • Modify /etc/fstab to auto-mount the backup volume:
    • NSS BACKUP volume:
      backupservername:/media/nss/BACKUP/primaryservername /backup/primaryservername nfs rw,intr,proto=tcp,rsize=32768,wsize=32768 0 0
    • XFS /backup directory:
      backupservername:/backup/primaryservername /backup/primaryservername nfs rw,intr,proto=tcp,rsize=32768,wsize=32768 0 0
  • Mount the backup volume: mount -a
  • Create backup script bkp_primaryservername.sh. See example Primary Server Backup Script.
  • Set executable permission: chmod +x bkp_primaryservername.sh
  • Create lst file. See example exclude.lst.
  • Use crontab -e to edit the cron jobs and add:
    @daily /backup/bkp_primaryservername.sh

 

Example: Backup Server rsyncd.conf (NSS BACKUP volume):

uid = root
gid = root
read only = false
use chroot = true
transfer logging = false
log format = %h %o %f %l %b
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = primaryservername.test.com backup.test.com
slp refresh = 300

[primaryservername_APPS]
path = /media/nss/BACKUP/primaryservername/APPS

[primaryservername_boot]
path = /media/nss/BACKUP/primaryservername/boot

[primaryservername_etc]
path = /media/nss/BACKUP/primaryservername/etc

[primaryservername_GW]
path = /media/nss/BACKUP/primaryservername/GW

[primaryservername_USERS]
path = /media/nss/BACKUP/primaryservername/USERS

[primaryservername_SHARED]
path = /media/nss/BACKUP/primaryservername/SHARED

 

Example: Backup Server rsyncd.conf (XFS /backup directory):

uid = root
gid = root
read only = false
use chroot = true
transfer logging = false
log format = %h %o %f %l %b
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = primaryservername.test.com backup1.test.com
slp refresh = 300

[primaryservername_APPS]
path = /backup/primaryservername/APPS

[primaryservername_boot]
path = /backup/primaryservername/boot

[primaryservername_etc]
path = /backup/primaryservername/etc

[primaryservername_GW]
path = /backup/primaryservername/GW

[primaryservername_USERS]
path = /backup/primaryservername/USERS

[primaryservername_SHARED]
path = /backup/primaryservername/SHARED

 

Example: Backup Server Backup Script:

#!/bin/bash
# Version: 2008-02-27 03:10pm
# Modified By: Dan O.

StartTime=`date`
Today=`date +%F`
Yesterday=`date --date=yesterday +%F`
PurgeDate=`date --date='31 days ago' +%F`

echo "**********************************************************************"
echo "Starting backup of system files on $HOSTNAME at $StartTime..."

echo -e "\nChanging into backup directory '/backup/$HOSTNAME'..."
cd /backup/$HOSTNAME

echo -e "\nPurging backup folders older than 30 days..."
echo -e "backup
boot
etc
mbr" |
while read DirName
do
  find $DirName/* -type d ! -name . -prune -mtime +30 -exec rm -rf {} \;
done

echo -e "\nCreating new backup directories for $Today:"
echo -e "backup
boot
etc
mbr" |
while read DirName
do
  mkdir -v $DirName/$Today
done

echo -e "\nRotating files from $Yesterday/ to $Today/..."
# No rotation for /backup/ scripts or mbr (too small to worry about differential)
echo -e "boot
etc" |
while read DirName
do
  mv $DirName/$Yesterday/* $DirName/$Today/
done

echo -e "\nSaving backup scripts..."
cp /backup/* backup/$Today/
touch backup/$Today

echo -e "\nSaving Master Boot Record for sda & sdb..."
dd if=/dev/sda of=mbr/$Today/sda-mbr bs=512 count=1
dd if=/dev/sdb of=mbr/$Today/sdb-mbr bs=512 count=1
touch mbr/$Today

echo -e "\nBacking up /boot/ directory:"
rsync -azb --stats --delete --backup-dir boot/$Yesterday/ /boot/ boot/$Today/
touch boot/$Today

echo -e "\nBacking up /etc/ directory:"
rsync -azb --stats --delete --backup-dir etc/$Yesterday/ /etc/ etc/$Today/
touch etc/$Today

EndTime=`date`

echo -e "\n\nBackup of system files on $HOSTNAME completed at $EndTime."
echo "**********************************************************************"

 

Example: exclude.lst:

._NETWARE
~DFSINFO.8-P
VOLDATA.TDF
.Trash-root
Thumbs.db
thumbs.db
THUMBS.DB

 

Example: Primary Server Backup Script:

#!/bin/bash
# Version: 2008-02-27 03:00pm
# Modified By: Dan O.

StartTime=`date`
Today=`date +%F`
Yesterday=`date --date=yesterday +%F`
PurgeDate=`date --date='31 days ago' +%F`
BackupHost="backupservername"

echo "**********************************************************************"
echo "Starting backup from $HOSTNAME to $BackupHost at $StartTime..."

echo -e "\nMaking sure backup directory is mounted with 'mount -a'..."
mount -a
# Would rather do a check to make sure it's already mounted. If not, try to mount. If it fails, abort.

echo -e "\nChanging into backup directory '/backup/$HOSTNAME'..."
cd /backup/$HOSTNAME
# Need to add check to make sure this directory change was successful, or abort.

echo -e "\nPurging backup folders older than 30 days..."
echo -e "backup
boot
etc
GW
mbr
SHARED
USERS" |
while read DirName
do
#  rm -rf $DirName/$PurgeDate
#  find $DirName/* -type d ! -name . -prune -mtime +30 -exec echo {} \;
  find $DirName/* -type d ! -name . -prune -mtime +30 -exec rm -rf {} \;
done

# Creating a new new "$Today" directory, then moving $Yesterday/* $Today/
# keeps the timestamp on $Yesterday/, and makes the script better able to handle
# manual backups (no nested $Today/$Yesterday, which can happen on a restart)
echo -e "\nCreating new backup directories for $Today:"
echo -e "backup
boot
etc
GW
mbr
SHARED
USERS" |
while read DirName
do
  mkdir -v $DirName/$Today
done

echo -e "\nRotating files from $Yesterday/ to $Today/..."
# No rotation for /backup/ scripts or mbr (too small to worry about differential)
echo -e "boot
etc
GW
SHARED
USERS" |
while read DirName
do
  mv $DirName/$Yesterday/* $DirName/$Today/
done

echo -e "\nSaving backup scripts..."
cp /backup/* backup/$Today/
touch backup/$Today

echo -e "\nSaving Master Boot Record for sda & sdb..."
dd if=/dev/sda of=mbr/$Today/sda-mbr bs=512 count=1
dd if=/dev/sdb of=mbr/$Today/sdb-mbr bs=512 count=1
touch mbr/$Today

echo -e "\n\nBacking up APPS volume:"
rsync -az --stats --delete --exclude-from=/backup/exclude.lst /media/nss/APPS/ "$BackupHost"::"$HOSTNAME"_APPS/
touch APPS/

BackupOptions="-azb --stats --delete --exclude-from=/backup/exclude.lst --backup-dir /$Yesterday/"
echo -e "\nBackup options set to '$BackupOptions'..."

echo -e "\nBacking up /boot/ directory:"
rsync $BackupOptions /boot/ "$BackupHost"::"$HOSTNAME"_boot/$Today/
touch boot/$Today

echo -e "\nBacking up /etc/ directory:"
rsync $BackupOptions /etc/ "$BackupHost"::"$HOSTNAME"_etc/$Today/
touch etc/$Today

echo
/etc/init.d/grpwise stop
echo "Backing up GW volume:"
rsync $BackupOptions /media/nss/GW/ "$BackupHost"::"$HOSTNAME"_GW/$Today/
/etc/init.d/grpwise start
touch GW/$Today

echo -e "\n\nSaving Trustees for USERS volume..."
/opt/novell/nss/sbin/metamig save USERS -m t > /media/nss/USERS/trustees.xml
echo "Backing up USERS volume:"
rsync $BackupOptions /media/nss/USERS/ "$BackupHost"::"$HOSTNAME"_USERS/$Today/
touch USERS/$Today

echo -e "\n\nSaving Trustees for SHARED volume..."
/opt/novell/nss/sbin/metamig save SHARED -m t > /media/nss/SHARED/trustees.xml
echo "Backing up SHARED volume:"
rsync $BackupOptions /media/nss/SHARED/ "$BackupHost"::"$HOSTNAME"_SHARED/$Today/
touch SHARED/$Today

EndTime=`date`

echo -e "\n\nBackup of $HOSTNAME to $BackupHost completed at $EndTime."
echo "**********************************************************************"