<?xml version="1.0" encoding="UTF-8"?>
<chapter id="HDRWQ99">
  <title>Installing Additional Server Machines</title>

  <para>
  <indexterm>
    <primary>instructions</primary>

    <secondary>file server machine after first</secondary>
  </indexterm>

  <indexterm>
    <primary>installing</primary>

    <secondary>file server machine after first</secondary>
  </indexterm>

  <indexterm>
    <primary>server machine after first</primary>

    <see>file server machine, additional</see>
  </indexterm>

  Instructions for the following procedures appear in the indicated section of this chapter. <itemizedlist>
      <listitem>
        <para><link linkend="HDRWQ100">Installing an Additional File Server Machine</link></para>
      </listitem>

      <listitem>
        <para><link linkend="HDRWQ114">Installing Database Server Functionality</link></para>
      </listitem>

      <listitem>
        <para><link linkend="HDRWQ125">Removing Database Server Functionality</link></para>
      </listitem>
    </itemizedlist></para>

  <para>The instructions make the following assumptions. <itemizedlist>
      <listitem>
        <para>You have already installed your cell's first file server machine by following the instructions in <link
        linkend="HDRWQ17">Installing the First AFS Machine</link></para>
      </listitem>

      <listitem>
        <para>You are logged in as the local superuser <emphasis role="bold">root</emphasis></para>
      </listitem>

      <listitem>
        <para>You are working at the console</para>
      </listitem>

      <listitem>
        <para>A standard version of one of the operating systems supported by the current version of AFS is running on the
        machine</para>
      </listitem>

      <listitem>
        <para>You can access the data on the OpenAFS Binary Distribution for
        your operating system, either on the local filesystem or via an NFS
        mount of the distribution's contents.</para>
      </listitem>
    </itemizedlist>

  <indexterm>
    <primary>requirements</primary>

    <secondary>file server machine (additional)</secondary>
  </indexterm>
  </para>

  <sect1 id="HDRWQ100">
    <title>Installing an Additional File Server Machine</title>

    <para>The procedure for installing a new file server machine is similar to installing the first file server machine in your
    cell. There are a few parts of the installation that differ depending on whether the machine is the same AFS system type as an
    existing file server machine or is the first file server machine of its system type in your cell. The differences mostly concern
    the source for the needed binaries and files, and what portions of the Update Server you install: <itemizedlist>
        <listitem>
          <para>On a new system type, you must load files and binaries from the 
          OpenAFS distribution. You may install the server portion of the
          Update Server to make this machine the binary distribution machine 
          for its system type.</para>
        </listitem>

        <listitem>
          <para>On an existing system type, you can copy files and binaries 
          from a previously installed file server machine, rather
          than from the OpenAFS distribution. You may install the client 
          portion of the Update Server to accept updates of binaries, because a
          previously installed machine of this type was installed as the binary 
          distribution machine.</para>
        </listitem>
        <listitem>
          <para>On some system types, distribtution of the appropriate binaries
          may be acheived using the system's own package management system. In
          these cases, it is recommended that this system is used, rather than
          installing the binaries by hand.</para>
        </listitem>
      </itemizedlist></para>

    <para>These instructions are brief; for more detailed information, refer to the corresponding steps in <link
    linkend="HDRWQ17">Installing the First AFS Machine</link>. <indexterm>
        <primary>overview</primary>

        <secondary>installing server machine after first</secondary>
      </indexterm></para>

    <para>To install a new file server machine, perform the following procedures: <orderedlist>
        <listitem>
          <para>Copy needed binaries and files onto this machine's local disk,
          as required.</para>
        </listitem>

        <listitem>
          <para>Incorporate AFS modifications into the kernel</para>
        </listitem>

        <listitem>
          <para>Configure partitions for storing volumes</para>
        </listitem>

        <listitem>
          <para>Replace the standard <emphasis role="bold">fsck</emphasis> utility with the AFS-modified version on some system
          types</para>
        </listitem>

        <listitem>
          <para>Start the Basic OverSeer (BOS) Server</para>
        </listitem>

        <listitem>
          <para>Start the appropriate portion of the Update Server, if 
          required</para>
        </listitem>

        <listitem>
          <para>Start the <emphasis role="bold">fs</emphasis> process, which incorporates three component processes: the File
          Server, Volume Server, and Salvager</para>
        </listitem>
      </orderedlist></para>

    <para>After completing the instructions in this section, you can install database server functionality on the machine according
    to the instructions in <link linkend="HDRWQ114">Installing Database Server Functionality</link>. <indexterm>
        <primary>usr/afs directory</primary>

        <secondary>server machine after first</secondary>
      </indexterm> <indexterm>
        <primary>file server machine, additional</primary>

        <secondary>/usr/afs directory</secondary>
      </indexterm> <indexterm>
        <primary>creating</primary>

        <secondary>/usr/afs directory</secondary>

        <tertiary>server machine after first</tertiary>
      </indexterm> <indexterm>
        <primary>usr/afs/bin directory</primary>

        <secondary>server machine after first</secondary>
      </indexterm> <indexterm>
        <primary>file server machine, additional</primary>

        <secondary>/usr/afs/bin directory</secondary>
      </indexterm> <indexterm>
        <primary>creating</primary>

        <secondary>/usr/afs/bin directory</secondary>

        <tertiary>server machine after first</tertiary>
      </indexterm> <indexterm>
        <primary>usr/vice/etc directory</primary>

        <secondary>server machine after first</secondary>
      </indexterm> <indexterm>
        <primary>file server machine, additional</primary>

        <secondary>/usr/vice/etc directory</secondary>
      </indexterm> <indexterm>
        <primary>creating</primary>

        <secondary>/usr/vice/etc directory</secondary>

        <tertiary>server machine after first</tertiary>
      </indexterm></para>

    <sect2 id="Header_99">
      <title>Creating AFS Directories and Performing Platform-Specific Procedures</title>

      <para>If your operating systems AFS distribution is supplied as packages,
      such as .rpms or .debs, you should just install those packages as detailed
      in the previous chapter.</para>
      
      <para>Create the <emphasis role="bold">/usr/afs</emphasis> and <emphasis role="bold">/usr/vice/etc</emphasis> directories on
      the local disk. Subsequent instructions copy files from the AFS distribution into them, at the appropriate point for
      each system type.</para>

      <programlisting>
   # <emphasis role="bold">mkdir /usr/afs</emphasis>
   # <emphasis role="bold">mkdir /usr/afs/bin</emphasis>
   # <emphasis role="bold">mkdir /usr/vice</emphasis>
   # <emphasis role="bold">mkdir /usr/vice/etc</emphasis>
   # <emphasis role="bold">mkdir /tmp/afsdist</emphasis>     
</programlisting>

      <para>As on the first file server machine, the initial procedures in installing an additional file server machine vary a good
      deal from platform to platform. For convenience, the following sections group together all of the procedures for a system
      type. Most of the remaining procedures are the same on every system type, but differences are noted as appropriate. The
      initial procedures are the following. <itemizedlist>
          <listitem>
            <para>Incorporate AFS modifications into the kernel, either by using a dynamic kernel loader program or by building a
            new static kernel</para>
          </listitem>

          <listitem>
            <para>Configure server partitions to house AFS volumes</para>
          </listitem>

          <listitem>
            <para>Replace the operating system vendor's <emphasis role="bold">fsck</emphasis> program with a version that recognizes
            AFS data <indexterm>
                <primary>file server machine, additional</primary>

                <secondary>AFS login</secondary>

                <see>first AFS machine</see>
              </indexterm></para>
          </listitem>

          <listitem>
            <para>If the machine is to remain an AFS client machine, modify the machine's authentication system so that users obtain
            an AFS token as they log into the local file system. (For this procedure only, the instructions direct you to the
            platform-specific section in <link linkend="HDRWQ17">Installing the First AFS Machine</link>.)</para>
          </listitem>
        </itemizedlist></para>

      <para>To continue, proceed to the section for this system type: <itemizedlist>
          <listitem>
            <para><link linkend="HDRWQ106">Getting Started on Linux Systems</link></para>
          </listitem>

          <listitem>
            <para><link linkend="HDRWQ107">Getting Started on Solaris Systems</link></para>
          </listitem>
        </itemizedlist></para>

      <sect3 id="HDRWQ106">
        <title>Getting Started on Linux Systems</title>

        <indexterm>
          <primary>file server machine, additional</primary>

          <secondary>fsck program</secondary>

          <tertiary>on Linux</tertiary>
        </indexterm>

        <indexterm>
          <primary>fsck program</primary>

          <secondary>on server machine after first</secondary>

          <tertiary>Linux</tertiary>
        </indexterm>

        <para>Begin by running the AFS initialization script to call the <emphasis role="bold">insmod</emphasis> program, which
        dynamically loads AFS modifications into the kernel. Then create partitions for storing AFS volumes. You do not need to
        replace the Linux <emphasis role="bold">fsck</emphasis> program.</para>
        
        <para> The procedure for starting up OpenAFS depends upon your distribution</para>
          <orderedlist>
            <listitem>
              <para>For Fedora and RedHat Enterprise Linux systems (or their
              derivateds), download and install the RPM set for your operating system
              from the OpenAFS distribution site. You will need the
              <emphasis role="bold">openafs</emphasis> and
              <emphasis role="bold">openafs-server</emphasis> packages, along
              with an <emphasis role="bold">openafs-kernel</emphasis> package
              matching your current, running, kernel. If you wish to install
              client functionality, you will also require the
              <emphasis role="bold">openafs-client</emphasis> package.</para>
             
              <para>You can find the version of your current kernel by running
<programlisting>
  # uname -r
<replaceable>2.6.20-1.2933.fc6</replaceable>
</programlisting></para>
 
              <para>Once downloaded, the packages may be installed with the
              <emphasis role="bold">rpm</emphasis> command
<programlisting>
  # rpm -U openafs-* openafs-client-* openafs-server-* openafs-kernel-*
</programlisting></para>
            </listitem>
            <listitem>
            <indexterm>
              <primary>incorporating AFS kernel extensions</primary>

              <secondary>server machine after first</secondary>

              <tertiary>Linux</tertiary>
            </indexterm>

            <indexterm>
              <primary>AFS kernel extensions</primary>

              <secondary>on server machine after first</secondary>

              <tertiary>Linux</tertiary>
            </indexterm>

            <indexterm>
              <primary>file server machine, additional</primary>

              <secondary>AFS kernel extensions</secondary>

              <tertiary>on Linux</tertiary>
            </indexterm>

            <indexterm>
              <primary>Linux</primary>

              <secondary>AFS kernel extensions</secondary>

              <tertiary>on add'l server machine</tertiary>
            </indexterm>
              <para>For systems which are provided as a tarball, or built from
              source, unpack the distribution tarball. The examples below assume
              that you have unpacked the files into the
              <emphasis role="bold">/tmp/afsdist</emphasis>directory. If you
              pick a different location, substitute this in all of the following
              examples. Once you have unpacked the distribution,
              change directory as indicated.
<programlisting>
  # <emphasis role="bold">cd /tmp/afsdist/linux/dest/root.client/usr/vice/etc</emphasis>
</programlisting></para>

              <para>Copy the AFS kernel library files to the local <emphasis role="bold">/usr/vice/etc/modload</emphasis> directory.
              The filenames for the libraries have the format <emphasis
              role="bold">libafs-</emphasis><replaceable>version</replaceable><emphasis role="bold">.o</emphasis>, where
              <replaceable>version</replaceable> indicates the kernel build level. The string <emphasis role="bold">.mp</emphasis>
              in the <replaceable>version</replaceable> indicates that the file is appropriate for machines running a multiprocessor
              kernel. <programlisting>
   # <emphasis role="bold">cp -rp  modload  /usr/vice/etc</emphasis>
</programlisting></para>
            
              <para>Copy the AFS initialization script to the local directory for initialization files (by convention, <emphasis
              role="bold">/etc/rc.d/init.d</emphasis> on Linux machines). Note the removal of the <emphasis
              role="bold">.rc</emphasis> extension as you copy the script. <programlisting>
   # <emphasis role="bold">cp -p   afs.rc  /etc/rc.d/init.d/afs</emphasis> 
</programlisting></para>
            </listitem>
            <listitem>
                <indexterm>
                  <primary>configuring</primary>

                  <secondary>AFS server partition on server machine after first</secondary>

                  <tertiary>Linux</tertiary>
                </indexterm> <indexterm>
                  <primary>AFS server partition</primary>

                  <secondary>configuring on server machine after first</secondary>

                  <tertiary>Linux</tertiary>
                </indexterm> <indexterm>
                  <primary>file server machine, additional</primary>

                  <secondary>AFS server partition</secondary>

                  <tertiary>on Linux</tertiary>
                </indexterm> <indexterm>
                  <primary>Linux</primary>

                  <secondary>AFS server partition</secondary>

                  <tertiary>on add'l server machine</tertiary>
                </indexterm>
              <para>Create a directory called <emphasis role="bold">/vicep</emphasis><replaceable>xx</replaceable> for each AFS
              server partition you are configuring (there must be at least one). Repeat the command for each partition.
              <programlisting>
   # <emphasis role="bold">mkdir /vicep</emphasis><replaceable>xx</replaceable>
</programlisting></para>
            </listitem>

            <listitem>
              <para>Add a line with the following format to the file systems registry file, <emphasis
              role="bold">/etc/fstab</emphasis>, for each directory just created. The entry maps the directory name to the disk
              partition to be mounted on it. <programlisting>
   /dev/<replaceable>disk</replaceable>  /vicep<replaceable>xx</replaceable>  ext2  defaults  0  2   
</programlisting></para>

              <para>The following is an example for the first partition being configured.</para>

              <programlisting>
   /dev/sda8 /vicepa ext2 defaults 0 2
</programlisting>
            </listitem>

            <listitem>
              <para>Create a file system on each partition that is to be mounted at a <emphasis
              role="bold">/vicep</emphasis><replaceable>xx</replaceable> directory. The following command is probably appropriate,
              but consult the Linux documentation for more information. <programlisting>
   # <emphasis role="bold">mkfs -v /dev/</emphasis><replaceable>disk</replaceable>
</programlisting></para>
            </listitem>

            <listitem>
              <para>Mount each partition by issuing either the <emphasis role="bold">mount -a</emphasis> command to mount all
              partitions at once or the <emphasis role="bold">mount</emphasis> command to mount each partition in turn.</para>
            </listitem>

            <listitem>
              <para>If the machine is to remain an AFS client, incorporate AFS into its authentication system, following the
              instructions in <link linkend="HDRWQ44">Enabling AFS Login on Linux Systems</link>.</para>
            </listitem>

            <listitem>
              <para>Proceed to <link linkend="HDRWQ108">Starting Server Programs</link>.</para>
            </listitem>
          </orderedlist>
      </sect3>

      <sect3 id="HDRWQ107">
        <title>Getting Started on Solaris Systems</title>

        <para>Begin by running the AFS initialization script to call the <emphasis role="bold">modload</emphasis> program, which
        dynamically loads AFS modifications into the kernel. Then configure partitions and replace the Solaris <emphasis
        role="bold">fsck</emphasis> program with a version that correctly handles AFS volumes. <orderedlist>
            <indexterm>
              <primary>incorporating AFS kernel extensions</primary>

              <secondary>server machine after first</secondary>

              <tertiary>Solaris</tertiary>
            </indexterm>

            <indexterm>
              <primary>AFS kernel extensions</primary>

              <secondary>on server machine after first</secondary>

              <tertiary>Solaris</tertiary>
            </indexterm>

            <indexterm>
              <primary>file server machine, additional</primary>

              <secondary>AFS kernel extensions</secondary>

              <tertiary>Solaris</tertiary>
            </indexterm>

            <indexterm>
              <primary>Solaris</primary>

              <secondary>AFS kernel extensions</secondary>

              <tertiary>on add'l server machine</tertiary>
            </indexterm>

            <listitem>
              <para>Unpack the OpenAFS Solaris distribution tarball. The examples
              below assume that you have unpacked the files into the 
              <emphasis role="bold">/tmp/afsdist</emphasis> directory. If you 
              pick a diferent location, substitute this in all of the following
              exmaples. Once you have unpacked the distribution, change directory
              as indicated. 
<programlisting>
   # <emphasis role="bold">cd  /tmp/afsdist/sun4x_56/dest/root.client/usr/vice/etc</emphasis>
</programlisting></para>
            </listitem>

            <listitem>
              <para>Copy the AFS initialization script to the local directory for initialization files (by convention, <emphasis
              role="bold">/etc/init.d</emphasis> on Solaris machines). Note the removal of the <emphasis role="bold">.rc</emphasis>
              extension as you copy the script. <programlisting>
   # <emphasis role="bold">cp -p  afs.rc  /etc/init.d/afs</emphasis>
</programlisting></para>
            </listitem>

            <listitem>
              <para>Copy the appropriate AFS kernel library file to the local file <emphasis
              role="bold">/kernel/fs/afs</emphasis>.</para>

            <para>If the machine is running Solaris 11 on the x86_64 platform:</para>

            <programlisting>
   # <emphasis role="bold">cp -p modload/libafs64.o /kernel/drv/amd64/afs</emphasis>
</programlisting>

            <para>If the machine is running Solaris 10 on the x86_64 platform:</para>

            <programlisting>
   # <emphasis role="bold">cp -p modload/libafs64.o /kernel/fs/amd64/afs</emphasis>
</programlisting>

              <para>If the machine is running Solaris 2.6 or the 32-bit version of Solaris 7, its kernel supports NFS server
              functionality, and the <emphasis role="bold">nfsd</emphasis> process is running:</para>

              <programlisting>
   # <emphasis role="bold">cp -p modload/libafs.o /kernel/fs/afs</emphasis>   
</programlisting>

              <para>If the machine is running Solaris 2.6 or the 32-bit version of Solaris 7, and its kernel does not support NFS
              server functionality or the <emphasis role="bold">nfsd</emphasis> process is not running:</para>

              <programlisting>
   # <emphasis role="bold">cp -p modload/libafs.nonfs.o /kernel/fs/afs</emphasis>   
</programlisting>

              <para>If the machine is running the 64-bit version of Solaris 7, its kernel supports NFS server functionality, and the
              <emphasis role="bold">nfsd</emphasis> process is running:</para>

              <programlisting>
   # <emphasis role="bold">cp -p modload/libafs64.o /kernel/fs/sparcv9/afs</emphasis>   
</programlisting>

              <para>If the machine is running the 64-bit version of Solaris 7, and its kernel does not support NFS server
              functionality or the <emphasis role="bold">nfsd</emphasis> process is not running:</para>

              <programlisting>
   # <emphasis role="bold">cp -p modload/libafs64.nonfs.o /kernel/fs/sparcv9/afs</emphasis>
</programlisting>
            </listitem>

            <listitem>
              <para>Run the AFS initialization script to load AFS modifications into the kernel. You can ignore any error messages
              about the inability to start the BOS Server or the Cache Manager or AFS client. <programlisting>
   # <emphasis role="bold">/etc/init.d/afs start</emphasis>   
</programlisting></para>

              <para>When an entry called <computeroutput>afs</computeroutput> does not already exist in the local <emphasis
              role="bold">/etc/name_to_sysnum</emphasis> file, the script automatically creates it and reboots the machine to start
              using the new version of the file. If this happens, log in again as the superuser <emphasis
              role="bold">root</emphasis> after the reboot and run the initialization script again. This time the required entry
              exists in the <emphasis role="bold">/etc/name_to_sysnum</emphasis> file, and the <emphasis
              role="bold">modload</emphasis> program runs.</para>

              <programlisting>
   login: <emphasis role="bold">root</emphasis>
   Password: <replaceable>root_password</replaceable>
   # <emphasis role="bold">/etc/init.d/afs start</emphasis>
</programlisting>

              <indexterm>
                <primary>replacing fsck program</primary>

                <secondary>server machine after first</secondary>

                <tertiary>Solaris</tertiary>
              </indexterm>

              <indexterm>
                <primary>fsck program</primary>

                <secondary>on server machine after first</secondary>

                <tertiary>Solaris</tertiary>
              </indexterm>

              <indexterm>
                <primary>file server machine, additional</primary>

                <secondary>fsck program</secondary>

                <tertiary>on Solaris</tertiary>
              </indexterm>

              <indexterm>
                <primary>Solaris</primary>

                <secondary>fsck program</secondary>

                <tertiary>on add'l server machine</tertiary>
              </indexterm>
            </listitem>

            <listitem>
              <para>Create the <emphasis role="bold">/usr/lib/fs/afs</emphasis> directory to house the AFS-modified <emphasis
              role="bold">fsck</emphasis> program and related files. <programlisting>
   # <emphasis role="bold">mkdir /usr/lib/fs/afs</emphasis>
   # <emphasis role="bold">cd /usr/lib/fs/afs</emphasis>  
</programlisting></para>
            </listitem>

            <listitem>
              <para>Copy the <emphasis role="bold">vfsck</emphasis> binary to the newly created directory, changing the name as you
              do so. <programlisting>
   # <emphasis role="bold">cp  /cdrom/sun4x_56/dest/root.server/etc/vfsck  fsck</emphasis>
</programlisting></para>
            </listitem>

            <listitem>
              <para>Working in the <emphasis role="bold">/usr/lib/fs/afs</emphasis> directory, create the following links to Solaris
              libraries: <programlisting>
   # <emphasis role="bold">ln -s /usr/lib/fs/ufs/clri</emphasis>  
   # <emphasis role="bold">ln -s /usr/lib/fs/ufs/df</emphasis>
   # <emphasis role="bold">ln -s /usr/lib/fs/ufs/edquota</emphasis>
   # <emphasis role="bold">ln -s /usr/lib/fs/ufs/ff</emphasis>
   # <emphasis role="bold">ln -s /usr/lib/fs/ufs/fsdb</emphasis>  
   # <emphasis role="bold">ln -s /usr/lib/fs/ufs/fsirand</emphasis>
   # <emphasis role="bold">ln -s /usr/lib/fs/ufs/fstyp</emphasis>
   # <emphasis role="bold">ln -s /usr/lib/fs/ufs/labelit</emphasis>
   # <emphasis role="bold">ln -s /usr/lib/fs/ufs/lockfs</emphasis>
   # <emphasis role="bold">ln -s /usr/lib/fs/ufs/mkfs</emphasis>  
   # <emphasis role="bold">ln -s /usr/lib/fs/ufs/mount</emphasis>
   # <emphasis role="bold">ln -s /usr/lib/fs/ufs/ncheck</emphasis>
   # <emphasis role="bold">ln -s /usr/lib/fs/ufs/newfs</emphasis>
   # <emphasis role="bold">ln -s /usr/lib/fs/ufs/quot</emphasis>
   # <emphasis role="bold">ln -s /usr/lib/fs/ufs/quota</emphasis>
   # <emphasis role="bold">ln -s /usr/lib/fs/ufs/quotaoff</emphasis>
   # <emphasis role="bold">ln -s /usr/lib/fs/ufs/quotaon</emphasis>
   # <emphasis role="bold">ln -s /usr/lib/fs/ufs/repquota</emphasis>
   # <emphasis role="bold">ln -s /usr/lib/fs/ufs/tunefs</emphasis>
   # <emphasis role="bold">ln -s /usr/lib/fs/ufs/ufsdump</emphasis>
   # <emphasis role="bold">ln -s /usr/lib/fs/ufs/ufsrestore</emphasis>
   # <emphasis role="bold">ln -s /usr/lib/fs/ufs/volcopy</emphasis>
</programlisting></para>
            </listitem>

            <listitem>
              <para>Append the following line to the end of the file <emphasis role="bold">/etc/dfs/fstypes</emphasis>.
              <programlisting>
   afs AFS Utilities
</programlisting></para>
            </listitem>

            <listitem>
              <para>Edit the <emphasis role="bold">/sbin/mountall</emphasis> file, making two changes. <itemizedlist>
                  <listitem>
                    <para>Add an entry for AFS to the <computeroutput>case</computeroutput> statement for option 2, so that it reads
                    as follows: <programlisting>
   case "$2" in
   ufs)    foptions="-o p"
           ;;
   afs)    foptions="-o p"
           ;;
   s5)     foptions="-y -t /var/tmp/tmp$$ -D"
           ;;
   *)      foptions="-y"
           ;;
</programlisting></para>
                  </listitem>

                  <listitem>
                    <para>Edit the file so that all AFS and UFS partitions are checked in parallel. Replace the following section of
                    code: <programlisting>
   # For  fsck purposes, we make a distinction between ufs and
   # other file systems
   #
   if [ "$fstype" = "ufs" ]; then
        ufs_fscklist="$ufs_fscklist $fsckdev"
        saveentry $fstype "$OPTIONS" $special $mountp
        continue
   fi  
</programlisting></para>

                    <para>with the following section of code:</para>

                    <programlisting>
   # For fsck purposes, we make a distinction between ufs/afs
   # and other file systems.
   #
   if [ "$fstype" = "ufs" -o "$fstype" = "afs" ]; then
        ufs_fscklist="$ufs_fscklist $fsckdev"
        saveentry $fstype "$OPTIONS" $special $mountp
        continue
   fi
</programlisting>
                  </listitem>
                </itemizedlist></para>

              <indexterm>
                <primary>configuring</primary>

                <secondary>AFS server partition on server machine after first</secondary>

                <tertiary>Solaris</tertiary>
              </indexterm>

              <indexterm>
                <primary>AFS server partition</primary>

                <secondary>configuring on server machine after first</secondary>

                <tertiary>Solaris</tertiary>
              </indexterm>

              <indexterm>
                <primary>file server machine, additional</primary>

                <secondary>AFS server partition</secondary>

                <tertiary>on Solaris</tertiary>
              </indexterm>

              <indexterm>
                <primary>Solaris</primary>

                <secondary>AFS server partition</secondary>

                <tertiary>on add'l server machine</tertiary>
              </indexterm>
            </listitem>

            <listitem>
              <para>Create a directory called <emphasis role="bold">/vicep</emphasis><replaceable>xx</replaceable> for each AFS
              server partition you are configuring (there must be at least one). Repeat the command for each partition.
              <programlisting>
   # <emphasis role="bold">mkdir /vicep</emphasis><replaceable>xx</replaceable>
</programlisting></para>
            </listitem>

            <listitem>
              <para>Add a line with the following format to the file systems registry file, <emphasis
              role="bold">/etc/vfstab</emphasis>, for each partition to be mounted on a directory created in the previous step. Note
              the value <computeroutput>afs</computeroutput> in the fourth field, which tells Solaris to use the AFS-modified
              <emphasis role="bold">fsck</emphasis> program on this partition. <programlisting>
   /dev/dsk/<replaceable>disk</replaceable>   /dev/rdsk/<replaceable>disk</replaceable>   /vicep<replaceable>xx</replaceable>   afs   <replaceable>boot_order</replaceable>  yes  
</programlisting></para>

              <para>The following is an example for the first partition being configured.</para>

              <programlisting>
   /dev/dsk/c0t6d0s1 /dev/rdsk/c0t6d0s1 /vicepa afs 3 yes
</programlisting>
            </listitem>

            <listitem>
              <para>Create a file system on each partition that is to be mounted at a <emphasis
              role="bold">/vicep</emphasis><replaceable>xx</replaceable> directory. The following command is probably appropriate,
              but consult the Solaris documentation for more information. <programlisting>
   # <emphasis role="bold">newfs -v /dev/rdsk/</emphasis><replaceable>disk</replaceable>
</programlisting></para>
            </listitem>

            <listitem>
              <para>Issue the <emphasis role="bold">mountall</emphasis> command to mount all partitions at once.</para>
            </listitem>

            <listitem>
              <para>If the machine is to remain an AFS client, incorporate AFS into its authentication system, following the
              instructions in <link linkend="HDRWQ49">Enabling AFS Login and Editing the File Systems Clean-up Script on Solaris
              Systems</link>.</para>
            </listitem>

            <listitem>
              <para>Proceed to <link linkend="HDRWQ108">Starting Server Programs</link>.</para>
            </listitem>
          </orderedlist></para>

        <indexterm>
          <primary>file server machine, additional</primary>

          <secondary>server functionality</secondary>
        </indexterm>

        <indexterm>
          <primary>installing</primary>

          <secondary>server functionality</secondary>

          <tertiary>server machine after first</tertiary>
        </indexterm>
      </sect3>
    </sect2>

    <sect2 id="HDRWQ108">
      <title>Starting Server Programs</title>

      <para>In this section you initialize the BOS Server, the Update Server, and the <emphasis
      role="bold">fs</emphasis> process. You begin by copying the necessary server files to the local disk. <orderedlist>
          <indexterm>
            <primary>copying</primary>

            <secondary>server files to local disk</secondary>

            <tertiary>server machine after first</tertiary>
          </indexterm>

          <indexterm>
            <primary>Binary Distribution</primary>

            <secondary>copying server files from</secondary>

            <tertiary>server machine after first</tertiary>
          </indexterm>

          <indexterm>
            <primary>file server machine, additional</primary>

            <secondary>copying</secondary>

            <tertiary>server files to local disk</tertiary>
          </indexterm>

          <listitem>
            <para>Copy file server binaries to the local <emphasis role="bold">/usr/afs/bin</emphasis> directory. <itemizedlist>
                <listitem>
                  <para>On a machine of an existing system type, you can either 
                  copy files from the OpenAFS binary distribution or use a 
                  remote file transfer protocol to copy files from an existing 
                  server machine of the same system type. To load from the 
                  binary distribution, see the instructions just following for 
                  a machine of a new system type. If using a remote file 
                  transfer protocol, copy the complete contents of the 
                  existing server machine's 
                  <emphasis role="bold">/usr/afs/bin</emphasis>
                  directory.</para>
                </listitem>

                <listitem>
                  <para>If you are working from a tarball distribtion, rather
                  than one distributed in a packaged format, you must use the 
                  following instructions to copy files from 
                  the OpenAFS Binary Distribution.
                   <orderedlist>
                      <listitem>
                        <para>Unpack the distribution tarball. The examples 
                        below assume that you have unpacked the files into the 
                        <emphasis role="bold">/tmp/afsdist</emphasis> 
                        directory. If you pick a different location, substitute
                        this in all of the following examples.</para>
                      </listitem>

                      <listitem>
                        <para>Copy files from the distribution to the local <emphasis role="bold">/usr/afs</emphasis> directory.
                        <programlisting>
   # <emphasis role="bold">cd /tmp/afsdist/</emphasis><replaceable>sysname</replaceable><emphasis role="bold">/root.server/usr/afs</emphasis>
   # <emphasis role="bold">cp -rp  *  /usr/afs</emphasis>
</programlisting></para>
                      </listitem>
                    </orderedlist></para>
                </listitem>
              </itemizedlist></para>

            <indexterm>
              <primary>usr/afs/etc directory</primary>

              <secondary>server machine after first</secondary>
            </indexterm>

            <indexterm>
              <primary>file server machine, additional</primary>

              <secondary>/usr/afs/etc directory</secondary>
            </indexterm>

            <indexterm>
              <primary>creating</primary>

              <secondary>/usr/afs/etc directory</secondary>

              <tertiary>server machine after first</tertiary>
            </indexterm>

            <indexterm>
              <primary>creating</primary>

              <secondary>CellServDB file (server)</secondary>

              <tertiary>server machine after first</tertiary>
            </indexterm>

            <indexterm>
              <primary>UserList file</primary>

              <secondary>server machine after first</secondary>
            </indexterm>

            <indexterm>
              <primary>KeyFile file</primary>

              <secondary>server machine after first</secondary>
            </indexterm>

            <indexterm>
              <primary>CellServDB file (server)</primary>

              <secondary>creating</secondary>

              <tertiary>on server machine after first</tertiary>
            </indexterm>

            <indexterm>
              <primary>database server machine</primary>

              <secondary>entry in server CellServDB file</secondary>

              <tertiary>on server machine after first</tertiary>
            </indexterm>

            <indexterm>
              <primary>ThisCell file (server)</primary>

              <secondary>server machine after first</secondary>
            </indexterm>

            <indexterm>
              <primary>file server machine, additional</primary>

              <secondary>cell membership, defining</secondary>

              <tertiary>for server processes</tertiary>
            </indexterm>

            <indexterm>
              <primary>setting</primary>

              <secondary>cell name in server ThisCell file</secondary>

              <tertiary>server machine after first</tertiary>
            </indexterm>

            <indexterm>
              <primary>file server machine, additional</primary>

              <secondary>ThisCell file (server)</secondary>
            </indexterm>
          </listitem>

          <listitem>
            <para>Copy the contents of the 
            <emphasis role="bold">/usr/afs/etc</emphasis> directory from an 
            existing file server machine, using a remote file transfer protocol 
            such as <emphasis role="bold">sftp</emphasis> or 
            <emphasis role="bold">scp</emphasis>. If you use a system
            control machine, it is best to copy the contents of its 
            <emphasis role="bold">/usr/afs/etc</emphasis> directory. If you
            choose not to run a system control machine, copy the directory's 
            contents from any existing file server machine.
            <indexterm>
                <primary>BOS Server</primary>

                <secondary>starting</secondary>

                <tertiary>server machine after first</tertiary>
              </indexterm> <indexterm>
                <primary>starting</primary>

                <secondary>BOS Server</secondary>

                <tertiary>server machine after first</tertiary>
              </indexterm> <indexterm>
                <primary>file server machine, additional</primary>

                <secondary>BOS Server</secondary>
              </indexterm> <indexterm>
                <primary>authorization checking (disabling)</primary>

                <secondary>server machine after first</secondary>
              </indexterm> <indexterm>
                <primary>disabling authorization checking</primary>

                <secondary>server machine after first</secondary>
              </indexterm> <indexterm>
                <primary>file server machine, additional</primary>

                <secondary>authorization checking (disabling)</secondary>
              </indexterm></para>
          </listitem>

          <listitem>
            <para>Change to the <emphasis role="bold">/usr/afs/bin</emphasis> directory and start the BOS Server (<emphasis
            role="bold">bosserver</emphasis> process). Include the <emphasis role="bold">-noauth</emphasis> flag to prevent the AFS
            processes from performing authorization checking. This is a grave compromise of security; finish the remaining
            instructions in this section in an uninterrupted pass. <programlisting>
   # <emphasis role="bold">cd /usr/afs/bin</emphasis>
   # <emphasis role="bold">./bosserver -noauth</emphasis>
</programlisting> <indexterm>
                <primary>BosConfig file</primary>

                <secondary>adding entries</secondary>

                <tertiary>server machine after first</tertiary>
              </indexterm> <indexterm>
                <primary>adding</primary>

                <secondary>entries to BosConfig file</secondary>

                <tertiary>server machine after first</tertiary>
              </indexterm> <indexterm>
                <primary>Update Server</primary>

                <secondary>starting client portion</secondary>
              </indexterm> <indexterm>
                <primary>upclient process</primary>
              </indexterm> <indexterm>
                <primary>starting</primary>

                <secondary>Update Server client portion</secondary>
              </indexterm> <indexterm>
                <primary>file server machine, additional</primary>

                <secondary>Update Server client portion</secondary>
              </indexterm></para>
          </listitem>

          <listitem id="LIWQ109">
            <para>If you run a system control machine, create the <emphasis
            role="bold">upclientetc</emphasis> process as an instance of the client portion of the Update Server. It accepts updates
            of the common configuration files stored in the system control machine's <emphasis role="bold">/usr/afs/etc</emphasis>
            directory from the <emphasis role="bold">upserver</emphasis> process (server portion of the Update Server) running on
            that machine. The cell's first file server machine was installed as the system control machine in <link
            linkend="HDRWQ61">Starting the Server Portion of the Update Server</link>. (If you do not run a system control machine,
            you must update the contents of the <emphasis role="bold">/usr/afs/etc</emphasis> directory on each file server machine,
            using the appropriate <emphasis role="bold">bos</emphasis> commands.)</para>

            <para>By default, the Update Server performs updates every 300 seconds (five minutes). Use the <emphasis
            role="bold">-t</emphasis> argument to specify a different number of seconds. For the
            <replaceable>machine&nbsp;name</replaceable> argument, substitute the name of the machine you are installing. The
            command appears on multiple lines here only for legibility reasons.</para>

            <programlisting>
   # <emphasis role="bold">./bos create</emphasis>  &lt;<replaceable>machine name</replaceable>&gt; <emphasis role="bold">upclientetc simple</emphasis>  \ 
         <emphasis role="bold">"/usr/afs/bin/upclient</emphasis>  &lt;<replaceable>system control machine</replaceable>&gt;  \  
         [<emphasis role="bold">-t</emphasis>  &lt;<replaceable>time</replaceable>&gt;]  <emphasis role="bold">/usr/afs/etc" -cell</emphasis>  &lt;<replaceable>cell name</replaceable>&gt;  <emphasis
                role="bold">-noauth</emphasis>
