
В настоящее время я работаю над созданием сетевого хранилища, которое объединяет свободное дисковое пространство с помощью mhddfs.
Теперь мне нужно, например, при наличии отсека с возможностью горячей замены, чтобы при вставке нового неразмеченного диска я автоматически разбивал диск на разделы с помощью скрипта bash и монтировал новый раздел mhddfs.
Та же ситуация возникает, если сервер выключается, вставляется новый диск и сервер снова включается.
Итак, вопрос: как обнаружить неразмеченный диск с помощью bash-скрипта?
Вопрос также включает в себя то, что не должно быть ложных срабатываний. Например, если вставлен зашифрованный диск, он не должен автоматически переразбиваться на разделы и форматироваться. Этот момент представляет наибольший интерес в вопросе.
решение1
Одним из вариантов выполнения проверки и разбиения на разделы является parted
команда. Чтобы получить информацию о разделах на всех дисковых блочных устройствах в системе в «человечески понятном» формате:
/sbin/parted -l
или, в «машиночитаемом» формате, используйте:
/sbin/parted -lm
Вам необходимо будет проанализировать выходные данные, чтобы определить, имеет ли диск действительную таблицу разделов.
Затем используйте что-то вроде:
/sbin/parted <device> --script mkpart primary 1 -- -1
чтобы создать один раздел, используя весь диск. Синтаксис подкоманды mkpart взят из памяти, и у меня нет системы с доступным диском, чтобы проверить его правильность.
решение2
Вот способ, который я использую для резервного копирования.
if [ $(/sbin/sfdisk -d ${DEV} 2>&1) == "" ]; then echo "Device not partitioned"; fi
где ${DEV} — опрашиваемое устройство (лучше всего запускать из скрипта udev.)
решение3
Я предполагаю, что вы делаете это на ядре Linux.
Используйте fdisk
или sfdisk
из util-linux
упаковки:
fdisk -l /path/to/disk
или:
sfdisk -l /path/to/disk
для вывода списка текущей таблицы разделов.
Linux обнаруживает доступные разделы, поэтому /dev/disk
для ваших нужд может быть достаточно поиска в каталогах.
решение4
Мне очень понравился ответ, опубликованный напереполнение стекачто предполагает:
parted --script
Нравиться:
parted --script /dev/sdb print