Define sda as the smallest disk

Rémy Dernat remy.d1 at gmail.com
Wed Mar 13 14:03:00 CET 2024


Hi Diego,

Nice catch for the scsi grep.

Will try that ASAP.

Thanks

Le ven. 23 févr. 2024 à 14:35, Diego Zuccato <diego.zuccato at unibo.it> a écrit :
>
> Just a followup.
> My script had a serious bug (plus a typo), too: since it gets sourced,
> $0 is not what I expected :( After many failed atttempts finally I
> noticed it and patched.
>
> What I just tested:
> -8<--
> root at fai:/srv/fai/config/class# cat 99-disklist.sh
> #! /bin/bash
>
> mydisks() {
>
>      find $* -type l -printf "%f %l\n" | grep -Pv
> '^md|-part\d|^wwn-|^nvme-eui|^nvme-nvme' | egrep '^scsi|^ata|^nvme' |
> sed -e 's#.*/##g'| tr '\n' ' '
> }
>
> # This is really important, because we use shell globbing for creating
> the list of disks
> cd /dev/disk/by-id || echo Cannot get disk information
>
> filter='nvme*'
>
> # can not use $0: script is sourced, not run explicitly !
> datadir=$FAI/class/99-disklist.d
> echo "**** Testing $datadir/$HOSTNAME"
> if [ -f $datadir/$HOSTNAME ] ; then
>      # Source host-specific list. Can define a new list or override filter
>      . $datadir/$HOSTNAME
> fi
>
> if [ -z $newlist ]; then
>      echo "newlist is empty, filter=$filter"
>      newlist=$(mydisks $filter )
> fi
>
> if [ -n "$newlist" ]; then
>      echo New disklist in 99-disklist.sh: $newlist
>      echo "disklist=\"$newlist\" # $0" >> $LOGDIR/additional.var
> fi
> -8<--
>
> And 99-disklist.d/fast00 (the host I'm installing) contains:
> -8<--
> #!/bin/bash
> #filter='scsi-*'
> #newlist='sdt '
> . /usr/lib/fai/subroutines
>
> newlist=$(smallestdisk)
> -8<--
>
> Hope it can be useful for others.
>
> Diego
>
> Il 22/02/2024 09:02, Diego Zuccato ha scritto:
> > I think there's a bug (well, a missing piece) in 99-disklist.sh: egrep
> > ignores SCSI disk, considering just ATA and NVME.
> >
> > If it can be useful, I also modified the script to look into
> > 99-disklist.d for hostname-specific configs (I prefer having separate
> > files instead of embedding in a bigger one):
> >
> > -8<-- 99-disklist -8<--
> > #! /bin/bash
> >
> > mydisks() {
> >
> >      find $* -type l -printf "%f %l\n" | grep -Pv
> > '^md|-part\d|^wwn-|^nvme-eui|^nvme-nvme' | egrep '^scsi|^ata|^nvme' |
> > sed -e 's#.*/##g'| tr '\n' ' '
> > }
> >
> > # This is really important, because we use shell globbing for creating
> > the list of disks
> > cd /dev/disk/by-id || echo Cannot get disk information
> >
> > filter='nvme*'
> >
> > if [ -f $0.d/$HOSTNAME ] ; then
> >      # Source host-specific list.
> >      # Can define a new list or just override filter
> >      . $0.d/$HOSTNAME
> > fi
> >
> > if [ -z $newlist ]; then
> >      newlist=$(mydisks $filter* )
> > fi
> >
> > if [ -n "$newlist" ]; then
> >      echo New disklist: $newlist
> >      echo disklist=\"$newlist\" >> $LOGDIR/additional.var
> > fi
> > -8<--
> > Note the missing .sh extension.
> >
> > The 99-disklist.d/$HOSTNAME file is just:
> > -8<--
> > #!/bin/bash
> > filter='scsi-*'
> > # or
> > #newlist='sda'
> > -8<--
> >
> > HiH.
> >
> > Diego
> >
> > Il 31/01/2024 13:49, Thomas Lange ha scritto:
> >> Hi all,
> >>
> >> that is the example how to change the shell variable $disklist:
> >> https://fai-project.org/download/misc/99-disklist.sh
> >>
> >> Create the script class/99-disklist.sh in your config space
> >> (/s/rv/fai/config)
> >>
> >> These are the imprtant lines:
> >>
> >> if [ -n "$newlist" ]; then
> >>      echo New disklist: $newlist
> >>      echo disklist=\"$newlist\" >> $LOGDIR/additional.var
> >> fi
> >>
> >>
> >> This script writes the new valuespf disklist to
> >> $LOGDIR/additional.var. Then FAI will parse it and sets the new value
> >> for disklist before calling setup-storage.
> >>
> >> regards Thomas
> >
>
> --
> Diego Zuccato
> DIFA - Dip. di Fisica e Astronomia
> Servizi Informatici
> Alma Mater Studiorum - Università di Bologna
> V.le Berti-Pichat 6/2 - 40127 Bologna - Italy
> tel.: +39 051 20 95786


More information about the linux-fai mailing list