</programlisting>

            <indexterm>
              <primary>Update Server</primary>

              <secondary>starting server portion</secondary>

              <tertiary>server machine after first</tertiary>
            </indexterm>

            <indexterm>
              <primary>starting</primary>

              <secondary>Update Server server portion</secondary>

              <tertiary>server machine after first</tertiary>
            </indexterm>

            <indexterm>
              <primary>file server machine, additional</primary>

              <secondary>Update Server server portion</secondary>
            </indexterm>
          </listitem>

          <listitem id="LIWQ110">
            <para>Create an instance of the Update 
            Server to handle distribution of the file server binaries
            stored in the <emphasis role="bold">/usr/afs/bin</emphasis> 
            directory. If your architecture using a package management system
            such as 'rpm' or 'apt' to maintain its binaries, note that
            distributing binaries via this system may interfere with your local
            package management tools.
            </para>
            
            <itemizedlist>
                <listitem>
                  <para>If this is the first file server machine of its AFS system type, create the <emphasis
                  role="bold">upserver</emphasis> process as an instance of the server portion of the Update Server. It distributes
                  its copy of the file server process binaries to the other file server machines of this system type that you
                  install in future. Creating this process makes this machine the binary distribution machine for its type.
                  <programlisting>
   # <emphasis role="bold">./bos create</emphasis>  &lt;<replaceable>machine name</replaceable>&gt; <emphasis role="bold">upserver  simple</emphasis>  \ 
         <emphasis role="bold">"/usr/afs/bin/upserver -clear /usr/afs/bin"</emphasis>   \
         <emphasis role="bold">-cell</emphasis> &lt;<replaceable>cell name</replaceable>&gt;  <emphasis role="bold">-noauth</emphasis>
</programlisting></para>
                </listitem>

                <listitem>
                  <para>If this machine is an existing system type, create the <emphasis role="bold">upclientbin</emphasis> process
                  as an instance of the client portion of the Update Server. It accepts updates of the AFS binaries from the
                  <emphasis role="bold">upserver</emphasis> process running on the binary distribution machine for its system type.
                  For distribution to work properly, the <emphasis role="bold">upserver</emphasis> process must already by running
                  on that machine.</para>

                  <para>Use the <emphasis role="bold">-clear</emphasis> argument to specify that the <emphasis
                  role="bold">upclientbin</emphasis> process requests unencrypted transfer of the binaries in the <emphasis
                  role="bold">/usr/afs/bin</emphasis> directory. Binaries are not sensitive and encrypting them is
                  time-consuming.</para>

                  <para>By default, the Update Server performs updates every 300 seconds (five minutes). Use the <emphasis
                  role="bold">-t</emphasis> argument to specify an different number of seconds.</para>

<programlisting>
   # <emphasis role="bold">./bos create</emphasis>  &lt;<replaceable>machine name</replaceable>&gt; <emphasis role="bold">upclientbin simple</emphasis>  \ 
        <emphasis role="bold">"/usr/afs/bin/upclient</emphasis> &lt;<replaceable>binary distribution machine</replaceable>&gt;   \
        [<emphasis role="bold">-t</emphasis> &lt;<replaceable>time</replaceable>&gt;] <emphasis role="bold">-clear /usr/afs/bin" -cell</emphasis> &lt;<replaceable>cell name</replaceable>&gt;  <emphasis
                      role="bold">-noauth</emphasis>
</programlisting>
                </listitem>
              </itemizedlist>

            <indexterm>
              <primary>File Server</primary>

              <secondary>server machine after first</secondary>
            </indexterm>

            <indexterm>
              <primary>starting</primary>

              <secondary>File Server</secondary>

              <tertiary>server machine after first</tertiary>
            </indexterm>

            <indexterm>
              <primary>file server machine, additional</primary>

              <secondary>File Server</secondary>
            </indexterm>

            <indexterm>
              <primary>Volume Server</primary>

              <secondary>server machine after first</secondary>
            </indexterm>

            <indexterm>
              <primary>starting</primary>

              <secondary>Volume Server</secondary>

              <tertiary>server machine after first</tertiary>
            </indexterm>

            <indexterm>
              <primary>file server machine, additional</primary>

              <secondary>Volume Server</secondary>
            </indexterm>

            <indexterm>
              <primary>Salvager (salvager process)</primary>

              <secondary>server machine after first</secondary>
            </indexterm>

            <indexterm>
              <primary>fs process</primary>

              <secondary>server machine after first</secondary>
            </indexterm>

            <indexterm>
              <primary>starting</primary>

              <secondary>fs process</secondary>

              <tertiary>server machine after first</tertiary>
            </indexterm>

            <indexterm>
              <primary>file server machine, additional</primary>

              <secondary>fs process</secondary>
            </indexterm>
          </listitem>

          <listitem>
            <para>Issue the <emphasis role="bold">bos create</emphasis> command
            to start the <emphasis role="bold">fs</emphasis> process or the
            <emphasis role="bold">dafs</emphasis> process, depending on if you
            want to run the Demand-Attach File Server or not. See <link
            linkend="DAFS">Appendix C, The Demand-Attach File Server</link> for
            more information on whether you want to run it or not.

	    <itemizedlist>
              <listitem>

            <para>If you do not want to run the Demand-Attach File Server, start the <emphasis role="bold">fs</emphasis> process, which binds together the File Server, Volume Server, and
            Salvager. <programlisting>
   # <emphasis role="bold">./bos create</emphasis>  &lt;<replaceable>machine name</replaceable>&gt; <emphasis role="bold">fs fs</emphasis>   \ 
         <emphasis role="bold">/usr/afs/bin/fileserver /usr/afs/bin/volserver</emphasis>  \ 
         <emphasis role="bold">/usr/afs/bin/salvager -cell</emphasis> &lt;<replaceable>cell name</replaceable>&gt;  <emphasis
                  role="bold">-noauth</emphasis>
</programlisting></para>
          </listitem>

          <listitem>

            <para>If you want to run the Demand-Attach File Server, start the
            <emphasis role="bold">dafs</emphasis> process, which binds together
            the File Server, Volume Server, Salvage Server, and Salvager.
            <programlisting>
   # <emphasis role="bold">./bos create</emphasis>  &lt;<replaceable>machine name</replaceable>&gt; <emphasis role="bold">dafs dafs</emphasis>   \ 
         <emphasis role="bold">/usr/afs/bin/dafileserver /usr/afs/bin/davolserver</emphasis>  \ 
         <emphasis role="bold">/usr/afs/bin/salvageserver</emphasis>  \ 
         <emphasis role="bold">/usr/afs/bin/dasalvager -cell</emphasis> &lt;<replaceable>cell name</replaceable>&gt;  <emphasis
                  role="bold">-noauth</emphasis>
</programlisting></para>
          </listitem>

          </itemizedlist>

          </para>
          </listitem>
        </orderedlist></para>

      <indexterm>
        <primary>installing</primary>

        <secondary>client functionality</secondary>

        <tertiary>server machine after first</tertiary>
      </indexterm>

      <indexterm>
        <primary>file server machine, additional</primary>

        <secondary>client functionality</secondary>
      </indexterm>
    </sect2>

    <sect2 id="HDRWQ111">
      <title>Installing Client Functionality</title>

      <para>If you want this machine to be a client as well as a server, follow the instructions in this section. Otherwise, skip to
      <link linkend="HDRWQ112">Completing the Installation</link>.</para>

      <para>Begin by loading the necessary client files to the local disk. Then create the necessary configuration files and start
      the Cache Manager. For more detailed explanation of the procedures involved, see the corresponding instructions in <link
      linkend="HDRWQ17">Installing the First AFS Machine</link> (in the sections following <link linkend="HDRWQ63">Overview:
      Installing Client Functionality</link>).</para>

      <para>If another AFS machine of this machine's system type exists, the AFS binaries are probably already accessible in your
      AFS filespace (the conventional location is <emphasis role="bold">/afs/</emphasis><replaceable>cellname</replaceable><emphasis
      role="bold">/</emphasis><replaceable>sysname</replaceable><emphasis role="bold">/usr/afsws</emphasis>). If not, or if this is
      the first AFS machine of its type, copy the AFS binaries for this system type into an AFS volume by following the instructions
      in <link linkend="HDRWQ83">Storing AFS Binaries in AFS</link>. Because this machine is not yet an AFS client, you must perform
      the procedure on an existing AFS machine. However, remember to perform the final step (linking the local directory <emphasis
      role="bold">/usr/afsws</emphasis> to the appropriate location in the AFS file tree) on this machine itself. If you also want
      to create AFS volumes to house UNIX system binaries for the new system type, see <link linkend="HDRWQ88">Storing System
      Binaries in AFS</link>. <indexterm>
          <primary>Binary Distribution</primary>

          <secondary>copying client files from</secondary>

          <tertiary>server machine after first</tertiary>
        </indexterm> <indexterm>
          <primary>file server machine, additional</primary>

          <secondary>copying</secondary>

          <tertiary>client files to local disk</tertiary>
        </indexterm> <indexterm>
          <primary>copying</primary>

          <secondary>client files to local disk</secondary>

          <tertiary>server machine after first</tertiary>
        </indexterm> <orderedlist>
          <listitem>
            <para>Copy client binaries and files to the local disk. <itemizedlist>
                <listitem>
                  <para>On a machine of an existing system type, you can either 
                  load files from the OpenAFS Binary Distribution or use a 
                  remote file transfer protocol to copy files from an existing 
                  server machine of the same system type. To load from the
                  binary distribution, see the instructions just following 
                  for a machine of a new system type. If using a remote file 
                  transfer protocol, copy the complete contents of the existing 
                  client machine's 
                  <emphasis role="bold">/usr/vice/etc</emphasis> 
                  directory.</para>
                </listitem>

                <listitem>
                  <para>On a machine of a new system type, you must use the 
                  following instructions to copy files from the OpenAFS
                  Binary Distribution. If your distribution is provided in
                  a packaged format, then simply installing the packages will
                  perform the necessary actions.
                    <orderedlist>
                      <listitem>
                        <para>Unpack the distribution tarball. The examples 
                        below assume that you have unpacked the files into the 
                        <emphasis role="bold">/tmp/afsdist</emphasis> 
                        directory. If you pick a different location, substitute
                        this in all of the following examples.</para>
                      </listitem>

                      <listitem>
                        <para>Copy files to the local <emphasis role="bold">/usr/vice/etc</emphasis> directory.</para>

                        <para>This step places a copy of the AFS initialization script (and related files, if applicable) into the
                        <emphasis role="bold">/usr/vice/etc</emphasis> directory. In the preceding instructions for incorporating
                        AFS into the kernel, you copied the script directly to the operating system's conventional location for
                        initialization files. When you incorporate AFS into the machine's startup sequence in a later step, you can
                        choose to link the two files.</para>

                        <para>On some system types that use a dynamic kernel loader program, you previously copied AFS library files
                        into a subdirectory of the <emphasis role="bold">/usr/vice/etc</emphasis> directory. On other system types,
                        you copied the appropriate AFS library file directly to the directory where the operating system accesses
                        it. The following commands do not copy or recopy the AFS library files into the <emphasis
                        role="bold">/usr/vice/etc</emphasis> directory, because on some system types the library files consume a
                        large amount of space. If you want to copy them, add the <emphasis role="bold">-r</emphasis> flag to the
                        first <emphasis role="bold">cp</emphasis> command and skip the second <emphasis role="bold">cp</emphasis>
                        command.</para>

                        <programlisting>
   # <emphasis role="bold">cd /tmp/afsdist/</emphasis><replaceable>sysname</replaceable><emphasis role="bold">/root.client/usr/vice/etc</emphasis>
   # <emphasis role="bold">cp -p  *  /usr/vice/etc</emphasis>
   # <emphasis role="bold">cp -rp  C  /usr/vice/etc</emphasis>
