script tool that auto partition. [xpart] <环境> bash>=4.2 fdisk>=2.20.1 parted>=2.3 其它环境不能保证可正常运行 应该大部分环境可以运行 <说明> 只有root用户可以运行 mbr大小:2048s/1MiB 默认显示单位:MiB 默认寻找方向:由低到高 命令行选项: -d|--device:指定要操作的块设备 -动作: -I|--info:得到设备分区表信息 -e|--empty:新建空白msdos分区表,所有已有分区将丢失 -n|--new:新建分区 -r|--remove:移除一个分区,-rn,n为分区号 -参数选项 -D|-direction:优先地址方向,h:high/l:low,默认从低到高 -t|-type:指定新建分区类型,p:primary,e:extended,l:logical 单位:s:sector,k:KiB,m:MiB,g:GiB,t:TiB,p:PiB,忽略大小写 -S|--start:指定新建分区起始位置,NNNx,x为单位 -E|--end:指定新建分区结束位置,NNNx,x为单位 -s|--size:指定新建分区大小,NNNx,x为单位 -F|--format:指定新建分区格式化时的文件系统类型,vfat/fat16/fat32/ntfs/ext2/ext3/ext4/swap/... -f|--force:当指定的参数有误时,强制按调整参数执行/或者执行危险操作时 -v|--verbose:操作结束后,输出操作细节(新建分区的信息) -x|--donot_execute:假执行,预查效果(将建分区的信息) -其它选项 -u|--unit,指定输出显示的单位,s/k/m/g/t/p -h|--help, 输出帮助信息 -V|--version,显示版本 [新建分区的策略] <分区类型确定> 1.当指定了类型时按类型来操作,不能满足则报错 错误: 1.p,e:主分区已经有4个 2.l:没有扩展分区 4.没有指定类型: 只指定了start.end时: 优先主分区,其次有扩展分区则建逻辑分区,否则无法新建 按size分区时: 在大小都满足时优先主分区,否则选择大的区间的. <分区位置确定> 1.先满足大小,再满足位置 2.两种方式,指定大小size,或者start.end 3.只指定了size,则根据方向来确定最满足区间 4.指定了start.end,size,则根据情况3算 5.指定了start,size,则先按start.start+size算,不成功(位置变化了,或者大小变了),再按情况3算 6.指定了end,size,则先按end-size.end算,不成功,同5 7.只指定了start.end,则找到最满足,最接近的区间(不考虑大小) 8.只指定start,则找从start开始寻找最接近区间 9.只指定end,则从0开始寻找到最接近区间 10.什么都没指定,则按方向寻找第一个区间 [使用举例] 1.获得分区信息: ./xpart.sh /dev/sdb -I -ug 以gib为单位显示sdb的分区信息 2.新建分区表 ./xpart.sh /dev/sdb -e -f 强制新建分区表,没有-f则需要确认 3.新建分区 1)./xpart.sh /dev/sdb -n -s10g -fv -Dh -Fext3 新建一个10g的分区,由于-s10g不能明确一个分区,将由程序自动判断 如果没有-f选项,则将输出判断调整结果,而不会执行。 -v选项使程序输出执行结果。 -Dh使程序优先选择高地址分区 -Fext3指定格式化成ext3文件系统 2)./xpart.sh /dev/sdb -n -S120m -s50m -fx 从120m的位置开始,新建一个50m的分区 -f强制执行调整结果 -x则指明假执行,只显示调整结果,并正确返回 3)./xpart.sh /dev/sdb -n -E10g -s5g -fv -ug 以10g为结尾,新建一个5g的分区 -ug指明用gib为单位显示输出 4)./xpart.sh /dev/sdb -n -te -s12g -fv -ug 新建一个12g的扩展分区 -f的说明: 只有分区指定完全正确,才不需要-f强制执行 即指定了-S,-E,同时没有指定-s(否则按size分区),并且-S,-E正好可以分一个区。 4.删除分区 ./xpart.sh /dev/sdb -r2 删除第二个分区