FEC Filesystem

This document describes filesystem and boot process for a FESA frontend computer (commonly referred to as FEC).

General Boot Process

  • bios executes PXE bootrequest
  • receive PXE loader, receive kernel and initrd
  • start Linux
  • configure Network with DHCP (ip, hostname, routes, nameserver)
  • execute bootscripts of ramdisk (starting ssh, ntpd, snmp, ...)
  • execute nfsinit, which will start the fesa initialization, that is ...
  • ... mount fesa folder by nfs
  • set symbolic links according to FEC (hostname, architecture)
  • execute fesa boot scripts (global, arch, local)

General Filesystem Layout for SCUs running a 32-bit OS Image

The base filesystem is a initrd. Initrd contains all files needed to boot the FEC and bring up the network. This part is more or less generic for all embedded Linux systems (FESA or other). Next it will mount the so called nfs init which contains the fesa startscript.

The acc6 cluster changed some paths (due to different filesystems). The export share moved to it's own filesystem outside of usr. The fesa scratch and data directories moved to it's own filesystem outside of usr or export. Readonly is /common/export, readwrite is under /common/fesadata

path on fec symlinks to which is on the nfs/blades acc6 el6, 64bit note
/opt/nfsinit   /common/export/nfsinit /common/export/nfsinit readonly
/opt/fesa/nfs   /common/export/fesa /common/export/fesa readonly
/opt/fesa/scratch   /common/fesadata/scratch - readwrite, squash to fesauser
/opt/fesa/data   /common/fesadata/data/<host> /common/fesadata/data/<host> readwrite, squash to fesauser
/opt/fesa/global /opt/fesa/nfs/global /common/export/fesa/global - readonly
/opt/fesa/arch /opt/fesa/nfs/arch/<arch> /common/export/fesa/arch/<arch> - readonly
/opt/fesa/local /opt/fesa/nfs/local/<host> /common/export/fesa/local/<host> - readonly
/opt/fesa/du - - copied from /common/export/fesa/local/<host> ramdisk
Where <arch> is i686, x86_64 or ppc (uname -m). <host> is the short hostname (hostname -s).

libraries

Basic libraries can be found inside the ramdisk on /lib and /usr/lib. The environment variable LD_LIBRARY_PATH additionaly searches in /opt/fesa/local/lib and /opt/fesa/arch/lib .

binaries

PATH contains searches in /opt/fesa/local/bin and /opt/fesa/arch/bin .

boot

The boot process will execute scripts in this order (paths on the fec)

/etc/init/boot
/etc/init/boot.d/
/opt/nfsinit/host/
/opt/fesa/global/init
/opt/fesa/arch/init
/opt/fesa/local/init

FESA Classes

Fesa Classes consist of a binary and an instantiation document (XML format). This document is host specific and belongs into the data directory /common/usr/export/fesa/data/<host>/prod/fesa-data/ ( on acc6 /common/fesadata/data/<host>/prod/fesa-data/)

Virtual FEC

Some FESA classes may not require a FEC. They run on one of the production systems of the asl cluster. For this there is a serviceguard service that provides a virtual IP for fcs00a.acc.gsi.de. For each FESA binary there is a serviceguard service that controls this equipment software.

An effort has been made to make the location of configuration files and scripts similiar to normal FECs. Instantiation documents live at locations such as /common/usr/export/fesa/fcs00a/prod/fesa-data/. Binaries somewhere below /common/usr/export/fesa/<CPU>/. Startscripts /common/usr/export/fesa/local/fcs00a/init/.

However, these startscripts are slightly different to those for normal FECs.

SCUs/FECs running a 64-bit OS Image

64-bit FECs have a different nfsinit script.
  • bios executes PXE bootrequest
  • receive PXE loader, receive kernel and initrd
  • start Linux
  • configure network with DHCP (ip, hostname, routes, nameserver)
  • execute bootscripts of ramdisk (starting ssh, ntpd, snmp, ...)
  • execute nfsinit, which will start the fesa initialization, that is
    • mount fesa folder via nfs, readonly
    • mount fesadata folder via nfs, readwrite
    • search for deploy units and their configuration and copy them to ramdisk
    • spawn a daemon process for each deploy unit

FESA deploy-units are searched at /common/export/fesa/local/HOSTNAME/ for each deploy unit the init expects a folder that includes the unit, the instance file, cmw.cfg, fesa.cfg, etc. The folder must have the same name as the unit. For example:

testDU/
testDU/cmw.cfg
testDU/fesa.cfg
testDU/log.cfg
testDU/messages.cfg
testDU/messagesLab.cfg
testDU/testDU
testDU/testDU.instance

Units are started by slackdaemon. Slackdaemon is a wrapper process, it will cleanly detach from the terminal, capture stdout and stderr, restart any crashed FESA deploy-unit.

Starting / Stopping Manually

To restart a running FESA deploy-unit: daemon -n testDU --restart

To copy it from nfs again and start (or restart), rerun the init script e.g. /opt/nfsinit/HOSTNAME/50_fesa

To manually stop a FESA deploy-unit: daemon -n testDU --stop

How to adjust a FEC for the current 64bit structure

  • Change link to FESA script in /common/export/nfsinit/vmla0x to ../global/fesa_64bit
  • In /common/tftp/csco/pxe/pxelinux.cfg switch link with hostname of FEC to *scuxl, either virtual_scuxl for virtual frontends or scuxl for real frontends

Hints for Debugging

(added by DB)
  • consider using the diagnostic logging. Logon to the web service and filter for the FECs HOSTNAME.
  • on the ASL cluster
    • check that folder /common/fesadata/data/HOSTNAME exists.
    • check that the symbolic link /common/export/nfsinit/HOSTNAME/50_fesaexists and is pointing to the right script
      • 50_fesa -> ../global/fesa_64bit for 64 bit systems
      • 50_fesa -> ../global/fesa for 32 bit systems

White Rabbit based Timing

Currently: If a FESA deploy-unit's instantiation document is configured to use White Rabbit based timing the daemon automatically applies the required FESA start parameters (-usrArgs -WR). This is done by searching for timingDomain value="FAIR" in the instance file.
Topic revision: r20 - 12 Jul 2018, LudwigHechler
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback