bash - testa se o disco não está particionado

bash - testa se o disco não está particionado

Atualmente estou trabalhando em um armazenamento de rede DIY que agrega espaço livre em disco usando mhddfs.

Agora, o que eu quero é, por exemplo, dado um compartimento de hotswap, quando insiro um novo disco não particionado, desejo particionar automaticamente o disco usando um script bash e montar a nova partição mhddfs.

A mesma situação ocorre se o servidor for desligado, um novo disco for inserido e o servidor for ligado novamente.

Portanto, a questão é: como posso detectar um disco não particionado usando um script bash?

A questão também inclui que não deve haver falsas detecções. por exemplo, se um disco criptografado for inserido, ele não deverá ser reparticionado e formatado automaticamente - Este ponto é o principal interesse da questão.

Responder1

Uma opção para realizar a verificação e particionamento é o partedcomando. Para obter informações de partição em todos os dispositivos de bloco de disco do sistema, em formato "legível por humanos":

/sbin/parted -l

ou, em formato "legível por máquina", use:

/sbin/parted -lm

Você precisará analisar a saída para determinar se o disco possui uma tabela de partição válida.

Então, use algo como:

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

para fazer uma única partição usando todo o disco. A sintaxe do subcomando mkpart é de memória e não tenho um sistema com disco disponível para verificar se está correto

Responder2

Aqui está uma maneira que estou usando para backups.

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

onde ${DEV} é o dispositivo que você está interrogando (melhor executado a partir de um script udev).

Responder3

Presumo que você esteja fazendo isso em um kernel Linux.

Use fdiskou sfdiskdo util-linuxpacote:

fdisk -l /path/to/disk

ou:

sfdisk -l /path/to/disk

para listar a tabela de partições atual.

O Linux detecta partições disponíveis, portanto, procurar nos /dev/diskdiretórios pode ser suficiente para suas necessidades.

Responder4

gostei muito da resposta postada nofluxo de pilhaque sugere:

parted --script

Como:

parted --script /dev/sdb print

informação relacionada