@@ -707,32 +707,56 @@ scan_disks() {
707
707
}
708
708
709
709
create_partition_sfdisk (){
710
- local dev=" $1 " size
710
+ local dev=" $1 " size label= " $2 " type
711
711
# Use a single partition of a whole device
712
712
# TODO:
713
- # * Consider gpt, or unpartitioned volumes
713
+ # * Consider unpartitioned volumes
714
714
# * Error handling when partition(s) already exist
715
715
# * Deal with loop/nbd device names. See growpart code
716
+
716
717
size=$(( $( awk "\$4 ~ / "$( basename $dev )"/ { print \$3 }" / proc/ partitions ) * 2 - 2048 ))
718
+ # if parted is not present, and this version of sfdisk
719
+ # does not support GPT then we are limited to 2TB
720
+ if [ $label = " gpt" ]; then
721
+ if $( sfdisk --help| grep gpt > /dev/null) ; then
722
+ label=' label: gpt'
723
+ type=' '
724
+ size=$(( $size - 34 ))
725
+ else
726
+ Info " Your version of sfdisk does not support GPT labels. Will use MBR instead but partition size will be limited to 2TB"
727
+ label=' '
728
+ type=' , Id=8e'
729
+ # 2TB in sectors - 2048
730
+ if [ $size -gt 4294965248 ]; then size=4294965248; fi
731
+ fi
732
+ elif [ $label = " msdos" ]; then
733
+ label=' '
734
+ fi
735
+
717
736
cat << EOF | sfdisk $dev
718
737
unit: sectors
738
+ $label
719
739
720
- ${dev} 1 : start= 2048, size= ${size} , Id=8e
740
+ ${dev} 1 : start= 2048, size= ${size}${type}
721
741
EOF
722
742
}
723
743
724
744
create_partition_parted (){
725
- local dev=" $1 "
726
- parted $dev --script mklabel msdos mkpart primary 0% 100% set 1 lvm on
745
+ local dev=" $1 " label= " $2 "
746
+ parted $dev --script mklabel $label mkpart primary 0% 100% set 1 lvm on
727
747
}
728
748
729
749
create_partition () {
730
- local dev=" $1 "
750
+ local dev=" $1 " size label
731
751
752
+ # Determine partition size. If larger than 2TB use GPT instead
753
+ size=$( awk " \$ 4 ~ /" $( basename $dev ) " / { print \$ 3 }" /proc/partitions )
754
+ if [ $size -gt 2147483648 ]; then label=' gpt' ; else label=' msdos' ; fi
755
+
732
756
if [ -x " /usr/sbin/parted" ]; then
733
- create_partition_parted $dev
757
+ create_partition_parted $dev $label
734
758
else
735
- create_partition_sfdisk $dev
759
+ create_partition_sfdisk $dev $label
736
760
fi
737
761
738
762
# Sometimes on slow storage it takes a while for partition device to
0 commit comments