</programlisting>
                      </listitem>
                    </orderedlist></para>
                </listitem>
              </itemizedlist></para>

            <indexterm>
              <primary>cell name</primary>

              <secondary>setting in client ThisCell file</secondary>

              <tertiary>server machine after first</tertiary>
            </indexterm>

            <indexterm>
              <primary>cell name</primary>

              <secondary>setting in server ThisCell file</secondary>

              <tertiary>server machine after first</tertiary>
            </indexterm>

            <indexterm>
              <primary>setting</primary>

              <secondary>cell name in client ThisCell file</secondary>

              <tertiary>server machine after first</tertiary>
            </indexterm>

            <indexterm>
              <primary>file server machine, additional</primary>

              <secondary>ThisCell file (client)</secondary>
            </indexterm>

            <indexterm>
              <primary>file server machine, additional</primary>

              <secondary>cell membership, defining</secondary>

              <tertiary>for client processes</tertiary>
            </indexterm>

            <indexterm>
              <primary>ThisCell file (client)</primary>

              <secondary>server machine after first</secondary>
            </indexterm>
          </listitem>

          <listitem>
            <para>Change to the <emphasis role="bold">/usr/vice/etc</emphasis> directory and create the <emphasis
            role="bold">ThisCell</emphasis> file as a copy of the <emphasis role="bold">/usr/afs/etc/ThisCell</emphasis> file. You
            must first remove the symbolic link to the <emphasis role="bold">/usr/afs/etc/ThisCell</emphasis> file that the BOS
            Server created automatically in <link linkend="HDRWQ108">Starting Server Programs</link>. <programlisting>
   # <emphasis role="bold">cd  /usr/vice/etc</emphasis>
   # <emphasis role="bold">rm  ThisCell</emphasis>
   # <emphasis role="bold">cp  /usr/afs/etc/ThisCell  ThisCell</emphasis>
</programlisting></para>
          </listitem>

          <listitem>
            <para>Remove the symbolic link to the <emphasis role="bold">/usr/afs/etc/CellServDB</emphasis> file. <programlisting>
   # <emphasis role="bold">rm  CellServDB</emphasis>
</programlisting> <indexterm>
                <primary>database server machine</primary>

                <secondary>entry in client CellServDB file</secondary>

                <tertiary>on server machine after first</tertiary>
              </indexterm> <indexterm>
                <primary>CellServDB file (client)</primary>

                <secondary>creating</secondary>

                <tertiary>on server machine after first</tertiary>
              </indexterm> <indexterm>
                <primary>creating</primary>

                <secondary>CellServDB file (client)</secondary>

                <tertiary>server machine after first</tertiary>
              </indexterm></para>
          </listitem>

          <listitem>
            <para>Create the 
            <emphasis role="bold">/usr/vice/etc/CellServDB</emphasis> file. 
            Use a network file transfer program such as 
            <emphasis role="bold">sftp</emphasis> or 
            <emphasis role="bold">scp</emphasis> to copy it from 
            one of the following sources, which are listed in
            decreasing order of preference: 
              <itemizedlist>
                <listitem>
                  <para>Your cell's central <emphasis role="bold">CellServDB</emphasis> source file (the conventional location is
                  <emphasis role="bold">/afs/</emphasis><replaceable>cellname</replaceable><emphasis
                  role="bold">/common/etc/CellServDB</emphasis>)</para>
                </listitem>

                <listitem>
                  <para>The global <emphasis role="bold">CellServDB</emphasis> 
                  file maintained at grand.central.org</para>
                </listitem>

                <listitem>
                  <para>An existing client machine in your cell</para>
                </listitem>

                <listitem>
                  <para>The <emphasis role="bold">CellServDB.sample</emphasis> 
                  file included in the 
                  <replaceable>sysname</replaceable><emphasis role="bold">/root.client/usr/vice/etc</emphasis> 
                  directory of each OpenAFS distribution; add an entry for the 
                  local cell by following the instructions in 
                  <link linkend="HDRWQ66">Creating the Client CellServDB File</link>
                  </para>
                </listitem>
              </itemizedlist>
            </para>

            <indexterm>
              <primary>cache</primary>

              <secondary>configuring</secondary>

              <tertiary>server machine after first</tertiary>
            </indexterm>

            <indexterm>
              <primary>configuring</primary>

              <secondary>cache</secondary>

              <tertiary>server machine after first</tertiary>
            </indexterm>

            <indexterm>
              <primary>setting</primary>

              <secondary>cache size and location</secondary>

              <tertiary>server machine after first</tertiary>
            </indexterm>

            <indexterm>
              <primary>file server machine, additional</primary>

              <secondary>cache size and location</secondary>
            </indexterm>
          </listitem>

          <listitem>
            <para>Create the <emphasis role="bold">cacheinfo</emphasis> file for either a disk cache or a memory cache. For a
            discussion of the appropriate values to record in the file, see <link linkend="HDRWQ67">Configuring the
            Cache</link>.</para>

            <para>To configure a disk cache, issue the following commands. If you are devoting a partition exclusively to caching,
            as recommended, you must also configure it, make a file system on it, and mount it at the directory created in this
            step.</para>

            <programlisting>
   # <emphasis role="bold">mkdir /usr/vice/cache</emphasis>
   # <emphasis role="bold">echo "/afs:/usr/vice/cache:</emphasis><replaceable>#blocks</replaceable><emphasis role="bold">" &gt; cacheinfo</emphasis>   
</programlisting>

            <para>To configure a memory cache:</para>

            <programlisting>
   # <emphasis role="bold">echo "/afs:/usr/vice/cache:</emphasis><replaceable>#blocks</replaceable><emphasis role="bold">" &gt; cacheinfo</emphasis>
</programlisting>

            <indexterm>
              <primary>Cache Manager</primary>

              <secondary>server machine after first</secondary>
            </indexterm>

            <indexterm>
              <primary>configuring</primary>

              <secondary>Cache Manager</secondary>

              <tertiary>server machine after first</tertiary>
            </indexterm>

            <indexterm>
              <primary>file server machine, additional</primary>

              <secondary>Cache Manager</secondary>
            </indexterm>

            <indexterm>
              <primary>afs (/afs) directory</primary>

              <secondary>creating</secondary>

              <tertiary>server machine after first</tertiary>
            </indexterm>

            <indexterm>
              <primary>AFS initialization script</primary>

              <secondary>setting afsd parameters</secondary>

              <tertiary>server machine after first</tertiary>
            </indexterm>

            <indexterm>
              <primary>file server machine, additional</primary>

              <secondary>afsd command parameters</secondary>
            </indexterm>
          </listitem>

          <listitem>
            <para>Create the local directory on which to mount the AFS filespace, by convention <emphasis
            role="bold">/afs</emphasis>. If the directory already exists, verify that it is empty. <programlisting>
   # <emphasis role="bold">mkdir /afs</emphasis>
</programlisting></para>
          </listitem>

          <listitem>
            <para>On non-packaged Linux systems, copy the <emphasis role="bold">afsd</emphasis> options file from the <emphasis
            role="bold">/usr/vice/etc</emphasis> directory to the <emphasis role="bold">/etc/sysconfig</emphasis> directory,
            removing the <emphasis role="bold">.conf</emphasis> extension as you do so. <programlisting>
   # <emphasis role="bold">cp /usr/vice/etc/afs.conf /etc/sysconfig/afs</emphasis>
</programlisting></para>
          </listitem>

          <listitem>
            <para>Edit the machine's AFS initialization script or <emphasis role="bold">afsd</emphasis> options file to set
            appropriate values for <emphasis role="bold">afsd</emphasis> command parameters. The script resides in the indicated
            location on each system type: <itemizedlist>
                <listitem>
                  <para>On Fedora and RHEL systems, 
                  <emphasis role="bold">/etc/sysconfig/openafs</emphasis>. 
                  Note that this file has a different format from a standard 
                  afsd options file.</para>
                </listitem>
                
                <listitem>
                  <para>On non-packaged Linux systems, <emphasis role="bold">/etc/sysconfig/afs</emphasis> (the <emphasis
                  role="bold">afsd</emphasis> options file)</para>
                </listitem>
                

                <listitem>
                  <para>On Solaris systems, <emphasis role="bold">/etc/init.d/afs</emphasis></para>
                </listitem>
              </itemizedlist></para>

            <para>Use one of the methods described in <link linkend="HDRWQ70">Configuring the Cache Manager</link> to add the
            following flags to the <emphasis role="bold">afsd</emphasis> command line. If you intend for the machine to remain an
            AFS client, also set any performance-related arguments you wish. <itemizedlist>
                <!-- nosetime is now the default
                <listitem>
                  <para>Add the <emphasis role="bold">-nosettime</emphasis> flag, because this is a file server machine that is also
                  a client.</para>
                </listitem> -->

                <listitem>
                  <para>Add the <emphasis role="bold">-memcache</emphasis> flag if the machine is to use a memory cache.</para>
                </listitem>

                <listitem>
                  <para>Add the <emphasis role="bold">-verbose</emphasis> flag to display a trace of the Cache Manager's
                  initialization on the standard output stream.</para>
                </listitem>
                <listitem>
                  <para>Add the <emphasis role="bold">--dynroot</emphasis> or
                  <emphasis role="bold">--afsdb</emphasis> options if you
                  wish to have a synthetic AFS root, as discussed in
                  <link linkend="HDRWQ91">Enabling Access to Foreign Cells</link>
                  </para>
                </listitem>
              </itemizedlist></para>
          </listitem>

          <listitem>
            <para>If appropriate, follow the instructions in <link linkend="HDRWQ83">Storing AFS Binaries in AFS</link> to copy the
            AFS binaries for this system type into an AFS volume. See the introduction to this section for further
            discussion.</para>
          </listitem>
        </orderedlist></para>
    </sect2>

    <sect2 id="HDRWQ112">
      <title>Completing the Installation</title>

      <para>At this point you run the machine's AFS initialization script to verify that it correctly loads AFS modifications into
      the kernel and starts the BOS Server, which starts the other server processes. If you have installed client files, the script
      also starts the Cache Manager. If the script works correctly, perform the steps that incorporate it into the machine's startup
      and shutdown sequence. If there are problems during the initialization, attempt to resolve them. The AFS Product Support group
      can provide assistance if necessary.</para>

      <para>If the machine is configured as a client using a disk cache, it can take a while for the <emphasis
      role="bold">afsd</emphasis> program to create all of the <emphasis role="bold">V</emphasis><replaceable>n</replaceable> files
      in the cache directory. Messages on the console trace the initialization process. <orderedlist>
          <listitem>
            <para>Issue the <emphasis role="bold">bos shutdown</emphasis> command to shut down the AFS server processes other than
            the BOS Server. Include the <emphasis role="bold">-wait</emphasis> flag to delay return of the command shell prompt
            until all processes shut down completely. <programlisting>
   # <emphasis role="bold">/usr/afs/bin/bos shutdown</emphasis> &lt;<replaceable>machine name</replaceable>&gt; <emphasis
                  role="bold">-wait</emphasis>
</programlisting></para>
          </listitem>

          <listitem>
            <para>Issue the <emphasis role="bold">ps</emphasis> command to learn the BOS Server's process ID number (PID), and then
            the <emphasis role="bold">kill</emphasis> command to stop the <emphasis role="bold">bosserver</emphasis> process.
            <programlisting>
   # <emphasis role="bold">ps</emphasis> <replaceable>appropriate_ps_options</replaceable> <emphasis role="bold">| grep bosserver</emphasis>
   # <emphasis role="bold">kill</emphasis> <replaceable>bosserver_PID</replaceable>
</programlisting> <indexterm>
                <primary>AFS initialization script</primary>

                <secondary>adding to machine startup sequence</secondary>

                <tertiary>server machine after first</tertiary>
              </indexterm> <indexterm>
                <primary>AFS initialization script</primary>

                <secondary>running</secondary>

                <tertiary>server machine after first</tertiary>
              </indexterm> <indexterm>
                <primary>file server machine, additional</primary>

                <secondary>AFS initialization script</secondary>
              </indexterm> <indexterm>
                <primary>running AFS init. script</primary>

                <secondary>server machine after first</secondary>
              </indexterm> <indexterm>
                <primary>installing</primary>

                <secondary>AFS initialization script</secondary>

                <tertiary>server machine after first</tertiary>
              </indexterm>
            <indexterm>
              <primary>Linux</primary>

              <secondary>AFS initialization script</secondary>

              <tertiary>on add'l server machine</tertiary>
            </indexterm>
              </para>
          </listitem>

          <listitem>
            <para>Run the AFS initialization script by issuing the appropriate commands for this system type.</para>

            <para><emphasis role="bold">On Fedora or RHEL Linux systems:</emphasis> 
              <orderedlist>
                <listitem>
                  <para>Reboot the machine and log in again as the local superuser <emphasis role="bold">root</emphasis>.
 <programlisting>
   # <emphasis role="bold">cd /</emphasis>
   # <emphasis role="bold">shutdown -r now</emphasis>
   login: <emphasis role="bold">root</emphasis>
   Password: <replaceable>root_password</replaceable>
