디스크를 두 개의 동일한 파티션으로 나누려고 합니다. 지금까지 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