• inn2 batch creating cyclic buffers

    From go-while@21:1/5 to All on Wed Jul 26 14:44:06 2023
    inn2 batch creating cyclic buffers

    cat storage.conf (debian11)
    ## $Id: storage.conf 7651 2007-08-20 10:28:34Z iulius $
    ##
    ## Rules for where INN should store incoming articles.
    ##
    ## This file is used to determine which storage method articles are sent
    ## to be stored and which storage class they are stored as. Each
    ## method is described as follows:
    ##
    ## method <methodname> {
    ## newsgroups: <wildmat>
    ## class: <storage class #>
    ## size: <minsize>[,<maxsize>]
    ## expires: <mintime>[,<maxtime>]
    ## options: <options>
    ## exactmatch: <bool>
    ## }
    ##
    ## See the storage.conf man page for more information.
    ##
    ## Only newsgroups, class, and (for CNFS, to specify the metacycbuff)
    ## options are required; the other keys are optional. If any CNFS
    ## methods are configured, you will also need to set up cycbuff.conf.

    ## By default, store everything in tradspool.

    #method tradspool {
    # newsgroups: *
    # class: 0
    #}

    ## Here are some samples for a CNFS configuration. This assumes that you
    ## have two metacycbuffs configured, one for text newsgroups and one for
    ## binaries. Cancel messages, which tend to be very high-volume, are
    ## stored in the binary metacycbuff as well. This assumes storeonxref is
    ## set to true in inn.conf.

    ## Pick off the binary newsgroups first.

    #method cnfs {
    # newsgroups: *.bina*,control.cancel
    # class: 1
    # options: BINARY
    #}

    ## Put the remaining (text) groups in the other cycbuff.

    #method cnfs {
    # newsgroups: *
    # class: 2
    # options: TEXT
    #}

    method cnfs {
    newsgroups: *
    class: 201
    options: LOW
    size: 0,32000
    }

    method cnfs {
    newsgroups: *
    class: 202
    options: MID
    size: 32000,128000
    }

    method cnfs {
    newsgroups: *
    class: 203
    options: BIG
    size: 128000,256000
    }

    method cnfs {
    newsgroups: *
    class: 204
    options: HUG
    size: 256000,1000000
    }

    method cnfs {
    newsgroups: *
    class: 205
    options: MEG
    size: 1000000,15000000
    }

    # trash

    method trash {
    newsgroups: *
    class: 255
    }

    ### EOF storage.conf
    ^^^
    ^^^
    ^^^
    ^^^
    ^^^

    following a bash example to create bunch of cyclic buffers

    ### inn2_cycbufs.sh
    #
    #!/bin/bash
    exit 1

    PREFIX=""


    CYCBUFDIR=/var/spool/news/cycbuf
    #CYCBUFDIR=/tank0/cycbufs/node02

    STARTLOW=1; LOWBUFS=41; LOWSIZE=100; # 41x 100GB per cycbuf
    STARTMID=1; MIDBUFS=30; MIDSIZE=100;
    STARTBIG=1; BIGBUFS=3; BIGSIZE=100;
    STARTHUG=1; HUGBUFS=2; HUGSIZE=100;
    STARTMEG=1; MEGBUFS=1; MEGSIZE=100;

    MODE="SEQUENTIAL"
    #MODE="INTERLEAVE"

    mkdir -vp "$CYCBUFDIR"

    # function
    allocate_cycbufs () {
    test -z "$3" && echo "error allocate_cycbufs missing NAME, SIZE or CYCBUFDIR" && return
    test ! $2 -ge 1 && echo "error allocate_cycbufs min size 1 GB" &&
    return
    NAME="$1"; SIZE_GB="$2";
    test -e "$CYCBUFDIR/$NAME.cyc" && echo "exists:
    $CYCBUFDIR/$NAME.cyc" && return
    echo "allocating cycbuf $NAME $SIZE_GB GB"
    let VAL="$SIZE_GB * 1024 * 1024";
    dd if=/dev/zero bs=${VAL} count=1024 of="$CYCBUFDIR/$NAME.cyc" ||
    return
    # 'pv' prints writespeed
    #dd if=/dev/zero bs=${VAL} count=1024 | pv > "$CYCBUFDIR/$NAME.cyc"
    || return
    echo "cycbuff:$NAME:$CYCBUFDIR/$NAME.cyc:$VAL" >> /etc/news/cycbuff.conf.new
    #echo "cycbuff:$NAME:$CYCBUFDIR/$NAME.cyc:$VAL"
    }

    i=$STARTLOW
    let max="$STARTLOW+$LOWBUFS"
    while [ $i -lt $max ]; do
    allocate_cycbufs "${PREFIX}LOW$i" "$LOWSIZE" "$CYCBUFDIR"
    let i="i+1"
    done

    i=$STARTMID
    let max="$STARTMID+$MIDBUFS"
    while [ $i -lt $max ]; do
    allocate_cycbufs "${PREFIX}MID$i" "$MIDSIZE" "$CYCBUFDIR"
    let i="i+1"
    done

    i=$STARTBIG
    let max="$STARTBIG+$BIGBUFS"
    while [ $i -lt $max ]; do
    allocate_cycbufs "${PREFIX}BIG$i" "$BIGSIZE" "$CYCBUFDIR"
    let i="i+1"
    done

    i=$STARTHUG
    let max="$STARTHUG+$HUGBUFS"
    while [ $i -lt $max ]; do
    allocate_cycbufs "${PREFIX}HUG$i" "$HUGSIZE" "$CYCBUFDIR"
    let i="i+1"
    done

    i=$STARTMEG
    let max="$STARTMEG+$MEGBUFS"
    while [ $i -lt $max ]; do
    allocate_cycbufs "${PREFIX}MEG$i" "$MEGSIZE" "$CYCBUFDIR"
    let i="i+1"
    done


    chown -v news:news $CYCBUFDIR -R
    chmod -v 660 $CYCBUFDIR/*.cyc

    # write cycbuf configs

    i=$STARTLOW
    let max="$STARTLOW+$LOWBUFS"
    echo -n "metacycbuff:${PREFIX}LOW:" >> /etc/news/cycbuff.conf.new
    while [ $i -lt $max ]; do
    echo -n "${PREFIX}LOW$i," >> /etc/news/cycbuff.conf.new
    let i="i+1"
    done
    echo ":$MODE" >> /etc/news/cycbuff.conf.new

    i=$STARTMID
    let max="$STARTMID+$MIDBUFS"
    echo -n "metacycbuff:${PREFIX}MID:" >> /etc/news/cycbuff.conf.new
    while [ $i -lt $max ]; do
    echo -n "${PREFIX}MID$i," >> /etc/news/cycbuff.conf.new
    let i="i+1"
    done
    echo ":$MODE" >> /etc/news/cycbuff.conf.new

    i=$STARTBIG
    let max="$STARTBIG+$BIGBUFS"
    echo -n "metacycbuff:${PREFIX}BIG:" >> /etc/news/cycbuff.conf.new
    while [ $i -lt $max ]; do
    echo -n "${PREFIX}BIG$i," >> /etc/news/cycbuff.conf.new
    let i="i+1"
    done
    echo ":$MODE" >> /etc/news/cycbuff.conf.new

    i=$STARTHUG
    let max="$STARTHUG+$HUGBUFS"
    echo -n "metacycbuff:${PREFIX}HUG:" >> /etc/news/cycbuff.conf.new
    while [ $i -lt $HUGBUFS ]; do
    echo -n "${PREFIX}HUG$i," >> /etc/news/cycbuff.conf.new
    let i="i+1"
    done
    echo ":$MODE" >> /etc/news/cycbuff.conf.new

    i=$STARTMEG
    let max="$STARTMEG+$MEGBUFS"
    echo -n "metacycbuff:${PREFIX}MEG:" >> /etc/news/cycbuff.conf.new
    while [ $i -lt $MEGBUFS ]; do
    echo -n "${PREFIX}MEG$i," >> /etc/news/cycbuff.conf.new
    let i="i+1"
    done
    echo ":$MODE" >> /etc/news/cycbuff.conf.new

    # remove bad commas!!
    sed 's/,:/:/g' -i /etc/news/cycbuff.conf.new




    # creates overview buffers
    OVDIR=/tank0/overview/node02
    OVDIR=/var/spool/news/overview
    OVBUFS=20;
    OVSIZE=25;
    i=0
    let VAL="$OVSIZE * 1024 * 1024"; i=0;
    while [ $i -lt $OVBUFS ]; do
    dd if=/dev/zero bs=${VAL} count=1024 | pv > "$OVDIR/OV${i}"
    echo "${i}:${OVDIR}/OV${i}:${VAL}" >> /etc/news/buffindexed.conf.new
    let i="i+1"
    done

    chown news:news /var/spool/news/ -R

    ### EOF inn2-cycbufs.sh
    ^^^
    ^^^
    ^^^
    ^^^
    ^^^


    # cycbuff.conf

    cycbuff:LOW1:/var/spool/news/cycbuf/LOW1.cyc:104857600 cycbuff:LOW2:/var/spool/news/cycbuf/LOW2.cyc:104857600 cycbuff:LOW3:/var/spool/news/cycbuf/LOW3.cyc:104857600 cycbuff:LOW4:/var/spool/news/cycbuf/LOW4.cyc:104857600 cycbuff:LOW5:/var/spool/news/cycbuf/LOW5.cyc:104857600 cycbuff:LOW6:/var/spool/news/cycbuf/LOW6.cyc:104857600 cycbuff:LOW7:/var/spool/news/cycbuf/LOW7.cyc:104857600 cycbuff:LOW8:/var/spool/news/cycbuf/LOW8.cyc:104857600 cycbuff:LOW9:/var/spool/news/cycbuf/LOW9.cyc:104857600 cycbuff:LOW10:/var/spool/news/cycbuf/LOW10.cyc:104857600 cycbuff:LOW11:/var/spool/news/cycbuf/LOW11.cyc:104857600 cycbuff:LOW12:/var/spool/news/cycbuf/LOW12.cyc:104857600 cycbuff:LOW13:/var/spool/news/cycbuf/LOW13.cyc:104857600 cycbuff:LOW14:/var/spool/news/cycbuf/LOW14.cyc:104857600 cycbuff:LOW15:/var/spool/news/cycbuf/LOW15.cyc:104857600 cycbuff:LOW16:/var/spool/news/cycbuf/LOW16.cyc:104857600 cycbuff:LOW17:/var/spool/news/cycbuf/LOW17.cyc:104857600 cycbuff:LOW18:/var/spool/news/cycbuf/LOW18.cyc:104857600 cycbuff:LOW19:/var/spool/news/cycbuf/LOW19.cyc:104857600 cycbuff:LOW20:/var/spool/news/cycbuf/LOW20.cyc:104857600 cycbuff:LOW21:/var/spool/news/cycbuf/LOW21.cyc:104857600 cycbuff:LOW22:/var/spool/news/cycbuf/LOW22.cyc:104857600 cycbuff:LOW23:/var/spool/news/cycbuf/LOW23.cyc:104857600 cycbuff:LOW24:/var/spool/news/cycbuf/LOW24.cyc:104857600 cycbuff:LOW25:/var/spool/news/cycbuf/LOW25.cyc:104857600 cycbuff:LOW26:/var/spool/news/cycbuf/LOW26.cyc:104857600 cycbuff:LOW27:/var/spool/news/cycbuf/LOW27.cyc:104857600 cycbuff:LOW28:/var/spool/news/cycbuf/LOW28.cyc:104857600 cycbuff:LOW29:/var/spool/news/cycbuf/LOW29.cyc:104857600 cycbuff:LOW30:/var/spool/news/cycbuf/LOW30.cyc:104857600 cycbuff:LOW31:/var/spool/news/cycbuf/LOW31.cyc:104857600 cycbuff:LOW32:/var/spool/news/cycbuf/LOW32.cyc:104857600 cycbuff:LOW33:/var/spool/news/cycbuf/LOW33.cyc:104857600 cycbuff:LOW34:/var/spool/news/cycbuf/LOW34.cyc:104857600 cycbuff:LOW35:/var/spool/news/cycbuf/LOW35.cyc:104857600 cycbuff:LOW36:/var/spool/news/cycbuf/LOW36.cyc:104857600 cycbuff:LOW37:/var/spool/news/cycbuf/LOW37.cyc:104857600 cycbuff:LOW38:/var/spool/news/cycbuf/LOW38.cyc:104857600 cycbuff:LOW39:/var/spool/news/cycbuf/LOW39.cyc:104857600 cycbuff:LOW40:/var/spool/news/cycbuf/LOW40.cyc:104857600 cycbuff:LOW41:/var/spool/news/cycbuf/LOW41.cyc:104857600 cycbuff:MID1:/var/spool/news/cycbuf/MID1.cyc:104857600 cycbuff:MID2:/var/spool/news/cycbuf/MID2.cyc:104857600 cycbuff:MID3:/var/spool/news/cycbuf/MID3.cyc:104857600 cycbuff:MID4:/var/spool/news/cycbuf/MID4.cyc:104857600 cycbuff:MID5:/var/spool/news/cycbuf/MID5.cyc:104857600 cycbuff:MID6:/var/spool/news/cycbuf/MID6.cyc:104857600 cycbuff:MID7:/var/spool/news/cycbuf/MID7.cyc:104857600 cycbuff:MID8:/var/spool/news/cycbuf/MID8.cyc:104857600 cycbuff:MID9:/var/spool/news/cycbuf/MID9.cyc:104857600 cycbuff:MID10:/var/spool/news/cycbuf/MID10.cyc:104857600 cycbuff:MID11:/var/spool/news/cycbuf/MID11.cyc:104857600 cycbuff:MID12:/var/spool/news/cycbuf/MID12.cyc:104857600 cycbuff:MID13:/var/spool/news/cycbuf/MID13.cyc:104857600 cycbuff:MID14:/var/spool/news/cycbuf/MID14.cyc:104857600 cycbuff:MID15:/var/spool/news/cycbuf/MID15.cyc:104857600 cycbuff:MID16:/var/spool/news/cycbuf/MID16.cyc:104857600 cycbuff:MID17:/var/spool/news/cycbuf/MID17.cyc:104857600 cycbuff:MID18:/var/spool/news/cycbuf/MID18.cyc:104857600 cycbuff:MID19:/var/spool/news/cycbuf/MID19.cyc:104857600 cycbuff:MID20:/var/spool/news/cycbuf/MID20.cyc:104857600 cycbuff:BIG1:/var/spool/news/cycbuf/BIG1.cyc:104857600 cycbuff:BIG2:/var/spool/news/cycbuf/BIG2.cyc:104857600 cycbuff:BIG3:/var/spool/news/cycbuf/BIG3.cyc:104857600 cycbuff:HUG1:/var/spool/news/cycbuf/HUG1.cyc:104857600 cycbuff:HUG2:/var/spool/news/cycbuf/HUG2.cyc:104857600 cycbuff:MEG1:/var/spool/news/cycbuf/MEG1.cyc:104857600


    metacycbuff:LOW:LOW1,LOW2,LOW3,LOW4,LOW5,LOW6,LOW7,LOW8,LOW9,LOW10,LOW11,LOW12,LOW13,LOW14,LOW15,LOW16,LOW17,LOW18,LOW19,LOW20,LOW21,LOW22,LOW23,LOW24,LOW25,LOW26,LOW27,LOW28,LOW29,LOW30,LOW31,LOW32,LOW33,LOW34,LOW35,LOW36,LOW37,LOW38,LOW39,LOW40,LOW41:
    SEQUENTIAL metacycbuff:MID:MID1,MID2,MID3,MID4,MID5,MID6,MID7,MID8,MID9,MID10,MID11,MID12,MID13,MID14,MID15,MID16,MID17,MID18,MID19,MID20:SEQUENTIAL
    metacycbuff:BIG:BIG1,BIG2,BIG3:SEQUENTIAL
    metacycbuff:HUG:HUG1,HUG2:SEQUENTIAL
    metacycbuff:MEG:MEG1:SEQUENTIAL

    # EOF cycbuff.conf
    ^^^
    ^^^
    ^^^
    ^^^
    ^^^


    enjoy!

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)