</programlisting></para>
                </listitem>

                <listitem>
                  <para>Run the OpenAFS initialization scripts. <programlisting>
   # <emphasis role="bold">/etc/rc.d/init.d/openafs-client  start</emphasis>
   # <emphasis role="bold">/etc/rc.d/init.d/openafs-server  start</emphasis>
</programlisting></para>
                </listitem>

                <listitem>
                  <para>Issue the <emphasis role="bold">chkconfig</emphasis> 
                  command to activate the 
                  <emphasis role="bold">openafs-client</emphasis> and 
                  <emphasis role="bold">openafs-server</emphasis> configuration 
                  variables. Based on the instruction in the AFS initialization 
                  files that begins with the string 
                  <computeroutput>#chkconfig</computeroutput>, the command 
                  automatically creates the symbolic links that incorporate the 
                  script into the Linux startup and shutdown sequence. 
<programlisting>
   # <emphasis role="bold">/sbin/chkconfig  --add openafs-client</emphasis>
   # <emphasis role="bold">/sbin/chkconfig  --add openafs-server</emphasis>
</programlisting></para>
                </listitem>
              </orderedlist>
            </para>
            <para><emphasis role="bold">On Linux systems:</emphasis> <orderedlist>
                <listitem>
                  <para>Reboot the machine and log in again as the local superuser <emphasis role="bold">root</emphasis>.
                  <programlisting>
   # <emphasis role="bold">cd /</emphasis>
   # <emphasis role="bold">shutdown -r now</emphasis>
   login: <emphasis role="bold">root</emphasis>
   Password: <replaceable>root_password</replaceable>
</programlisting></para>
                </listitem>

                <listitem>
                  <para>Run the OpenAFS initialization script. <programlisting>
   # <emphasis role="bold">/etc/rc.d/init.d/afs  start</emphasis>
</programlisting></para>
                </listitem>

                <listitem>
                  <para>Issue the <emphasis role="bold">chkconfig</emphasis> command to activate the <emphasis
                  role="bold">afs</emphasis> configuration variable. Based on the instruction in the AFS initialization file that
                  begins with the string <computeroutput>#chkconfig</computeroutput>, the command automatically creates the symbolic
                  links that incorporate the script into the Linux startup and shutdown sequence. <programlisting>
   # <emphasis role="bold">/sbin/chkconfig  --add afs</emphasis>
</programlisting></para>
                </listitem>

                <listitem>
                  <para><emphasis role="bold">(Optional)</emphasis> There are now copies of the AFS initialization file in both the
                  <emphasis role="bold">/usr/vice/etc</emphasis> and <emphasis role="bold">/etc/rc.d/init.d</emphasis> directories,
                  and copies of the <emphasis role="bold">afsd</emphasis> options file in both the <emphasis
                  role="bold">/usr/vice/etc</emphasis> and <emphasis role="bold">/etc/sysconfig</emphasis> directories. If you want
                  to avoid potential confusion by guaranteeing that the two copies of each file are always the same, create a link
                  between them. You can always retrieve the original script or options file from the AFS CD-ROM if necessary.
                  <programlisting>
   # <emphasis role="bold">cd /usr/vice/etc</emphasis>
   # <emphasis role="bold">rm afs.rc afs.conf</emphasis>
   # <emphasis role="bold">ln -s  /etc/rc.d/init.d/afs  afs.rc</emphasis>
   # <emphasis role="bold">ln -s  /etc/sysconfig/afs  afs.conf</emphasis>
</programlisting></para>
                </listitem>

                <listitem>
                  <para>Proceed to Step <link linkend="LIWQ113">4</link>.</para>
                </listitem>
              </orderedlist></para>

            <indexterm>
              <primary>Solaris</primary>

              <secondary>AFS initialization script</secondary>

              <tertiary>on add'l server machine</tertiary>
            </indexterm>

            <para><emphasis role="bold">On Solaris systems:</emphasis> <orderedlist>
                <listitem>
                  <para>Reboot the machine and log in again as the local superuser <emphasis role="bold">root</emphasis>.
                  <programlisting>
   # <emphasis role="bold">cd /</emphasis>
   # <emphasis role="bold">shutdown -i6 -g0 -y</emphasis>
   login: <emphasis role="bold">root</emphasis>
   Password: <replaceable>root_password</replaceable>
</programlisting></para>
                </listitem>

                <listitem>
                  <para>Run the AFS initialization script. <programlisting>
   # <emphasis role="bold">/etc/init.d/afs  start</emphasis>
</programlisting></para>
                </listitem>

                <listitem>
                  <para>Change to the <emphasis role="bold">/etc/init.d</emphasis> directory and issue the <emphasis role="bold">ln
                  -s</emphasis> command to create symbolic links that incorporate the AFS initialization script into the Solaris
                  startup and shutdown sequence. <programlisting>
   # <emphasis role="bold">cd /etc/init.d</emphasis>
   # <emphasis role="bold">ln -s ../init.d/afs /etc/rc3.d/S99afs</emphasis>
   # <emphasis role="bold">ln -s ../init.d/afs /etc/rc0.d/K66afs</emphasis>
</programlisting></para>
                </listitem>

                <listitem>
                  <para><emphasis role="bold">(Optional)</emphasis> There are now copies of the AFS initialization file in both the
                  <emphasis role="bold">/usr/vice/etc</emphasis> and <emphasis role="bold">/etc/init.d</emphasis> directories. If
                  you want to avoid potential confusion by guaranteeing that they are always the same, create a link between them.
                  You can always retrieve the original script from the OpenAFS Binary Distribution if necessary. <programlisting>
   # <emphasis role="bold">cd /usr/vice/etc</emphasis>
   # <emphasis role="bold">rm afs.rc</emphasis>
   # <emphasis role="bold">ln -s  /etc/init.d/afs  afs.rc</emphasis>
</programlisting></para>
                </listitem>
              </orderedlist></para>
          </listitem>

          <listitem id="LIWQ113">
            <para>Verify that <emphasis role="bold">/usr/afs</emphasis> and its subdirectories on the new
            file server machine meet the ownership and mode bit requirements outlined in <link linkend="HDRWQ96">Protecting
            Sensitive AFS Directories</link>. If necessary, use the <emphasis role="bold">chmod</emphasis> command to correct the
            mode bits.</para>
          </listitem>

          <listitem>
            <para>To configure this machine as a database server machine, proceed to <link linkend="HDRWQ114">Installing Database
            Server Functionality</link>.</para>
          </listitem>
        </orderedlist></para>

      <indexterm>
        <primary>database server machine</primary>

        <secondary>requirements for installation</secondary>
      </indexterm>

      <indexterm>
        <primary>requirements</primary>

        <secondary>database server machine</secondary>
      </indexterm>
    </sect2>
  </sect1>

  <sect1 id="HDRWQ114">
    <title>Installing Database Server Functionality</title>

    <para>This section explains how to install database server functionality. Database server machines have two defining
    characteristics. First, they run the Protection Server, and Volume Location (VL) Server processes. They
    also run the Backup Server if the cell uses the AFS Backup System, as is assumed in these instructions. Second, they appear in
    the <emphasis role="bold">CellServDB</emphasis> file of every machine in the cell (and of client machines in foreign cells, if
    they are to access files in this cell).</para>

    <para>Note the following requirements for database server machines. <itemizedlist>
        <listitem>
          <para>In the conventional configuration, database server machines also serve as file server machines (run the File Server,
          Volume Server and Salvager processes). If you choose not to run file server functionality on a database server machine,
          then the kernel does not have to incorporate AFS modifications, but the local <emphasis role="bold">/usr/afs</emphasis>
          directory must house most of the standard files and subdirectories. In particular, the <emphasis
          role="bold">/usr/afs/etc/KeyFile</emphasis> file must contain the same keys as all other server machines in the cell. If
          you run a system control machine, run the <emphasis role="bold">upclientetc</emphasis> process on every database server
          machine other than the system control machine; if you do not run a system control machine, use the <emphasis
          role="bold">bos addkey</emphasis> command as instructed in the chapter in the <emphasis>OpenAFS Administration
          Guide</emphasis> about maintaining server encryption keys.</para>

          <para>The instructions in this section assume that the machine on which you are installing database server functionality
          is already a file server machine. Contact the OpenAFS mailing list to learn how to install database server
          functionality on a non-file server machine.</para>
        </listitem>

        <listitem>
          <para>During the installation of database server functionality, you must restart all of the database server machines to
          force the election of a new Ubik coordinator (synchronization site) for each database server process. This can cause a
          system outage, which usually lasts less than 5 minutes.</para>
        </listitem>

        <listitem>
          <para>Updating the kernel memory list of database server machines on each client machine is generally the most
          time-consuming part of installing a new database server machine. It is, however, crucial for correct functioning in your
          cell. Incorrect knowledge of your cell's database server machines can prevent your users from authenticating, accessing
          files, and issuing AFS commands.</para>

          <para>You update a client's kernel memory list by changing the <emphasis role="bold">/usr/vice/etc/CellServDB</emphasis>
          file and then either rebooting or issuing the <emphasis role="bold">fs newcell</emphasis> command. For instructions, see
          the chapter in the <emphasis>OpenAFS Administration Guide</emphasis> about administering client machines.</para>

          <para>The point at which you update your clients' knowledge of database server machines depends on which of the database
          server machines has the lowest IP address. The following instructions indicate the appropriate place to update your client
          machines in either case. <itemizedlist>
              <listitem>
                <para>If the new database server machine has a lower IP address than any existing database server machine, update
                the <emphasis role="bold">CellServDB</emphasis> file on every client machine before restarting the database server
                processes. If you do not, users can become unable to update (write to) any of the AFS databases. This is because the
                machine with the lowest IP address is usually elected as the Ubik coordinator, and only the Coordinator accepts
                database writes. On client machines that do not have the new list of database server machines, the Cache Manager
                cannot locate the new coordinator. (Be aware that if clients contact the new coordinator before it is actually in
                service, they experience a timeout before contacting another database server machine. This is a minor, and
                temporary, problem compared to being unable to write to the database.)</para>
              </listitem>

              <listitem>
                <para>If the new database server machine does not have the lowest IP address of any database server machine, then it
                is better to update clients after restarting the database server processes. Client machines do not start using the
                new database server machine until you update their kernel memory list, but that does not usually cause timeouts or
                update problems (because the new machine is not likely to become the coordinator).</para>
              </listitem>
            </itemizedlist></para>
        </listitem>
      </itemizedlist></para>

    <indexterm>
      <primary>overview</primary>

      <secondary>installing additional database server machine</secondary>
    </indexterm>

    <sect2 id="Header_110">
      <title>Summary of Procedures</title>

      <para>To install a database server machine, perform the following procedures. <orderedlist>
          <listitem>
            <para>Install the <emphasis role="bold">bos</emphasis> suite of commands locally, as a precaution</para>
          </listitem>

          <listitem>
            <para>Add the new machine to the <emphasis role="bold">/usr/afs/etc/CellServDB</emphasis> file on existing file server
            machines</para>
          </listitem>

          <listitem>
            <para>Update your cell's central <emphasis role="bold">CellServDB</emphasis> source file and the file you make available
            to foreign cells</para>
          </listitem>

          <listitem>
            <para>Update every client machine's <emphasis role="bold">/usr/vice/etc/CellServDB</emphasis> file and kernel memory
            list of database server machines</para>
          </listitem>

          <listitem>
            <para>Start the database server processes (Backup Server, Protection Server, and Volume Location
            Server)</para>
          </listitem>

          <listitem>
            <para>Restart the database server processes on every database server machine</para>
          </listitem>

          <listitem>
            <para>If required, request that grand.central.org add details of 
            your new database server machine to the global CellServDB</para>
          </listitem>
          
          <listitem>
            <para>If required, add details of your new database server to the
            AFS database location records in your site's DNS</para>
          </listitem>
          
        </orderedlist></para>

      <indexterm>
        <primary>database server machine</primary>

        <secondary>installing</secondary>

        <tertiary>additional</tertiary>
      </indexterm>

      <indexterm>
        <primary>instructions</primary>

        <secondary>database server machine, installing additional</secondary>
      </indexterm>

      <indexterm>
        <primary>installing</primary>

        <secondary>database server machine</secondary>

        <tertiary>additional</tertiary>
      </indexterm>
    </sect2>

    <sect2 id="Header_111">
      <title>Instructions</title>

      <note>
        <para>It is assumed that your PATH environment variable includes the directory that houses the AFS command binaries. If not,
        you possibly need to precede the command names with the appropriate pathname.</para>
      </note>

      <orderedlist>
        <listitem>
          <para>You can perform the following instructions on either a server or client machine. Login as an AFS administrator who
          is listed in the <emphasis role="bold">/usr/afs/etc/UserList</emphasis> file on all server machines. 
