Para juntar arquivos/dispositivos Linux em modo linear, eu tenho este script dm-joinlinear.sh
de
junte arquivos/dispositivos em modo linear em um sistema Linux , obrigado telcoM
#!/bin/sh
usage() {
echo "Usage: ${0##*/} <target name> <component...>" >&2
exit 64 # EX_USAGE
}
if [ "$1" = "" ] || [ "$1" = "-h" ] || [ "$1" = "-?" ] || [ "$1" = "--help" ]
then
usage
fi
if [ -e "/dev/mapper/$1" ]
then
echo "ERROR: target $1 already exists." >&2
exit 73 # EX_CANTCREAT
fi
MAPNAME="$1"
shift
DMMAP=$(mktemp)
trap "rm -f $DMMAP" EXIT
sum=0
while [ "$1" != "" ]
do
if [ ! -e "$1" ]
then
echo "ERROR: $1 does not exist"
exit 66 # EX_NOINPUT
fi
if [ ! -b "$1" ]
then
echo "ERROR: $1 is not a block device"
exit 69 # EX_UNAVAILABLE
fi
srcN="$1"
sizeN=$(blockdev --getsz "$srcN")
echo "$sum $sizeN linear $srcN 0" >>$DMMAP
sum=$(expr $sum + $sizeN)
shift
done
dmsetup create $MAPNAME < $DMMAP
eu executo o script com
./dm-joinlinear.sh one /dev/loop? /dev/loop??
ou
./dm-joinlinear.sh one /dev/mapper/file? /dev/mapper/file??
/dev/loop0 and /dev/mapper/file1 are the same
/dev/loop1 and /dev/mapper/file2 are the same
....
/dev/loop32 and /dev/mapper/file33 are the same
posso executar o script com
dm-joinlinear.sh one /dev/loop[0-9] /dev/loop[1-2]? /dev/loop3[0-2]
ou
dm-joinlinear.sh one /dev/loop0 /dev/loop1 /dev/loop2 .... and so on up to /dev/loop32 (to long to write all down here all)
ou o mesmo com remove "loop" e use mapper/file , mas começando em 1 e não em 0
eu prefiro o caminho com /dev/mapper/file em vez de /dev/loop
mas como posso dizer dm-joinlinear.sh
quantos dispositivos eles precisam ingressar? o valor está emparts.txt
Você pode usar um
for
loop para iterar de zero a 32 e armazenar os nomes dos dispositivos em uma matriz.