LVM a partitions? (Re: Virt-manager)
Slavek Banko
slavek.banko na axis.cz
Úterý Listopad 11 11:45:03 CET 2008
Dne út 11. listopadu 2008 Jan Kasprzak napsal(a):
> Nehlede na virtualni stroje, tenhle problem (jak rozumne
> zpristupnit partitionovane zarizeni) jsem resil i jinde - takze: umite
> tohle nekdo rozumne resit, nebo je treba rucne pocitat offsety oblasti?
>
> -Y.
Také jsem stejný problém kdysi řešil. Zjistil jsem, že to počítání není
problém, a tak jsem si napsal malý skriptík a nazval jej dm-disk.
Slávek
--
#!/bin/bash
#-----------------------------------------------------------------------+
# |
# |
# dm-disk - vytvoreni zarizeni pro oddily v obrazu disku |
# |
# |
#-----------------------------------------------------------------------+
#-----------------------------------------------------------------------+
# kontrola parametru |
#-----------------------------------------------------------------------+
if [ -z "$1" ] || [ ! -r "$1" ]; then
echo "Jako parametr zadej jmeno zarizeni."
exit 1
fi
DEV_PARENT=$1
if [ -z "$2" ]; then
ACTION=status
else
ACTION="$2"
fi
#-----------------------------------------------------------------------+
# mapovani oddilu |
#-----------------------------------------------------------------------+
case "$ACTION" in
start)
echo -n "Mapping disk $DEV_PARENT:"
;;
stop)
echo -n "Unmapping disk $DEV_PARENT:"
;;
esac
fdisk -lu $DEV_PARENT | \
grep "^$DEV_PARENT" | \
sed "s|[\*+]||g" | \
while read DEV_PARTITION DEV_START DEV_END DEV_BLOCKS DEV_TYPE
DEV_TYPE_LABEL; do
if [ "$DEV_TYPE" != "5" ] && [ "$DEV_TYPE" != "f" ]; then
DEV_PARTITION=$(echo "$DEV_PARTITION" | sed -e "s|^/dev/||" -e "s|/|-|
g")
case "$ACTION" in
start)
if ! dmsetup ls | grep -q "$DEV_PARTITION"; then
echo -n " $DEV_PARTITION"
echo 0 $(( DEV_END-DEV_START+1 )) linear $DEV_PARENT $DEV_START |
dmsetup create "$DEV_PARTITION"
fi
;;
stop)
if dmsetup ls | grep -q "$DEV_PARTITION"; then
echo -n " $DEV_PARTITION"
dmsetup remove "$DEV_PARTITION"
fi
;;
*)
if dmsetup ls | grep -q "$DEV_PARTITION"; then
dmsetup info "$DEV_PARTITION"
fi
;;
esac
fi
done
case "$ACTION" in
start|stop)
echo "."
;;
esac
Další informace o konferenci Linux