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

3

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, em um hotswap bay, 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 quando o servidor é desligado, o novo disco é inserido e o servidor é ligado novamente.

Então 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 é inserido, ele não deve ser automaticamente particionado e formatado - este ponto é o principal interesse na questão.

    
por John Doe 07.09.2012 / 18:43

5 respostas

2

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

/sbin/parted -l

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

/sbin/parted -lm

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

Em seguida, use algo como:

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

para criar uma única partição usando o disco inteiro. A sintaxe no subcomando mkpart é da memória e eu não tenho um sistema com um disco disponível para verificar se está correto

    
por 07.09.2012 / 19:38
1

Aqui está uma maneira que estou usando para backups.

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

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

    
por 13.09.2014 / 00:30
0

Verifique o comando gpart (adivinhe as partições do disco rígido do tipo PC, precisa de root). Outra questão é: como seu script é iniciado, quando um novo disco é inserido?

    
por 07.09.2012 / 19:31
0

Eu presumo que você esteja fazendo isso em um kernel Linux.

Use fdisk ou sfdisk do pacote util-linux :

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, consultar os diretórios /dev/disk pode ser suficiente para suas necessidades.

    
por 07.09.2012 / 19:36
0

Gostei muito da resposta publicada em stackoverflow que sugere:

parted --script

Como:

parted --script /dev/sdb print

    
por 23.03.2016 / 00:55