Particionar o disco em duas partições iguais em um script de shell

1

Estou tentando particionar meu disco em duas partições iguais. Até agora eu estava fazendo tudo manualmente usando o comando fdisk e depois modificando o arquivo fstab com o UUID para ambas as partições e tenho cerca de 70 máquinas para fazer isso. Existe alguma maneira automatizada que eu possa fazer isso usando o script de shell? Não quero fazer tudo manualmente em cada uma dessas caixas.

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda         30G  1.4G   27G   5% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev             60G   12K   60G   1% /dev
tmpfs            12G  384K   12G   1% /run
none            5.0M     0  5.0M   0% /run/lock
none             60G     0   60G   0% /run/shm
none            100M     0  100M   0% /run/user
/dev/vdb        2.4T   72M  2.2T   1% /mnt

Eu quero particionar /dev/vdb em duas partições iguais / data01 e / data02. Qual é a melhor maneira de fazer isso usando tudo em um script de shell? Eu tenho um acesso root a todas essas máquinas e tenho o Ubuntu 14.04 box.

    
por david 06.03.2016 / 22:23

2 respostas

2

Se isso for puramente para uso pelo Linux (como parece ser uma vez que são discos virtuais no KVM), use LVM . O LVM é mais fácil de usar e mais flexível que as partições nativas, ao custo de não ser entendido por sistemas operacionais diferentes do Linux. Aqui está a essência do que você precisa, sem nenhuma verificação de erros. Crie um volume físico abrangendo exatamente o disco, criar um grupo de volume contendo apenas aquele volume físico e crie dois volumes lógicos contendo metade do espaço cada (expresso o tamanho do último volume como o que ainda está livre para não ter problemas de arredondamento).

pvcreate /dev/vdb
vgcreate mydisk /dev/vdb
lvcreate -n data01 -l 50%VG mydisk
lvcreate -n data02 -l 100%FREE mydisk
echo '/dev/mydisk/data01 /data01 auto defaults' >>/etc/fstab
echo '/dev/mydisk/data02 /data02 auto defaults' >>/etc/fstab
    
por 06.03.2016 / 23:37
0

Assumindo que o tamanho do seu setor de disco é de 512 bytes, eu acho que isso poderia fazer o truque (você precisará do sfdisk)

#!/bin/bash
DISK=/dev/sdb
OFFSET=2048
SIZE=$(( ($(sfdisk -s $DISK) * 2 - $OFFSET) / 2 ))
POS_MAX_P1=$(( $SIZE + $OFFSET - 1 ))
POS_MIN_P2=$(( $POS_MAX_P1 + 1 ))
PART_TYPE=83     // Here you can change the type of the partitions

LAYOUT="2048,$POS_MAX_P1,$PART_TYPE\n$POS_MIN_P2,,$PART_TYPE"

echo -e $LAYOUT | sfdisk $DISK
partprobe $DISK
echo -e "/dev/sdb1\t/data01\tauto\t0 1\n/dev/sdb2\t/data02\tauto\t0 1\n" >> /etc/fstab
    
por 06.03.2016 / 23:55