
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 parted
comando. 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 fdisk
ou sfdisk
do util-linux
pacote:
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/disk
diretó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