<programlisting> 
   % <emphasis role="bold">kinit</emphasis> <replaceable>admin_user</replaceable>
   Password: <replaceable>admin_password</replaceable>
   % <emphasis role="bold">aklog</emphasis>
</programlisting>
          </para>
        </listitem>

        <listitem>
          <para>If you are working on a client machine configured in the conventional manner, the <emphasis
          role="bold">bos</emphasis> command suite resides in the <emphasis role="bold">/usr/afsws/bin</emphasis> directory, a
          symbolic link to an AFS directory. An error during installation can potentially block access to AFS, in which case it is
          helpful to have a copy of the <emphasis role="bold">bos</emphasis> binary on the local disk. This step is not necessary if
          you are working on a server machine, where the binary resides in the local <emphasis role="bold">/usr/afs/bin</emphasis>
          directory. <programlisting>
   % <emphasis role="bold">cp  /usr/afsws/bin/bos   /tmp</emphasis>
</programlisting> <indexterm>
              <primary>bos commands</primary>

              <secondary>addhost</secondary>
            </indexterm> <indexterm>
              <primary>commands</primary>

              <secondary>bos addhost</secondary>
            </indexterm> <indexterm>
              <primary>database server machine</primary>

              <secondary>entry in server CellServDB file</secondary>

              <tertiary>for new db-server machine</tertiary>
            </indexterm> <indexterm>
              <primary>CellServDB file (server)</primary>

              <secondary>adding entry for new db-server machine</secondary>
            </indexterm> <indexterm>
              <primary>adding</primary>

              <secondary>new db-server machine to CellServDB files</secondary>
            </indexterm></para>
        </listitem>

        <listitem id="LIWQ115">
          <para>Issue the <emphasis role="bold">bos addhost</emphasis> command to add the new database server
          machine to the <emphasis role="bold">/usr/afs/etc/CellServDB</emphasis> file on existing server machines (as well as the
          new database server machine itself).</para>

          <para>Substitute the new database server machine's fully-qualified hostname for the <replaceable>host name</replaceable>
          argument. If you run a system control machine, substitute its fully-qualified hostname for the
          <replaceable>machine&nbsp;name</replaceable> argument. If you do not run a system control machine, repeat the <emphasis
          role="bold">bos addhost</emphasis> command once for each server machine in your cell (including the new database server
          machine itself), by substituting each one's fully-qualified hostname for the <replaceable>machine&nbsp;name</replaceable>
          argument in turn.</para>

          <programlisting>
   % <emphasis role="bold">bos addhost</emphasis> &lt;<replaceable>machine name</replaceable>&gt;  &lt;<replaceable>host name</replaceable>&gt;   
</programlisting>

          <para>If you run a system control machine, wait for the Update Server to distribute the new <emphasis
          role="bold">CellServDB</emphasis> file, which takes up to five minutes by default. If you are issuing individual <emphasis
          role="bold">bos addhost</emphasis> commands, attempt to issue all of them within five minutes.</para>

          <note>
            <para>It is best to maintain a one-to-one mapping between hostnames and IP addresses on a multihomed database server
            machine (the conventional configuration for any AFS machine). The BOS Server uses the <emphasis
            role="bold">gethostbyname(&nbsp;)</emphasis> routine to obtain the IP address associated with the <replaceable>host
            name</replaceable> argument. If there is more than one address, the BOS Server records in the <emphasis
            role="bold">CellServDB</emphasis> entry the one that appears first in the list of addresses returned by the routine. The
            routine possibly returns addresses in a different order on different machines, which can create inconsistency.</para>
          </note>
        </listitem>

        <listitem>
          <para><emphasis role="bold">(Optional)</emphasis> Issue the <emphasis role="bold">bos listhosts</emphasis> command on each
          server machine to verify that the new database server machine appears in its <emphasis role="bold">CellServDB</emphasis>
          file. <programlisting>
   % <emphasis role="bold">bos listhosts</emphasis> &lt;<replaceable>machine name</replaceable>&gt;
</programlisting></para>
        </listitem>

        <listitem id="LIWQ116">
          <para>Add the new database server machine to your cell's central <emphasis
          role="bold">CellServDB</emphasis> source file, if you use one. The standard location is <emphasis
          role="bold">/afs/</emphasis><replaceable>cellname</replaceable><emphasis
          role="bold">/common/etc/CellServDB</emphasis>.</para>

          <para>If you are willing to make your cell accessible to users in foreign cells, add the new database server machine to
          the file that lists your cell's database server machines. The conventional location is <emphasis
          role="bold">/afs/</emphasis><replaceable>cellname</replaceable><emphasis
          role="bold">/service/etc/CellServDB.local</emphasis>. <indexterm>
              <primary>database server machine</primary>

              <secondary>entry in client CellServDB file</secondary>

              <tertiary>for new db-server machine</tertiary>
            </indexterm> <indexterm>
              <primary>CellServDB file (client)</primary>

              <secondary>adding entry</secondary>

              <tertiary>for new db-server machine</tertiary>
            </indexterm> <indexterm>
              <primary>client machine</primary>

              <secondary>CellServDB file</secondary>

              <tertiary>adding entry</tertiary>
            </indexterm></para>
        </listitem>

        <listitem id="LIWQ117">
          <para>If this machine's IP address is lower than any existing database server machine's, update
          every client machine's <emphasis role="bold">/usr/vice/etc/CellServDB</emphasis> file and kernel memory list to include
          this machine. (If this machine's IP address is not the lowest, it is acceptable to wait until Step <link
          linkend="LIWQ123">12</link>.)</para>

          <para>There are several ways to update the <emphasis role="bold">CellServDB</emphasis> file on client machines, as
          detailed in the chapter of the <emphasis>OpenAFS Administration Guide</emphasis> about administering client machines. One
          option is to copy over the central update source (which you updated in Step <link linkend="LIWQ116">5</link>).
          To update the machine's kernel memory list, you can
          either reboot after changing the <emphasis role="bold">CellServDB</emphasis> file or issue the <emphasis role="bold">fs
          newcell</emphasis> command. 
            <indexterm>
              <primary>database server machine</primary>

              <secondary>starting database server processes</secondary>
            </indexterm> <indexterm>
              <primary>BosConfig file</primary>

              <secondary>adding entries</secondary>

              <tertiary>database server machine</tertiary>
            </indexterm> <indexterm>
              <primary>adding</primary>

              <secondary>entries to BosConfig file</secondary>

              <tertiary>database server machine</tertiary>
            </indexterm></para>
        </listitem>
        
        <listitem>
          <para>If you are running a cell which still relies upon
          <emphasis role="bold">kaserver</emphasis> see 
          <link linkend="KAS010">Starting the Authentication Service</link>
          for an additional installation step.</para>
        </listitem>

        <listitem id="LIWQ119">
          <indexterm>
            <primary>Backup Server</primary>
            <secondary>starting</secondary>
            <tertiary>new db-server machine</tertiary>
          </indexterm> <indexterm>
            <primary>starting</primary>
            <secondary>Backup Server</secondary>
            <tertiary>new db-server machine</tertiary>
          </indexterm>

          <para>Start the Backup Server (the <emphasis role="bold">buserver</emphasis> process). You must
          perform other configuration procedures before actually using the AFS Backup System, as detailed in the <emphasis>OpenAFS
          Administration Guide</emphasis>. <programlisting>
   % <emphasis role="bold">bos create</emphasis> &lt;<replaceable>machine name</replaceable>&gt; <emphasis role="bold">buserver simple /usr/afs/bin/buserver</emphasis>
</programlisting> <indexterm>
              <primary>Protection Server</primary>

              <secondary>starting</secondary>

              <tertiary>new db-server machine</tertiary>
            </indexterm> <indexterm>
              <primary>starting</primary>

              <secondary>Protection Server</secondary>

              <tertiary>new db-server machine</tertiary>
            </indexterm></para>
        </listitem>

        <listitem id="LIWQ120">
          <para>Start the Protection Server (the <emphasis role="bold">ptserver</emphasis> process).
          <programlisting>
   % <emphasis role="bold">bos create</emphasis> &lt;<replaceable>machine name</replaceable>&gt; <emphasis role="bold">ptserver simple /usr/afs/bin/ptserver</emphasis>
</programlisting> <indexterm>
              <primary>VL Server (vlserver process)</primary>

              <secondary>starting</secondary>

              <tertiary>new db-server machine</tertiary>
            </indexterm> <indexterm>
              <primary>starting</primary>

              <secondary>VL Server</secondary>

              <tertiary>new db-server machine</tertiary>
            </indexterm></para>
        </listitem>

        <listitem id="LIWQ121">
          <para>Start the Volume Location (VL) Server (the <emphasis role="bold">vlserver</emphasis>
          process). <programlisting>
   % <emphasis role="bold">bos create</emphasis> &lt;<replaceable>machine name</replaceable>&gt; <emphasis role="bold">vlserver simple /usr/afs/bin/vlserver</emphasis>
</programlisting> <indexterm>
              <primary>commands</primary>

              <secondary>bos restart</secondary>

              <tertiary>on new db-server machine</tertiary>
            </indexterm> <indexterm>
              <primary>bos commands</primary>

              <secondary>restart</secondary>

              <tertiary>on new db-server machine</tertiary>
            </indexterm> <indexterm>
              <primary>restarting server process</primary>

              <secondary>on new db-server machine</secondary>
            </indexterm> <indexterm>
              <primary>server process</primary>

              <secondary>restarting</secondary>

              <tertiary>on new db-server machine</tertiary>
            </indexterm></para>
        </listitem>

        <listitem id="LIWQ122">
          <para>Issue the <emphasis role="bold">bos restart</emphasis> command on every database server
          machine in the cell, including the new machine. The command restarts the Authentication, Backup, Protection, and VL
          Servers, which forces an election of a new Ubik coordinator for each process. The new machine votes in the election and is
          considered as a potential new coordinator.</para>

          <para>A cell-wide service outage is possible during the election of a new coordinator for the VL Server, but it normally
          lasts less than five minutes. Such an outage is particularly likely if you are installing your cell's second database
          server machine. Messages tracing the progress of the election appear on the console.</para>

          <para>Repeat this command on each of your cell's database server machines in quick succession. Begin with the machine with
          the lowest IP address.</para>

          <programlisting>
   %  <emphasis role="bold">bos restart</emphasis> &lt;<replaceable>machine name</replaceable>&gt; <emphasis role="bold">kaserver buserver ptserver vlserver</emphasis>    
