由于在这种情况下使用fdisk是相当复杂的,因为非交互方式可能不可能或使用printf非常复杂的情况下,我想使用parted resizepart调整分区的最大尺寸。
这可以在磁盘resize(pipe理程序/虚拟化)的情况下使用,现在您需要将逻辑卷/ pv调整为新的大小(LVM大小写),或者希望调整正常分区的分区大小。
因此,让我们假设我想调整分区/ dev / sda1 obvisouly磁盘/ dev / sda1到其最大可能的大小 – 我怎么会这样做,而不会问任何问题。
尽pipeparted /dev/sda resizepart 1存在,它需要我计算并input最大磁盘大小 – 所以如何自动执行此操作
提示:这个脚本与parted v4 + OOTB兼容,如果你已经分开了3,你需要把parted resizepart parted resize
让我们把它放到一个脚本中,acualy命令是一个在线的,我们只需要添加更多,以确保前两个参数被设置:
#!/bin/bash set -e if [[ $# -eq 0 ]] ; then echo 'please tell me the device to resize as the first parameter, like /dev/sda' exit 1 fi if [[ $# -eq 1 ]] ; then echo 'please tell me the partition number to resize as the second parameter, like 1 in case you mean /dev/sda1 or 4, if you mean /dev/sda2' exit 1 fi DEVICE=$1 PARTNR=$2 APPLY=$3 MAXSIZEMB=`printf %s\\n 'unit MB print list' | parted | grep "Disk /dev/sda" | cut -d' ' -f3 | tr -d MB` echo "will resize to ${MAXSIZEMB}MB" if [[ "$APPLY" -eq "apply" ]] ; then echo "applying resize operation.." parted ${DEVICE} resizepart ${PARTNR} ${MAXSIZEMB} echo "..done" else echo "WARNING!: Sandbox mode, i did not size!. Use 'apply' as third parameter to apply" fi
将上面的脚本保存为resize.sh并使其可执行
# resize the fourth partition to the maximum size, so /dev/sda4 # this is no the sandbox mode, so no changes are done ./resize.sh /dev/sda 4 # apply those changes ./resize.sh /dev/sda 4 apply
例如,如果在使用LVM时,在/ dev / sdb1上有一个带有lv'data'的vg vgdata,整个故事看起来就像
./resize.sh /dev/sdb 1 apply pvresize /dev/sdb1 lvextend -r /dev/mapper/vgdata-data -l 100%FREE
多数民众赞成它,resize的逻辑卷,包括resize的文件系统(-r) – 全部完成,用df -h检查它:)
我们用来查找磁盘大小的是
resizepart ${PARTNR} `parted -l | grep ${DEVICE} | cut -d' ' -f3 | tr -d MB
a)因此,获取我们设备的磁盘信息printf %s\\n 'unit MB print list' | parted | grep "Disk /dev/sda printf %s\\n 'unit MB print list' | parted | grep "Disk /dev/sda printf %s\\n 'unit MB print list' | parted | grep "Disk /dev/sda我们使用printf %s\\n 'unit MB print list'来确保单位显示为MB,否则它将随磁盘大小(MB,G,T)而变化,没有更好的方法来做到这一点,分开3或4呢
b)然后使用输出的第三列(磁盘大小) cut -d' ' -f3 (除以空格)
c)最后用tr -d MB删除单位tr -d MB
我在https://github.com/EugenMayer/parted-auto- resize上发布了脚本,所以如果有什么需要改进的function,请在那里使用pull请求(任何不在这个问题的范围内)