쉘 스크립트에서 디스크를 두 개의 동일한 파티션으로 분할

쉘 스크립트에서 디스크를 두 개의 동일한 파티션으로 분할

디스크를 두 개의 동일한 파티션으로 나누려고 합니다. 지금까지 fdisk 명령을 사용하여 모든 작업을 수동으로 수행한 다음 두 파티션의 UUID로 fstab 파일을 수정했으며 이 작업을 수행할 수 있는 시스템이 약 70대 있습니다. 쉘 스크립트를 사용하여 이를 자동화하는 방법이 있습니까? 각 컴퓨터에서 모든 작업을 수동으로 수행하고 싶지 않습니다.

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

/dev/vdb두 개의 동일한 파티션 /data01과 /data02로 분할하고 싶습니다 . 하나의 쉘 스크립트에 있는 모든 것을 사용하여 이를 수행하는 가장 좋은 방법은 무엇입니까? 나는 이 모든 컴퓨터에 대한 루트 액세스 권한을 갖고 있으며 Ubuntu 14.04 상자를 가지고 있습니다.

답변1

이것이 순전히 Linux용인 경우(KVM의 가상 디스크이므로 그럴 것 같습니다) 다음을 사용하십시오.좌심실 용적. LVM은 기본 파티셔닝보다 사용하기 쉽고 유연하지만 Linux 이외의 운영 체제에서는 이해할 수 없다는 단점이 있습니다. 이것은 오류 검사 없이 필요한 것의 요점입니다.물리 볼륨 생성디스크 바로 건너편에,볼륨 그룹 생성해당 물리적 ​​볼륨만 포함하며,두 개의 논리 볼륨 생성각각은 공간의 절반을 포함합니다(반올림 문제가 발생하는 것을 피하기 위해 마지막 볼륨의 크기를 여전히 사용 가능한 공간으로 표현했습니다).

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

답변2

디스크 섹터 크기가 512바이트라고 가정하면 이것이 효과가 있다고 생각합니다(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

관련 정보