</programlisting>

          <para>If an error occurs, restart all server processes on the database server machines again by using one of the following
          methods: <itemizedlist>
              <listitem>
                <para>Issue the <emphasis role="bold">bos restart</emphasis> command with the <emphasis
                role="bold">-bosserver</emphasis> flag for each database server machine</para>
              </listitem>

              <listitem>
                <para>Reboot each database server machine, either using the <emphasis role="bold">bos exec</emphasis> command or at
                its console</para>
              </listitem>
            </itemizedlist></para>
        </listitem>

        <listitem id="LIWQ123">
          <para>If you did not update the <emphasis role="bold">CellServDB</emphasis> file on client machines
          in Step <link linkend="LIWQ117">6</link>, do so now.</para>
        </listitem>

        <listitem id="LIWQ124">
          <para>If you wish to participate in the AFS
          global name space, send the new database server machine's name and 
          IP address to grand.central.org. Do so, by emailing an updated
          <emphasis role="bold">CellServDB</emphasis> fragment for your cell
          to cellservdb@grand.central.org</para>
          <para>More details on the registration procedures for the
          CellServDB maintained by grand.central.org are available from
          <ulink url="http://grand.central.org/csdb.html">
          http://grand.central.org/csdb.html</ulink></para>
        </listitem>
      </orderedlist>

      <indexterm>
        <primary>database server machine</primary>

        <secondary>removing from service</secondary>
      </indexterm>

      <indexterm>
        <primary>instructions</primary>

        <secondary>database server machine, removing</secondary>
      </indexterm>

      <indexterm>
        <primary>removing</primary>

        <secondary>database server machine from service</secondary>
      </indexterm>

      <indexterm>
        <primary>overview</primary>

        <secondary>removing database server machine</secondary>
      </indexterm>
    </sect2>
  </sect1>

  <sect1 id="HDRWQ125">
    <title>Removing Database Server Functionality</title>

    <para>Removing database server machine functionality is nearly the reverse of installing it.</para>

    <sect2 id="Header_113">
      <title>Summary of Procedures</title>

      <para>To decommission a database server machine, perform the following procedures. <orderedlist>
          <listitem>
            <para>Install the <emphasis role="bold">bos</emphasis> suite of commands locally, as a precaution</para>
          </listitem>

          <listitem>
            <para>If you participate in the global AFS namespace, notify
            grand.central.org that you are decommissioning a database server 
            machine</para>
          </listitem>

          <listitem>
            <para>Update your cell's central <emphasis role="bold">CellServDB</emphasis> source file and the file you make available
            to foreign cells</para>
          </listitem>

          <listitem>
            <para>Update every client machine's <emphasis role="bold">/usr/vice/etc/CellServDB</emphasis> file and kernel memory
            list of database server machines</para>
          </listitem>

          <listitem>
            <para>Remove the machine from the <emphasis role="bold">/usr/afs/etc/CellServDB</emphasis> file on file server
            machines</para>
          </listitem>

          <listitem>
            <para>Stop the database server processes and remove them from the <emphasis
            role="bold">/usr/afs/local/BosConfig</emphasis> file if desired</para>
          </listitem>

          <listitem>
            <para>Restart the database server processes on the remaining database server machines</para>
          </listitem>
        </orderedlist></para>
    </sect2>

    <sect2 id="Header_114">
      <title>Instructions</title>

      <note>
        <para>It is assumed that your PATH environment variable includes the directory that houses the AFS command binaries. If not,
        you possibly need to precede the command names with the appropriate pathname.</para>
      </note>

      <orderedlist>
        <listitem>
          <para>You can perform the following instructions on either a server or client machine. Login as an AFS administrator who
          is listed in the <emphasis role="bold">/usr/afs/etc/UserList</emphasis> file on all server machines. 
<programlisting>
   % <emphasis role="bold">kinit</emphasis> <replaceable>admin_user</replaceable>
   Password: <replaceable>admin_password</replaceable>
   % <emphasis role="bold">aklog</emphasis>
</programlisting></para>
        </listitem>

        <listitem>
          <para>If you are working on a client machine configured in the conventional manner, the <emphasis
          role="bold">bos</emphasis> command suite resides in the <emphasis role="bold">/usr/afsws/bin</emphasis> directory, a
          symbolic link to an AFS directory. An error during installation can potentially block access to AFS, in which case it is
          helpful to have a copy of the <emphasis role="bold">bos</emphasis> binary on the local disk. This step is not necessary if
          you are working on a server machine, where the binary resides in the local <emphasis role="bold">/usr/afs/bin</emphasis>
          directory. <programlisting>
   % <emphasis role="bold">cp  /usr/afsws/bin/bos   /tmp</emphasis>
</programlisting></para>
        </listitem>

        <listitem id="LIWQ126">
          <para>If your cell is included in the global
          <emphasis role="bold">CellServDB</emphasis>, send the revised list of 
          your cell's database server machines to grand.central.org</para>

          <para>If the administrators in foreign cells do not learn about the change in your cell,
          they cannot update the <emphasis role="bold">CellServDB</emphasis> file on their client machines. Users in foreign cells
          continue to send database requests to the decommissioned machine, which creates needless network traffic and activity on
          the machine. Also, the users experience time-out delays while their request is forwarded to a valid database server
          machine.</para>
        </listitem>

        <listitem id="LIWQ127">
          <para>Remove the decommissioned machine from your cell's central <emphasis
          role="bold">CellServDB</emphasis> source file, if you use one. The conventional location is <emphasis
          role="bold">/afs/</emphasis><replaceable>cellname</replaceable><emphasis
          role="bold">/common/etc/CellServDB</emphasis>.</para>

          <para>If you maintain a file that users in foreign cells can access to learn about your cell's database server machines,
          update it also. The conventional location is <emphasis
          role="bold">/afs/</emphasis><replaceable>cellname</replaceable><emphasis
          role="bold">/service/etc/CellServDB.local</emphasis>. <indexterm>
              <primary>database server machine</primary>

              <secondary>entry in client CellServDB file</secondary>

              <tertiary>removing</tertiary>
            </indexterm> <indexterm>
              <primary>CellServDB file (client)</primary>

              <secondary>removing entry</secondary>
            </indexterm> <indexterm>
              <primary>client machine</primary>

              <secondary>CellServDB file</secondary>

              <tertiary>removing entry</tertiary>
            </indexterm> <indexterm>
              <primary>removing</primary>

              <secondary>entry from CellServDB file</secondary>
            </indexterm></para>
        </listitem>

        <listitem id="LIWQ128">
          <para>Update every client machine's <emphasis role="bold">/usr/vice/etc/CellServDB</emphasis> file
          and kernel memory list to exclude this machine. Altering the <emphasis role="bold">CellServDB</emphasis> file and kernel
          memory list before stopping the actual database server processes avoids possible time-out delays that result when users
          send requests to a decommissioned database server machine that is still listed in the file.</para>

          <para>There are several ways to update the <emphasis role="bold">CellServDB</emphasis> file on client machines, as
          detailed in the chapter of the <emphasis>OpenAFS Administration Guide</emphasis> about administering client machines. One
          option is to copy over the central update source (which you updated in Step <link linkend="LIWQ116">5</link>).
          To update the machine's kernel memory list, you can
          either reboot after changing the <emphasis role="bold">CellServDB</emphasis> file or issue the <emphasis role="bold">fs
          newcell</emphasis> command. <indexterm>
              <primary>bos commands</primary>

              <secondary>removehost</secondary>
            </indexterm> <indexterm>
              <primary>commands</primary>

              <secondary>bos removehost</secondary>
            </indexterm> <indexterm>
              <primary>CellServDB file (server)</primary>

              <secondary>removing entry</secondary>
            </indexterm> <indexterm>
              <primary>database server machine</primary>

              <secondary>entry in server CellServDB file</secondary>

              <tertiary>removing</tertiary>
            </indexterm></para>
        </listitem>

        <listitem id="LIWQ129">
          <para>Issue the <emphasis role="bold">bos removehost</emphasis> command to remove the
          decommissioned database server machine from the <emphasis role="bold">/usr/afs/etc/CellServDB</emphasis> file on server
          machines.</para>

          <para>Substitute the decommissioned database server machine's fully-qualified hostname for the <replaceable>host
          name</replaceable> argument. If you run a system control machine, substitute its fully-qualified hostname for the
          <replaceable>machine&nbsp;name</replaceable> argument. If you do not run a system control machine, repeat the <emphasis
          role="bold">bos removehost</emphasis> command once for each server machine in your cell (including the decommissioned
          database server machine itself), by substituting each one's fully-qualified hostname for the
          <replaceable>machine&nbsp;name</replaceable> argument in turn.</para>

          <programlisting>
   % <emphasis role="bold">bos removehost</emphasis> &lt;<replaceable>machine name</replaceable>&gt;  &lt;<replaceable>host name</replaceable>&gt;   
</programlisting>

          <para>If you run a system control machine, wait for the Update Server to distribute the new <emphasis
          role="bold">CellServDB</emphasis> file, which takes up to five minutes by default. If issuing individual <emphasis
          role="bold">bos removehost</emphasis> commands, attempt to issue all of them within five minutes.</para>
        </listitem>

        <listitem>
          <para><emphasis role="bold">(Optional)</emphasis> Issue the <emphasis role="bold">bos listhosts</emphasis> command on each
          server machine to verify that the decommissioned database server machine no longer appears in its <emphasis
          role="bold">CellServDB</emphasis> file. <programlisting>
   % <emphasis role="bold">bos listhosts</emphasis> &lt;<replaceable>machine name</replaceable>&gt;
</programlisting> <indexterm>
              <primary>commands</primary>

              <secondary>bos stop</secondary>
            </indexterm> <indexterm>
              <primary>bos commands</primary>

              <secondary>stop</secondary>
            </indexterm> <indexterm>
              <primary>database server machine</primary>

              <secondary>stopping database server processes</secondary>
            </indexterm> <indexterm>
              <primary>stopping</primary>

              <secondary>database server processes</secondary>
            </indexterm> <indexterm>
              <primary>Backup Server</primary>

              <secondary>stopping</secondary>
            </indexterm> <indexterm>
              <primary>Protection Server</primary>

              <secondary>stopping</secondary>
            </indexterm> <indexterm>
              <primary>VL Server (vlserver process)</primary>

              <secondary>stopping</secondary>
            </indexterm></para>
        </listitem>

        <listitem id="LIWQ130">
          <para>Issue the <emphasis role="bold">bos stop</emphasis> command to stop the database server
          processes on the machine, by substituting its fully-qualified hostname for the
          <replaceable>machine&nbsp;name</replaceable> argument. The command changes each process's status in the <emphasis
          role="bold">/usr/afs/local/BosConfig</emphasis> file to <computeroutput>NotRun</computeroutput>, but does not remove its
          entry from the file. <programlisting>
   % <emphasis role="bold">bos stop</emphasis> &lt;<replaceable>machine name</replaceable>&gt; <emphasis role="bold">kaserver buserver ptserver vlserver</emphasis>
</programlisting> <indexterm>
              <primary>commands</primary>

              <secondary>bos delete</secondary>
            </indexterm> <indexterm>
              <primary>bos commands</primary>

              <secondary>delete</secondary>
            </indexterm> <indexterm>
              <primary>BosConfig file</primary>

              <secondary>removing entries</secondary>
            </indexterm> <indexterm>
              <primary>removing</primary>

              <secondary>entries from BosConfig File</secondary>
            </indexterm> <indexterm>
              <primary>database server machine</primary>

              <secondary>removing db-server processes from BosConfig file</secondary>
            </indexterm></para>
        </listitem>

        <listitem id="LIWQ131">
          <para><emphasis role="bold">(Optional)</emphasis> Issue the <emphasis role="bold">bos
          delete</emphasis> command to remove the entries for database server processes from the <emphasis
          role="bold">BosConfig</emphasis> file. This step is unnecessary if you plan to restart the database server functionality
          on this machine in future. <programlisting>
   % <emphasis role="bold">bos delete</emphasis> &lt;<replaceable>machine name</replaceable>&gt; <emphasis role="bold">buserver ptserver vlserver</emphasis>
</programlisting> <indexterm>
              <primary>commands</primary>

              <secondary>bos restart</secondary>

              <tertiary>on removed db-server machine</tertiary>
            </indexterm> <indexterm>
              <primary>bos commands</primary>

              <secondary>restart</secondary>

              <tertiary>on removed db-server machine</tertiary>
            </indexterm> <indexterm>
              <primary>restarting server process</primary>

              <secondary>on removed db-server machine</secondary>
            </indexterm> <indexterm>
              <primary>server process</primary>

              <secondary>restarting</secondary>

              <tertiary>on removed db-server machine</tertiary>
            </indexterm></para>
        </listitem>

        <listitem id="LIWQ132">
          <para>Issue the <emphasis role="bold">bos restart</emphasis> command on every database server
          machine in the cell, to restart the Backup, Protection, and VL Servers. This forces the election of a Ubik
          coordinator for each process, ensuring that the remaining database server processes recognize that the machine is no
          longer a database server.</para>

          <para>A cell-wide service outage is possible during the election of a new coordinator for the VL Server, but it normally
          lasts less than five minutes. Messages tracing the progress of the election appear on the console.</para>

          <para>Repeat this command on each of your cell's database server machines in quick succession. Begin with the machine with
          the lowest IP address.</para>

          <programlisting>
   %  <emphasis role="bold">bos restart</emphasis> &lt;<replaceable>machine name</replaceable>&gt; <emphasis role="bold">buserver ptserver vlserver</emphasis>    
</programlisting>

          <para>If an error occurs, restart all server processes on the database server machines again by using one of the following
          methods: <itemizedlist>
              <listitem>
                <para>Issue the <emphasis role="bold">bos restart</emphasis> command with the <emphasis
                role="bold">-bosserver</emphasis> flag for each database server machine</para>
              </listitem>

              <listitem>
                <para>Reboot each database server machine, either using the <emphasis role="bold">bos exec</emphasis> command or at
                its console</para>
              </listitem>
            </itemizedlist></para>
        </listitem>
      </orderedlist>
    </sect2>
  </sect1>
</chapter>
