У меня есть Live CD, который я создаю, чтобы получить доступ ко всем физически подключенным дискам на машине. Вмешательство пользователя не требуется, и мне нужно найти и смонтировать все диски, которые можно установить. Мне также нужно иметь возможность обрабатывать, если диск или диски используют LVM или нет, и монтировать каждую группу томов.
2 ответа
Вот что я придумал, чтобы найти и смонтировать все доступные диски. Этот скрипт также будет отслеживать все сбойные монтирования (которые мне также понадобились в моей ситуации, не является частью вопроса, но могут быть полезны для других).
Здесь я сканирую все разделы в /proc/partitions
и пытаюсь смонтировать каждый найденный раздел. Разделы LVM будут перечислены в этом файле также после их сканирования и активации.
# Scan for all volume groups
lvscan
# Activate all volume groups
vgchange -a y
# Get all partitions (-n+3 skips first 3 lines since they do not contain partitions)
# Also skip partitions that are loop devices which is actually the ISO cd itself
all_partitions=$(tail -n+3 /proc/partitions | awk '{print $4}' | grep -v loop)
# Array of failed mounts
declare -a failed_mounts=()
# Mount each partition to /mnt/{partition name}
for partition in ${all_partitions}; do
mountdir=/mnt/${partition}
mkdir -p ${mountdir}
mount /dev/${partition} ${mountdir} &>>${INIT_LOG}
if [ $? -ne 0 ]; then
echo "Failed to mount ${partition}"
rm -rf ${mountdir}
failed_mounts+=(${partition})
fi
done
Это может зависеть или не зависеть от дистрибутива, но, поскольку я интегрирую это в live CD, он не обязательно должен быть независимым от дистрибутива.
Только часть LVM
Сначала активируйте все группы томов:
vgchange -a y
затем
lvdisplay -c | sed -e 's/ //; s/:.*//'
должен дать вам список активированных томов LVM. Они должны иметь форму /dev/VGNAME/LVNAME
, теперь вы можете использовать это для создания точек монтирования по вашему желанию.