Overview

Installation notes for personal FreeBSD server.

Basic System

Networking

SCSI Tape Library

Recipe: Identify tape library devices

Use camcontrol to identify the drive(sa), changer(ch) and CAM(pass) devices.

root@talisker:/usr/local/etc/bacula # camcontrol devlist
<HP Ultrium 4-SCSI B63Z>           at scbus0 target 5 lun 0 (sa0,pass0)
<QUANTUM UHDL 0086>                at scbus0 target 5 lun 1 (pass1,ch0)
<HP MB2000FAMYV HPD7>              at scbus1 target 0 lun 0 (pass2,da0)
<HP MB2000FAMYV HPD7>              at scbus1 target 1 lun 0 (pass3,da1)
<HP MB2000FBUCL HPD3>              at scbus1 target 2 lun 0 (pass4,da2) <INTEL SSDSC2CT240A3 300i>         at scbus2 target 0 lun 0 (ada0,pass5)
<WDC WD30EFRX-68EUZN0 80.00A80>    at scbus2 target 1 lun 0 (ada1,pass6)
<WDC WD30EFRX-68EUZN0 80.00A80>    at scbus3 target 0 lun 0 (ada2,pass7)
<WDC WD30EFRX-68EUZN0 80.00A80>    at scbus3 target 1 lun 0 (ada3,pass8)

Recipe: Probe SCSI bus

If the tape library isn’t powered up and finished with startup routines by the time you turn on the server, it won’t be detected properly. You must reprobe the SCSI bus with the following steps, where “X” is the SCSI bus number.

camcontrol devlist -v
camcontrol reset X
camcontrol rescan X

Recipe: Manipulate changer

Install misc/mtx from ports. Slots marked “Full” without a VolumeTag are non-barcoded tapes. The load and transfer commands can be used to move tapes within the library.

root@talisker:~ # mtx -f /dev/pass1 status
  Storage Changer /dev/pass1:1 Drives, 8 Slots ( 0 Import/Export )
Data Transfer Element 0:Full (Storage Element 1 Loaded)
      Storage Element 1:Empty
      Storage Element 2:Full 
      Storage Element 3:Full 
      Storage Element 4:Full 
      Storage Element 5:Full 
      Storage Element 6:Empty
      Storage Element 7:Empty
      Storage Element 8:Full :VolumeTag=000106L3

ZFS

Recipe: Create new ZFS filesystem

There is effectively no overhead to compression, so enable it on all root ZFS filesystems and allow it to be inherited.

zfs create zfs_stripe_0/software
zfs set compression=lz4 zfs_stripe_0/software

Recipe: Replacing a failed disk

At the OS level, a failing disk may manifest like this:

root@talisker:~ # dmesg
...
(da0:mpt1:0:1:0): READ(10). CDB: 28 00 e8 e0 88 ae 00 00 01 00
(da0:mpt1:0:1:0): CAM status: SCSI Status Error
(da0:mpt1:0:1:0): SCSI status: Check Condition
(da0:mpt1:0:1:0): SCSI sense: RECOVERED ERROR asc:5d,14 (Hardware impending failure too many block reassigns)
(da0:mpt1:0:1:0): Field Replaceable Unit: 5
...

Once the disk has fully failed ZFS reports it like this:

root@talisker:~ # zpool status
  pool: zfs_mirror_0
 state: DEGRADED
status: One or more devices has been removed by the administrator.
        Sufficient replicas exist for the pool to continue functioning in a
        degraded state.
action: Online the device using 'zpool online' or replace the device with
        'zpool replace'.
  scan: scrub repaired 128K in 15h33m with 0 errors on Fri Aug 31 22:08:42 2018
config:

        NAME                      STATE     READ WRITE CKSUM
        zfs_mirror_0              DEGRADED     0     0     0
          mirror-0                DEGRADED     0     0     0
            16848908995976332824  REMOVED      0     0     0  was /dev/da0
            da0                   ONLINE       0     0     0
            da1                   ONLINE       0     0     0

errors: No known data errors

Replacing the disk is a single command:

root@talisker:~ # zpool replace zfs_mirror_0 16848908995976332824 da2

Monitor the resilvering process until complete.

root@talisker:~ # zpool status
  pool: zfs_mirror_0
 state: DEGRADED
status: One or more devices is currently being resilvered.  The pool will
        continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
  scan: resilver in progress since Wed Sep 12 20:20:39 2018
        4.82M scanned out of 682G at 617K/s, 322h2m to go
        4.62M resilvered, 0.00% done
config:

        NAME                        STATE     READ WRITE CKSUM
        zfs_mirror_0                DEGRADED     0     0     0
          mirror-0                  DEGRADED     0     0     0
            replacing-0             REMOVED      0     0     0
              16848908995976332824  REMOVED      0     0     0  was /dev/da0
              da2                   ONLINE       0     0     0  (resilvering)
            da0                     ONLINE       0     0     0
            da1                     ONLINE       0     0     0

errors: No known data errors

Fluxbox

Change Fluxbox clock format in ~/.fluxbox/init.

session.screen0.strftimeFormat: %d %b, %a %H:%M:%S

Misc Software

Install from ports: ntp, gimp, pidgin, geeqie, deluge, kicad[-devel], wget, bind-tools, irssi, vim (and with GTK support)

Daemons

Samba

Bacula

Install sysutils/bacula-server from ports.

PostgreSQL

MySQL

Install databases/mysql56-client and databases/mysql56-server from ports.

Add mysql_enable="YES" to /etc/rc.conf.

Set passwords for root and create unprivileged users for relevant databases.

Apache (with Python CGI and MySQL capabilities)

Install www/apache24 and databases/py-MySQLdb from ports.

Add apache24_enable="YES" to /etc/rc.conf.

Add an entry for this host to /etc/hosts and ensure file based authentication is enabled in /etc/nsswitch.conf.

Edit /usr/local/etc/apache24/httpd.conf, setting ServerName and ServerAdmin, and uncommenting the cgi-bin module.

Install cgi-bin script, setting shebang, execute permissions, etc.

Recipes

List of installed ports

pkg query --all '%o %n-%v %R'

Show options port was built with

cd $portsdir
make showconfig

Reset terminal environment

exec su - <username>

Start separate X session

xinit /usr/local/bin/xterm -- :2