bash: prueba si el disco no está particionado

bash: prueba si el disco no está particionado

Actualmente estoy trabajando en un almacenamiento de red de bricolaje que agrega espacio libre en disco mediante mhddfs.

Ahora lo que quiero es, por ejemplo, dada una bahía hotswap, cuando inserto un disco nuevo sin particionar, deseo particionar automáticamente el disco usando un script bash y montar la nueva partición mhddfs.

La misma situación ocurre si el servidor se apaga, se inserta un disco nuevo y el servidor se enciende nuevamente.

Entonces la pregunta es: ¿Cómo puedo detectar un disco no particionado usando un script bash?

La pregunta también incluye que no debería haber detecciones falsas. por ejemplo, si se inserta un disco cifrado, no debería volver a particionarse ni formatearse automáticamente. Este punto es el principal interés de la pregunta.

Respuesta1

Una opción para realizar la verificación y la partición es el partedcomando. Para obtener información de partición en todos los dispositivos de bloques de disco del sistema, en formato "legible por humanos":

/sbin/parted -l

o, en formato "legible por máquina", utilice:

/sbin/parted -lm

Deberá analizar la salida para determinar si el disco tiene una tabla de particiones válida.

Luego, usa algo como:

/sbin/parted <device> --script mkpart primary 1 -- -1

para hacer una sola partición usando todo el disco. La sintaxis del subcomando mkpart es de la memoria y no tengo un sistema con un disco disponible para verificar que sea correcta.

Respuesta2

Esta es una forma que estoy usando para copias de seguridad.

if [ $(/sbin/sfdisk -d ${DEV} 2>&1) == "" ]; then echo "Device not partitioned"; fi

donde ${DEV} es el dispositivo que está interrogando (es mejor ejecutarlo desde un script udev).

Respuesta3

Supongo que estás haciendo esto en un kernel de Linux.

Utilice fdisko sfdiskdel util-linuxpaquete:

fdisk -l /path/to/disk

o:

sfdisk -l /path/to/disk

para enumerar la tabla de particiones actual.

Linux detecta particiones disponibles, por lo que buscar en los /dev/diskdirectorios puede ser suficiente para sus necesidades.

Respuesta4

Me gustó mucho la respuesta publicada endesbordamiento de pilalo que sugiere:

parted --script

Como:

parted --script /dev/sdb print

información relacionada