DESCRIPTION

       This file defines the cyclical buffers that make up the storage pools
       for CNFS (Cyclic News File System).  Some options controlling the
       behavior of the CNFS storage system can also be set here.  cycbuff.conf
       is required if the CNFS (Cyclic News File System) storage method is
       used.  INN will look for it in pathetc (as set in inn.conf).

       For information about how to configure INN to use CNFS, see stor-
       age.conf(5).

       Blank lines and lines beginning with a hash sign ("#") are ignored.
       All other lines must be of one of the following forms:

           cycbuffupdate:<interval>
           refreshinterval:<interval>
           cycbuff:<name>:<file>:<size>
           metacycbuff:<name>:<buffer>[,<buffer>,...][:<mode>]

       (where items enclosed in [] are optional).  Order is mostly not signif-
       icant, but all cycbuff lines must occur before all metacycbuff lines.
       Long lines can be continued on the next line by ending the line with a
       backslash ("\").

       cycbuffupdate:<interval>
           Sets the number of articles are written before the cycbuff header
           is written back to disk to <interval>.  Under most operating sys-
           tems, the header doesn't have to be written to disk for the updated
           data to be available to other processes on the same system that are
           reading articles out of CNFS, but any accesses to the CNFS cycbuffs
           over NFS will only see the data present at the last write of the
           header.  After a system crash, all updates since the last write of
           the CNFS header may be lost.  The default value, if this line is
           omitted, is 25, meaning that the header is written to disk after
           every 25 articles stored in that cycbuff.

       refreshinterval:<interval>
           Sets the interval (in seconds) between re-reads of the cycbuff
           header to <interval>.  This primarily affects nnrpd and controls
           the frequency with which it updates its knowledge of the current
           contents of the CNFS cycbuffs.  The default value, if this line is
           omitted, is 30.

       cycbuff:<name>:<file>:<size>
           Configures a particular CNFS cycbuff.  <name> is a symbolic name
           for the buffer, to be used later in a metacycbuff line.  It must be
           no longer than seven characters.  <file> is the full path to the
           buffer file or block device, and must be no longer than 63 charac-
           ters.  <size> is the length of the buffer in kilobytes (1KB is 1024
           bytes).  If <file> is not a block device, it should be <size> *
           1024 bytes long.

       metacycbuff:<name>:<buffer>[,<buffer>,...][:<mode>]
           default mode, INTERLEAVE, stores the articles in each cycbuff in a
           round-robin fashion, one article per cycbuff in the order listed.
           If the cycbuffs are of wildly different sizes, this can cause some
           of them to roll over much faster than others, and it may not give
           the best performance depending on your disk layout.  The other
           storage mode, SEQUENTIAL, instead writes to each cycbuff in turn
           until that cycbuff is full and then moves on to the next one,
           returning to the first and starting a new cycle when the last one
           is full.  To specify a mode rather than leaving it at the default,
           add a colon and the mode (INTERLEAVE or SEQUENTIAL) at the end of
           the metacycbuff line.

       innd only reads cycbuff.conf on startup, so if you change anything in
       this file and want innd to pick up the changes, you have to stop and
       restart it.  "ctlinnd reload ''" is not sufficient.

       When articles are stored, the cycbuff into which they're stored is
       saved as part of the article token.  In order for INN to retrieve arti-
       cles from a cycbuff, that cycbuff must be listed in cycbuff.conf.  How-
       ever, if INN should not write to a cycbuff, it doesn't need to be (and
       shouldn't be) listed in a metacycbuff.

       This provides an easy way to retire a cycbuff.  Just remove it from its
       metacycbuff, leaving in the cycbuff line, and restart innd (with, for
       example, "ctlinnd xexec innd").  No new articles will be put into the
       cycbuff, but neither will any articles expire from it.  After you no
       longer need the articles in the cycbuff, just remove it entirely from
       cycbuff.conf.  Then all of the articles will appear to have been
       deleted to INN, and the next nightly expire run will clean up any
       remaining references to them.

       Adding a new cycbuff just requires creating it (see below), adding a
       cycbuff line, adding it to a metacycbuff, and then restarting innd.


CREATING CYCBUFFS

       When creating a new cycbuff, there are two different methods for creat-
       ing the buffers in which the articles will be stored.

       1.  Create a large file on top of a regular file system.  The easiest
           way to do this is probably with dd(1), using a command like:

               dd if=/dev/zero of=/path/to/cycbuff bs=1024 count=<size>

           where <size> is the size from the cycbuff line in cycbuff.conf.
           INSTALL contains a script that will generate these commands for you
           from your cycbuff.conf file.

           This is the simplest method, but has the disadvantage that very
           large files on regular file systems can be fairly slow to access,
           particularly at the end of the file, and INN incurs unnecessary
           file system overhead when accessing the cycbuff.


           It's not recommended to use the block device files in /dev, since
           the news system doesn't have permission to write to them and chang-
           ing the permissions of the system device files may affect something
           else.  Instead, use mknod(1) to create a new set of block devices
           (in somewhere like pathspool/cycbuffs that's only writable by the
           news user).  To do this, run "ls -Ll" on the devices in /dev that
           correspond to the block devices that you want to use.  The major
           and minor device numbers are in the fifth and sixth columns (right
           before the date), respectively.  Then run mknod like:

               mknod <file> b <major> <minor>

           where <file> is the path to the device to create (matching the
           <file> part of the cycbuff line) and <major> and <minor> are the
           major and minor device numbers as discovered above.

           Here's a short script to do this when given the path to the system
           device file as an argument:

               #!/bin/sh
               base=`echo "$1" | sed 's%.*/%%'`
               major=`ls -Ll "$1" | awk '{print $5}' | tr -d ,`
               minor=`ls -Ll "$1" | awk '{print $6}`
               mkdir -p /usr/local/news/spool/cycbuffs
               mknod /usr/local/news/spool/cycbuffs/"$base" b "$major" "$minor"
               chown news:news /usr/local/news/spool/cycbuffs/"$base"
               chmod 644 /usr/local/news/spool/cycbuffs/"$base"

           Make sure that the created files are owned by the news user and
           news group, as specified at configure time (the default being
           "news" for both).  Also make sure that the permissions on the
           devices allow the news user to read and write, and if you want
           other users on the system to be able to use sm to retrieve arti-
           cles, make sure they're world-readable.

       Once you have everything configured properly and you start innd, you
       should see messages in news.notice that look like:

           innd: CNFS-sm No magic cookie found for cycbuff ONE, initializing

       where ONE will be whatever you called your cycbuff.


HISTORY

       Written by Katsuhiro Kondou <kondou@nec.co.jp> for InterNetNews.
       Rewritten into POD by Russ Allbery <rra@stanford.edu>.

       $Id: cycbuff.conf.5 6247 2003-02-28 00:05:40Z kondou $


SEE ALSO

       ctlinnd(8), innd(8), nnrpd(8), sm(1), storage.conf(5)


Man(1) output converted with man2html